<?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>174590</bug_id>
          
          <creation_ts>2017-07-17 10:56:41 -0700</creation_ts>
          <short_desc>Support compiling catch in the DFG</short_desc>
          <delta_ts>2017-08-25 15:57:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175604</dependson>
    
    <dependson>175973</dependson>
          <blocked>175397</blocked>
    
    <blocked>175413</blocked>
    
    <blocked>175841</blocked>
    
    <blocked>175842</blocked>
    
    <blocked>175396</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1329613</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-17 10:56:41 -0700</bug_when>
    <thetext>To do this, we should:
- profile live values at catch. We&apos;ll use this in prediction injection. Might also need to be used in CFA
- support multiple entrypoints in the DFG. Each catch site will be an entrypoint.
- For FTL compilations, we might need something similar to ExtractOSREntryLocal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332408</commentid>
    <comment_count>1</comment_count>
      <attachid>316464</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-26 12:42:11 -0700</bug_when>
    <thetext>Created attachment 316464
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332412</commentid>
    <comment_count>2</comment_count>
      <attachid>316466</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-26 12:55:16 -0700</bug_when>
    <thetext>Created attachment 316466
WIP

A tad bit more. I think the value profiling is working. I&apos;m still not sure the way I did it is exactly what I want, but it&apos;s good enough to start implementing things in the DFG/FTL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332559</commentid>
    <comment_count>3</comment_count>
      <attachid>316517</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-26 21:16:14 -0700</bug_when>
    <thetext>Created attachment 316517
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332599</commentid>
    <comment_count>4</comment_count>
      <attachid>316534</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-27 00:43:43 -0700</bug_when>
    <thetext>Created attachment 316534
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332683</commentid>
    <comment_count>5</comment_count>
      <attachid>316558</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-27 11:31:12 -0700</bug_when>
    <thetext>Created attachment 316558
WIP

I&apos;m contemplating how I want to do SetArgument. Right now, we&apos;ll hoist type checks up to SetArgument, so it would be invalid to have DFG IR like this:
```
#0:
SetArgument
GetLocal(type check)
...
EntrySwitch(#1, #2)

#1:
normal entry point

#2
ExtractCatchVariable(exitNotOK)
MovHint()
SetLocal()
....
```

and also hoist type checks to the root block. So I&apos;m thinking we may want the notion of multiple primordial SetArguments, and this will allow the above program to be:

```
#0
EntrySwitch(#1, #2)

#1:
normal entry point
SetArgument()
GetLocal(type check)
....

#2
ExtractCatchVariable(exitNotOK)
MovHint()
SetLocal()
ExitOK()
SetArgument()
GetLocal(type check)
...
```

But I need to think through this a bit more. We have code in a lot of places that assume there is only one set of primordial SetArgument nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332712</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-27 13:47:26 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; Created attachment 316558 [details]
&gt; WIP
&gt; 
&gt; I&apos;m contemplating how I want to do SetArgument. Right now, we&apos;ll hoist type
&gt; checks up to SetArgument, so it would be invalid to have DFG IR like this:
&gt; ```
&gt; #0:
&gt; SetArgument
&gt; GetLocal(type check)
&gt; ...
&gt; EntrySwitch(#1, #2)
&gt; 
&gt; #1:
&gt; normal entry point
&gt; 
&gt; #2
&gt; ExtractCatchVariable(exitNotOK)
&gt; MovHint()
&gt; SetLocal()
&gt; ....
&gt; ```
&gt; 
&gt; and also hoist type checks to the root block. So I&apos;m thinking we may want
&gt; the notion of multiple primordial SetArguments, and this will allow the
&gt; above program to be:
&gt; 
&gt; ```
&gt; #0
&gt; EntrySwitch(#1, #2)
&gt; 
&gt; #1:
&gt; normal entry point
&gt; SetArgument()
&gt; GetLocal(type check)
&gt; ....
&gt; 
&gt; #2
&gt; ExtractCatchVariable(exitNotOK)
&gt; MovHint()
&gt; SetLocal()
&gt; ExitOK()
&gt; SetArgument()
&gt; GetLocal(type check)
&gt; ...
&gt; ```
&gt; 
&gt; But I need to think through this a bit more. We have code in a lot of places
&gt; that assume there is only one set of primordial SetArgument nodes.

I suppose another alternative is to keep only one set of primordial SetArgument nodes, but to only allow the type check hoisting to happen once we&apos;ve proven we&apos;re safe to exit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333532</commentid>
    <comment_count>7</comment_count>
      <attachid>316803</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-07-31 14:16:09 -0700</bug_when>
    <thetext>Created attachment 316803
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334404</commentid>
    <comment_count>8</comment_count>
      <attachid>317002</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-02 14:48:25 -0700</bug_when>
    <thetext>Created attachment 317002
WIP

Some more.

To get around the issue above, I think the plan is to introduce the concept of different entrypoints abstractly in the DFG. So places that do graph.block(0) will often just walk a vector of blocks that are the entrypoints. Then we&apos;ll OSR enter at these various entrypoints for the DFG. 

When converting to SSA, we&apos;ll move back to one true root block, and have that block have an EntrySwitch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1334956</commentid>
    <comment_count>9</comment_count>
      <attachid>317159</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-03 14:47:06 -0700</bug_when>
    <thetext>Created attachment 317159
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335015</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-03 16:20:02 -0700</bug_when>
    <thetext>I&apos;m starting to think this can be made two patches:
1. OSR enter into DFG
2. OSR enter into FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335016</commentid>
    <comment_count>11</comment_count>
      <attachid>317177</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-03 16:22:51 -0700</bug_when>
    <thetext>Created attachment 317177
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335047</commentid>
    <comment_count>12</comment_count>
      <attachid>317186</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-03 17:39:44 -0700</bug_when>
    <thetext>Created attachment 317186
WIP

I think I&apos;m really close to actually starting to run some code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335063</commentid>
    <comment_count>13</comment_count>
      <attachid>317190</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-03 18:11:39 -0700</bug_when>
    <thetext>Created attachment 317190
WIP

Unsurprisingly, it crashes running:
```
function f(i) { if (i) throw &quot;foo&quot;; }
noInline(f);

function foo(i) {
    let x = 20;
    try {
        f(i);
    } catch(e) {
        x = 30;
    }
    print(x);
}
noInline(foo);

for (let i = 0; i &lt; 1000; ++i)
    foo(!!(i%2));
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335086</commentid>
    <comment_count>14</comment_count>
      <attachid>317196</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-03 19:03:20 -0700</bug_when>
    <thetext>Created attachment 317196
WIP

Ok, it now ran the above program!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335110</commentid>
    <comment_count>15</comment_count>
      <attachid>317204</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-03 19:43:41 -0700</bug_when>
    <thetext>Created attachment 317204
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335784</commentid>
    <comment_count>16</comment_count>
      <attachid>317363</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-06 09:30:42 -0700</bug_when>
    <thetext>Created attachment 317363
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335796</commentid>
    <comment_count>17</comment_count>
      <attachid>317368</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-06 10:49:48 -0700</bug_when>
    <thetext>Created attachment 317368
WIP

It runs a handful of try/catch microbenchmarks I added a while ago. It also crashes on at least one of them.

I remove Graph::m_arguments. It&apos;s now replaced with a map from Entrypoint-&gt;arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335833</commentid>
    <comment_count>18</comment_count>
      <attachid>317386</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-06 15:31:23 -0700</bug_when>
    <thetext>Created attachment 317386
WIP

It passes all the try/catch tests I tried locally. Going to run all jsc tests and see what happens. There are still quite a few things I want to do to clean this patch up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335849</commentid>
    <comment_count>19</comment_count>
      <attachid>317389</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-06 17:44:40 -0700</bug_when>
    <thetext>Created attachment 317389
WIP

More. Fixed a bug in FTL OSR entrypoint creation phase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335853</commentid>
    <comment_count>20</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-06 18:42:08 -0700</bug_when>
    <thetext>It passes all JSC tests. Now I need to start refining the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335860</commentid>
    <comment_count>21</comment_count>
      <attachid>317393</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-06 19:12:40 -0700</bug_when>
    <thetext>Created attachment 317393
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335861</commentid>
    <comment_count>22</comment_count>
      <attachid>317394</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-06 19:32:23 -0700</bug_when>
    <thetext>Created attachment 317394
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337131</commentid>
    <comment_count>23</comment_count>
      <attachid>317742</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-09 14:26:19 -0700</bug_when>
    <thetext>Created attachment 317742
WIP

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337290</commentid>
    <comment_count>24</comment_count>
      <attachid>317777</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-09 20:14:24 -0700</bug_when>
    <thetext>Created attachment 317777
WIP

starting to clean up the patch a bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337293</commentid>
    <comment_count>25</comment_count>
      <attachid>317779</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-09 20:20:37 -0700</bug_when>
    <thetext>Created attachment 317779
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337296</commentid>
    <comment_count>26</comment_count>
      <attachid>317780</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-09 20:28:01 -0700</bug_when>
    <thetext>Created attachment 317780
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337822</commentid>
    <comment_count>27</comment_count>
      <attachid>317912</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-10 20:39:57 -0700</bug_when>
    <thetext>Created attachment 317912
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337952</commentid>
    <comment_count>28</comment_count>
      <attachid>317942</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-11 11:43:27 -0700</bug_when>
    <thetext>Created attachment 317942
WIP

Still need to write a CPSCFG class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337957</commentid>
    <comment_count>29</comment_count>
      <attachid>317945</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-11 11:58:19 -0700</bug_when>
    <thetext>Created attachment 317945
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338268</commentid>
    <comment_count>30</comment_count>
      <attachid>318018</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-13 18:48:55 -0700</bug_when>
    <thetext>Created attachment 318018
WIP

Starting the process of specifying:
- CPSCFG vs SSACFG
- SSADominators vs CPSDominators
- SSANaturalLoops vs CPSNaturalLoops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338270</commentid>
    <comment_count>31</comment_count>
      <attachid>318019</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-13 19:22:29 -0700</bug_when>
    <thetext>Created attachment 318019
WIP

still need to get it to compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338279</commentid>
    <comment_count>32</comment_count>
      <attachid>318023</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-13 21:44:35 -0700</bug_when>
    <thetext>Created attachment 318023
WIP

It compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338282</commentid>
    <comment_count>33</comment_count>
      <attachid>318025</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-13 22:39:32 -0700</bug_when>
    <thetext>Created attachment 318025
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338507</commentid>
    <comment_count>34</comment_count>
      <attachid>318078</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-14 15:54:08 -0700</bug_when>
    <thetext>Created attachment 318078
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338540</commentid>
    <comment_count>35</comment_count>
      <attachid>318084</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-14 16:48:59 -0700</bug_when>
    <thetext>Created attachment 318084
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338546</commentid>
    <comment_count>36</comment_count>
      <attachid>318087</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-14 16:52:25 -0700</bug_when>
    <thetext>Created attachment 318087
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338547</commentid>
    <comment_count>37</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-14 16:55:58 -0700</bug_when>
    <thetext>Attachment 318087 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:414:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:414:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:414:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:431:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:436:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:450:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:470:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:198:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:199:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:205:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:54:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 16 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338566</commentid>
    <comment_count>38</comment_count>
      <attachid>318087</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-14 18:01:04 -0700</bug_when>
    <thetext>Comment on attachment 318087
WIP

Attachment 318087 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/4314855

New failing tests:
stress/const-exception-handling.js.ftl-eager-no-cjit-b3o1
stress/lexical-let-exception-handling.js.ftl-eager-no-cjit-b3o1
stress/const-exception-handling.js.ftl-eager-no-cjit
stress/lexical-let-exception-handling.js.ftl-eager-no-cjit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338588</commentid>
    <comment_count>39</comment_count>
      <attachid>318099</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-14 19:10:14 -0700</bug_when>
    <thetext>Created attachment 318099
WIP

These test failures are real. I&apos;m trying to debug the crash, but it&apos;s hard. I think it&apos;s a memory smasher somewhere, and it doesn&apos;t crash with ASAN enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338608</commentid>
    <comment_count>40</comment_count>
      <attachid>318107</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-14 20:41:06 -0700</bug_when>
    <thetext>Created attachment 318107
WIP

I found the bug. It has to do with:
!!node-&gt;hasHeapPrediction implies that the origin bytecode also has a heap prediction. This is obviously not true for op_after_catch and ExtractCatchLocal.
Will fix this in next WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338756</commentid>
    <comment_count>41</comment_count>
      <attachid>318139</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 11:22:07 -0700</bug_when>
    <thetext>Created attachment 318139
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338794</commentid>
    <comment_count>42</comment_count>
      <attachid>318148</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 12:39:46 -0700</bug_when>
    <thetext>Created attachment 318148
WIP

We were using the CPSCFG incorrectly before because we were creating it too early. Fixed in this WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338797</commentid>
    <comment_count>43</comment_count>
      <attachid>318150</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 12:46:24 -0700</bug_when>
    <thetext>Created attachment 318150
WIP

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338802</commentid>
    <comment_count>44</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 12:49:03 -0700</bug_when>
    <thetext>Attachment 318150 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:198:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:199:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:205:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 11 in 75 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338859</commentid>
    <comment_count>45</comment_count>
      <attachid>318169</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 14:03:21 -0700</bug_when>
    <thetext>Created attachment 318169
WIP

should build now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338877</commentid>
    <comment_count>46</comment_count>
      <attachid>318173</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 14:24:51 -0700</bug_when>
    <thetext>Created attachment 318173
WIP

ok, it actually builds now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338879</commentid>
    <comment_count>47</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 14:27:51 -0700</bug_when>
    <thetext>Attachment 318173 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338901</commentid>
    <comment_count>48</comment_count>
      <attachid>318185</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 15:33:20 -0700</bug_when>
    <thetext>Created attachment 318185
WIP

maybe 32-bit builds now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338905</commentid>
    <comment_count>49</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 15:36:15 -0700</bug_when>
    <thetext>Attachment 318185 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 7 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338987</commentid>
    <comment_count>50</comment_count>
      <attachid>318208</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 17:58:53 -0700</bug_when>
    <thetext>Created attachment 318208
WIP

I think this is just about ready for review. I want to write a few tests and a changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338988</commentid>
    <comment_count>51</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 18:01:29 -0700</bug_when>
    <thetext>Attachment 318208 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 7 in 75 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339007</commentid>
    <comment_count>52</comment_count>
      <attachid>318214</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 18:38:22 -0700</bug_when>
    <thetext>Created attachment 318214
WIP

trying to get 32-bit to build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339009</commentid>
    <comment_count>53</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 18:41:37 -0700</bug_when>
    <thetext>Attachment 318214 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 7 in 75 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339029</commentid>
    <comment_count>54</comment_count>
      <attachid>318218</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-15 19:50:53 -0700</bug_when>
    <thetext>Created attachment 318218
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339030</commentid>
    <comment_count>55</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 19:53:20 -0700</bug_when>
    <thetext>Attachment 318218 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 7 in 77 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339049</commentid>
    <comment_count>56</comment_count>
      <attachid>318218</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 21:51:26 -0700</bug_when>
    <thetext>Comment on attachment 318218
WIP

Attachment 318218 did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/4321573

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339050</commentid>
    <comment_count>57</comment_count>
      <attachid>318225</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 21:51:32 -0700</bug_when>
    <thetext>Created attachment 318225
Archive of layout-test-results from ews115 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews115  Port: mac-elcapitan  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339095</commentid>
    <comment_count>58</comment_count>
      <attachid>318218</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-16 00:19:43 -0700</bug_when>
    <thetext>Comment on attachment 318218
WIP

Attachment 318218 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/4321936

New failing tests:
stress/const-loop-semantics.js.ftl-no-cjit-no-put-stack-validate
stress/arrowfunction-lexical-bind-supercall-3.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-lexical-bind-newtarget.js.dfg-maximal-flush-validate-no-cjit
stress/dont-unwind-past-vm-entry-frame.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/const-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-set-prototype-of.js.ftl-eager-no-cjit
mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-dfg-eager-no-cjit-validate-phases
stress/regress-163748.js.ftl-eager-no-cjit-b3o1
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-put-stack-validate
stress/inferred-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit
stress/destructuring-assignment-syntax.js.dfg-eager-no-cjit-validate
stress/super-method-calls-check-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-no-cjit-validate-sampling-profiler
stress/spec-empty-flows-through-cell-checks.js.dfg-maximal-flush-validate-no-cjit
stress/typedarray-access-neutered.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-no-cjit-no-put-stack-validate
stress/eval-func-decl-in-eval-within-with-scope.js.dfg-maximal-flush-validate-no-cjit
stress/custom-iterators.js.dfg-eager-no-cjit-validate
stress/eval-func-decl-block-with-var-sinthesize.js.dfg-maximal-flush-validate-no-cjit
stress/eval-func-decl-within-eval-without-reassign-to-let.js.dfg-maximal-flush-validate-no-cjit
stress/array-species-config-array-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/custom-iterators.js.ftl-eager-no-cjit
stress/const-loop-semantics.js.dfg-eager-no-cjit-validate
microbenchmarks/richards-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-get-and-set-recursion-stack-overflow.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-scoping-break-continue.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-call.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-syntax.js.dfg-eager-no-cjit-validate
stress/infinite-loop-that-uses-captured-variables-before-throwing.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/proxy-set.js.dfg-maximal-flush-validate-no-cjit
stress/SharedArrayBuffer-opt.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.dfg-eager-no-cjit-validate
stress/proxy-property-descriptor.js.dfg-maximal-flush-validate-no-cjit
stress/variable-named-eval-under-tdz.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit-b3o1
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-validate-sampling-profiler
stress/tail-call-recognize.js.dfg-eager-no-cjit-validate
stress/tail-call-recognize.js.ftl-eager-no-cjit-b3o1
stress/lexical-let-loop-semantics.js.dfg-maximal-flush-validate-no-cjit
stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit-b3o1
stress/const-exception-handling.js.ftl-eager-no-cjit-b3o1
stress/builtin-function-is-construct-type-none.js.dfg-maximal-flush-validate-no-cjit
stress/global-lexical-var-injection.js.dfg-maximal-flush-validate-no-cjit
stress/infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.ftl-no-cjit-validate-sampling-profiler
stress/const-not-strict-mode.js.no-cjit-validate-phases
stress/regress-159779-1.js.ftl-eager-no-cjit
stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit-b3o1
stress/es6-default-parameters.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-json.js.dfg-maximal-flush-validate-no-cjit
stress/template-literal-syntax.js.dfg-eager-no-cjit-validate
stress/activation-sink-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit
stress/regress-163748.js.dfg-eager-no-cjit-validate
microbenchmarks/raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/delete-to-object-exception.js.dfg-maximal-flush-validate-no-cjit
stress/class-syntax-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit
stress/import-syntax.js.ftl-eager-no-cjit
stress/async-await-reserved-word.js.dfg-eager-no-cjit-validate
stress/custom-iterators.js.ftl-eager-no-cjit-b3o1
stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit
stress/template-literal-syntax.js.ftl-eager-no-cjit
stress/class-syntax-tdz-in-eval.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit
stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit
stress/es6-default-parameters.js.ftl-eager-no-cjit
stress/tricky-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-lexical-bind-supercall-1.js.dfg-maximal-flush-validate-no-cjit
stress/eval-func-decl-in-eval-within-block-with-let.js.dfg-maximal-flush-validate-no-cjit
stress/symbol-toprimitive.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-dfg-eager-no-cjit-validate-phases
mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/async-await-basic.js.dfg-eager-no-cjit-validate
stress/class-syntax-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/const-loop-semantics.js.ftl-eager-no-cjit
stress/const-exception-handling.js.ftl-eager-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit-b3o1
stress/proxy-revoke.js.ftl-no-cjit-validate-sampling-profiler
stress/put-direct-index-broken-2.js.dfg-maximal-flush-validate-no-cjit
stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit
stress/tagged-templates-syntax.js.ftl-eager-no-cjit-b3o1
stress/class-syntax-double-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-has-property.js.dfg-maximal-flush-validate-no-cjit
stress/typedarray-bad-getter.js.dfg-maximal-flush-validate-no-cjit
stress/dfg-put-by-val-direct-with-edge-numbers.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-basic.js.ftl-eager-no-cjit-b3o1
stress/const-loop-semantics.js.ftl-no-cjit-no-inline-validate
stress/import-syntax.js.dfg-eager-no-cjit-validate
microbenchmarks/delta-blue-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-no-cjit-no-inline-validate
stress/catch-variables-under-tdz.js.dfg-eager-no-cjit-validate
stress/global-lexical-variable-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/global-lexical-var-injection.js.ftl-no-cjit-validate-sampling-profiler
stress/proxy-get-prototype-of.js.dfg-eager-no-cjit-validate
stress/typedarray-functions-with-neutered.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-tdz-2.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-reserved-word.js.ftl-eager-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit-b3o1
stress/proxy-revoke.js.ftl-no-cjit-no-inline-validate
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-inline-validate
stress/global-lexical-var-injection.js.ftl-eager-no-cjit
stress/lexical-let-exception-handling.js.dfg-eager-no-cjit-validate
stress/regress-153486.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.no-cjit-validate-phases
stress/lexical-scoping-break-continue.js.ftl-no-cjit-validate-sampling-profiler
stress/const-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/catch-variables-under-tdz.js.ftl-eager-no-cjit
mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/arrowfunction-lexical-bind-supercall-4.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-validate-sampling-profiler
stress/tagged-template-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-no-cjit-validate-sampling-profiler
stress/const-not-strict-mode.js.ftl-eager-no-cjit
stress/es6-default-parameters.js.ftl-eager-no-cjit-b3o1
stress/activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-tdz-1.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-exception-handling.js.ftl-eager-no-cjit-b3o1
stress/tail-call-recognize.js.ftl-no-cjit-no-inline-validate
stress/const-loop-semantics.js.ftl-no-cjit-validate-sampling-profiler
stress/async-arrow-functions-lexical-super-binding.js.dfg-eager-no-cjit-validate
stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit
stress/function-constructor-reading-from-global-lexical-environment.js.dfg-maximal-flush-validate-no-cjit
stress/const-loop-semantics.js.ftl-eager-no-cjit-b3o1
stress/eval-func-decl-within-eval-with-reassign-to-var.js.dfg-maximal-flush-validate-no-cjit
stress/strcat-emtpy.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-get-prototype-of.js.ftl-eager-no-cjit
stress/dont-strength-reduce-valuerep-of-doublerep.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-revoke.js.ftl-no-cjit-no-put-stack-validate
stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-inline-validate
stress/super-get-by-id.js.dfg-eager-no-cjit-validate
stress/tricky-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit
stress/global-lexical-var-injection.js.dfg-eager-no-cjit-validate
stress/rest-parameter-is-destructuring.js.dfg-maximal-flush-validate-no-cjit
stress/domjit-getter-complex-with-incorrect-object.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.dfg-eager-no-cjit-validate
microbenchmarks/string-transcoding.js.dfg-maximal-flush-validate-no-cjit
stress/tricky-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit
stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit
stress/typedarray-access-monomorphic-neutered.js.dfg-maximal-flush-validate-no-cjit
stress/const-loop-semantics.js.no-cjit-validate-phases
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-inline-validate
stress/infinite-loop-that-uses-captured-variables-but-they-do-not-escape.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-reserved-word.js.ftl-eager-no-cjit-b3o1
stress/create-subclass-structure-might-throw.js.dfg-eager-no-cjit-validate
stress/proxy-set-prototype-of.js.dfg-eager-no-cjit-validate
stress/proxy-revoke.js.dfg-maximal-flush-validate-no-cjit
stress/cloned-arguments-modification.js.dfg-maximal-flush-validate-no-cjit
stress/import-syntax.js.ftl-eager-no-cjit-b3o1
stress/proxy-delete.js.dfg-maximal-flush-validate-no-cjit
stress/reserved-word-with-escape.js.dfg-eager-no-cjit-validate
stress/async-await-syntax.js.ftl-eager-no-cjit
stress/proxy-is-array.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.no-cjit-validate-phases
stress/proxy-revoke.js.ftl-eager-no-cjit
stress/const-loop-semantics.js.dfg-maximal-flush-validate-no-cjit
stress/array-reverse-proxy.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-lexical-bind-supercall-2.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-get-prototype-of.js.ftl-eager-no-cjit-b3o1
microbenchmarks/fake-iterators-that-throw-when-finished.js.no-cjit-validate-phases
stress/lexical-let-exception-handling.js.ftl-eager-no-cjit
stress/super-get-by-id.js.no-cjit-validate-phases
stress/proxy-own-keys.js.dfg-maximal-flush-validate-no-cjit
stress/operation-in-throw-error.js.dfg-maximal-flush-validate-no-cjit
stress/es6-default-parameters.js.dfg-eager-no-cjit-validate
stress/reserved-word-with-escape.js.ftl-eager-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-inline-validate
stress/global-lexical-var-injection.js.ftl-eager-no-cjit-b3o1
stress/global-lexical-var-injection.js.ftl-no-cjit-no-put-stack-validate
stress/template-literal-line-terminators.js.ftl-eager-no-cjit-b3o1
stress/dfg-call-class-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-put-stack-validate
stress/async-await-mozilla.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-eager-no-cjit-b3o1
stress/regress-159779-2.js.ftl-eager-no-cjit
stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit-b3o1
stress/class-syntax-tdz-in-conditional.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-dfg-eager-no-cjit-validate-phases
microbenchmarks/v8-raytrace-with-try-catch.js.no-cjit-validate-phases
stress/super-get-by-id.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit-b3o1
mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-dfg-eager-no-cjit-validate-phases
stress/reflect-construct.js.dfg-maximal-flush-validate-no-cjit
stress/class-syntax-no-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit
stress/super-property-access-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js.dfg-maximal-flush-validate-no-cjit
stress/class-syntax-tdz-in-loop.js.dfg-maximal-flush-validate-no-cjit
stress/eval-func-decl-in-global-of-eval.js.dfg-maximal-flush-validate-no-cjit
stress/class-derived-from-null.js.dfg-maximal-flush-validate-no-cjit
stress/super-get-by-id.js.ftl-no-cjit-no-put-stack-validate
microbenchmarks/v8-raytrace-with-try-catch.js.dfg-eager-no-cjit-validate
stress/reflect-set-proxy-set.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.ftl-eager-no-cjit
stress/global-lexical-var-injection.js.ftl-no-cjit-no-inline-validate
stress/async-await-basic.js.ftl-eager-no-cjit
stress/dfg-exception-try-catch-in-constructor-with-inlined-throw.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.ftl-no-cjit-no-put-stack-validate
stress/proxy-revoke.js.no-cjit-validate-phases
stress/eval-func-decl-block-with-var-and-remove.js.dfg-maximal-flush-validate-no-cjit
stress/template-literal-line-terminators.js.dfg-eager-no-cjit-validate
stress/catch-variables-under-tdz.js.ftl-eager-no-cjit-b3o1
stress/global-lexical-var-injection.js.no-cjit-validate-phases
stress/global-lexical-redefine-const.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-syntax.js.ftl-eager-no-cjit-b3o1
stress/lexical-scoping-break-continue.js.dfg-eager-no-cjit-validate
stress/typedarray-configure-index.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit
stress/super-get-by-id.js.ftl-no-cjit-validate-sampling-profiler
microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-eager-no-cjit-validate
slowMicrobenchmarks.yaml/slowMicrobenchmarks/v8-raytrace-with-try-catch-high-frequency-throws.js.no-cjit
stress/proxy-revoke.js.dfg-eager-no-cjit-validate
stress/const-exception-handling.js.dfg-eager-no-cjit-validate
stress/rest-parameter-and-default-arguments.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/template-literal-syntax.js.ftl-eager-no-cjit-b3o1
stress/tagged-templates-syntax.js.ftl-eager-no-cjit
stress/lexical-scoping-break-continue.js.no-cjit-validate-phases
stress/create-subclass-structure-might-throw.js.dfg-maximal-flush-validate-no-cjit
stress/domjit-getter-type-check.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-set-prototype-of.js.ftl-eager-no-cjit-b3o1
stress/const-semantics.js.dfg-maximal-flush-validate-no-cjit
stress/with.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit
stress/proxy-revoke.js.ftl-eager-no-cjit-b3o1
stress/es6-for-of-loop-exception.js.dfg-maximal-flush-validate-no-cjit
stress/sloppy-mode-function-hoisting.js.dfg-maximal-flush-validate-no-cjit
stress/super-get-by-id.js.ftl-no-cjit-no-inline-validate
stress/tail-call-recognize.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-put-stack-validate
stress/template-literal-line-terminators.js.ftl-eager-no-cjit
stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-put-stack-validate
stress/tagged-templates-syntax.js.dfg-eager-no-cjit-validate
stress/reserved-word-with-escape.js.ftl-eager-no-cjit-b3o1
stress/class-syntax-super-in-eval.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-tdz-4.js.dfg-maximal-flush-validate-no-cjit
stress/regress-163748.js.ftl-eager-no-cjit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339112</commentid>
    <comment_count>59</comment_count>
      <attachid>318218</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-16 02:15:16 -0700</bug_when>
    <thetext>Comment on attachment 318218
WIP

Attachment 318218 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/4322567

New failing tests:
stress/const-loop-semantics.js.ftl-no-cjit-no-put-stack-validate
stress/arrowfunction-lexical-bind-supercall-3.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-lexical-bind-newtarget.js.dfg-maximal-flush-validate-no-cjit
stress/dont-unwind-past-vm-entry-frame.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/const-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-set-prototype-of.js.ftl-eager-no-cjit
mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-dfg-eager-no-cjit-validate-phases
stress/regress-163748.js.ftl-eager-no-cjit-b3o1
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-put-stack-validate
stress/inferred-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit
stress/destructuring-assignment-syntax.js.dfg-eager-no-cjit-validate
stress/super-method-calls-check-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-no-cjit-validate-sampling-profiler
stress/spec-empty-flows-through-cell-checks.js.dfg-maximal-flush-validate-no-cjit
stress/typedarray-access-neutered.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-no-cjit-no-put-stack-validate
stress/eval-func-decl-in-eval-within-with-scope.js.dfg-maximal-flush-validate-no-cjit
stress/custom-iterators.js.dfg-eager-no-cjit-validate
stress/eval-func-decl-block-with-var-sinthesize.js.dfg-maximal-flush-validate-no-cjit
stress/eval-func-decl-within-eval-without-reassign-to-let.js.dfg-maximal-flush-validate-no-cjit
stress/array-species-config-array-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/custom-iterators.js.ftl-eager-no-cjit
stress/const-loop-semantics.js.dfg-eager-no-cjit-validate
microbenchmarks/richards-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-get-and-set-recursion-stack-overflow.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-scoping-break-continue.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-call.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-syntax.js.dfg-eager-no-cjit-validate
stress/infinite-loop-that-uses-captured-variables-before-throwing.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/proxy-set.js.dfg-maximal-flush-validate-no-cjit
stress/SharedArrayBuffer-opt.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.dfg-eager-no-cjit-validate
stress/proxy-property-descriptor.js.dfg-maximal-flush-validate-no-cjit
stress/variable-named-eval-under-tdz.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit-b3o1
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-validate-sampling-profiler
stress/tail-call-recognize.js.dfg-eager-no-cjit-validate
stress/tail-call-recognize.js.ftl-eager-no-cjit-b3o1
stress/lexical-let-loop-semantics.js.dfg-maximal-flush-validate-no-cjit
stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit-b3o1
stress/const-exception-handling.js.ftl-eager-no-cjit-b3o1
stress/builtin-function-is-construct-type-none.js.dfg-maximal-flush-validate-no-cjit
stress/global-lexical-var-injection.js.dfg-maximal-flush-validate-no-cjit
stress/infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.ftl-no-cjit-validate-sampling-profiler
stress/const-not-strict-mode.js.no-cjit-validate-phases
stress/regress-159779-1.js.ftl-eager-no-cjit
stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit-b3o1
stress/es6-default-parameters.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-json.js.dfg-maximal-flush-validate-no-cjit
stress/template-literal-syntax.js.dfg-eager-no-cjit-validate
stress/activation-sink-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit
stress/regress-163748.js.dfg-eager-no-cjit-validate
microbenchmarks/raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/delete-to-object-exception.js.dfg-maximal-flush-validate-no-cjit
stress/class-syntax-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit
stress/import-syntax.js.ftl-eager-no-cjit
stress/async-await-reserved-word.js.dfg-eager-no-cjit-validate
stress/custom-iterators.js.ftl-eager-no-cjit-b3o1
stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit
stress/template-literal-syntax.js.ftl-eager-no-cjit
stress/class-syntax-tdz-in-eval.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit
stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit
stress/es6-default-parameters.js.ftl-eager-no-cjit
stress/tricky-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-lexical-bind-supercall-1.js.dfg-maximal-flush-validate-no-cjit
stress/eval-func-decl-in-eval-within-block-with-let.js.dfg-maximal-flush-validate-no-cjit
stress/symbol-toprimitive.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-dfg-eager-no-cjit-validate-phases
mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/async-await-basic.js.dfg-eager-no-cjit-validate
stress/class-syntax-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/const-loop-semantics.js.ftl-eager-no-cjit
stress/const-exception-handling.js.ftl-eager-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit-b3o1
stress/proxy-revoke.js.ftl-no-cjit-validate-sampling-profiler
stress/put-direct-index-broken-2.js.dfg-maximal-flush-validate-no-cjit
stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit
stress/tagged-templates-syntax.js.ftl-eager-no-cjit-b3o1
stress/class-syntax-double-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-has-property.js.dfg-maximal-flush-validate-no-cjit
stress/typedarray-bad-getter.js.dfg-maximal-flush-validate-no-cjit
stress/dfg-put-by-val-direct-with-edge-numbers.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-basic.js.ftl-eager-no-cjit-b3o1
stress/const-loop-semantics.js.ftl-no-cjit-no-inline-validate
stress/import-syntax.js.dfg-eager-no-cjit-validate
microbenchmarks/delta-blue-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-no-cjit-no-inline-validate
stress/catch-variables-under-tdz.js.dfg-eager-no-cjit-validate
stress/global-lexical-variable-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/global-lexical-var-injection.js.ftl-no-cjit-validate-sampling-profiler
stress/proxy-get-prototype-of.js.dfg-eager-no-cjit-validate
stress/typedarray-functions-with-neutered.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-tdz-2.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-reserved-word.js.ftl-eager-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit-b3o1
stress/proxy-revoke.js.ftl-no-cjit-no-inline-validate
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-inline-validate
stress/global-lexical-var-injection.js.ftl-eager-no-cjit
stress/lexical-let-exception-handling.js.dfg-eager-no-cjit-validate
stress/regress-153486.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.no-cjit-validate-phases
stress/lexical-scoping-break-continue.js.ftl-no-cjit-validate-sampling-profiler
stress/const-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/catch-variables-under-tdz.js.ftl-eager-no-cjit
mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-ftl-eager-no-cjit-validate-phases
stress/arrowfunction-lexical-bind-supercall-4.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-validate-sampling-profiler
stress/tagged-template-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-no-cjit-validate-sampling-profiler
stress/const-not-strict-mode.js.ftl-eager-no-cjit
stress/es6-default-parameters.js.ftl-eager-no-cjit-b3o1
stress/activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-tdz-1.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-exception-handling.js.ftl-eager-no-cjit-b3o1
stress/tail-call-recognize.js.ftl-no-cjit-no-inline-validate
stress/const-loop-semantics.js.ftl-no-cjit-validate-sampling-profiler
stress/async-arrow-functions-lexical-super-binding.js.dfg-eager-no-cjit-validate
stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit
stress/function-constructor-reading-from-global-lexical-environment.js.dfg-maximal-flush-validate-no-cjit
stress/const-loop-semantics.js.ftl-eager-no-cjit-b3o1
stress/eval-func-decl-within-eval-with-reassign-to-var.js.dfg-maximal-flush-validate-no-cjit
stress/strcat-emtpy.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-get-prototype-of.js.ftl-eager-no-cjit
stress/dont-strength-reduce-valuerep-of-doublerep.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-revoke.js.ftl-no-cjit-no-put-stack-validate
stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-inline-validate
stress/super-get-by-id.js.dfg-eager-no-cjit-validate
stress/tricky-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit
stress/global-lexical-var-injection.js.dfg-eager-no-cjit-validate
stress/rest-parameter-is-destructuring.js.dfg-maximal-flush-validate-no-cjit
stress/domjit-getter-complex-with-incorrect-object.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.dfg-eager-no-cjit-validate
microbenchmarks/string-transcoding.js.dfg-maximal-flush-validate-no-cjit
stress/tricky-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit
stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit
stress/typedarray-access-monomorphic-neutered.js.dfg-maximal-flush-validate-no-cjit
stress/const-loop-semantics.js.no-cjit-validate-phases
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-inline-validate
stress/infinite-loop-that-uses-captured-variables-but-they-do-not-escape.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-reserved-word.js.ftl-eager-no-cjit-b3o1
stress/create-subclass-structure-might-throw.js.dfg-eager-no-cjit-validate
stress/proxy-set-prototype-of.js.dfg-eager-no-cjit-validate
stress/proxy-revoke.js.dfg-maximal-flush-validate-no-cjit
stress/cloned-arguments-modification.js.dfg-maximal-flush-validate-no-cjit
stress/import-syntax.js.ftl-eager-no-cjit-b3o1
stress/proxy-delete.js.dfg-maximal-flush-validate-no-cjit
stress/reserved-word-with-escape.js.dfg-eager-no-cjit-validate
stress/async-await-syntax.js.ftl-eager-no-cjit
stress/proxy-is-array.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.no-cjit-validate-phases
stress/proxy-revoke.js.ftl-eager-no-cjit
stress/const-loop-semantics.js.dfg-maximal-flush-validate-no-cjit
stress/array-reverse-proxy.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-lexical-bind-supercall-2.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-get-prototype-of.js.ftl-eager-no-cjit-b3o1
microbenchmarks/fake-iterators-that-throw-when-finished.js.no-cjit-validate-phases
stress/lexical-let-exception-handling.js.ftl-eager-no-cjit
stress/super-get-by-id.js.no-cjit-validate-phases
stress/proxy-own-keys.js.dfg-maximal-flush-validate-no-cjit
stress/operation-in-throw-error.js.dfg-maximal-flush-validate-no-cjit
stress/es6-default-parameters.js.dfg-eager-no-cjit-validate
stress/reserved-word-with-escape.js.ftl-eager-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-inline-validate
stress/global-lexical-var-injection.js.ftl-eager-no-cjit-b3o1
stress/global-lexical-var-injection.js.ftl-no-cjit-no-put-stack-validate
stress/template-literal-line-terminators.js.ftl-eager-no-cjit-b3o1
stress/dfg-call-class-constructor.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-put-stack-validate
stress/async-await-mozilla.js.dfg-maximal-flush-validate-no-cjit
stress/const-not-strict-mode.js.ftl-eager-no-cjit-b3o1
stress/regress-159779-2.js.ftl-eager-no-cjit
stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit-b3o1
stress/class-syntax-tdz-in-conditional.js.dfg-maximal-flush-validate-no-cjit
mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-dfg-eager-no-cjit-validate-phases
microbenchmarks/v8-raytrace-with-try-catch.js.no-cjit-validate-phases
stress/super-get-by-id.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit-b3o1
mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-dfg-eager-no-cjit-validate-phases
stress/reflect-construct.js.dfg-maximal-flush-validate-no-cjit
stress/class-syntax-no-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit
stress/super-property-access-tdz.js.dfg-maximal-flush-validate-no-cjit
stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js.dfg-maximal-flush-validate-no-cjit
stress/class-syntax-tdz-in-loop.js.dfg-maximal-flush-validate-no-cjit
stress/eval-func-decl-in-global-of-eval.js.dfg-maximal-flush-validate-no-cjit
stress/class-derived-from-null.js.dfg-maximal-flush-validate-no-cjit
stress/super-get-by-id.js.ftl-no-cjit-no-put-stack-validate
microbenchmarks/v8-raytrace-with-try-catch.js.dfg-eager-no-cjit-validate
stress/reflect-set-proxy-set.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.ftl-eager-no-cjit
stress/global-lexical-var-injection.js.ftl-no-cjit-no-inline-validate
stress/async-await-basic.js.ftl-eager-no-cjit
stress/dfg-exception-try-catch-in-constructor-with-inlined-throw.js.dfg-maximal-flush-validate-no-cjit
stress/tail-call-recognize.js.ftl-no-cjit-no-put-stack-validate
stress/proxy-revoke.js.no-cjit-validate-phases
stress/eval-func-decl-block-with-var-and-remove.js.dfg-maximal-flush-validate-no-cjit
stress/template-literal-line-terminators.js.dfg-eager-no-cjit-validate
stress/catch-variables-under-tdz.js.ftl-eager-no-cjit-b3o1
stress/global-lexical-var-injection.js.no-cjit-validate-phases
stress/global-lexical-redefine-const.js.dfg-maximal-flush-validate-no-cjit
stress/async-await-syntax.js.ftl-eager-no-cjit-b3o1
stress/lexical-scoping-break-continue.js.dfg-eager-no-cjit-validate
stress/typedarray-configure-index.js.dfg-maximal-flush-validate-no-cjit
stress/lexical-let-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit
stress/super-get-by-id.js.ftl-no-cjit-validate-sampling-profiler
microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-eager-no-cjit-validate
slowMicrobenchmarks.yaml/slowMicrobenchmarks/v8-raytrace-with-try-catch-high-frequency-throws.js.no-cjit
stress/proxy-revoke.js.dfg-eager-no-cjit-validate
stress/const-exception-handling.js.dfg-eager-no-cjit-validate
stress/rest-parameter-and-default-arguments.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/v8-raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit
stress/template-literal-syntax.js.ftl-eager-no-cjit-b3o1
stress/tagged-templates-syntax.js.ftl-eager-no-cjit
stress/lexical-scoping-break-continue.js.no-cjit-validate-phases
stress/create-subclass-structure-might-throw.js.dfg-maximal-flush-validate-no-cjit
stress/domjit-getter-type-check.js.dfg-maximal-flush-validate-no-cjit
stress/proxy-set-prototype-of.js.ftl-eager-no-cjit-b3o1
stress/const-semantics.js.dfg-maximal-flush-validate-no-cjit
stress/with.js.dfg-maximal-flush-validate-no-cjit
stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit
stress/proxy-revoke.js.ftl-eager-no-cjit-b3o1
stress/es6-for-of-loop-exception.js.dfg-maximal-flush-validate-no-cjit
stress/sloppy-mode-function-hoisting.js.dfg-maximal-flush-validate-no-cjit
stress/super-get-by-id.js.ftl-no-cjit-no-inline-validate
stress/tail-call-recognize.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-maximal-flush-validate-no-cjit
microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-put-stack-validate
stress/template-literal-line-terminators.js.ftl-eager-no-cjit
stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-put-stack-validate
stress/tagged-templates-syntax.js.dfg-eager-no-cjit-validate
stress/reserved-word-with-escape.js.ftl-eager-no-cjit-b3o1
stress/class-syntax-super-in-eval.js.dfg-maximal-flush-validate-no-cjit
stress/arrowfunction-tdz-4.js.dfg-maximal-flush-validate-no-cjit
stress/regress-163748.js.ftl-eager-no-cjit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339257</commentid>
    <comment_count>60</comment_count>
      <attachid>318283</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-16 13:01:45 -0700</bug_when>
    <thetext>Created attachment 318283
WIP

Fix some bugs related to new validation. There were a few bugs pre-existing that would try to Flush the primordial set in a root block. This isn&apos;t allowed, as we require all locals to be dead at the root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339421</commentid>
    <comment_count>61</comment_count>
      <attachid>318324</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-16 20:36:21 -0700</bug_when>
    <thetext>Created attachment 318324
WIP

I think this patch is exposing a few pre-existing bugs I need to think about fixing:
- SetLocal of scope always flushes inside bytecode parser when a bit is set on CodeBlock. This might cause us to add a Flush that doesn&apos;t have a SetLocal definition that reaches it. This causes CPS rethreading to create a Phi that is linked to nothing. This will lead a root block to say that particular local is live. This will cause us to fail validation, which asserts that all locals are dead at the head of all root blocks.
- Same thing as above, but in the LiveCatchVariablePreservationPhase for arbitrary locals

I need to think about exactly how to fix this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339917</commentid>
    <comment_count>62</comment_count>
      <attachid>318460</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-17 20:00:34 -0700</bug_when>
    <thetext>Created attachment 318460
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339920</commentid>
    <comment_count>63</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-17 20:03:09 -0700</bug_when>
    <thetext>Attachment 318460 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:165:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:172:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:175:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:229:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:483:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:485:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:650:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 14 in 78 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340359</commentid>
    <comment_count>64</comment_count>
      <attachid>318571</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-18 19:16:11 -0700</bug_when>
    <thetext>Created attachment 318571
WIP

Probably doesn&apos;t compile, but I think I have a workable solution for the live catch variable preservation phase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340718</commentid>
    <comment_count>65</comment_count>
      <attachid>318665</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-21 13:15:10 -0700</bug_when>
    <thetext>Created attachment 318665
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340721</commentid>
    <comment_count>66</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-21 13:17:48 -0700</bug_when>
    <thetext>Attachment 318665 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3983:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3984:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3985:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3986:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3987:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 12 in 80 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340975</commentid>
    <comment_count>67</comment_count>
      <attachid>318741</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-21 23:45:07 -0700</bug_when>
    <thetext>Created attachment 318741
WIP

Just about ready for review, just going to read over the code once before writing a changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341295</commentid>
    <comment_count>68</comment_count>
      <attachid>318807</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-22 15:21:57 -0700</bug_when>
    <thetext>Created attachment 318807
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341391</commentid>
    <comment_count>69</comment_count>
      <attachid>318835</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-22 17:41:42 -0700</bug_when>
    <thetext>Created attachment 318835
patch

This patch is ready for review. I am going to spend a little bit of time writing a more comprehensive program that uses try/catch, but that shouldn&apos;t stand in the way of the rest of the patch being reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341394</commentid>
    <comment_count>70</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-22 17:45:01 -0700</bug_when>
    <thetext>Attachment 318835 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2836:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 8 in 86 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341408</commentid>
    <comment_count>71</comment_count>
      <attachid>318835</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-08-22 18:17:56 -0700</bug_when>
    <thetext>Comment on attachment 318835
patch

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

Seems legit.

&gt; Source/JavaScriptCore/dfg/DFGCFAPhase.cpp:98
&gt; -                
&gt; +

Revert

&gt; Source/JavaScriptCore/dfg/DFGCFG.h:99
&gt; +template &lt;typename T, typename = typename std::enable_if&lt;std::is_same&lt;T, CPSCFG&gt;::value&gt;::type&gt;
&gt; +CPSCFG&amp; selectCFG(Graph&amp; graph)

Whoa.  What does this magic do?

&gt; Source/WTF/wtf/BackwardsGraph.h:44
&gt; +    using Node = SingleRootGraphNode&lt;Graph&gt;;
&gt; +    using Set = SingleRootGraphSet&lt;Graph&gt;;
&gt; +    template &lt;typename T&gt; using Map = SingleRootMap&lt;T, Graph&gt;;

Nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341425</commentid>
    <comment_count>72</comment_count>
      <attachid>318835</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-08-22 19:50:03 -0700</bug_when>
    <thetext>Comment on attachment 318835
patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGCFG.h:99
&gt;&gt; +CPSCFG&amp; selectCFG(Graph&amp; graph)
&gt; 
&gt; Whoa.  What does this magic do?

I think, It will only select this version of the function if T is CPSCFG.

The default value errors unless someone provides a value for it. Since errors mean the template is not selected and no one provides the second template value it should always select the right function. 

I think you could also make this:

template &lt;typename T&gt;
CPSCFG&amp; selectCFG(Graph&amp; graph)
{
     typedef typename std::enable_if&lt;std::is_same&lt;T, CPSCFG&gt;::value&gt;::type Enabled;
     ...
}

or if we had:

#define ENABLE_TEMPLATE_IF(condition) static_assert(condition, &quot;template disabled&quot;)

template &lt;typename T&gt;
CPSCFG&amp; selectCFG(Graph&amp; graph)
{
     ENABLE_TEMPLATE_IF(std::is_same&lt;T, CPSCFG&gt;::value);
     ...
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341820</commentid>
    <comment_count>73</comment_count>
      <attachid>318930</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-23 15:22:37 -0700</bug_when>
    <thetext>Created attachment 318930
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341824</commentid>
    <comment_count>74</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-23 15:25:29 -0700</bug_when>
    <thetext>Attachment 318930 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2836:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WTF/wtf/SingleRootGraph.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Missing spaces around :  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 8 in 86 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341852</commentid>
    <comment_count>75</comment_count>
      <attachid>318935</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-23 16:15:17 -0700</bug_when>
    <thetext>Created attachment 318935
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341876</commentid>
    <comment_count>76</comment_count>
      <attachid>318935</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-23 16:58:40 -0700</bug_when>
    <thetext>Comment on attachment 318935
patch for landing

Clearing flags on attachment: 318935

Committed r221119: &lt;http://trac.webkit.org/changeset/221119&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341877</commentid>
    <comment_count>77</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-23 16:58:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341878</commentid>
    <comment_count>78</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-23 16:59:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/34047845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341913</commentid>
    <comment_count>79</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-23 18:05:08 -0700</bug_when>
    <thetext>Committed r221124: &lt;http://trac.webkit.org/changeset/221124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342290</commentid>
    <comment_count>80</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-24 18:53:15 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 175973</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342328</commentid>
    <comment_count>81</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-24 22:57:08 -0700</bug_when>
    <thetext>This regressed JSBench by 10-20% in my local testing. I think all that&apos;s needed to make this faster is to not eagerly run liveness since liveness is expensive and hurts page load when done unconditionally in a CodeBlock with op_catch. Instead, I&apos;m going to do it on first exception throw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342332</commentid>
    <comment_count>82</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-24 23:54:39 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #81)
&gt; This regressed JSBench by 10-20% in my local testing. I think all that&apos;s
&gt; needed to make this faster is to not eagerly run liveness since liveness is
&gt; expensive and hurts page load when done unconditionally in a CodeBlock with
&gt; op_catch. Instead, I&apos;m going to do it on first exception throw.

It looks like this fixes the JSBench regression locally for me. Will have a patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342451</commentid>
    <comment_count>83</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-25 11:27:56 -0700</bug_when>
    <thetext>remanded in:
https://trac.webkit.org/changeset/221196/webkit

I&apos;m now computing liveness lazily once a catch actually executes. This fixed the JSBench regression for me locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342551</commentid>
    <comment_count>84</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-25 15:57:27 -0700</bug_when>
    <thetext>fixed 32-bit in:
https://trac.webkit.org/changeset/221210/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316464</attachid>
            <date>2017-07-26 12:42:11 -0700</date>
            <delta_ts>2017-07-26 12:55:16 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>14023</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2F0Y2giKTsKKyAg
ICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9w
ZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgiIDogMyB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJ
KHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoK
ICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3Bf
YWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBj
YXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX25v
cDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAj
ZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToK
ICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQRVJfT1BD
T0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAx
XSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaElu
ZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRF
bmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1
Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9mQXJndW1l
bnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAg
ICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7
IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2ICs4NDAs
MjUgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgIAogICAg
IGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRy
YU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rp
b24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAgICAgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NBbmFseXNp
cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJ
bmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBieXRlY29k
ZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4
KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAg
ICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVMb2NhbHMu
Yml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdICh1
bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5k
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kp
CisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ldLm1fb3BlcmFuZCA9IGxpdmVP
cGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0
Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9j
YXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9
CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIyICsyNTE1LDM0IEBAIGNvbnN0
IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2NrOjp1cGRh
dGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5v
bkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAg
ICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJP
ZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmls
ZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZh
bHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3Rh
bE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHByb2Nlc3NQ
cm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5zaWduZWQg
bnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAgICAgIGlm
IChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAgICAgICAg
ICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdlIGRvbid0
IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBtb3JlIHdl
aWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1wbGVzOwog
ICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAgICAgICAg
IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBy
b2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAhPSBTcGVj
Tm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysr
OwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFs
dWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21BbGxWYWx1
ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBzIGhvb2sgaW50byB0b3RhbE51
bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8gb3IgbWF5YmUgd2UganVzdCBu
ZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNpbmNlCisgICAgLy8gdGhpcyBp
cyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAoYXV0byYgcHJvZmlsZUJ1Y2tl
dCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JFYWNoKFsm
XSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgcHJvY2Vz
c1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQogICAgIAog
I2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9h
cmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4g
bV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8
UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAg
ICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIxOTk1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVt
YmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVl
UHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUo
aW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVX
aXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRl
Y29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVj
b2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAy
LDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1
cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQg
bV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgewor
ICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAg
OiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBzaG91bGQg
YWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQncyB3b3J0aCBldmVuIHVzaW5n
IGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUgcHJvZmlsZXIgaGVyZS4KKyAg
ICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKj4oZmFz
dE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3
ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlcltpXS5+VmFs
dWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7CisgICAg
fQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9yRWFjaChG
dW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyW2ldKTsKKyAgICB9
CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQq
IG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiArMzk2MSwx
MCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0CiAgICAgZW1pdE9w
Y29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGV4Y2VwdGlvblJlZ2lz
dGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdp
c3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2FmdGVyX2NhdGNoKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4
aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhp
cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMsNiArODUzLDEwIEBAIHZvaWQg
SklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3du
VmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNo
KEluc3RydWN0aW9uKikKK3sKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMTk5NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NTMsNiArNTUzLDExIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0
aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVj
dGlvbiopCit7CisKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAy
MTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMjAgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworICAgIC8vIEZJWE1FOiBEbyB3ZSBoYXZlIGNvbnN0YW50IGluZGljZXMgaGVyZT8gSWYgc28s
IHBlcmhhcHMgd2Ugc2hvdWxkIG5vdC4gQW5kIHRoZW4gd2UgY2FuIHVzZQorICAgIC8vIHRoZSBm
YXN0IHZlcnNpb24uCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0g
c3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRl
cik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJv
ZmlsZSkgeworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+cihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsK
KworICAgIExMSU5UX0VORCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBw
cm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2
aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2Zp
bGVyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bG9nX3NoYWRvd19jaGlja2VuX3RhaWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9hZnRlcl9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lO
VEVSTkFMOwogI2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
bGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5B
TDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAt
MTk2Niw2ICsxOTY2LDExIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaCgzKQogCiAK
K19sbGludF9vcF9hZnRlcl9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9hZnRlcl9jYXRjaCkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9lbmQ6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316466</attachid>
            <date>2017-07-26 12:55:16 -0700</date>
            <delta_ts>2017-07-26 21:16:14 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>14521</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMTk5NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjUgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXpl
OyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2Fm
dGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAg
ICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIyICsyNTE1LDM0IEBA
IGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHBy
b2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5z
aWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAg
ICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAg
ICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdl
IGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBt
b3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1w
bGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAh
PSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJl
ck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBzIGhvb2sgaW50byB0
b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8gb3IgbWF5YmUgd2Ug
anVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNpbmNlCisgICAgLy8g
dGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAoYXV0byYgcHJvZmls
ZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
cHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQog
ICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEw
MDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJv
ZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291
bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmls
ZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVBy
b2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGlu
dCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+
KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIs
NCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAg
ICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAg
ICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAg
ICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBz
aG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQncyB3b3J0aCBldmVu
IHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUgcHJvZmlsZXIgaGVy
ZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
Kj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisK
KyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlcltp
XS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9y
RWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyW2ldKTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiAr
Mzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0CiAgICAg
ZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGV4Y2VwdGlv
blJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFs
dWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3Rlcihp
bnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShy
ZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVG
SU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAg
ICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVh
dGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0
cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMsNiArODUzLDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0U3RvcmUo
dGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVy
X2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAy
MTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDE1IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKElu
c3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgIH0pOworfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2MzgsNiArMTYzOCwyMiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9n
X3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgLy8gRklYTUU6
IERvIHdlIGhhdmUgY29uc3RhbnQgaW5kaWNlcyBoZXJlPyBJZiBzbywgcGVyaGFwcyB3ZSBzaG91
bGQgbm90LiBBbmQgdGhlbiB3ZSBjYW4gdXNlCisgICAgLy8gdGhlIGZhc3QgdmVyc2lvbi4KKyAg
ICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXIt
PmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAg
IGRhdGFMb2dMbigiUHJvZmlsaW5nIGxvYyIsIFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3Bl
cmFuZCkudG9Mb2NhbCgpLCAiIDogIiwgZXhlYy0+cihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1
ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPnIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7Cisg
ICAgZGF0YUxvZ0xuKCJDb21wbGV0ZWQgdmFsdWUgcHJvZmlsZSEiKTsKKworICAgIExMSU5UX0VO
RCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFj
a19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjE5OTUwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lm
X2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlj
a2VuX3RhaWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZnRlcl9j
YXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19v
dmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmICFF
TkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hl
Y2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk2Niw2ICsxOTY2LDEx
IEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9hZnRl
cl9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9hZnRlcl9j
YXRjaCkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316517</attachid>
            <date>2017-07-26 21:16:14 -0700</date>
            <delta_ts>2017-07-27 00:43:43 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>22541</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMTk5NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjUgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXpl
OyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2Fm
dGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAg
ICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIyICsyNTE1LDM0IEBA
IGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHBy
b2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5z
aWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAg
ICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAg
ICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdl
IGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBt
b3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1w
bGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAh
PSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJl
ck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBzIGhvb2sgaW50byB0
b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8gb3IgbWF5YmUgd2Ug
anVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNpbmNlCisgICAgLy8g
dGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAoYXV0byYgcHJvZmls
ZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
cHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQog
ICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEw
MDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJv
ZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291
bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmls
ZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVBy
b2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGlu
dCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+
KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIs
NCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAg
ICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAg
ICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAg
ICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBz
aG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQncyB3b3J0aCBldmVu
IHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUgcHJvZmlsZXIgaGVy
ZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
Kj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisK
KyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlcltp
XS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9y
RWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyW2ldKTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiAr
Mzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0CiAgICAg
ZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGV4Y2VwdGlv
blJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFs
dWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3Rlcihp
bnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwMiw2ICszMDIsNyBAQCBwcml2YXRlOgogICAgIC8vIExpbmsgYmxvY2sgc3VjY2Vzc29ycy4K
ICAgICB2b2lkIGxpbmtCbG9jayhCYXNpY0Jsb2NrKiwgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9z
c2libGVUYXJnZXRzKTsKICAgICB2b2lkIGxpbmtCbG9ja3MoVmVjdG9yPFVubGlua2VkQmxvY2s+
JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKTsK
KyAgICB2b2lkIGNyZWF0ZUVudHJ5U3dpdGNoSWZOZWVkZWQoKTsKICAgICAKICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCkKICAgICB7CkBAIC0xMTMwLDYgKzExMzEsOCBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3Rl
bnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJl
Z2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhl
IHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2Nr
TGlua2luZ1RhcmdldHM7CisKKyAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2VudHJ5cG9p
bnRCbG9ja3M7CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBi
bG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAgIC8vIHRo
ZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3NvcnMgbGlu
a2VkIHRvIHRoZQpAQCAtNTE0NSw2ICs1MTQ4LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1f
Z3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDoKKyAgICAgICAg
ICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsZXIpCisgICAgICAgICAgICAgICAgbV9l
bnRyeXBvaW50QmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9j
YWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENh
bGxNb2RlOjpSZWd1bGFyKTsKQEAgLTU5MzUsNiArNTk0MywyNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpsaW5rQmxvY2tzKFZlY3RvcjxVCiAgICAgfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpjcmVhdGVFbnRyeVN3aXRjaElmTmVlZGVkKCkKK3sKKyAgICAvLyBGSVhNRTogZG9lcyB0aGlz
IGJyZWFrIGNvbnN0YW50cz8KKworICAgIC8vVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2VudHJ5cG9p
bnRCbG9ja3M7CisgICAgaWYgKG1fZW50cnlwb2ludEJsb2Nrcy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSk7
CisgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnlT
d2l0Y2hEYXRhPigpOworICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cnlwb2ludEJsb2Nrcy5zaXplKCkpOworICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX2VudHJ5cG9pbnRCbG9ja3MpCisgICAgICAgIG1fZ3JhcGgu
bV9lbnRyeVN3aXRjaERhdGEuYmxvY2tzLT5hcHBlbmQoYmxvY2spOworCisgICAgUmVmPEJhc2lj
QmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKDAsIG1fbnVtQXJndW1lbnRz
LCBtX251bUxvY2FscywgMSkpOworICAgIGJsb2NrLT5hcHBlbmQobV9ncmFwaC5hZGROb2RlKEVu
dHJ5U3dpdGNoLCBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIGZhbHNl
KSwKKyAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEuZ2V0KCkpLCBFZGdl
KCksIEVkZ2UoKSwgRWRnZSgpKSk7CisgICAgbV9ncmFwaC5tX2Jsb2Nrcy5pbnNlcnQoMCwgV1RG
TW92ZShibG9jaykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxv
Y2tzLnNpemUoKTsgKytpKQorICAgICAgICBtX2dyYXBoLm1fYmxvY2tzW2ldLT5pbmRleCA9IGk7
Cit9CisKIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KAogICAgIEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlciwKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywKQEAgLTYxOTEsOCArNjIyMCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
KCkKICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1l
OjpDYWxsKTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAgbGlua0Jsb2Nrcyhp
bmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9j
a0xpbmtpbmdUYXJnZXRzKTsKKyAgICBjcmVhdGVFbnRyeVN3aXRjaElmTmVlZGVkKCk7CisKICAg
ICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVh
Y2hhYmxlQmxvY2tzKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2
ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAg
Y2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJl
bnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgog
ICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAg
ICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyMiw2ICs0MjIsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAg
IGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZvcmNlT1NSRXhp
dDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2Nyw3IEBAIHB1YmxpYzoKICAg
ICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVy
RGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hE
YXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4g
bV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRp
R2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1
dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRh
IHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsKIH07CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERh
dGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBWZWN0
b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisKIHN0cnVjdCBDYWxsVmFyYXJnc0RhdGEgewog
ICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07CkBAIC0xMjc2LDE3ICsxMjg0LDIzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBi
b29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CiAKKyAgICBib29sIGlzRW50cnlTd2l0Y2go
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRW50cnlTd2l0Y2g7CisgICAg
fQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkg
ewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNl
IFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46
CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBA
IC0xMzQ4LDYgKzEzNjIsMTIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7
CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTd2l0Y2hEYXRhKj4oKTsKICAgICB9CisKKyAg
ICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNoRGF0YSgpCisgICAgeworICAgICAgICBBU1NF
UlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dp
dGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQog
ICAgIHsKQEAgLTEzNTgsNiArMTM3OCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAy
OwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCkt
PmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CisgICAgICAgICAg
ICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrcy5zaXplKCk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTM3MSw2ICsxMzkzLDEw
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERh
dGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZh
bGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzRW50cnlTd2l0Y2go
KSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzW2luZGV4XTsK
KwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAg
IGlmIChpc0p1bXAoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzg1LDYgKzM4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhU
YWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8o
RGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlz
aW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNiArMzA2LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoK
ICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJu
OgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rh
dGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMTk5NTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1h
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogCiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjE5OTUwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJ
TkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkK
KyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERF
RklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lv
biAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0
ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlz
aW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUzLDYgKzg1MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdU
MSwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlv
biopCit7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUz
LDYgKzU1MywxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdUMCk7CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICB9KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRf
b3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2Mzgs
MjIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5U
X0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIC8vIEZJWE1FOiBEbyB3ZSBoYXZlIGNvbnN0
YW50IGluZGljZXMgaGVyZT8gSWYgc28sIHBlcmhhcHMgd2Ugc2hvdWxkIG5vdC4gQW5kIHRoZW4g
d2UgY2FuIHVzZQorICAgIC8vIHRoZSBmYXN0IHZlcnNpb24uCisgICAgVmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBkYXRhTG9nTG4oIlByb2Zp
bGluZyBsb2MiLCBWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLnRvTG9jYWwoKSwg
IiA6ICIsIGV4ZWMtPnIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAgIHBy
b2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT5yKHBy
b2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgIH0pOworICAgIGRhdGFMb2dMbigiQ29t
cGxldGVkIHZhbHVlIHByb2ZpbGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3Io
Vk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiAr
MTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5j
YXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0q
LCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZN
KiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjE5
OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NjYsNiArMTk2NiwxMSBAQCBfbGxpbnRfb3BfY2F0
Y2g6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2Fs
bE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0
Y2goMykKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVj
a1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316534</attachid>
            <date>2017-07-27 00:43:43 -0700</date>
            <delta_ts>2017-07-27 11:31:12 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>29078</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMTk5NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjUgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXpl
OyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2Fm
dGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAg
ICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIyICsyNTE1LDM0IEBA
IGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHBy
b2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5z
aWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAg
ICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAg
ICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdl
IGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBt
b3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1w
bGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAh
PSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJl
ck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBzIGhvb2sgaW50byB0
b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8gb3IgbWF5YmUgd2Ug
anVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNpbmNlCisgICAgLy8g
dGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAoYXV0byYgcHJvZmls
ZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
cHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQog
ICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEw
MDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJv
ZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291
bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmls
ZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVBy
b2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGlu
dCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+
KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIs
NCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAg
ICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAg
ICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAg
ICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBz
aG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQncyB3b3J0aCBldmVu
IHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUgcHJvZmlsZXIgaGVy
ZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
Kj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisK
KyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlcltp
XS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9y
RWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyW2ldKTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiAr
Mzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0CiAgICAg
ZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGV4Y2VwdGlv
blJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFs
dWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3Rlcihp
bnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
MTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MzgsNiArMTgzOCw5IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gRklYTUU6IERvIHNw
YXJzZSBjb25kaXRpb25hbCB0aGluZ3MuCiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNh
c2UgRW50cnlTd2l0Y2g6CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBS
ZXR1cm46CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjE5OTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgyLDE3ICs4Miw5IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Js
b2MKICAgICAgICAgc2l6ZV90IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewotICAgICAgICAgICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6
Ci0gICAgICAgICAgICBjYXNlIFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAg
ICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6
Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFp
bENhbGxGb3J3YXJkVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAg
ICAgICAgICBpZiAobm9kZS0+aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBO
b2RlQW5kSW5kZXgobm9kZSwgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
ICAgICAgICAgICAgIC8vIFRoZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0
aGUgbGlrZS4gVGhlcmUgd2lsbCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0
ZXIgdGhlIHRlcm1pbmFsLiBUaGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFu
eSBjaGVja2VkIGNoaWxkcmVuLgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBo
ZXJlIGJlY2F1c2UgaXQncyBvdXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQ
aGFudG9tOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNiArMzAyLDcg
QEAgcHJpdmF0ZToKICAgICAvLyBMaW5rIGJsb2NrIHN1Y2Nlc3NvcnMuCiAgICAgdm9pZCBsaW5r
QmxvY2soQmFzaWNCbG9jayosIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFyZ2V0cyk7
CiAgICAgdm9pZCBsaW5rQmxvY2tzKFZlY3RvcjxVbmxpbmtlZEJsb2NrPiYgdW5saW5rZWRCbG9j
a3MsIFZlY3RvcjxCYXNpY0Jsb2NrKj4mIHBvc3NpYmxlVGFyZ2V0cyk7CisgICAgdm9pZCBjcmVh
dGVFbnRyeVN3aXRjaElmTmVlZGVkKCk7CiAgICAgCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiAgICAgewpAQCAt
MTEzMCw3ICsxMTMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxp
bmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAgICAg
ICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2Rl
QmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRz
OwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3
YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAgIC8vIHRoZSBoZWFk
IG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRv
IHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRoZSBvdGhlciB3YXkg
YXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTEyMTksNiArMTIyMCw5IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgVmVjdG9yPERlbGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRMb2NhbFF1ZXVlOwog
CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2VudHJ5cG9pbnRCbG9ja3M7CisgICAgICAgIAor
CiAgICAgQ29kZUJsb2NrKiBtX2RmZ0NvZGVCbG9jazsKICAgICBDYWxsTGlua1N0YXR1czo6Q29u
dGV4dE1hcCBtX2NhbGxDb250ZXh0TWFwOwogICAgIFN0dWJJbmZvTWFwIG1fZGZnU3R1YkluZm9z
OwpAQCAtNTE0NSw2ICs1MTQ5LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9o
YXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDoKKyAgICAgICAgICAgIGlmIChp
bmxpbmVDYWxsRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGRvIGFueXRo
aW5nIGhlcmUgZm9yIGlubGluZWQgZnJhbWVzLiBXZSB3b24ndCB0cmVhdCB0aGlzIGFzIGFuIGVu
dHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
KiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgICAgICAgICBidWZmZXItPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIG1fZW50cnlwb2ludEJsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOwogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudElu
c3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC01OTM1LDYgKzU5NTEsMjkg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VQogICAgIH0KIH0KIAor
dm9pZCBCeXRlQ29kZVBhcnNlcjo6Y3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpCit7CisgICAg
Ly8gRklYTUU6IGRvZXMgdGhpcyBicmVhayBjb25zdGFudHM/CisgICAgLy9WZWN0b3I8QmFzaWNC
bG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICBpZiAobV9lbnRyeXBvaW50QmxvY2tzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9lbnRyeXBvaW50QmxvY2tzLmFwcGVu
ZChtX2dyYXBoLmJsb2NrKDApKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2dyYXBoLm1fZW50
cnlTd2l0Y2hEYXRhKTsKKyAgICBtX2dyYXBoLm1fZW50cnlTd2l0Y2hEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTxFbnRyeVN3aXRjaERhdGE+KCk7CisgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0
YS0+YmxvY2tzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9lbnRyeXBvaW50QmxvY2tzLnNpemUo
KSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZW50cnlwb2ludEJsb2NrcykKKyAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YS0+YmxvY2tzLmFwcGVuZChibG9jayk7CisK
KyAgICBSZWY8QmFzaWNCbG9jaz4gYmxvY2sgPSBhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2soMCwg
bV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzLCAxKSk7CisgICAgYmxvY2stPmFwcGVuZChtX2dy
YXBoLmFkZE5vZGUoRW50cnlTd2l0Y2gsIE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9y
aWdpbigwKSwgZmFsc2UpLAorICAgICAgICBPcEluZm8obV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0
YS5nZXQoKSksIEVkZ2UoKSwgRWRnZSgpLCBFZGdlKCkpKTsKKyAgICBtX2dyYXBoLm1fYmxvY2tz
Lmluc2VydCgwLCBXVEZNb3ZlKGJsb2NrKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZ3JhcGgubV9ibG9ja3Nb
aV0tPmluZGV4ID0gaTsKK30KKwogQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6Oklu
bGluZVN0YWNrRW50cnkoCiAgICAgQnl0ZUNvZGVQYXJzZXIqIGJ5dGVDb2RlUGFyc2VyLAogICAg
IENvZGVCbG9jayogY29kZUJsb2NrLApAQCAtNjE5MSw4ICs2MjMwLDkgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJ
bmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAg
ICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3Rh
Y2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOworICAgIGNyZWF0ZUVudHJ5U3dpdGNoSWZO
ZWVkZWQoKTsKKwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9n
cmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDYgKzM2OSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1
bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNh
c2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMg
LSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2Us
IGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIg
b3ZlcmtpbGwuCisKKyAgICAgICAgLy8gRklYTUU6IGdyZXAgZm9yIGFsbCB1c2VzIG9mIGJsb2Nr
KDApIGFuZCBwZXJoYXBzIGFsc28gYWRkIG5vdGlvbiBvZiBlbnRyeXBvaW50cy4KICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspCiAgICAg
ICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJz
dFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjE5OTUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAg
ICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlz
aW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MjIsNiArNDIyLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAg
ICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAg
ICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4MSw2ICsxODEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNh
c2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAg
ICBjYXNlIERpcmVjdFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY5LDYgKzE5
NjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2Ug
Q3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIEp1bXA6CisgICAgICAgIGNhc2Ug
RW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxs
OgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjcsNiArOTY3LDcgQEAgcHVibGlj
OgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+IG1fbmV3QXJyYXlC
dWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7CiAgICAgQmFnPFN3
aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlTd2l0Y2hE
YXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9mZnNldERhdGE+IG1f
bXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZzZXREYXRhPiBtX211
bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhPiBt
X29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjE5
OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NCw2ICszNjQsMTMgQEAgaW5saW5lIGJvb2wgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShi
YXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4g
Y2hhbmdlZDsKICAgICB9CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOiB7CisgICAgICAgIGJvb2wg
Y2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrIDog
dGVybWluYWwtPmVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3MpCisgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRhcmdldEJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGNoYW5n
ZWQ7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxs
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lv
biAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBo
JiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIw
MywxNCBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7CiB9
OwogCitzdHJ1Y3QgRW50cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9OworCiBz
dHJ1Y3QgQ2FsbFZhcmFyZ3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9OwpA
QCAtMTI3NiwxNyArMTI4NCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJy
YW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRj
aCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQog
CisgICAgYm9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBv
cCgpID09IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJvb2wgaXNUZXJtaW5hbCgpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKdW1wOgogICAgICAgICBj
YXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAg
ICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OCw2ICsxMzYyLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3dp
dGNoRGF0YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0Y2hEYXRhKiBlbnRyeVN3aXRjaERh
dGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlTd2l0Y2goKSk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigpOworICAgIH0KICAgICAKICAgICB1
bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0xMzU4LDYgKzEzNzgsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAg
ICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgKyAxOworICAgICAgICBjYXNl
IEVudHJ5U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9j
a3Muc2l6ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIH0KQEAgLTEzNzEsNiArMTM5MywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCisg
ICAgICAgIGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0
Y2hEYXRhKCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAg
ICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4NSw2
ICszODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSnVt
cCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKFN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEVu
dHJ5U3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
SGFzVmFyQXJncykgXAogICAgIG1hY3JvKERpcmVjdFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExMCw2ICsxMTEwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNl
IERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICBjYXNlIFByb2ZpbGVUeXBlOgogICAg
ICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzA2LDYgKzMwNiw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QK
ICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAg
Y2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgog
ICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwODYsNiArNjA4Niw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAK
KyAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgIkZJWE1FIik7CisKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToK
ICAgICBjYXNlIFVwc2lsb246CkBAIC02MTE0LDcgKzYxMTcsNiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAg
ICBjYXNlIFBoYW50b21TcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFk
OgotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9k
ZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRF
c3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBw
bHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogCiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0
X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09Q
KG9wX2FmdGVyX2NhdGNoKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlz
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0
cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUzLDYgKzg1MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlv
biogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cit9CisKIHZvaWQg
SklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywxNSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9p
bnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYg
cHJvZmlsZSkgeworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVy
YW5kLCByZWdUMCk7CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9w
cm9maWxlKTsKKyAgICB9KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMjIgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworICAgIC8vIEZJWE1FOiBEbyB3ZSBoYXZlIGNvbnN0YW50IGluZGljZXMgaGVyZT8g
SWYgc28sIHBlcmhhcHMgd2Ugc2hvdWxkIG5vdC4gQW5kIHRoZW4gd2UgY2FuIHVzZQorICAgIC8v
IHRoZSBmYXN0IHZlcnNpb24uCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUu
cG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICBkYXRhTG9nTG4oIlByb2ZpbGluZyBsb2MiLCBWaXJ0dWFs
UmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLnRvTG9jYWwoKSwgIiA6ICIsIGV4ZWMtPnIocHJv
ZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1f
YnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT5yKHByb2ZpbGUubV9vcGVyYW5kKS5q
c1ZhbHVlKCkpOworICAgIH0pOworICAgIGRhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVlIHByb2Zp
bGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZy
YW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlm
eV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSop
IFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTE5NjYsNiArMTk2NiwxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2go
MykKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRf
b3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBp
bG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316558</attachid>
            <date>2017-07-27 11:31:12 -0700</date>
            <delta_ts>2017-07-31 14:16:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>32084</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMTk5NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjUgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXpl
OyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2Fm
dGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAg
ICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIyICsyNTE1LDM0IEBA
IGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHBy
b2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5z
aWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAg
ICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAg
ICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdl
IGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBt
b3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1w
bGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAh
PSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJl
ck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBzIGhvb2sgaW50byB0
b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8gb3IgbWF5YmUgd2Ug
anVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNpbmNlCisgICAgLy8g
dGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAoYXV0byYgcHJvZmls
ZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
cHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQog
ICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEw
MDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJv
ZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291
bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmls
ZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVBy
b2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGlu
dCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+
KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIs
NCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAg
ICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAg
ICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAg
ICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBz
aG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQncyB3b3J0aCBldmVu
IHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUgcHJvZmlsZXIgaGVy
ZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
Kj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisK
KyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlcltp
XS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9y
RWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyW2ldKTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiAr
Mzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0CiAgICAg
ZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGV4Y2VwdGlv
blJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFs
dWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3Rlcihp
bnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
MTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlv
bmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRj
aDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAg
ICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgy
LDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBz
aXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAg
IGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAg
IGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChu
b2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChu
b2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAg
Ly8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVy
ZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWlu
YWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hp
bGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBp
dCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIsNyBAQCBwcml2YXRlOgog
ICAgIC8vIExpbmsgYmxvY2sgc3VjY2Vzc29ycy4KICAgICB2b2lkIGxpbmtCbG9jayhCYXNpY0Js
b2NrKiwgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKTsKICAgICB2b2lkIGxp
bmtCbG9ja3MoVmVjdG9yPFVubGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJh
c2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKTsKKyAgICB2b2lkIGNyZWF0ZUVudHJ5U3dpdGNo
SWZOZWVkZWQoKTsKICAgICAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIG5ld1ZhcmlhYmxlQWNj
ZXNzRGF0YShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKICAgICB7CkBAIC0xMTMwLDcgKzExMzEs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIwLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC01MTQ1LDYg
KzUxNDksMjYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhh
bmRsZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAg
ICAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgorICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBmb3Ig
aW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKyAg
ICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAg
ICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5wb2ludGVyKTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBOZWVkIHRvIHNlZSBpZiB0aGlzIGNhbiBldmVyIGJlIG5vbi1sb2NhbHMuIFdlIG9ubHkgbmVl
ZCBsb2NhbHMuCisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExv
Y2FsLCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbikpOworICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8obmV3VmFyaWFibGVB
Y2Nlc3NEYXRhKFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkpKSwgdmFsdWUpOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9lbnRyeXBv
aW50QmxvY2tzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9hZnRlcl9jYXRjaCk7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgog
ICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2Rl
OjpSZWd1bGFyKTsKQEAgLTU5MzUsNiArNTk1OSwyOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjps
aW5rQmxvY2tzKFZlY3RvcjxVCiAgICAgfQogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpjcmVh
dGVFbnRyeVN3aXRjaElmTmVlZGVkKCkKK3sKKyAgICAvLyBGSVhNRTogZG9lcyB0aGlzIGJyZWFr
IGNvbnN0YW50cz8KKyAgICAvL1ZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9lbnRyeXBvaW50QmxvY2tz
OworICAgIGlmIChtX2VudHJ5cG9pbnRCbG9ja3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2VudHJ5cG9pbnRCbG9ja3MuYXBwZW5kKG1fZ3JhcGguYmxvY2soMCkpOworCisg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEpOworICAgIG1fZ3Jh
cGgubV9lbnRyeVN3aXRjaERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5U3dpdGNoRGF0YT4o
KTsKKyAgICBtX2dyYXBoLm1fZW50cnlTd2l0Y2hEYXRhLT5ibG9ja3MucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtX2VudHJ5cG9pbnRCbG9ja3Muc2l6ZSgpKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9lbnRyeXBvaW50QmxvY2tzKQorICAgICAgICBtX2dyYXBoLm1fZW50cnlTd2l0
Y2hEYXRhLT5ibG9ja3MuYXBwZW5kKGJsb2NrKTsKKworICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9j
ayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jaygwLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2Nh
bHMsIDEpKTsKKyAgICBibG9jay0+YXBwZW5kKG1fZ3JhcGguYWRkTm9kZShFbnRyeVN3aXRjaCwg
Tm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCBmYWxzZSksCisgICAgICAg
IE9wSW5mbyhtX2dyYXBoLm1fZW50cnlTd2l0Y2hEYXRhLmdldCgpKSwgRWRnZSgpLCBFZGdlKCks
IEVkZ2UoKSkpOworICAgIG1fZ3JhcGgubV9ibG9ja3MuaW5zZXJ0KDAsIFdURk1vdmUoYmxvY2sp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7
ICsraSkKKyAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrc1tpXS0+aW5kZXggPSBpOworfQorCiBCeXRl
Q29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICBCeXRl
Q29kZVBhcnNlciogYnl0ZUNvZGVQYXJzZXIsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCkBA
IC02MTkxLDggKzYyMzgsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAg
IG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAg
ICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tF
bnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFy
Z2V0cyk7CisgICAgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpOworCiAgICAgbV9ncmFwaC5k
ZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2Nr
cygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVh
ZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjksNiArMzY5LDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFy
Z3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2Rl
QmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVh
ZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwog
ICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhl
ciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KKworICAgICAgICAvLyBG
SVhNRTogZ3JlcCBmb3IgYWxsIHVzZXMgb2YgYmxvY2soMCkgYW5kIHBlcmhhcHMgYWxzbyBhZGQg
bm90aW9uIG9mIGVudHJ5cG9pbnRzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCkt
PnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1l
bnRzW2ldKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcs
NyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBv
cF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2Nv
cGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNh
c2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2Fz
ZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2
ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAg
Y2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1
cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVt
cDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBD
aGVja0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgog
ICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46
CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk1LDYg
KzE5Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAg
IGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAg
Y2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTY5LDYg
KzE5NjksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNh
c2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIEp1bXA6CisgICAgICAgIGNh
c2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxD
YWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk4Miw2ICsxOTgzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hh
YmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4
dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1v
dkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtOTY3LDYgKzk2Nyw3IEBAIHB1Ymxp
YzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5
QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxT
d2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNo
RGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBt
X211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9t
dWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4g
bV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQsNiArMzY0LDEzIEBAIGlubGluZSBib29sIElu
UGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2Uo
YmFzaWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJu
IGNoYW5nZWQ7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDogeworICAgICAgICBib29s
IGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA6
IHRlcm1pbmFsLT5lbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzKQorICAgICAgICAgICAgY2hhbmdl
ZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCB0YXJnZXRCbG9jayk7CisgICAgICAgIHJldHVybiBjaGFu
Z2VkOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2Fs
bDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNp
b24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDEzIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdy
YXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgSnVt
cDoKICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBj
YXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlX
cml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxNCBAQCBzdHJ1Y3QgU3dp
dGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7CiB9OwogCitzdHJ1Y3QgRW50cnlT
d2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9OworCiBzdHJ1Y3QgQ2FsbFZhcmFyZ3NE
YXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9OwpAQCAtODY2LDYgKzg3NCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEdl
dExvY2FsVW5saW5rZWQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgY2FzZSBab21iaWVIaW50OgpAQCAtMTI3NiwxNyArMTI4NSwyMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRj
aCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3Ao
KSA9PSBTd2l0Y2g7CiAgICAgfQogCisgICAgYm9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJv
b2wgaXNUZXJtaW5hbCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAg
Y2FzZSBKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6Cisg
ICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBj
YXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OCw2ICsx
MzYzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8U3dpdGNoRGF0YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0
Y2hEYXRhKiBlbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlT
d2l0Y2goKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigp
OworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0x
MzU4LDYgKzEzNzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAg
Y2FzZSBTd2l0Y2g6CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXpl
KCkgKyAxOworICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVu
dHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Muc2l6ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNzEsNiArMTM5NCwxMCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2Vz
LnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5i
bG9jazsKICAgICAgICAgfQorCisgICAgICAgIGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAg
ICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAg
c3dpdGNoIChpbmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1w
KCkpCkBAIC0xNTE3LDYgKzE1NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWljc1N0
b3JlOgogICAgICAgICBjYXNlIEF0b21pY3NTdWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoK
KyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjE5OTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MCw2ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBT
cGVjaWFsIG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdl
J3JlIGxvYWRpbmcgYSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNo
IGJ1ZmZlci4gKi9cCiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRK
UykgXAorICAgIG1hY3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBc
CiAgICAgLyogVGllci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAg
IG1hY3JvKENoZWNrVGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODUsNiAr
Mzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRy
eVN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhh
c1ZhckFyZ3MpIFwKICAgICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVIYXNWYXJBcmdzKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1i
ZXI6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAgICAgICAgc2V0UHJl
ZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTExMCw2ICsxMTExLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBEZWZp
bmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2Fz
ZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgU3dpdGNo
OgogICAgICAgICBjYXNlIFByb2ZpbGVUeXBlOgogICAgICAgICBjYXNlIFByb2ZpbGVDb250cm9s
RmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzA2LDYgKzMwNiw3IEBAIGJvb2wgc2Fm
ZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIEp1bXA6CiAgICAgY2Fz
ZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBj
YXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6
CkBAIC0zMjIsNiArMzIzLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoK
ICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVy
bjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYwODYsNiArNjA4NiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQogCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkZJWE1FIik7
CisKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2ls
b246CkBAIC02MTE0LDcgKzYxMTgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21T
cHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdf
Q1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODAsNiArODAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+
ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBGSVhNRTogCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAg
ICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNo
KQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMTk5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3Ro
aXMoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIxOTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUzLDYgKzg1
MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1p
dFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9v
cF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fz
c2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNz
ZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2
aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywxNSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
YXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0ZXJf
Y2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgYnVm
ZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAg
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdUMCk7Cisg
ICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICB9
KTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMTk5NTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMjIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIC8v
IEZJWE1FOiBEbyB3ZSBoYXZlIGNvbnN0YW50IGluZGljZXMgaGVyZT8gSWYgc28sIHBlcmhhcHMg
d2Ugc2hvdWxkIG5vdC4gQW5kIHRoZW4gd2UgY2FuIHVzZQorICAgIC8vIHRoZSBmYXN0IHZlcnNp
b24uCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAg
YnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICBkYXRhTG9nTG4oIlByb2ZpbGluZyBsb2MiLCBWaXJ0dWFsUmVnaXN0ZXIocHJvZmls
ZS5tX29wZXJhbmQpLnRvTG9jYWwoKSwgIiA6ICIsIGV4ZWMtPnIocHJvZmlsZS5tX29wZXJhbmQp
LmpzVmFsdWUoKSk7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZShleGVjLT5yKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAg
IH0pOworICAgIGRhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVlIHByb2ZpbGUhIik7CisKKyAgICBM
TElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhy
b3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFt
ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIx
OTk1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
aGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9w
cm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFk
b3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
YWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3df
c3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsK
ICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0
YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMjE5OTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NjYsNiAr
MTk2NiwxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRf
b3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
YWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316803</attachid>
            <date>2017-07-31 14:16:09 -0700</date>
            <delta_ts>2017-08-02 14:48:25 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>35513</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAwNzIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjUgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXpl
OyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ldLm1fb3BlcmFuZCA9
IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2Fm
dGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAg
ICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIyICsyNTE1LDM0IEBA
IGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHBy
b2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5z
aWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAg
ICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAg
ICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdl
IGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBt
b3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1w
bGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAh
PSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9m
aWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJl
ck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBzIGhvb2sgaW50byB0
b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8gb3IgbWF5YmUgd2Ug
anVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNpbmNlCisgICAgLy8g
dGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAoYXV0byYgcHJvZmls
ZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
cHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQog
ICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMDcyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEw
MDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJv
ZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRW
ZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291
bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmls
ZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIy
MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVBy
b2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGlu
dCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+
KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIs
NCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAg
ICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3Qg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAg
ICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAg
ICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBz
aG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQncyB3b3J0aCBldmVu
IHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUgcHJvZmlsZXIgaGVy
ZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
Kj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisK
KyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlcltp
XS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJlZShtX2J1ZmZlcik7
CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9y
RWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyW2ldKTsK
KyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMjIwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiAr
Mzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0CiAgICAg
ZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGV4Y2VwdGlv
blJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFs
dWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3Rlcihp
bnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAy
MjAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlv
bmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRj
aDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAg
ICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjAwNzIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgy
LDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBz
aXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAg
IGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAg
IGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChu
b2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChu
b2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAg
Ly8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVy
ZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWlu
YWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hp
bGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBp
dCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
cmV2aXNpb24gMjIwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIsNyBAQCBwcml2YXRlOgog
ICAgIC8vIExpbmsgYmxvY2sgc3VjY2Vzc29ycy4KICAgICB2b2lkIGxpbmtCbG9jayhCYXNpY0Js
b2NrKiwgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKTsKICAgICB2b2lkIGxp
bmtCbG9ja3MoVmVjdG9yPFVubGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2NrcywgVmVjdG9yPEJh
c2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKTsKKyAgICB2b2lkIGNyZWF0ZUVudHJ5U3dpdGNo
SWZOZWVkZWQoKTsKICAgICAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIG5ld1ZhcmlhYmxlQWNj
ZXNzRGF0YShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKICAgICB7CkBAIC0xMTMwLDcgKzExMzEs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIwLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDczLDYg
KzQwNzcsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
IC8vIElmIHdlIGFyZSB0aGUgZmlyc3QgYmFzaWMgYmxvY2ssIGludHJvZHVjZSBtYXJrZXJzIGZv
ciBhcmd1bWVudHMuIFRoaXMgYWxsb3dzCiAgICAgLy8gdXMgdG8gdHJhY2sgaWYgYSB1c2Ugb2Yg
YW4gYXJndW1lbnQgbWF5IHVzZSB0aGUgYWN0dWFsIGFyZ3VtZW50IHBhc3NlZCwgYXMKICAgICAv
LyBvcHBvc2VkIHRvIHVzaW5nIGEgdmFsdWUgd2Ugc2V0IGV4cGxpY2l0bHkuCisgICAgaWYgKG1f
Y3VycmVudEJsb2NrID09IG1fZ3JhcGguYmxvY2soMCkpIHsKKworICAgIH0KKwogICAgIGlmICht
X2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkg
ewogICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CiAg
ICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0
LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwpAQCAtNTE1MCw2ICs1MTU4
LDM4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
Y2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVy
cyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisKKyAgICAgICAg
Y2FzZSBvcF9hZnRlcl9jYXRjaDoKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkg
eworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGRvIGFueXRoaW5nIGhlcmUgZm9yIGlubGlu
ZWQgZnJhbWVzLiBXZSB3b24ndCB0cmVhdCB0aGlzIGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisgICAg
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKwor
ICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgcmlnaHQ/CisgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgICAgICAg
ICBWZWN0b3I8c3RkOjpwYWlyPGludCwgTm9kZSo+PiB2YWx1ZXNUb1NldDsKKyAgICAgICAgICAg
IHZhbHVlc1RvU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAgICAgICAg
ICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHNlZSBpZiB0aGlzIGNv
dmVycyBhcmd1bWVudHMuIFdlIG5lZWQgYXJndW1lbnQgcHJvZmlsZXMgaGVyZS4KKyAgICAgICAg
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxl
LmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhwcm9maWxl
Lm1fb3BlcmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoTW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3Bh
aXIocHJvZmlsZS5tX29wZXJhbmQsIHZhbHVlKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB2YWx1ZXNUb1Nl
dCkKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8obmV3VmFyaWFi
bGVBY2Nlc3NEYXRhKFZpcnR1YWxSZWdpc3RlcihwYWlyLmZpcnN0KSkpLCBwYWlyLnNlY29uZCk7
CisgICAgICAgICAgICAvL21fZW50cnlwb2ludEJsb2Nrcy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOwogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudElu
c3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC01OTQwLDYgKzU5ODAsMzAg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VQogICAgIH0KIH0KIAor
dm9pZCBCeXRlQ29kZVBhcnNlcjo6Y3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpCit7CisgICAg
cmV0dXJuOworICAgIC8vIEZJWE1FOiBkb2VzIHRoaXMgYnJlYWsgY29uc3RhbnRzPworICAgIC8v
VmVjdG9yPEJhc2ljQmxvY2sqPiBtX2VudHJ5cG9pbnRCbG9ja3M7CisgICAgaWYgKG1fZW50cnlw
b2ludEJsb2Nrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW50cnlwb2lu
dEJsb2Nrcy5hcHBlbmQobV9ncmFwaC5ibG9jaygwKSk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCgh
bV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSk7CisgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnlTd2l0Y2hEYXRhPigpOworICAgIG1fZ3JhcGgubV9l
bnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cnlwb2lu
dEJsb2Nrcy5zaXplKCkpOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2VudHJ5cG9p
bnRCbG9ja3MpCisgICAgICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5hcHBl
bmQoYmxvY2spOworCisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBC
YXNpY0Jsb2NrKDAsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOworICAgIGJsb2Nr
LT5hcHBlbmQobV9ncmFwaC5hZGROb2RlKEVudHJ5U3dpdGNoLCBOb2RlT3JpZ2luKENvZGVPcmln
aW4oMCksIENvZGVPcmlnaW4oMCksIGZhbHNlKSwKKyAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9l
bnRyeVN3aXRjaERhdGEuZ2V0KCkpLCBFZGdlKCksIEVkZ2UoKSwgRWRnZSgpKSk7CisgICAgbV9n
cmFwaC5tX2Jsb2Nrcy5pbnNlcnQoMCwgV1RGTW92ZShibG9jaykpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAgICBtX2dy
YXBoLm1fYmxvY2tzW2ldLT5pbmRleCA9IGk7Cit9CisKIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVT
dGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29k
ZVBhcnNlciwKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKQEAgLTYxMzgsOCArNjIwMiwxMCBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxv
Y2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0g
ICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jayk7CisgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2Nr
KSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAg
ICAgICAgICB9CkBAIC02MTk2LDggKzYyNjIsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFt
ZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3Mo
aW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxv
Y2tMaW5raW5nVGFyZ2V0cyk7CisgICAgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpOworCiAg
ICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJl
YWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CShyZXZpc2lvbiAyMjAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
CisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11bHRp
cGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2so
MCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw2ICszNjksOCBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1l
bnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNl
ZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0g
b25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBh
bmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92
ZXJraWxsLgorCisgICAgICAgIC8vIEZJWE1FOiBncmVwIGZvciBhbGwgdXNlcyBvZiBibG9jaygw
KSBhbmQgcGVyaGFwcyBhbHNvIGFkZCBub3Rpb24gb2YgZW50cnlwb2ludHMuCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KQogICAgICAg
ICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RU
aW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDA3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAg
IGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAgIGNhc2Ug
b3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dl
dF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAyMjAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dp
dGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZv
cmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDA3MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4
MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEp1
bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGly
ZWN0VGFpbENhbGw6CkBAIC0xOTUsNiArMTk2LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElz
Tm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIy
MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5NjksNiArMTk2OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
SXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAg
IGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1
cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6
CkBAIC0xOTgyLDYgKzE5ODMsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6
CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9v
cEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIwMDcyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MjEsNyArOTIxLDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAg
ICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8
QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+
LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7
CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxF
bmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRK
U1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk2Nyw2ICs5NjgsNyBAQCBw
dWJsaWM6CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0FycmF5QnVmZmVyRGF0YSwgND4gbV9uZXdB
cnJheUJ1ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERhdGE+IG1fYnJhbmNoRGF0YTsKICAgICBC
YWc8U3dpdGNoRGF0YT4gbV9zd2l0Y2hEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVN3
aXRjaERhdGE+IG1fZW50cnlTd2l0Y2hEYXRhOwogICAgIEJhZzxNdWx0aUdldEJ5T2Zmc2V0RGF0
YT4gbV9tdWx0aUdldEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8TXVsdGlQdXRCeU9mZnNldERhdGE+
IG1fbXVsdGlQdXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE9iamVjdE1hdGVyaWFsaXphdGlvbkRh
dGE+IG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lv
biAyMjAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDYgKzM2NCwxMyBAQCBpbmxpbmUgYm9v
bCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJl
dHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50cnlTd2l0Y2g6IHsKKyAgICAgICAg
Ym9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogdGFyZ2V0Qmxv
Y2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2NrcykKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0QmxvY2spOworICAgICAgICByZXR1cm4g
Y2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFp
bENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJl
dmlzaW9uIDIyMDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1w
bChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNl
IEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNl
IFVucmVhY2hhYmxlOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CiAg
ICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90
aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTQgQEAgc3RydWN0
IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwogfTsKIAorc3RydWN0IEVu
dHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgfQorICAg
IAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwogc3RydWN0IENhbGxWYXJh
cmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAgLTg2Nyw2ICs4NzUs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2Fz
ZSBHZXRMb2NhbFVubGlua2VkOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAg
ICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAg
ICAgICAgIGNhc2UgWm9tYmllSGludDoKQEAgLTEyNzcsMTcgKzEyODYsMjMgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNT
d2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9CisKICAg
ICBib29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAg
ICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNo
OgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAg
ICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTEzNDks
NiArMTM2NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRjaCgpKTsKICAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0KKworICAgIEVudHJ5
U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0Vu
dHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0Y2hEYXRh
Kj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpCiAgICAgewpA
QCAtMTM1OSw2ICsxMzgwLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAg
ICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+Y2FzZXMu
c2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgICAgIHJldHVy
biBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEzOTUsMTAgQEAgcHVi
bGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgpLT5j
YXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRocm91
Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3aXRjaCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5kZXhdOworCiAgICAg
ICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlz
SnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEF0b21p
Y3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0b21pY3NY
b3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDA3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
LyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhh
dCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2Ny
YXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVz
dWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wK
ICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzg1
LDYgKzM4Niw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhK
dW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
RW50cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjAwNzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAog
UHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCiB7CisgICAg
Ly8gRklYTUU6IHRoaXMgbG9va3MgdW51c2VkLCBidXQgSSB0aGluayBpdCdzIGVhc3kgdG8gbWFr
ZSBpdCB3b3JrCisgICAgLy8gdy8gbXVsdGlwbGUgcm9vdHMuIFZlcmlmeSBpdCBkb2VzLgogICAg
IG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7CiAgICAgCiAgICAgUG9zdE9yZGVy
QmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBU
b051bWJlcjoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgY2FzZSBFeHRyYWN0
Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMTEwLDYgKzExMTEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAgICAg
ICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBT
d2l0Y2g6CiAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgICAgIGNhc2UgUHJvZmlsZUNv
bnRyb2xGbG93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHJldmlzaW9uIDIyMDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDYsNiArMzA2LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAg
ICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgog
ICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWls
Q2FsbDoKQEAgLTMyMiw2ICszMjMsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6
CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExv
Y2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0
UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNp
b24gMjIwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA4Niw2ICs2MDg2LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8g
RU5BQkxFKEZUTF9KSVQpCiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgorICAgIGNhc2Ug
RW50cnlTd2l0Y2g6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiRklY
TUUiKTsKKwogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2Ug
VXBzaWxvbjoKQEAgLTYxMTQsNyArNjExOCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhh
bnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAg
IERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhk
YXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiAKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAyMjAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykK
ICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJf
Y2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9P
UChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDA3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFy
Z3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
dG9fdGhpcyhJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwMDcyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMs
NiArODUzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAg
ICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwogdm9pZCBKSVQ6OmVtaXRf
b3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CShyZXZpc2lvbiAyMjAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDE1IEBAIHZvaWQgSklUOjplbWl0
X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9h
ZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAg
ICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7
CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1Qw
KTsKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOwor
ICAgIH0pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDA3
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwyNSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisg
ICAgLy8gRklYTUU6IERvIHdlIGhhdmUgY29uc3RhbnQgaW5kaWNlcyBoZXJlPyBJZiBzbywgcGVy
aGFwcyB3ZSBzaG91bGQgbm90LiBBbmQgdGhlbiB3ZSBjYW4gdXNlCisgICAgLy8gdGhlIGZhc3Qg
dmVyc2lvbi4KKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVyKTsK
KyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgIGlmIChWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLmlzTG9j
YWwoKSkKKyAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvZmlsaW5nIGxvYyIsIFZpcnR1YWxSZWdp
c3Rlcihwcm9maWxlLm1fb3BlcmFuZCkudG9Mb2NhbCgpLCAiIDogIiwgZXhlYy0+cihwcm9maWxl
Lm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICAgICAgZWxzZSBpZiAoVmlydHVhbFJlZ2lzdGVy
KHByb2ZpbGUubV9vcGVyYW5kKS5pc0FyZ3VtZW50KCkpCisgICAgICAgICAgICBkYXRhTG9nTG4o
IlByb2ZpbGluZyBhcmciLCBWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLnRvQXJn
dW1lbnQoKSwgIiA6ICIsIGV4ZWMtPnIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7Cisg
ICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShl
eGVjLT5yKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgIH0pOworICAgIGRhdGFM
b2dMbigiQ29tcGxldGVkIHZhbHVlIHByb2ZpbGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30K
KwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZs
b3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDA3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9w
dQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRp
b25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWls
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwog
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3df
ZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJ
VCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3Zt
X2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMjIwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NjYsNiArMTk2NiwxMSBAQCBfbGxp
bnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAog
CitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfZW5k
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317002</attachid>
            <date>2017-08-02 14:48:25 -0700</date>
            <delta_ts>2017-08-03 14:47:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>40847</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtODIsMTcgKzgyLDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxv
YwogICAgICAgICBzaXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoK
LSAgICAgICAgICAgIGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAg
ICAgICAgICBjYXNlIFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoK
LSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbEZvcndhcmRWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAg
ICAgICAgIGlmIChub2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5v
ZGVBbmRJbmRleChub2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewog
ICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRo
ZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRl
ciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55
IGNoZWNrZWQgY2hpbGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhl
cmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBo
YW50b206CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIsNyBA
QCBwcml2YXRlOgogICAgIC8vIExpbmsgYmxvY2sgc3VjY2Vzc29ycy4KICAgICB2b2lkIGxpbmtC
bG9jayhCYXNpY0Jsb2NrKiwgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKTsK
ICAgICB2b2lkIGxpbmtCbG9ja3MoVmVjdG9yPFVubGlua2VkQmxvY2s+JiB1bmxpbmtlZEJsb2Nr
cywgVmVjdG9yPEJhc2ljQmxvY2sqPiYgcG9zc2libGVUYXJnZXRzKTsKKyAgICB2b2lkIGNyZWF0
ZUVudHJ5U3dpdGNoSWZOZWVkZWQoKTsKICAgICAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIG5l
d1ZhcmlhYmxlQWNjZXNzRGF0YShWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKICAgICB7CkBAIC0x
MTMwLDcgKzExMzEsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlu
a2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAg
ICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVC
ZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7
Ci0gICAgICAgIAorCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdh
cyBzcGxpdCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQg
b2YgdGhlIGNhbGxzaXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8g
dGhlCiAgICAgICAgIC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBh
cm91bmQ6IHRoZXJlJ3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIwLDkgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAK
KyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisK
ICAgICBDb2RlQmxvY2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250
ZXh0TWFwIG1fY2FsbENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7
CkBAIC01MTUwLDYgKzUxNTQsMzkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hh
c0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2Nh
dGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0
aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBl
bnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJs
b2NrLT5zaXplKCkpOworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIHJpZ2h0Pwor
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKworICAgICAg
ICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnBv
aW50ZXIpOworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIE5vZGUqPj4gdmFsdWVz
VG9TZXQ7CisgICAgICAgICAgICB2YWx1ZXNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1
ZmZlci0+bV9zaXplKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xv
Y2spOworCisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxl
QW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTmVl
ZCB0byBzZWUgaWYgdGhpcyBjb3ZlcnMgYXJndW1lbnRzLiBXZSBuZWVkIGFyZ3VtZW50IHByb2Zp
bGVzIGhlcmUuCisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExv
Y2FsLCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCBPcEluZm8ocHJlZGljdGlvbikpOworICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3Bl
cmFuZCksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWVzVG9TZXQudW5jaGVja2Vk
QXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHByb2ZpbGUubV9vcGVyYW5kLCB2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogdmFsdWVzVG9TZXQpCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRMb2Nh
bCwgT3BJbmZvKG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShWaXJ0dWFsUmVnaXN0ZXIocGFpci5maXJz
dCkpKSwgcGFpci5zZWNvbmQpOworICAgICAgICAgICAgLy9tX2VudHJ5cG9pbnRCbG9ja3MuYXBw
ZW5kKG1fY3VycmVudEJsb2NrKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2Nh
dGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAg
ICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6
UmVndWxhcik7CkBAIC01OTQwLDYgKzU5NzcsMzAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlu
a0Jsb2NrcyhWZWN0b3I8VQogICAgIH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y3JlYXRl
RW50cnlTd2l0Y2hJZk5lZWRlZCgpCit7CisgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBkb2Vz
IHRoaXMgYnJlYWsgY29uc3RhbnRzPworICAgIC8vVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2VudHJ5
cG9pbnRCbG9ja3M7CisgICAgaWYgKG1fZW50cnlwb2ludEJsb2Nrcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fZW50cnlwb2ludEJsb2Nrcy5hcHBlbmQobV9ncmFwaC5ibG9j
aygwKSk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSk7
CisgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnlT
d2l0Y2hEYXRhPigpOworICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cnlwb2ludEJsb2Nrcy5zaXplKCkpOworICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX2VudHJ5cG9pbnRCbG9ja3MpCisgICAgICAgIG1fZ3JhcGgu
bV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5hcHBlbmQoYmxvY2spOworCisgICAgUmVmPEJhc2lj
QmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKDAsIG1fbnVtQXJndW1lbnRz
LCBtX251bUxvY2FscywgMSkpOworICAgIGJsb2NrLT5hcHBlbmQobV9ncmFwaC5hZGROb2RlKEVu
dHJ5U3dpdGNoLCBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIGZhbHNl
KSwKKyAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEuZ2V0KCkpLCBFZGdl
KCksIEVkZ2UoKSwgRWRnZSgpKSk7CisgICAgbV9ncmFwaC5tX2Jsb2Nrcy5pbnNlcnQoMCwgV1RG
TW92ZShibG9jaykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxv
Y2tzLnNpemUoKTsgKytpKQorICAgICAgICBtX2dyYXBoLm1fYmxvY2tzW2ldLT5pbmRleCA9IGk7
Cit9CisKIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5
KAogICAgIEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlciwKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywKQEAgLTYxMzgsOCArNjE5OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBp
cyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJs
b2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDgg
KzYyNTksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAg
cGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3Vu
bGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7Cisg
ICAgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVS
ZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAg
IApAQCAtNjIxNCw2ICs2Mjc4LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAg
IG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1l
dGVyU2xvdHMgPSBtX3BhcmFtZXRlclNsb3RzOwogCisgICAgaWYgKHRydWUpCisgICAgICAgIG1f
Z3JhcGguZHVtcCgpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkcuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAorICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGZha2UgYSByb290IHdo
ZW4gd2UgaGF2ZSBtdWx0aXBsZSBlbnRyeXBvaW50cy4KICAgICBOb2RlIHJvb3QoKSB7IHJldHVy
biBtX2dyYXBoLmJsb2NrKDApOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhh
c2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNiArMzY5LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0
aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAg
IC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJl
bnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUg
cHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBz
ZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KKworICAgICAgICAvLyBGSVhNRTogZ3JlcCBmb3IgYWxs
IHVzZXMgb2YgYmxvY2soMCkgYW5kIHBlcmhhcHMgYWxzbyBhZGQgbm90aW9uIG9mIGVudHJ5cG9p
bnRzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUo
KTsgaS0tOykKICAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5z
ZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9j
YXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6
CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2No
aWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAg
IGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4
dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVyaXpl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5j
aDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVGhy
b3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4Miw2ICsxODIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgor
ICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2Fs
bDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk2LDYgKzE5Nyw3IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNr
ZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6
CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxv
Y2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0
UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcwLDYgKzE5NzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJn
dW1lbnRzOgogICAgICAgICBjYXNlIEp1bXA6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAg
ICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNl
IERpcmVjdFRhaWxDYWxsOgpAQCAtMTk4Myw2ICsxOTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBDaGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgog
ICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNh
c2UgWm9tYmllSGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQwLDggKzY0MCwxMCBAQCB2b2lkIEdyYXBoOjpoYW5k
bGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxp
dHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmts
aXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBw
ZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04
NTAsNyArODUyLDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAg
ICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29y
a2xpc3QucHVzaChibG9jaygwKSk7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGlzIHJl
YWxseSB3aGF0IHdlIHdhbnQgaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQg
OiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAg
IHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVt
U3VjY2Vzc29ycygpOyBpLS07KQpAQCAtODYzLDcgKzg2Nyw5IEBAIEJsb2NrTGlzdCBHcmFwaDo6
YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9y
ZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsK
KyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJl
LgorICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAg
ICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVy
IGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsK
ICAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMSw3ICs5MjEsOCBAQCBwdWJsaWM6
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRC
bG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tz
OworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3Rv
cjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1f
dmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1
ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3pl
blZhbHVlTWFwOwpAQCAtOTY3LDYgKzk2OCw3IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0
b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8
QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERh
dGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERh
dGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRh
OwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsK
ICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw1NCArOTMsNjIgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8Tm9k
ZUFicwogCiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91bGRS
ZXZpc2l0ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAgcm9v
dC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFTdHJ1
Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygp
OyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7
Ci0KLSAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5tX2Zv
cm0gPT0gU1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0
c1tpXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBm
b3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICBm
b3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKLSAgICAg
ICAgICAgIH0KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50
cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7
CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKKyAgICAgICAgZW50
cnlwb2ludC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+
Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Cisg
ICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVj
dHVyZXNBcmVXYXRjaGVkOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgeworICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7CisKKyAgICAg
ICAgICAgIGlmIChlbnRyeXBvaW50ID09IG1fZ3JhcGguYmxvY2soMCkpIHsKKyAgICAgICAgICAg
ICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9m
b3JtID09IFNTQSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50Rm9ybWF0c1tpXTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICAgICAg
ICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRK
U1ZhbHVlOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAg
ICAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShTcGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNW
YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5j
bGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewot
ICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwg
bnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3Qt
PnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFs
dWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5s
b2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0g
ICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAg
ICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBv
aW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVu
dHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9CisgICAg
fQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFs
T3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJs
b2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMgYWJvdmUu
CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVChibG9j
ay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZhbHNl
OwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYgKzM3Miwx
MyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9j
ayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50cnlTd2l0
Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoQmFzaWNC
bG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2NrcykK
KyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0QmxvY2spOwor
ICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0dXJu
OgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0
TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1
dGlvbjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNh
c2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRy
eUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90
OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsy
MDMsMTQgQEAgc3RydWN0IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwog
fTsKIAorc3RydWN0IEVudHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwog
c3RydWN0IENhbGxWYXJhcmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsK
QEAgLTg2Nyw2ICs4NzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgICAgICBj
YXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKQEAgLTEyNzcsMTcgKzEyODYs
MjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAg
IAotICAgIGJvb2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRy
eVN3aXRjaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRj
aDsKKyAgICB9CisKICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNo
IChvcCgpKSB7CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAg
ICAgIGNhc2UgU3dpdGNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNl
IFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWls
Q2FsbDoKQEAgLTEzNDksNiArMTM2NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3
aXRjaCgpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAg
IH0KKworICAgIEVudHJ5U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc0VudHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
RW50cnlTd2l0Y2hEYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vz
c29ycygpCiAgICAgewpAQCAtMTM1OSw2ICsxMzgwLDggQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIDI7CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRj
aERhdGEoKS0+Y2FzZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAg
ICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYg
KzEzOTUsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0g
c3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERh
dGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRy
eVN3aXRjaCgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Nb
aW5kZXhdOworCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAg
ICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ1LDcgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIEF0b21pY3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAg
ICBjYXNlIEF0b21pY3NYb3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRM
LiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFi
bGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRy
eUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0
byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5l
cmF0ZSkgXApAQCAtMzg2LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNo
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGws
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYg
Z3JhcGgpCiB7CisgICAgLy8gRklYTUU6IHRoaXMgbG9va3MgdW51c2VkLCBidXQgSSB0aGluayBp
dCdzIGVhc3kgdG8gbWFrZSBpdCB3b3JrCisgICAgLy8gdy8gbXVsdGlwbGUgcm9vdHMuIFZlcmlm
eSBpdCBkb2VzLgogICAgIG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7CiAgICAg
CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIw
LDYgKzcyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoK
ICAgICAgICAgY2FzZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAg
ICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7
CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0
aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTExLDYgKzExMTIsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZH
OjpKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoK
ICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgICAg
IGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcs
NiArMzA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNl
IEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAg
Y2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1
dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNh
c2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA4Nyw2ICs2MDg3LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExv
Y2FsOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkZJWE1FIik7CisK
KyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2Ug
UGhpOgogICAgIGNhc2UgVXBzaWxvbjoKQEAgLTYxMTUsNyArNjExOSw2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0
OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhT
cHJlYWQ6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3Rl
ZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25D
b3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiAKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25z
dHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJ
TkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAg
ICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3Rv
X3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2
ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Nh
dGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NTMsNiArODUzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwog
dm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDE1IEBA
IHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kJiBwcm9maWxlKSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5t
X29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmls
ZS5tX3Byb2ZpbGUpOworICAgIH0pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwyMCBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0g
c3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRl
cik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJv
ZmlsZSkgeworICAgICAgICBkYXRhTG9nTG4oIlByb2ZpbGluZyByZWcgIiwgVmlydHVhbFJlZ2lz
dGVyKHByb2ZpbGUubV9vcGVyYW5kKSwgIiA6ICIsIGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5t
X29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0
c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5k
KS5qc1ZhbHVlKCkpOworICAgIH0pOworICAgIGRhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVlIHBy
b2ZpbGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0Nh
bGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2Fs
bEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25v
dGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xv
Z19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFt
ZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBX
VEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcg
Y29weSkKQEAgLTE5NzgsNiArMTk3OCwxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6
CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisg
ICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317159</attachid>
            <date>2017-08-03 14:47:06 -0700</date>
            <delta_ts>2017-08-03 16:22:51 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>57493</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOworICAgIHZvaWQgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
OwogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKQEAgLTMyOSw2ICszMzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBjYWNoaW5nIGNvZGUgc291bmQ/CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5vZmZzZXQoKSk7CkBAIC0xMTMwLDcgKzExMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIxLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDg5LDYg
KzQwOTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5m
byh2YXJpYWJsZSkpOwogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0g
PSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKworICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IG1fZ3JhcGgubV9hcmd1bWVudHMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MTUwLDYgKzUx
NTcsODIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAg
ICBjYXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBp
bmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAg
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogbWF5YmUgd2Ugc2hvdWxkIGhhbmRsZSB0aGlzIGJpdCB3
aGVuIGRvaW5nIE9TUiBlbnRyeS4gQnV0IHdlIHNldCB0aGlzIHRvIG9wX2FmdGVyX2NhdGNoJ3MK
KyAgICAgICAgICAgIC8vIGJ5dGVjb2RlIGluZGV4LiBBbHRlcm5hdGl2ZWx5LCB3aGVuIGRvaW5n
IE9TUiBlbnRyeSwgd2UgY291bGQgc2VhcmNoIGZvciB0aGUgcHJldmlvdXMgYnl0ZWNvZGUgaW5k
ZXgKKyAgICAgICAgICAgIC8vIG9mIHRoZSBvcF9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICAvLyBG
SVhNRTogaXMgdGhpcyByaWdodD8KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc09TUlRh
cmdldCA9IHRydWU7CisKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoT1NSVGFy
Z2V0ID0gdHJ1ZTsKKworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8aW50LCBOb2RlKj4+IHZhbHVlc1RvU2V0OworICAgICAgICAgICAgdmFsdWVzVG9TZXQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgbWF5
IHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNh
dXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBWZWN0b3I8
U3BlY3VsYXRlZFR5cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUg
c2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAg
ICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHBy
b2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRo
aXMgY292ZXJzIGFyZ3VtZW50cy4gV2UgbmVlZCBhcmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAg
ICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFu
ZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9m
aWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhw
cm9maWxlLm1fb3BlcmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFuZCksIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1RvU2V0LnVuY2hlY2tlZEFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihwcm9maWxlLm1fb3BlcmFuZCwgdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogQWRkIHNvbWUgd2F5IHRvIGFzc2VydCB3ZSBzZWUgYWxsIGFyZ3VtZW50cy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCld
ID0gcHJlZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhh
dCBpdCdzIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8
Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50
QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0
aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHRoaXMgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAg
ICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
c2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRB
cmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogdmFsdWVzVG9TZXQpCisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENv
ZGVPcmlnaW4oKSwgVmlydHVhbFJlZ2lzdGVyKHBhaXIuZmlyc3QpLCBwYWlyLnNlY29uZCk7CisK
KyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwo
Y3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC01OTQwLDYg
KzYwMjMsMzAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VQogICAg
IH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
Cit7CisgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBkb2VzIHRoaXMgYnJlYWsgY29uc3RhbnRz
PworICAgIC8vVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2VudHJ5cG9pbnRCbG9ja3M7CisgICAgaWYg
KG1fZW50cnlwb2ludEJsb2Nrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZW50cnlwb2ludEJsb2Nrcy5hcHBlbmQobV9ncmFwaC5ibG9jaygwKSk7CisKKyAgICBSRUxFQVNF
X0FTU0VSVCghbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSk7CisgICAgbV9ncmFwaC5tX2VudHJ5
U3dpdGNoRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnlTd2l0Y2hEYXRhPigpOworICAgIG1f
Z3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
ZW50cnlwb2ludEJsb2Nrcy5zaXplKCkpOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2VudHJ5cG9pbnRCbG9ja3MpCisgICAgICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJs
b2Nrcy5hcHBlbmQoYmxvY2spOworCisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRS
ZWYoKm5ldyBCYXNpY0Jsb2NrKDAsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwor
ICAgIGJsb2NrLT5hcHBlbmQobV9ncmFwaC5hZGROb2RlKEVudHJ5U3dpdGNoLCBOb2RlT3JpZ2lu
KENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIGZhbHNlKSwKKyAgICAgICAgT3BJbmZvKG1f
Z3JhcGgubV9lbnRyeVN3aXRjaERhdGEuZ2V0KCkpLCBFZGdlKCksIEVkZ2UoKSwgRWRnZSgpKSk7
CisgICAgbV9ncmFwaC5tX2Jsb2Nrcy5pbnNlcnQoMCwgV1RGTW92ZShibG9jaykpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytpKQorICAg
ICAgICBtX2dyYXBoLm1fYmxvY2tzW2ldLT5pbmRleCA9IGk7Cit9CisKIEJ5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIEJ5dGVDb2RlUGFyc2Vy
KiBieXRlQ29kZVBhcnNlciwKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKQEAgLTYxMzgsOCAr
NjI0NSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVu
bGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0
YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9j
ayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDggKzYzMDUsOSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCks
IElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQog
ICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVT
dGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisgICAgY3JlYXRlRW50cnlTd2l0Y2hJ
Zk5lZWRlZCgpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBt
X2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApAQCAtNjIxNCw2ICs2MzI0LDkg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMg
PSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRl
clNsb3RzOwogCisgICAgaWYgKHRydWUpCisgICAgICAgIG1fZ3JhcGguZHVtcCgpOworCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkocmV2
aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAg
IC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGZha2UgYSByb290IHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBl
bnRyeXBvaW50cy4KICAgICBOb2RlIHJvb3QoKSB7IHJldHVybiBtX2dyYXBoLmJsb2NrKDApOyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDE0IEBAIHByaXZhdGU6CiAgICAgICAg
IC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMg
dG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBX
ZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUg
Zm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBh
bm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3Zlcmtp
bGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgp
OyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNl
dEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAg
IC8vIEZJWE1FOiBncmVwIGZvciBhbGwgdXNlcyBvZiBibG9jaygwKSBhbmQgcGVyaGFwcyBhbHNv
IGFkZCBub3Rpb24gb2YgZW50cnlwb2ludHMuCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGVudHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwg
OD4mIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
cmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAg
ICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5k
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ug
b3BfY2F0Y2g6CisgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9y
ZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRv
d19jaGlja2VuX3Byb2xvZ3VlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToK
ICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgog
ICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtNDIyLDYgKzQyMyw3IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBC
cmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNl
IFRocm93OgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGFsbFRy
YW5zaXRpb25zSGF2ZUJlZW5NYXJrZWQ7IC8vIEluaXRpYWxpemVkIGFuZCB1c2VkIG9uIGV2ZXJ5
IEdDLgogICAgIGJvb2wgaXNTdGlsbFZhbGlkOwogICAgIGJvb2wgaGFzVk1UcmFwc0JyZWFrcG9p
bnRzSW5zdGFsbGVkIHsgZmFsc2UgfTsKKworICAgIC8vIFVzZWQgd2hlbiBkb2luZyBPU1IgZW50
cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4
cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9y
PD4gYXJndW1lbnRGb3JtYXRzOwogICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJhZzxkb3VibGU+PiBkb3VibGVDb25zdGFudHM7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJs
b2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVu
dHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhh
cmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0No
ZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3Jh
cGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEp1bXA6
CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CkBAIC0xOTYsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9u
RW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNG
dW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46
CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBA
IC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAg
ICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9j
YWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhp
bnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhf
dCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIs
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIw
MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0MCw4ICs2NDAsMTAgQEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZl
Y3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBW
ZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxv
Y2soMCkpOwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNp
Y0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50
LT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50
KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtODUwLDcgKzg1Miw5IEBA
IEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5QcmVPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJl
c3VsdDsKICAgICBCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxv
Y2soMCkpOworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBpcyByZWFsbHkgd2hhdCB3ZSB3
YW50IGhlcmUuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50
cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNC
bG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGJs
b2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsg
aS0tOykKQEAgLTg2Myw3ICs4NjcsOSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9y
ZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJsb2NrV29ya2xp
c3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgLy8gRklYTUU6
IE1ha2Ugc3VyZSB0aGlzIGlzIHJlYWxseSB3aGF0IHdlIHdhbnQgaGVyZS4KKyAgICBmb3IgKEJh
c2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5w
dXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xp
c3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2Ug
VmlzaXRPcmRlcjo6UHJlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CSh3b3JraW5nIGNvcHkpCkBAIC05MjEsNyArOTIxLDEwIEBAIHB1YmxpYzoKICAgICBDb2RlQmxv
Y2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAgIAot
ICAgIFZlY3RvcjwgUmVmUHRyPEJhc2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9y
PFJlZlB0cjxCYXNpY0Jsb2NrPiwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxvY2sq
LCAxPiBtX2VudHJ5cG9pbnRzOworICAgIC8vIEZJWE1FOiBDb3VsZCBpbmNvcnBvcmF0ZSB0aGlz
IGFib3ZlLgorICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50
cnlwb2ludFRvQXJndW1lbnRzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJl
bjsKIAogICAgIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2RlZEpT
VmFsdWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7CkBA
IC05NjcsNiArOTcwLDcgQEAgcHVibGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1
ZmZlckRhdGEsIDQ+IG1fbmV3QXJyYXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBt
X2JyYW5jaERhdGE7CiAgICAgQmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnlTd2l0Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8
TXVsdGlHZXRCeU9mZnNldERhdGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11
bHRpUHV0QnlPZmZzZXREYXRhPiBtX211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhPiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5
Myw1OSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQg
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVl
OwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENv
bnN0YW50cyA9IGZhbHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVh
ZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJT
dGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAg
ICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBG
bHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0g
ICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ld
OwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNo
ZWRKU1ZhbHVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9l
bnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1
ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAgICBl
bnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50
LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsK
KyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3Ry
dWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAgICAg
ICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKworICAg
ICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9m
b3JtID09IFNTQSkKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRG
b3JtYXRzW2ldOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewor
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBl
KFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Rmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFy
Z3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJn
dW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVz
aGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZs
dXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Rmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSku
c2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1
c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChp
KS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsK
LSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8
IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2sp
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNB
dFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAg
ICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAg
ICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsK
ICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2st
PmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw2ICszNjksMTMgQEAgaW5saW5lIGJvb2wg
SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1
cm4gY2hhbmdlZDsKICAgICB9CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOiB7CisgICAgICAgIGJv
b2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHRhcmdldEJsb2Nr
IDogdGVybWluYWwtPmVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3MpCisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRhcmdldEJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGNo
YW5nZWQ7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxD
YWxsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw2ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRy
eSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50
cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaE9TUkVu
dHJ5KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgY2F0Y2hPU1JFbnRyeS5hcHBlbmQoREZHOjpDYXRjaE9TUkVudHJ5RGF0
YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2RlT2Zmc2V0IH0pOworICAgIH0KICAgICAKICAg
ICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAt
MTMyLDYgKzEzNyw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247
CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8REZH
OjpDYXRjaE9TUkVudHJ5RGF0YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8
REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVj
b3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFt
IHZhcmlhYmxlRXZlbnRTdHJlYW07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1NCw0OSAr
NTU0LDU3IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIHZvaWQg
SklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENv
bXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CiAgICAg
Ly8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJs
ZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCi0gICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2Vj
dGlvbk9mQ0ZBSGFzVmlzaXRlZCkKKyAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZD
RkFIYXNWaXNpdGVkKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0
Y2hPU1JUYXJnZXQpOyAvLyBUaGlzIGlzIGFuIGVudHJ5cG9pbnQsIHRvIGJ5IGRlZmluaXRpb24s
IGl0J3MgcmVhY2hhYmxlLgogICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIE9TUkVudHJ5
RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5
dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCi0gICAg
ZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZh
bHVlc0F0SGVhZDsKLSAgICAgICAgCi0gICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGlu
IG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZAotICAg
IC8vIHZhbHVlIG9mIChOb25lLCBbXSkuIEJ1dCB0aGUgb2xkIEpJVCBtYXkgc3Rhc2ggc29tZSB2
YWx1ZXMgdGhlcmUuIFNvIHdlIHJlYWxseQotICAgIC8vIG5lZWQgKFRvcCwgVE9QKS4KLSAgICBm
b3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzaWNCbG9jay52YXJpYWJsZXNB
dEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVudCkgewotICAgICAgICBOb2RlKiBu
b2RlID0gYmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwotICAg
ICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCi0gICAgICAgICAgICBl
bnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVudChhcmd1bWVudCkubWFrZUhlYXBUb3AoKTsK
ICAgICB9Ci0gICAgZm9yIChzaXplX3QgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2ljQmxvY2sudmFy
aWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsrbG9jYWwpIHsKLSAgICAgICAgTm9kZSog
bm9kZSA9IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKLSAgICAgICAg
aWYgKCFub2RlIHx8ICFub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgZW50cnkt
Pm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpLm1ha2VIZWFwVG9wKCk7Ci0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgZW50cnktPm1fbWFjaGluZVN0YWNrVXNl
ZC5zZXQodmFyaWFibGUtPm1hY2hpbmVMb2NhbCgpLnRvTG9jYWwoKSk7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlLT5mbHVzaEZvcm1hdCgpKSB7Ci0gICAg
ICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6Ci0gICAgICAgICAgICAgICAgZW50cnktPm1fbG9j
YWxzRm9yY2VkRG91YmxlLnNldChsb2NhbCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIEZsdXNoZWRJbnQ1MjoKLSAgICAgICAgICAgICAgICBlbnRyeS0+bV9sb2Nh
bHNGb3JjZWRBbnlJbnQuc2V0KGxvY2FsKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisK
KyAgICBpZiAoYmFzaWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0KSB7CisgICAgICAgIC8vIENhdGNo
IE9TUiBlbnRyaWVzIGp1c3QgbG9hZCBmcm9tIGEgYnVmZmVyLCBzbyB3ZSBkb24ndCBuZWVkIHRv
IHByb3ZlCisgICAgICAgIC8vIHRoZSB0eXBlIG9mIGFueXRoaW5nIGJlc2lkZXMgdGhlIGFyZ3Vt
ZW50cyB1cG9uIGVudHJ5LgorICAgICAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50cnko
YmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUt
PmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIu
b2Zmc2V0T2YoYmxvY2tIZWFkKSk7CisgICAgICAgIAorICAgICAgICBlbnRyeS0+bV9leHBlY3Rl
ZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAodmFyaWFibGUtPmxvY2FsKCkgIT0gdmFyaWFibGUt
Pm1hY2hpbmVMb2NhbCgpKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPm1fcmVzaHVmZmxpbmdz
LmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgT1NSRW50cnlSZXNodWZmbGluZygKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5sb2NhbCgpLm9mZnNldCgpLCB2YXJpYWJsZS0+
bWFjaGluZUxvY2FsKCkub2Zmc2V0KCkpKTsKKyAgICAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2
YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBl
Y3RlZAorICAgICAgICAvLyB2YWx1ZSBvZiAoTm9uZSwgW10pLiBCdXQgdGhlIG9sZCBKSVQgbWF5
IHN0YXNoIHNvbWUgdmFsdWVzIHRoZXJlLiBTbyB3ZSByZWFsbHkKKyAgICAgICAgLy8gbmVlZCAo
VG9wLCBUT1ApLgorICAgICAgICBmb3IgKHNpemVfdCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwg
YmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKythcmd1bWVu
dCkgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFk
LmFyZ3VtZW50KGFyZ3VtZW50KTsKKyAgICAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+c2hv
dWxkR2VuZXJhdGUoKSkKKyAgICAgICAgICAgICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5h
cmd1bWVudChhcmd1bWVudCkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgfQorICAgICAgICBmb3Ig
KHNpemVfdCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzaWNCbG9jay52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKTsgKytsb2NhbCkgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJhc2lj
QmxvY2sudmFyaWFibGVzQXRIZWFkLmxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAgIGlmICghbm9k
ZSB8fCAhbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKKyAgICAgICAgICAgICAgICBlbnRyeS0+bV9l
eHBlY3RlZFZhbHVlcy5sb2NhbChsb2NhbCkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAgICBlbnRyeS0+bV9tYWNoaW5l
U3RhY2tVc2VkLnNldCh2YXJpYWJsZS0+bWFjaGluZUxvY2FsKCkudG9Mb2NhbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3dpdGNoICh2YXJpYWJsZS0+Zmx1c2hG
b3JtYXQoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZToKKyAgICAgICAg
ICAgICAgICAgICAgZW50cnktPm1fbG9jYWxzRm9yY2VkRG91YmxlLnNldChsb2NhbCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDUy
OgorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bV9sb2NhbHNGb3JjZWRBbnlJbnQuc2V0KGxv
Y2FsKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+bG9jYWwoKSAhPSB2YXJp
YWJsZS0+bWFjaGluZUxvY2FsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPm1fcmVz
aHVmZmxpbmdzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TUkVudHJ5UmVzaHVm
ZmxpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmxvY2FsKCkub2Zm
c2V0KCksIHZhcmlhYmxlLT5tYWNoaW5lTG9jYWwoKS5vZmZzZXQoKSkpOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGVu
dHJ5LT5tX3Jlc2h1ZmZsaW5ncy5zaHJpbmtUb0ZpdCgpOwogICAgIH0KLSAgICAgICAgCi0gICAg
ZW50cnktPm1fcmVzaHVmZmxpbmdzLnNocmlua1RvRml0KCk7CiB9CiAKIHZvaWQgSklUQ29tcGls
ZXI6OmFwcGVuZEV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdChFeGl0S2luZCBraW5kLCB1bnNpZ25l
ZCBldmVudFN0cmVhbUluZGV4LCBDb2RlT3JpZ2luIG9wQ2F0Y2hPcmlnaW4sIEhhbmRsZXJJbmZv
KiBleGNlcHRpb25IYW5kbGVyLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QganVtcHNUb0ZhaWwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMSw3ICsxMDEsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2Rl
LT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9k
ZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZp
bmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmlt
b3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9B
cmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9ib29sIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2Rl
LT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9k
ZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFt
ZTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAg
ICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5s
b2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+
bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAg
ICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
YmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1
bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmlt
b3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJh
bmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0TW9kZSBtYXlF
eGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAg
ICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAg
ICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJS
ZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgor
ICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNh
c2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTQgQEAg
c3RydWN0IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwogfTsKIAorc3Ry
dWN0IEVudHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAg
fQorICAgIAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwogc3RydWN0IENh
bGxWYXJhcmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAgLTg2Nyw2
ICs4NzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAg
ICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2Fs
OgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgICAgICBjYXNlIE1vdkhp
bnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKQEAgLTEyNzcsMTcgKzEyODYsMjMgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJv
b2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9
CisKICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7
CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2Ug
U3dpdGNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoK
ICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAg
LTEzNDksNiArMTM2NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRjaCgpKTsK
ICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0KKworICAg
IEVudHJ5U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc0VudHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0
Y2hEYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpCiAg
ICAgewpAQCAtMTM1OSw2ICsxMzgwLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDI7
CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+
Y2FzZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgICAg
IHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEzOTUsMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0
YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFs
bFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3aXRjaCgp
KQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5kZXhdOwor
CiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAg
aWYgKGlzSnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ1LDcgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEF0b21pY3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0
b21pY3NYb3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIy
MDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0
ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0
aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpT
KSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRM
LiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApA
QCAtMzg2LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
bWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4s
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwxMSBAQCBp
bmxpbmUgdW5zaWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVu
dHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hPU1JFbnRyeURhdGEg
eworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVD
b2RlT2Zmc2V0OworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0
aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYg
dGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNT
dGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTIsNiArMTEyLDggQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJl
LgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAg
ICAgICAvLyBGSVhNRTogSSBuZWVkIHRvIG1ha2UgdGhpcyB3b3JrIGluIHRoZSBuZXcgc3lzdGVt
LgorCiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+
bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2Rl
ID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAg
ICAgaWYgKCFvbGROb2RlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBQcmVQ
b3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKIHsKKyAgICAvLyBG
SVhNRTogdGhpcyBsb29rcyB1bnVzZWQsIGJ1dCBJIHRoaW5rIGl0J3MgZWFzeSB0byBtYWtlIGl0
IHdvcmsKKyAgICAvLyB3LyBtdWx0aXBsZSByb290cy4gVmVyaWZ5IGl0IGRvZXMuCiAgICAgbV9t
YXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKICAgICAKICAgICBQb3N0T3JkZXJCbG9j
a1dvcmtsaXN0IHdvcmtsaXN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIw
MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGFkanVzdCB0aGlzIHNvIHdl
IGRvbid0IG5lZWQgbV9hcmd1bWVudHMgYW55bW9yZSBhbmQganVzdCB1c2UgdGhlIEhhc2hNYXAu
CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MjAsNiArNzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0
OgogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAg
ICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6
IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRp
Y3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBE
Rkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNo
OgogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAg
ICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
Nyw2ICszMDcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAg
ICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNh
c2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAg
ICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAg
Y2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBj
YXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVy
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDg3LDYgKzYwODcs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiRklYTUUiKTsK
KworICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2Fz
ZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpAQCAtNjExNSw3ICs2MTE5LDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJl
c3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0
aFNwcmVhZDoKLSAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVj
dGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlv
bkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDggQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IAogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2Nv
bnN0cnVjdF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2F0Y2gpCisgICAgICAgIERF
RklORV9PUChvcF9hZnRlcl9jYXRjaCkKICAgICAgICAgREVGSU5FX09QKG9wX2NvbnN0cnVjdCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3Bf
dG9fdGhpcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDc2
LDYgKzQ3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9jb25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y2F0Y2goSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FmdGVyX2NhdGNoKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1Myw2ICs4NTMsMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5z
dHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRTdG9yZSh0aHJvd25WYWx1ZSwgcmVnVDEsIHJlZ1QwKTsK
IH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKQoreworfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMsMTUg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiB9CiAKK3Zv
aWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxl
Lm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCZwcm9m
aWxlLm1fcHJvZmlsZSk7CisgICAgfSk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDIwIEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0K
IAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIg
PSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2lu
dGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBw
cm9maWxlKSB7CisgICAgICAgIGRhdGFMb2dMbigiUHJvZmlsaW5nIHJlZyAiLCBWaXJ0dWFsUmVn
aXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLCAiIDogIiwgZXhlYy0+dW5jaGVja2VkUihwcm9maWxl
Lm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNr
ZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJh
bmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisgICAgZGF0YUxvZ0xuKCJDb21wbGV0ZWQgdmFsdWUg
cHJvZmlsZSEiKTsKKworICAgIExMSU5UX0VORCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRo
UmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3Rv
Q2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BD
YWxsRnJhbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRf
bm90aWZ5X3Byb2ZpbGVyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwpOworTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZy
YW1lKikgV1RGX0lOVEVSTkFMOwogI2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3Rlciop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTk3OCw2ICsxOTc4LDExIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3BfY2F0Y2hfbGVuZ3RoKQogCiAKK19sbGludF9vcF9hZnRlcl9jYXRj
aDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9hZnRlcl9jYXRjaCkK
KyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317177</attachid>
            <date>2017-08-03 16:22:51 -0700</date>
            <delta_ts>2017-08-03 17:39:44 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>59766</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOworICAgIHZvaWQgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
OwogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKQEAgLTMyOSw2ICszMzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBjYWNoaW5nIGNvZGUgc291bmQ/CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5vZmZzZXQoKSk7CkBAIC0xMTMwLDcgKzExMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIxLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDg5LDYg
KzQwOTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5m
byh2YXJpYWJsZSkpOwogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0g
PSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKworICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IG1fZ3JhcGgubV9hcmd1bWVudHMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MTUwLDYgKzUx
NTcsODIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAg
ICBjYXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBp
bmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAg
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogbWF5YmUgd2Ugc2hvdWxkIGhhbmRsZSB0aGlzIGJpdCB3
aGVuIGRvaW5nIE9TUiBlbnRyeS4gQnV0IHdlIHNldCB0aGlzIHRvIG9wX2FmdGVyX2NhdGNoJ3MK
KyAgICAgICAgICAgIC8vIGJ5dGVjb2RlIGluZGV4LiBBbHRlcm5hdGl2ZWx5LCB3aGVuIGRvaW5n
IE9TUiBlbnRyeSwgd2UgY291bGQgc2VhcmNoIGZvciB0aGUgcHJldmlvdXMgYnl0ZWNvZGUgaW5k
ZXgKKyAgICAgICAgICAgIC8vIG9mIHRoZSBvcF9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICAvLyBG
SVhNRTogaXMgdGhpcyByaWdodD8KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc09TUlRh
cmdldCA9IHRydWU7CisKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoT1NSVGFy
Z2V0ID0gdHJ1ZTsKKworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8aW50LCBOb2RlKj4+IHZhbHVlc1RvU2V0OworICAgICAgICAgICAgdmFsdWVzVG9TZXQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgbWF5
IHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNh
dXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBWZWN0b3I8
U3BlY3VsYXRlZFR5cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUg
c2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAg
ICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHBy
b2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRo
aXMgY292ZXJzIGFyZ3VtZW50cy4gV2UgbmVlZCBhcmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAg
ICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFu
ZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9m
aWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhw
cm9maWxlLm1fb3BlcmFuZCksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFuZCksIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1RvU2V0LnVuY2hlY2tlZEFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihwcm9maWxlLm1fb3BlcmFuZCwgdmFsdWUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogQWRkIHNvbWUgd2F5IHRvIGFzc2VydCB3ZSBzZWUgYWxsIGFyZ3VtZW50cy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCld
ID0gcHJlZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhh
dCBpdCdzIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8
Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50
QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0
aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHRoaXMgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAg
ICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
c2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRB
cmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBwYWlyIDogdmFsdWVzVG9TZXQpCisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENv
ZGVPcmlnaW4oKSwgVmlydHVhbFJlZ2lzdGVyKHBhaXIuZmlyc3QpLCBwYWlyLnNlY29uZCk7CisK
KyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwo
Y3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC01OTQwLDYg
KzYwMjMsMzAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VQogICAg
IH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6Y3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
Cit7CisgICAgcmV0dXJuOworICAgIC8vIEZJWE1FOiBkb2VzIHRoaXMgYnJlYWsgY29uc3RhbnRz
PworICAgIC8vVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2VudHJ5cG9pbnRCbG9ja3M7CisgICAgaWYg
KG1fZW50cnlwb2ludEJsb2Nrcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZW50cnlwb2ludEJsb2Nrcy5hcHBlbmQobV9ncmFwaC5ibG9jaygwKSk7CisKKyAgICBSRUxFQVNF
X0FTU0VSVCghbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSk7CisgICAgbV9ncmFwaC5tX2VudHJ5
U3dpdGNoRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8RW50cnlTd2l0Y2hEYXRhPigpOworICAgIG1f
Z3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
ZW50cnlwb2ludEJsb2Nrcy5zaXplKCkpOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2VudHJ5cG9pbnRCbG9ja3MpCisgICAgICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJs
b2Nrcy5hcHBlbmQoYmxvY2spOworCisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRS
ZWYoKm5ldyBCYXNpY0Jsb2NrKDAsIG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOwor
ICAgIGJsb2NrLT5hcHBlbmQobV9ncmFwaC5hZGROb2RlKEVudHJ5U3dpdGNoLCBOb2RlT3JpZ2lu
KENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIGZhbHNlKSwKKyAgICAgICAgT3BJbmZvKG1f
Z3JhcGgubV9lbnRyeVN3aXRjaERhdGEuZ2V0KCkpLCBFZGdlKCksIEVkZ2UoKSwgRWRnZSgpKSk7
CisgICAgbV9ncmFwaC5tX2Jsb2Nrcy5pbnNlcnQoMCwgV1RGTW92ZShibG9jaykpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytpKQorICAg
ICAgICBtX2dyYXBoLm1fYmxvY2tzW2ldLT5pbmRleCA9IGk7Cit9CisKIEJ5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KAogICAgIEJ5dGVDb2RlUGFyc2Vy
KiBieXRlQ29kZVBhcnNlciwKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKQEAgLTYxMzgsOCAr
NjI0NSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVu
bGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0
YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9j
ayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDggKzYzMDUsOSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCks
IElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQog
ICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVT
dGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisgICAgY3JlYXRlRW50cnlTd2l0Y2hJ
Zk5lZWRlZCgpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBt
X2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApAQCAtNjIxNCw2ICs2MzI0LDkg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMg
PSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRl
clNsb3RzOwogCisgICAgaWYgKHRydWUpCisgICAgICAgIG1fZ3JhcGguZHVtcCgpOworCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkocmV2
aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAg
IC8vIEZJWE1FOiB3ZSBuZWVkIHRvIGZha2UgYSByb290IHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBl
bnRyeXBvaW50cy4KICAgICBOb2RlIHJvb3QoKSB7IHJldHVybiBtX2dyYXBoLmJsb2NrKDApOyB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDE0IEBAIHByaXZhdGU6CiAgICAgICAg
IC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMg
dG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBX
ZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUg
Zm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBh
bm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3Zlcmtp
bGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgp
OyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNl
dEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAg
IC8vIEZJWE1FOiBncmVwIGZvciBhbGwgdXNlcyBvZiBibG9jaygwKSBhbmQgcGVyaGFwcyBhbHNv
IGFkZCBub3Rpb24gb2YgZW50cnlwb2ludHMuCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGVudHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwg
OD4mIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
cmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAg
ICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5k
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ug
b3BfY2F0Y2g6CisgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9y
ZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRv
d19jaGlja2VuX3Byb2xvZ3VlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToK
ICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgog
ICAgICAgICByZXR1cm47CiAgICAgICAgIApAQCAtNDIyLDYgKzQyMyw3IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBC
cmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNl
IFRocm93OgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAg
Zml4dXBCbG9jayhibG9jayk7CiAgICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dy
YXBoLm1fYXJndW1lbnRzKTsKKyAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNWZWN0b3IgOiBt
X2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLnZhbHVlcygpKQorICAgICAgICAgICAgY2xl
YW5WYXJpYWJsZXMoYXJndW1lbnRzVmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFz
aWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4Miw2ICsxODIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNh
c2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAg
ICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk2LDYgKzE5Nyw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAg
ICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAg
Y2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgog
ICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJu
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcwLDYgKzE5NzAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRz
OgogICAgICAgICBjYXNlIEp1bXA6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAg
IGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNlIERpcmVj
dFRhaWxDYWxsOgpAQCAtMTk4Myw2ICsxOTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBD
aGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAg
ICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9t
YmllSGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1
c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3JtYXQgeworZW51bSBGbHVzaEZv
cm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCiAgICAg
Rmx1c2hlZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDAsOCArNjQwLDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRs
ZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZvaWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0
eSgpCiB7CiAgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xp
c3QuYXBwZW5kKGJsb2NrKDApKTsKLSAgICBibG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOwor
ICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAg
ICAgZW50cnlwb2ludC0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBl
bmQoZW50cnlwb2ludCk7CisgICAgfQogICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7
CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg1
MCw3ICs4NTIsOSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAg
IEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3Jr
bGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVh
bGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6
IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAg
d2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgcmVz
dWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1T
dWNjZXNzb3JzKCk7IGktLTspCkBAIC04NjMsNyArODY3LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpi
bG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3Jk
ZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOwor
ICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBpcyByZWFsbHkgd2hhdCB3ZSB3YW50IGhlcmUu
CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAg
ICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIg
aXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewog
ICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDcgKzkyMSwxMCBAQCBwdWJsaWM6
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRC
bG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tz
OworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3Rv
cjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKKyAgICAvLyBGSVhNRTogQ291bGQgaW5j
b3Jwb3JhdGUgdGhpcyBhYm92ZS4KKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9k
ZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1f
dmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1
ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3pl
blZhbHVlTWFwOwpAQCAtOTY3LDYgKzk3MCw3IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0
b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8
QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERh
dGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERh
dGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRh
OwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsK
ICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw1NCArOTMsNTkgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8Tm9k
ZUFicwogCiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAgICBC
YXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91bGRS
ZXZpc2l0ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAgcm9v
dC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFTdHJ1
Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygp
OyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7
Ci0KLSAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5tX2Zv
cm0gPT0gU1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0
c1tpXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBm
b3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQg
OiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hvdWxk
UmV2aXNpdCA9IHRydWU7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAgICAg
ICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJl
c0FyZVdhdGNoZWQ7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0
ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworCisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsr
aSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNs
ZWFyKCk7CisKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFw
aC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICBm
b3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAg
ICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRK
U1ZhbHVlOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1h
dCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNo
IChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQz
Mk9ubHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVk
Qm9vbGVhbjoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1l
bnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAg
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRl
Y29kZVRvcCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBm
b3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAg
ICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFy
Z3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxs
cHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFs
dWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2Fs
KGkpLmNsZWFyKCk7Ci0gICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7
IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAg
ICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAg
ICBpZiAoIWJsb2NrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQt
PnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5
cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRl
cigpKSB7CisgICAgICAgIGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2sp
KSB7CisgICAgICAgICAgICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5p
c1JlYWNoYWJsZSk7CiAgICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAg
ICAgICAgIGJsb2NrLT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNiArMzY5LDEzIEBA
IGlubGluZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAgICAgICAgICAgIGNo
YW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsK
ICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDog
eworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiB0YXJnZXRCbG9jayA6IHRlcm1pbmFsLT5lbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzKQorICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCB0YXJnZXRCbG9jayk7CisgICAg
ICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAg
ICAgY2FzZSBUYWlsQ2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMjIgQEAgcHVibGljOgogICAgICAg
ICAgICAgb3NyRW50cnksIG9zckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAg
ICAgIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXgpOwogICAgIH0KKworICAgIENhdGNoT1NS
RW50cnlEYXRhKiBjYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0
ZWNvZGVJbmRleCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYSBiaW5hcnkg
c2VhcmNoLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2F0Y2hPU1JFbnRyeS5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGNhdGNoT1NSRW50cnlbaV0ubV9ieXRlY29k
ZUluZGV4ID09IGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZjYXRjaE9T
UkVudHJ5W2ldOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgdm9pZCBhcHBlbmRDYXRjaE9TUkVudHJ5KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVu
c2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRG
b3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hPU1JFbnRyeS5hcHBlbmQoREZHOjpDYXRjaE9T
UkVudHJ5RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFy
Z3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4
aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBAIC0xMzIsNiArMTQ4LDcgQEAgcHJpdmF0
ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JF
bnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxERkc6OkNhdGNoT1NSRW50cnlEYXRhPiBj
YXRjaE9TUkVudHJ5OwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4
aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNv
dmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUxLDE0ICs1NTEsMjMgQEAgdm9pZCogSklUQ29t
cGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQgSklUQ29tcGls
ZXI6Om5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGls
ZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNo
Rm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Js
b2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2ljQmxvY2suaW50
ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBieSBkZWZpbml0
aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50cnkoYmFzaWNC
bG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1v
dmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVu
dHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQs
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxv
Y2suaXNDYXRjaE9TUlRhcmdldCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90IGFsbG93ZWQg
aW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBhbmFseXNpcy4K
ICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKQogICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9IG1faml0Q29k
ZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZl
ci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFs
dWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7CiAgICAgICAg
IAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9jb2wsIGEgZGVh
ZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2
LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9TUkVudHJ5KEJh
c2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJik7Cisg
ICAgdm9pZCBub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFi
ZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50
Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBt
X2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2
ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
aXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDcgKzEwMSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBO
b2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2Fs
KCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2Nh
bCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRB
cmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50
VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxT
ZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50
KCldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL2Jvb2wgaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2Fs
KCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2Nh
bCgpLnRvQXJndW1lbnQoKV07CiAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAg
ICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHNl
ZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCku
aXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1
bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRB
cmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCld
OworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxT
ZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVy
YW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2
aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDEzIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBs
KEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2Ug
SnVtcDoKICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2Ug
VW5yZWFjaGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAg
ICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3Rp
ZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxNCBAQCBzdHJ1Y3Qg
U3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7CiB9OwogCitzdHJ1Y3QgRW50
cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9OworCiBzdHJ1Y3QgQ2FsbFZhcmFy
Z3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9OwpAQCAtODY3LDYgKzg3NSw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNl
IEdldExvY2FsVW5saW5rZWQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAg
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAg
ICAgICAgY2FzZSBab21iaWVIaW50OgpAQCAtMTI3NywxNyArMTI4NiwyMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3
aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
b3AoKSA9PSBTd2l0Y2g7CiAgICAgfQogCisgICAgYm9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAg
IGJvb2wgaXNUZXJtaW5hbCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAg
ICAgY2FzZSBKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6
CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAg
ICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OSw2
ICsxMzY0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAg
ICByZXR1cm4gbV9vcEluZm8uYXM8U3dpdGNoRGF0YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlT
d2l0Y2hEYXRhKiBlbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50
cnlTd2l0Y2goKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEq
PigpOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBA
IC0xMzU5LDYgKzEzODAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAg
ICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5z
aXplKCkgKyAxOworICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJu
IGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Muc2l6ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNzIsNiArMTM5NSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNh
c2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3Vn
aC5ibG9jazsKICAgICAgICAgfQorCisgICAgICAgIGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAg
ICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrc1tpbmRleF07CisKICAgICAg
ICAgc3dpdGNoIChpbmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNK
dW1wKCkpCkBAIC0xNTE4LDYgKzE1NDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWlj
c1N0b3JlOgogICAgICAgICBjYXNlIEF0b21pY3NTdWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hv
cjoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MCw2ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAv
KiBTcGVjaWFsIG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0
IHdlJ3JlIGxvYWRpbmcgYSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3Jh
dGNoIGJ1ZmZlci4gKi9cCiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBcCiAgICAgLyogVGllci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAog
ICAgIG1hY3JvKENoZWNrVGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYs
NiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1
bXAsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhF
bnRyeVN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNo
Rm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9y
Lmg+CiAKQEAgLTY5LDYgKzcwLDE0IEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFC
eXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAK
K3N0cnVjdCBDYXRjaE9TUkVudHJ5RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4
OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMg
d2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAg
ICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2gg
YmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisK
IC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5
IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxs
LCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2lu
ID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6IEkg
bmVlZCB0byBtYWtlIHRoaXMgd29yayBpbiB0aGUgbmV3IHN5c3RlbS4KKwogICAgICAgICBmb3Ig
KGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsg
Kythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFi
bGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogUHJlUG9zdE51bWJlcmluZzo6UHJl
UG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCiB7CisgICAgLy8gRklYTUU6IHRoaXMgbG9va3Mg
dW51c2VkLCBidXQgSSB0aGluayBpdCdzIGVhc3kgdG8gbWFrZSBpdCB3b3JrCisgICAgLy8gdy8g
bXVsdGlwbGUgcm9vdHMuIFZlcmlmeSBpdCBkb2VzLgogICAgIG1fbWFwID0gQmxvY2tNYXA8TnVt
YmVyaW5nPihncmFwaCk7CiAgICAgCiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlz
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFw
cm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGp1c3QgdGhpcyBzbyB3ZSBkb24ndCBuZWVkIG1fYXJn
dW1lbnRzIGFueW1vcmUgYW5kIGp1c3QgdXNlIHRoZSBIYXNoTWFwLgogICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Qo
CiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihs
b2NrZXIpKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBU
b051bWJlcjoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgY2FzZSBFeHRyYWN0
Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMTExLDYgKzExMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAgICAg
ICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBT
d2l0Y2g6CiAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgICAgIGNhc2UgUHJvZmlsZUNv
bnRyb2xGbG93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAg
ICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgog
ICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWls
Q2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6
CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExv
Y2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0
UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNp
b24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA4Nyw2ICs2MDg3LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8g
RU5BQkxFKEZUTF9KSVQpCiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgorICAgICAgICBE
RkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkZJWE1FIik7CisKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2Ug
VXBzaWxvbjoKQEAgLTYxMTUsNyArNjExOSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhh
bnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAg
IERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODczLDcgKzE4NzMsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGlu
awogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpi
bG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAg
ICAgICBpZiAoYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRl
ciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7Cisg
ICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAg
ICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJn
dW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUo
KSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9y
KSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5
YmUgbWFrZSB0aGlzIGEgZGVidWcgYXNzZXJ0LgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1
c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQg
PT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMu
dW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1
c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRy
eSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBX
VEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1f
aml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgr
K10sIGxpbmtCdWZmZXIpOwogICAgIH0KICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29z
ckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlD
b3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogCiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3Zh
cmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9w
X2FmdGVyX2NhdGNoKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBE
RUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2Fy
ZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVj
dF92YXJhcmdzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FWlosIGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJS
ZWcsIHNpemVfdCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3Rl
cklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBs
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3OSw2ICs1NzksMTIgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklU
T3BlcmF0aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUzLDYgKzg1MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3Vy
CiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7
CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgeworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCBy
ZWdUMCk7CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxl
KTsKKyAgICB9KTsKKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENh
dGNoKTsKKyAgICBhdXRvIGRvbmUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BS
KTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAg
Ly8gRklYTUU6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNyw2ICsxNTE3LDEzIEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1
ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9K
SVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpa
KShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVS
QVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7
CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNT
dGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQ
X0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1Bh
dGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVj
U3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJ
T04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVm
IEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRl
KiwgaW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNT
dGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQ
YXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSos
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5k
aWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3Ry
aW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMjAgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRp
Y19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOwor
ICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUp
IHsKKyAgICAgICAgZGF0YUxvZ0xuKCJQcm9maWxpbmcgcmVnICIsIFZpcnR1YWxSZWdpc3Rlcihw
cm9maWxlLm1fb3BlcmFuZCksICIgOiAiLCBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVy
YW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0g
PSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNW
YWx1ZSgpKTsKKyAgICB9KTsKKyAgICBkYXRhTG9nTG4oIkNvbXBsZXRlZCB2YWx1ZSBwcm9maWxl
ISIpOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJh
bWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFt
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlf
cHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hh
ZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBX
VEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJu
VHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lO
VEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTc4LDYgKzE5NzgsMTEgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2FmdGVyX2NhdGNoOgorICAg
IGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVyX2NhdGNoKQorICAgIGRp
c3BhdGNoKDMpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317186</attachid>
            <date>2017-08-03 17:39:44 -0700</date>
            <delta_ts>2017-08-03 18:11:39 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>64414</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOworICAgIHZvaWQgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
OwogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKQEAgLTMyOSw2ICszMzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBjYWNoaW5nIGNvZGUgc291bmQ/CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5vZmZzZXQoKSk7CkBAIC0xMTMwLDcgKzExMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIxLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDg5LDYg
KzQwOTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5m
byh2YXJpYWJsZSkpOwogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0g
PSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKworICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IG1fZ3JhcGgubV9hcmd1bWVudHMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MTUwLDYgKzUx
NTcsODggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAg
ICBjYXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBp
bmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAg
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogbWF5YmUgd2Ugc2hvdWxkIGhhbmRsZSB0aGlzIGJpdCB3
aGVuIGRvaW5nIE9TUiBlbnRyeS4gQnV0IHdlIHNldCB0aGlzIHRvIG9wX2FmdGVyX2NhdGNoJ3MK
KyAgICAgICAgICAgIC8vIGJ5dGVjb2RlIGluZGV4LiBBbHRlcm5hdGl2ZWx5LCB3aGVuIGRvaW5n
IE9TUiBlbnRyeSwgd2UgY291bGQgc2VhcmNoIGZvciB0aGUgcHJldmlvdXMgYnl0ZWNvZGUgaW5k
ZXgKKyAgICAgICAgICAgIC8vIG9mIHRoZSBvcF9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICAvLyBG
SVhNRTogaXMgdGhpcyByaWdodD8KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc09TUlRh
cmdldCA9IHRydWU7CisKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoT1NSVGFy
Z2V0ID0gdHJ1ZTsKKworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8aW50LCBOb2RlKj4+IHZhbHVlc1RvU2V0OworICAgICAgICAgICAgdmFsdWVzVG9TZXQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgbWF5
IHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNh
dXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBWZWN0b3I8
U3BlY3VsYXRlZFR5cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUg
c2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzID0gMDsKKyAgICAgICAgICAgICAgICBi
dWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHNlZSBpZiB0aGlzIGNvdmVycyBh
cmd1bWVudHMuIFdlIG5lZWQgYXJndW1lbnQgcHJvZmlsZXMgaGVyZS4KKyAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5tX3Byb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAg
IGlmIChvcGVyYW5kLmlzTG9jYWwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytudW1i
ZXJPZkxvY2FsczsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gYWRkVG9H
cmFwaChFeHRyYWN0Q2F0Y2hMb2NhbCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgT3BJbmZv
KHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGlu
dCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWVzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHByb2ZpbGUu
bV9vcGVyYW5kLCB2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3BlcmFuZC5pc0FyZ3VtZW50KCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc29tZSB3YXkgdG8gYXNzZXJ0
IHdlIHNlZSBhbGwgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRQ
cmVkaWN0aW9uc1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJP
ZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgLy8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBzYWZl
IHRvIGV4aXQuCisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4Pigp
KTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CisgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9
IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludEFy
Z3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgp
OyArK2FyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QoYXJn
dW1lbnRQcmVkaWN0aW9uc1thcmd1bWVudF0pOworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBjaGVjayBpZiB0aGlzIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFi
bGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJn
ZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJh
ZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50
ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJz
dFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlw
b2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHZh
bHVlc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCks
IFZpcnR1YWxSZWdpc3RlcihwYWlyLmZpcnN0KSwgcGFpci5zZWNvbmQpOworCisgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0
cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwpAQCAtNTk0MCw2ICs2MDI5LDMwIEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3MoVmVjdG9yPFUKICAgICB9CiB9CiAKK3Zv
aWQgQnl0ZUNvZGVQYXJzZXI6OmNyZWF0ZUVudHJ5U3dpdGNoSWZOZWVkZWQoKQoreworICAgIHJl
dHVybjsKKyAgICAvLyBGSVhNRTogZG9lcyB0aGlzIGJyZWFrIGNvbnN0YW50cz8KKyAgICAvL1Zl
Y3RvcjxCYXNpY0Jsb2NrKj4gbV9lbnRyeXBvaW50QmxvY2tzOworICAgIGlmIChtX2VudHJ5cG9p
bnRCbG9ja3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VudHJ5cG9pbnRC
bG9ja3MuYXBwZW5kKG1fZ3JhcGguYmxvY2soMCkpOworCisgICAgUkVMRUFTRV9BU1NFUlQoIW1f
Z3JhcGgubV9lbnRyeVN3aXRjaERhdGEpOworICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5U3dpdGNoRGF0YT4oKTsKKyAgICBtX2dyYXBoLm1fZW50
cnlTd2l0Y2hEYXRhLT5ibG9ja3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VudHJ5cG9pbnRC
bG9ja3Muc2l6ZSgpKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9lbnRyeXBvaW50
QmxvY2tzKQorICAgICAgICBtX2dyYXBoLm1fZW50cnlTd2l0Y2hEYXRhLT5ibG9ja3MuYXBwZW5k
KGJsb2NrKTsKKworICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFz
aWNCbG9jaygwLCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICBibG9jay0+
YXBwZW5kKG1fZ3JhcGguYWRkTm9kZShFbnRyeVN3aXRjaCwgTm9kZU9yaWdpbihDb2RlT3JpZ2lu
KDApLCBDb2RlT3JpZ2luKDApLCBmYWxzZSksCisgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fZW50
cnlTd2l0Y2hEYXRhLmdldCgpKSwgRWRnZSgpLCBFZGdlKCksIEVkZ2UoKSkpOworICAgIG1fZ3Jh
cGgubV9ibG9ja3MuaW5zZXJ0KDAsIFdURk1vdmUoYmxvY2spKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9ncmFw
aC5tX2Jsb2Nrc1tpXS0+aW5kZXggPSBpOworfQorCiBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3Rh
Y2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSgKICAgICBCeXRlQ29kZVBhcnNlciogYnl0ZUNvZGVQ
YXJzZXIsCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCkBAIC02MTM4LDggKzYyNTEsMTAgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2Nr
KGJsb2NrLnB0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
YmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShi
bG9jaykpOwogICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNjE5Niw4ICs2MzExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2UoKQogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxs
RnJhbWU6OkNhbGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxv
Y2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5t
X2Jsb2NrTGlua2luZ1RhcmdldHMpOworICAgIGNyZWF0ZUVudHJ5U3dpdGNoSWZOZWVkZWQoKTsK
KwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxs
VW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAKQEAgLTYyMTQsNiArNjMzMCw5IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICBtX2dyYXBoLm1fbG9jYWxWYXJzID0gbV9udW1Mb2Nh
bHM7CiAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9wYXJhbWV0ZXJTbG90czsKIAor
ICAgIGlmICh0cnVlKQorICAgICAgICBtX2dyYXBoLmR1bXAoKTsKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICAvLyBGSVhNRTog
d2UgbmVlZCB0byBmYWtlIGEgcm9vdCB3aGVuIHdlIGhhdmUgbXVsdGlwbGUgZW50cnlwb2ludHMu
CiAgICAgTm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BT
UmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhv
c2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNo
aW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2
ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJn
dW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3Ig
dGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAg
ICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZp
cnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICAvLyBGSVhNRTog
Z3JlcCBmb3IgYWxsIHVzZXMgb2YgYmxvY2soMCkgYW5kIHBlcmhhcHMgYWxzbyBhZGQgbm90aW9u
IG9mIGVudHJ5cG9pbnRzLgorICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50
ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVu
dHMgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRz
LnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhl
YWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAg
IH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBh
YmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50OgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgor
ICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBj
YXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9w
cm9sb2d1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBD
aGVjazoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAg
IGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAg
ICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2so
YmxvY2spOwogICAgICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3Vt
ZW50cyk7CisgICAgICAgIGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVz
KGFyZ3VtZW50c1ZlY3Rvcik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20v
Q2hlY2sgY2xlYW4tdXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgy
LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSnVt
cDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJl
Y3RUYWlsQ2FsbDoKQEAgLTE5Niw2ICsxOTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgIGNhc2UgSXNO
b25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgIGNhc2UgRXh0cmFj
dENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENo
ZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjIw
MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJ
c0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAg
Y2FzZSBKdW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVy
bjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoK
QEAgLTE5ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoK
ICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29w
SGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lv
biAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50
OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1
MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQwLDggKzY0MCwxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNjZXNzb3Io
VmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQogewogICAg
IFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFwcGVuZChi
bG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJh
c2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9p
bnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVudHJ5cG9p
bnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NTAsNyArODUyLDkg
QEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3Qg
cmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChi
bG9jaygwKSk7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGlzIHJlYWxseSB3aGF0IHdl
IHdhbnQgaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9p
bnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNp
Y0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
YmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygp
OyBpLS07KQpAQCAtODYzLDcgKzg2Nyw5IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0
T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3Jr
bGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAvLyBGSVhN
RTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAgIGZvciAo
QmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0
LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3Jr
bGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAgICAgY2Fz
ZSBWaXNpdE9yZGVyOjpQcmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMSw3ICs5MjEsMTAgQEAgcHVibGljOgogICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAg
Ci0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0
b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9j
ayosIDE+IG1fZW50cnlwb2ludHM7CisgICAgLy8gRklYTUU6IENvdWxkIGluY29ycG9yYXRlIHRo
aXMgYWJvdmUuCisgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9l
bnRyeXBvaW50VG9Bcmd1bWVudHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxk
cmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVk
SlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsK
QEAgLTk2Nyw2ICs5NzAsNyBAQCBwdWJsaWM6CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0FycmF5
QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERhdGE+
IG1fYnJhbmNoRGF0YTsKICAgICBCYWc8U3dpdGNoRGF0YT4gbV9zd2l0Y2hEYXRhOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeVN3aXRjaERhdGE+IG1fZW50cnlTd2l0Y2hEYXRhOwogICAgIEJh
ZzxNdWx0aUdldEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aUdldEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8
TXVsdGlQdXRCeU9mZnNldERhdGE+IG1fbXVsdGlQdXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE9i
amVjdE1hdGVyaWFsaXphdGlvbkRhdGE+IG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTsKQEAg
LTEwMDksNiArMTAxMyw3IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRT
dGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNl
cHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhp
bmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFj
dFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNp
b24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw1OSBAQCBzdGF0aWMgdm9p
ZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3Rh
dGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2Nr
KDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhh
c1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwot
ICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVX
YXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVj
dHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVz
QXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNB
dFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7
Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQg
PSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYg
KCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgIGZv
ciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlw
b2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3Vu
ZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2lu
dC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7
CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52
YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3Jt
YXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKKyAgICAg
ICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwogICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAg
ICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkt
PmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBG
bHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFy
Z3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5
cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAg
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUo
bV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAg
ICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAg
ICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xl
YW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAg
ICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBT
cGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1
ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNv
ZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1
bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytp
KSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAg
ICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChC
bG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tz
KCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgu
YmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7
ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNs
ZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xl
YXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9l
bnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQg
dGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNm
YVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBm
YWxzZTsKQEAgLTM2NCw2ICszNjksMTMgQEAgaW5saW5lIGJvb2wgSW5QbGFjZUFic3RyYWN0U3Rh
dGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBkYXRh
LT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9
CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOiB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNl
OworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrIDogdGVybWluYWwtPmVudHJ5
U3dpdGNoRGF0YSgpLT5ibG9ja3MpCisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2lj
QmxvY2ssIHRhcmdldEJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQogICAg
ICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2
ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgp
LCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRl
eCk7CiAgICAgfQorCisgICAgQ2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnlEYXRhRm9y
Qnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IE1ha2UgdGhpcyBhIGJpbmFyeSBzZWFyY2guCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYXRjaE9TUkVudHJ5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAo
Y2F0Y2hPU1JFbnRyeVtpXS5tX2J5dGVjb2RlSW5kZXggPT0gYnl0ZWNvZGVJbmRleCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gJmNhdGNoT1NSRW50cnlbaV07CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhdGNoT1NSRW50cnko
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3Rv
cjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRjaE9T
UkVudHJ5LmFwcGVuZChERkc6OkNhdGNoT1NSRW50cnlEYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFj
aGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAg
CiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsK
QEAgLTEzMiw2ICsxNDgsNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29t
bW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9y
PERGRzo6Q2F0Y2hPU1JFbnRyeURhdGE+IGNhdGNoT1NSRW50cnk7CiAgICAgU2VnbWVudGVkVmVj
dG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlv
blJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0
cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpAQCAtMTY4LDYgKzE4NSw4IEBAIHB1YmxpYzoKICAg
ICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWduZWQg
b3NyRW50cnlSZXRyeTsKICAgICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAgIHZvaWQqIGNh
dGNoT1NSRW50cnlCdWZmZXI7IC8vIEZJWE1FOiBtYWtlIGFsbG9jYXRpb24vZGVzdHJ1Y3Rpb24g
YXV0b21hdGljIGhlcmUuIEhvbGRzIHRoZSBsb2NhbHMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQg
Y2F0Y2guCiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0No
ZWNrKEpJVENvCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogeworICAgIGlmIChtX2dy
YXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRj
aE9TUkVudHJ5QnVmZmVyID0gZmFzdE1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwog
ICAgIGNvbXBpbGVFbnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7
CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBt
X2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVl
KSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0
YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBA
IHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2
b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxv
Y2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIs
IFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChi
YXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQg
aXMgYnkgZGVmaW5pdGlvbiByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaE9T
UkVudHJ5KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9j
a0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVy
Ojpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFi
ZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlz
IG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZs
b3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlz
aXRlZCkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50
cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVn
aW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+
bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRI
ZWFkOwogICAgICAgICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHBy
b3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3Rp
Y2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlu
a0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0Y2hPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1h
dD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
KCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBi
b29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAm
JiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVu
dHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2Fs
KCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9i
b29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAm
JiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVu
dHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwogICAgICAgICAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAg
ICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1h
bEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29s
IGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBu
b2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNb
bm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmlt
b3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3Ao
KSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCku
dG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAh
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRh
Lm9wZXJhbmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0TW9k
ZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlv
bjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2Ug
SW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxv
Y2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90Ogog
ICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMs
MTQgQEAgc3RydWN0IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwogfTsK
IAorc3RydWN0IEVudHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwogc3Ry
dWN0IENhbGxWYXJhcmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAg
LTg2Nyw2ICs4NzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsK
ICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgICAgICBjYXNl
IE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKQEAgLTEyNzcsMTcgKzEyODYsMjMg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3
aXRjaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsK
KyAgICB9CisKICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChv
cCgpKSB7CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAg
IGNhc2UgU3dpdGNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2Fs
bDoKQEAgLTEzNDksNiArMTM2NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRj
aCgpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0K
KworICAgIEVudHJ5U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChpc0VudHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50
cnlTd2l0Y2hEYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29y
cygpCiAgICAgewpAQCAtMTM1OSw2ICsxMzgwLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIDI7CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERh
dGEoKS0+Y2FzZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAg
ICAgICAgIHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEz
OTUsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dp
dGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEo
KS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3
aXRjaCgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5k
ZXhdOworCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAg
ICAgICAgaWYgKGlzSnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ1LDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIEF0b21pY3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBj
YXNlIEF0b21pY3NYb3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJ
bmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUg
ZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxv
Y2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0
aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0
ZSkgXApAQCAtMzg2LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNoLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhS
ZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGwsIE5v
ZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYs
NiArMzM2LDU4IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAg
ICByZXR1cm4gc2NyYXRjaDsKIH0KIAorU1VQUFJFU1NfQVNBTgordm9pZCogcHJlcGFyZUNhdGNo
T1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRDb2RlOjpERkdKSVQpOworCisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRv
REZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZn
KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisKKyAgICBERkc6OkNhdGNoT1NSRW50
cnlEYXRhKiBjYXRjaE9TUkVudHJ5ID0gaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRl
Y29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICghY2F0Y2hPU1JFbnRyeSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJn
dW1lbnQgPCBjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3aXRjaCAoY2F0Y2hPU1JF
bnRyeS0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpG
bHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNCb29s
ZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gVGhp
cyBpcyB0cml2aWFsbHkgdHJ1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1v
bi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVO
TElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIC8vIEZJWE1FOiBhc3NlcnQgdGhpcyBpcyBvcF9hZnRl
cl9jYXRjaC4KKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUucG9pbnRlcik7CisgICAg
dW5zaWduZWQgaW5kZXggPSAwOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KGpp
dENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIpW2luZGV4XSA9IGV4ZWMtPnIoVmlydHVhbFJlZ2lz
dGVyKHByb2ZpbGUubV9vcGVyYW5kKSkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4OworICAg
IH0pOworICAgIHJldHVybiBudWxscHRyOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAi
REZHRmx1c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9C
aXRWZWN0b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVu
dHJ5RGF0YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRl
eDsKIH0KIAorc3RydWN0IENhdGNoT1NSRW50cnlEYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVj
b2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1
c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3Vt
ZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQg
YSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRz
OworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBP
U1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1
cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVy
bmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRv
IGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxv
Y2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+
b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6IEkgbmVlZCB0byBtYWtlIHRoaXMg
d29yayBpbiB0aGUgbmV3IHN5c3RlbS4KKwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAg
ICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lv
biAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFw
aCYgZ3JhcGgpCiB7CisgICAgLy8gRklYTUU6IHRoaXMgbG9va3MgdW51c2VkLCBidXQgSSB0aGlu
ayBpdCdzIGVhc3kgdG8gbWFrZSBpdCB3b3JrCisgICAgLy8gdy8gbXVsdGlwbGUgcm9vdHMuIFZl
cmlmeSBpdCBkb2VzLgogICAgIG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7CiAg
ICAgCiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBhZGp1c3QgdGhpcyBzbyB3ZSBkb24ndCBuZWVkIG1fYXJndW1lbnRzIGFueW1vcmUgYW5k
IGp1c3QgdXNlIHRoZSBIYXNoTWFwLgogICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAg
ICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKICAgICAgICAg
Y2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAg
ICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3Vy
cmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MTExLDYgKzExMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJv
cGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKKyAg
ICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgIGNh
c2UgUHJvZmlsZVR5cGU6CiAgICAgICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAg
ICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgog
ICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICsz
MjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2Fz
ZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0
T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA4Nyw2ICs2MDg3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAK
KyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgorICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3Jh
cGgoKSwgbm9kZSwgIkZJWE1FIik7CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2Ug
TGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgVXBzaWxvbjoKQEAgLTYxMTUs
NyArNjExOSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBj
YXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5n
cmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODczLDcgKzE4NzMsMjMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhl
YWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoYmxvY2stPmlz
Q2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCku
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICBhdXRvJiBh
cmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZv
cm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBm
b3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZs
dXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1h
dCgpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgbWFrZSB0aGlzIGEgZGVi
dWcgYXNzZXJ0LgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmbHVzaEZvcm1h
dCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hG
b3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUp
OworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZs
dXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
YXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50
cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9y
bWF0cykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5
KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOwog
ICAgIH0KICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgp
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0
aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4
ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiAr
ODAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRo
cm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBGSVhNRTogCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERF
RklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRl
X3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3Jl
YXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGlu
dCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVp
LCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
U19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0
ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw2
ICs1NzksMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAg
IHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVy
YXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODUzLDYgKzg1MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVj
dGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cit9CisKIHZv
aWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0
aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyMSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUu
cG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9v
cGVyYW5kLCByZWdUMCk7CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUu
bV9wcm9maWxlKTsKKyAgICB9KTsKKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIGRvbmUgPSBicmFuY2hU
ZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsK
KyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgLy8gRklYTUU6IGFkZCBhIGppdCBmYXN0IHBhdGgg
Zm9yIHRoaXMuCit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUxNyw2ICsxNTE3LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0
aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAs
IDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRj
aChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhl
Yyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJs
b2NrKCktPnJlcGxhY2VtZW50KCk7IC8vIEZJWE1FOiBjYW50aGlzIGV2ZXIgYmUgbnVsbD8gT3Ig
anVzdCBpdCByZXR1cm4gaXRzZWxmPworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0
VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhl
Yywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5
cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJ
VF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50
MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVop
KEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJB
VElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwor
dHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3Rh
dGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElP
TiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0
eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShF
eGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04g
Kkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5
Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJO
QUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7Citj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUq
LCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5j
b2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQo
RXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMs
IEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYzOCw2ICsxNjM4LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hh
ZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2FmdGVyX2NhdGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIGRhdGFMb2dMbigiUHJv
ZmlsaW5nIHJlZyAiLCBWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLCAiIDogIiwg
ZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICAgICAg
cHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVu
Y2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisgICAgZGF0
YUxvZ0xuKCJDb21wbGV0ZWQgdmFsdWUgcHJvZmlsZSEiKTsKKworICAgIExMSU5UX0VORCgpOwor
fQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVy
Zmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2Vw
dGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Rh
aWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCk7
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxv
d19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmICFFTkFCTEUo
SklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tfYXRf
dm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk3OCw2ICsxOTc4LDExIEBAIF9s
bGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2F0Y2hfbGVuZ3RoKQog
CiAKK19sbGludF9vcF9hZnRlcl9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9hZnRlcl9jYXRjaCkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9l
bmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1
ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317190</attachid>
            <date>2017-08-03 18:11:39 -0700</date>
            <delta_ts>2017-08-03 19:03:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>65891</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOworICAgIHZvaWQgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
OwogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKQEAgLTMyOSw2ICszMzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBjYWNoaW5nIGNvZGUgc291bmQ/CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5vZmZzZXQoKSk7CkBAIC0xMTMwLDcgKzExMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIxLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDg5LDYg
KzQwOTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5m
byh2YXJpYWJsZSkpOwogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0g
PSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKworICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IG1fZ3JhcGgubV9hcmd1bWVudHMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MTUwLDYgKzUx
NTcsOTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAg
ICBjYXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1l
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBp
bmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAg
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAg
ICAgICAgICAvLyBGSVhNRTogbWF5YmUgd2Ugc2hvdWxkIGhhbmRsZSB0aGlzIGJpdCB3aGVuIGRv
aW5nIE9TUiBlbnRyeS4gQnV0IHdlIHNldCB0aGlzIHRvIG9wX2FmdGVyX2NhdGNoJ3MKKyAgICAg
ICAgICAgIC8vIGJ5dGVjb2RlIGluZGV4LiBBbHRlcm5hdGl2ZWx5LCB3aGVuIGRvaW5nIE9TUiBl
bnRyeSwgd2UgY291bGQgc2VhcmNoIGZvciB0aGUgcHJldmlvdXMgYnl0ZWNvZGUgaW5kZXgKKyAg
ICAgICAgICAgIC8vIG9mIHRoZSBvcF9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CisgICAgICAgICAgICAvLyBGSVhNRTog
aXMgdGhpcyByaWdodD8KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc09TUlRhcmdldCA9
IHRydWU7CisKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0ID0g
dHJ1ZTsKKworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJl
bnRCbG9jayk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1
ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8
aW50LCBOb2RlKj4+IHZhbHVlc1RvU2V0OworICAgICAgICAgICAgdmFsdWVzVG9TZXQucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgbWF5IHJlc2Vy
dmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNhdXNlIHRo
ZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBWZWN0b3I8U3BlY3Vs
YXRlZFR5cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAgICAgICAgICAgICBt
X2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUgc2luY2Ug
d2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzID0gMDsKKyAgICAgICAgICAgICAgICBidWZmZXIt
PmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHNlZSBpZiB0aGlzIGNvdmVycyBhcmd1bWVu
dHMuIFdlIG5lZWQgYXJndW1lbnQgcHJvZmlsZXMgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5tX3Byb2ZpbGUuY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChv
cGVyYW5kLmlzTG9jYWwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBP
cEluZm8ocHJlZGljdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKytudW1iZXJPZkxv
Y2FsczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJbmZv
KHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWVzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHByb2ZpbGUubV9vcGVyYW5k
LCB2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3BlcmFuZC5pc0FyZ3VtZW50KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJh
bmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc29tZSB3YXkgdG8gYXNzZXJ0IHdlIHNlZSBh
bGwgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRQcmVkaWN0aW9u
c1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICAgICAgbV9ncmFw
aC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2Fscywg
Km1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOworCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgLy8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBzYWZlIHRvIGV4aXQu
CisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4PigpKTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAg
ICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5y
ZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJn
dW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpOyArK2FyZ3Vt
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUg
PSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1l
bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QoYXJndW1lbnRQcmVk
aWN0aW9uc1thcmd1bWVudF0pOworCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBjaGVj
ayBpZiB0aGlzIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJy
YXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJn
dW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IHZhbHVlc1RvU2V0
KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIFZpcnR1YWxS
ZWdpc3RlcihwYWlyLmZpcnN0KSwgcGFpci5zZWNvbmQpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwg
Q2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwpAQCAtNTk0MCw2ICs2MDMyLDMwIEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmxpbmtCbG9ja3MoVmVjdG9yPFUKICAgICB9CiB9CiAKK3ZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmNyZWF0ZUVudHJ5U3dpdGNoSWZOZWVkZWQoKQoreworICAgIHJldHVybjsKKyAg
ICAvLyBGSVhNRTogZG9lcyB0aGlzIGJyZWFrIGNvbnN0YW50cz8KKyAgICAvL1ZlY3RvcjxCYXNp
Y0Jsb2NrKj4gbV9lbnRyeXBvaW50QmxvY2tzOworICAgIGlmIChtX2VudHJ5cG9pbnRCbG9ja3Mu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2VudHJ5cG9pbnRCbG9ja3MuYXBw
ZW5kKG1fZ3JhcGguYmxvY2soMCkpOworCisgICAgUkVMRUFTRV9BU1NFUlQoIW1fZ3JhcGgubV9l
bnRyeVN3aXRjaERhdGEpOworICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVudHJ5U3dpdGNoRGF0YT4oKTsKKyAgICBtX2dyYXBoLm1fZW50cnlTd2l0Y2hE
YXRhLT5ibG9ja3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VudHJ5cG9pbnRCbG9ja3Muc2l6
ZSgpKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9lbnRyeXBvaW50QmxvY2tzKQor
ICAgICAgICBtX2dyYXBoLm1fZW50cnlTd2l0Y2hEYXRhLT5ibG9ja3MuYXBwZW5kKGJsb2NrKTsK
KworICAgIFJlZjxCYXNpY0Jsb2NrPiBibG9jayA9IGFkb3B0UmVmKCpuZXcgQmFzaWNCbG9jaygw
LCBtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMsIDEpKTsKKyAgICBibG9jay0+YXBwZW5kKG1f
Z3JhcGguYWRkTm9kZShFbnRyeVN3aXRjaCwgTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2Rl
T3JpZ2luKDApLCBmYWxzZSksCisgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fZW50cnlTd2l0Y2hE
YXRhLmdldCgpKSwgRWRnZSgpLCBFZGdlKCksIEVkZ2UoKSkpOworICAgIG1fZ3JhcGgubV9ibG9j
a3MuaW5zZXJ0KDAsIFdURk1vdmUoYmxvY2spKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9ncmFwaC5tX2Jsb2Nr
c1tpXS0+aW5kZXggPSBpOworfQorCiBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
SW5saW5lU3RhY2tFbnRyeSgKICAgICBCeXRlQ29kZVBhcnNlciogYnl0ZUNvZGVQYXJzZXIsCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssCkBAIC02MTM4LDggKzYyNTQsMTAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0
cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBU
aGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2st
PmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9l
bnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwog
ICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNjE5Niw4ICs2MzE0LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQog
ICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNh
bGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGlu
ZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlu
a2luZ1RhcmdldHMpOworICAgIGNyZWF0ZUVudHJ5U3dpdGNoSWZOZWVkZWQoKTsKKwogICAgIG1f
Z3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFi
bGVCbG9ja3MoKTsKICAgICAKQEAgLTYyMTQsNiArNjMzMyw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlKCkKICAgICBtX2dyYXBoLm1fbG9jYWxWYXJzID0gbV9udW1Mb2NhbHM7CiAgICAg
bV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9wYXJhbWV0ZXJTbG90czsKIAorICAgIGlmICh0
cnVlKQorICAgICAgICBtX2dyYXBoLmR1bXAoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYg
KzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byBmYWtlIGEgcm9vdCB3aGVuIHdlIGhhdmUgbXVsdGlwbGUgZW50cnlwb2ludHMuCiAgICAgTm9k
ZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY5LDggKzM2OSwxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJn
dW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVC
bG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFk
IHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzCiAg
ICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVy
IHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAg
IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShp
LCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICAvLyBGSVhNRTogZ3JlcCBmb3Ig
YWxsIHVzZXMgb2YgYmxvY2soMCkgYW5kIHBlcmhhcHMgYWxzbyBhZGQgbm90aW9uIG9mIGVudHJ5
cG9pbnRzLgorICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5r
ZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWly
LnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsg
aS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJn
dW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAgICAK
ICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAg
IGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAgIGNhc2Ug
b3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dl
dF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dp
dGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZv
cmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dy
YXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwog
ICAgICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7Cisg
ICAgICAgIGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50
c1ZlY3Rvcik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xl
YW4tdXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1C
bG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSnVtcDoKICAgICBj
YXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAg
IGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2Fs
bDoKQEAgLTE5Niw2ICsxOTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgIGNhc2UgSXNOb25FbXB0eU1h
cEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVw
SW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Z1bmN0aW9u
OgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBKdW1w
OgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAg
ICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5ODMs
NiArMTk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAg
Y2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAg
ICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAg
ICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAg
ICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjQwLDggKzY0MCwxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJh
c2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQogewogICAgIFZlY3RvcjxC
YXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFwcGVuZChibG9jaygwKSk7
Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sq
IGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmlzUmVh
Y2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQpOworICAg
IH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NTAsNyArODUyLDkgQEAgQmxvY2tM
aXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0Owog
ICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7
CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGlzIHJlYWxseSB3aGF0IHdlIHdhbnQgaGVy
ZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAg
ICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBi
bG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpA
QCAtODYzLDcgKzg2Nyw5IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQog
ewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3Jr
bGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAvLyBGSVhNRTogTWFrZSBz
dXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAgIGZvciAoQmFzaWNCbG9j
ayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50
cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3Ao
KSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAgICAgY2FzZSBWaXNpdE9y
ZGVyOjpQcmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lv
biAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkyMSw3ICs5MjEsMTAgQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVj
dG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRy
PEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1f
ZW50cnlwb2ludHM7CisgICAgLy8gRklYTUU6IENvdWxkIGluY29ycG9yYXRlIHRoaXMgYWJvdmUu
CisgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50
VG9Bcmd1bWVudHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAg
ICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhh
c2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk2Nyw2
ICs5NzAsNyBAQCBwdWJsaWM6CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0FycmF5QnVmZmVyRGF0
YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERhdGE+IG1fYnJhbmNo
RGF0YTsKICAgICBCYWc8U3dpdGNoRGF0YT4gbV9zd2l0Y2hEYXRhOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxFbnRyeVN3aXRjaERhdGE+IG1fZW50cnlTd2l0Y2hEYXRhOwogICAgIEJhZzxNdWx0aUdl
dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aUdldEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8TXVsdGlQdXRC
eU9mZnNldERhdGE+IG1fbXVsdGlQdXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE9iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGE+IG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTsKQEAgLTEwMDksNiAr
MTAxMyw3IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAg
ICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5k
bGVycyB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1faW5k
ZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4g
bV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIwMTQ3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw1OSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZl
VmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRp
YWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAg
IHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQg
PSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJvb3Qt
PmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwot
ICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVX
YXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51
bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJn
dW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBo
Lm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFub2RlKQot
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgIGZvciAoQmFzaWNC
bG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRy
eXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2Zh
SGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50
cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVB
dEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3Ry
dWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRh
aWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0
OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKKyAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwogICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwot
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVz
aEZvcm1hdCgpOworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1l
bnRzW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9y
bWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50
MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwg
U3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVz
aGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxs
cHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNo
IChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICBy
b290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NS
QVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAg
ICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52
YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4
IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxv
Y2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxv
Y2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewor
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJs
b2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50
cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5
cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAg
ICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJl
dmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAg
LTM2NCw2ICszNjksMTMgQEAgaW5saW5lIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdl
VAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tp
XS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CisKKyAgICBj
YXNlIEVudHJ5U3dpdGNoOiB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrIDogdGVybWluYWwtPmVudHJ5U3dpdGNoRGF0
YSgpLT5ibG9ja3MpCisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRh
cmdldEJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQogICAgICAgICAKICAg
ICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwyMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29k
ZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAg
fQorCisgICAgQ2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJ
bmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IE1h
a2UgdGhpcyBhIGJpbmFyeSBzZWFyY2guCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjYXRjaE9TUkVudHJ5LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoY2F0Y2hPU1JF
bnRyeVtpXS5tX2J5dGVjb2RlSW5kZXggPT0gYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gJmNhdGNoT1NSRW50cnlbaV07CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhdGNoT1NSRW50cnkodW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZv
cm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRjaE9TUkVudHJ5LmFw
cGVuZChERkc6OkNhdGNoT1NSRW50cnlEYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVP
ZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5z
aWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiw2
ICsxNDgsNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAg
IFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9yPERGRzo6Q2F0
Y2hPU1JFbnRyeURhdGE+IGNhdGNoT1NSRW50cnk7CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6
T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5
PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJp
YWJsZUV2ZW50U3RyZWFtOwpAQCAtMTY4LDYgKzE4NSw4IEBAIHB1YmxpYzoKICAgICBXcml0ZUJh
cnJpZXI8Q29kZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWduZWQgb3NyRW50cnlS
ZXRyeTsKICAgICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAgIHZvaWQqIGNhdGNoT1NSRW50
cnlCdWZmZXI7IC8vIEZJWE1FOiBtYWtlIGFsbG9jYXRpb24vZGVzdHJ1Y3Rpb24gYXV0b21hdGlj
IGhlcmUuIEhvbGRzIHRoZSBsb2NhbHMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guCiAj
ZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENv
CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogeworICAgIGlmIChtX2dyYXBoLm1fbWF4
TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9TUkVudHJ5
QnVmZmVyID0gZmFzdE1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2Nh
bHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBp
bGVFbnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0
aXZlSklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYg
KG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUt
PmNhdGNoT1NSRW50cnlCdWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9n
cmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2Rl
KCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBAIHZvaWQqIEpJ
VENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENv
bXBpbGVyOjpub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENv
bXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxG
bHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFz
aWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2Nr
LmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVm
aW5pdGlvbiByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaE9TUkVudHJ5KGJh
c2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBX
VEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VP
U1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tI
ZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNp
Y0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxv
d2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlz
aXMuCiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2pp
dENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtC
dWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3Rl
ZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAg
ICAgICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBh
IGRlYWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRy
eShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYp
OworICAgIHZvaWQgbm90aWNlQ2F0Y2hPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6
OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1
bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1
cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw3ICsxMDEsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5s
b2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+
bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAg
ICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
YmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1
bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9ib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5s
b2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+
bG9jYWwoKS50b0FyZ3VtZW50KCldOwogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsK
ICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAg
ICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5z
ZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9y
ZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2Nh
bCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0
QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxv
Y2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVu
dCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3Ao
KSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQo
b3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0TW9kZSBtYXlFeGl0
SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBj
YXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBj
YXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6
CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAg
IGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2Ug
Tm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTQgQEAgc3Ry
dWN0IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwogfTsKIAorc3RydWN0
IEVudHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgfQor
ICAgIAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwogc3RydWN0IENhbGxW
YXJhcmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAgLTEyNzcsMTcg
KzEyODUsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAg
fQogICAgIAotICAgIGJvb2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wg
aXNFbnRyeVN3aXRjaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRy
eVN3aXRjaDsKKyAgICB9CisKICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAg
c3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6
CiAgICAgICAgIGNhc2UgU3dpdGNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAg
ICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJl
Y3RUYWlsQ2FsbDoKQEAgLTEzNDksNiArMTM2MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChpc1N3aXRjaCgpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigp
OwogICAgIH0KKworICAgIEVudHJ5U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc0VudHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8RW50cnlTd2l0Y2hEYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVt
U3VjY2Vzc29ycygpCiAgICAgewpAQCAtMTM1OSw2ICsxMzc5LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuIDI7CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJu
IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0x
MzcyLDYgKzEzOTQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5k
ZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3
aXRjaERhdGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAo
aXNFbnRyeVN3aXRjaCgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5i
bG9ja3NbaW5kZXhdOworCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAw
OgogICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ0LDcgQEAgcHVibGlj
OgogICAgICAgICBjYXNlIEF0b21pY3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgog
ICAgICAgICBjYXNlIEF0b21pY3NYb3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE5MzAsNiArMTk1NywxMiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KKworICAgIHVp
bnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNF
X0FTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJ
bmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KICAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZ2lzdGVyKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5
IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAog
ICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhF
eHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENh
dGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBm
cm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3As
IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM4Niw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSnVtcCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFN3aXRjaCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEVudHJ5U3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGFp
bENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKERp
cmVjdFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw1OSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0
YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0Y2g7CiB9CiAKK1NVUFBSRVNTX0FTQU4KK3Zv
aWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoY29k
ZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKworICAgIGlmICghT3B0aW9u
czo6dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAg
REZHOjpDYXRjaE9TUkVudHJ5RGF0YSogY2F0Y2hPU1JFbnRyeSA9IGppdENvZGUtPmNhdGNoT1NS
RW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBpZiAoIWNhdGNo
T1NSRW50cnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZm9yICh1bnNpZ25lZCBh
cmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHMu
c2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5yKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOworICAgICAgICBz
d2l0Y2ggKGNhdGNoT1NSRW50cnktPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAg
ICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0lu
dDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBp
ZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAg
ICAgICAgICAgIC8vIFRoaXMgaXMgdHJpdmlhbGx5IHRydWUuCisgICAgICAgICAgICBicmVhazsg
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sg
PSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhp
dCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+
cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9m
ZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTogYXNzZXJ0
IHRoaXMgaXMgb3BfYWZ0ZXJfY2F0Y2guCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4
ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpXS51
LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBidWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHN0YXRpY19j
YXN0PEpTVmFsdWUqPihqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyKVtpbmRleF0gPSBleGVj
LT5yKFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkpLmpzVmFsdWUoKTsKKyAgICAg
ICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRk
cmVzc0F0T2Zmc2V0KGNhdGNoT1NSRW50cnktPm1fbWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0
cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVy
YW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAg
aW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JF
bnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0KIAorc3RydWN0IENhdGNoT1NSRW50cnlEYXRh
IHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5l
Q29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBj
YXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQg
dHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hG
b3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8g
YSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5k
CiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mg
bm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JF
bnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNl
bHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayos
IHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzEx
Miw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAg
b3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgLy8gRklY
TUU6IEkgbmVlZCB0byBtYWtlIHRoaXMgd29yayBpbiB0aGUgbmV3IHN5c3RlbS4KKwogICAgICAg
ICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRl
cnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xk
Tm9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVy
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBv
c3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogUHJlUG9zdE51bWJlcmlu
Zzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCiB7CisgICAgLy8gRklYTUU6IHRoaXMg
bG9va3MgdW51c2VkLCBidXQgSSB0aGluayBpdCdzIGVhc3kgdG8gbWFrZSBpdCB3b3JrCisgICAg
Ly8gdy8gbXVsdGlwbGUgcm9vdHMuIFZlcmlmeSBpdCBkb2VzLgogICAgIG1fbWFwID0gQmxvY2tN
YXA8TnVtYmVyaW5nPihncmFwaCk7CiAgICAgCiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3
b3JrbGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
aWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGp1c3QgdGhpcyBzbyB3ZSBkb24ndCBuZWVk
IG1fYXJndW1lbnRzIGFueW1vcmUgYW5kIGp1c3QgdXNlIHRoZSBIYXNoTWFwLgogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAg
Y2FzZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAg
ICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTExLDYgKzExMTIsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgog
ICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAg
Y2FzZSBTd2l0Y2g6CiAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgICAgIGNhc2UgUHJv
ZmlsZUNvbnRyb2xGbG93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVt
cDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJl
Y3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUg
IlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwNzksNiArNjA4MSwxNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVh
azsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpTVmFs
dWUqIHB0ciA9ICZzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9T
UkVudHJ5QnVmZmVyKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7
CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRl
bXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBH
UFIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQucHJpbnQoIkV4dHJhY3RDYXRjaExvY2FsIik7
CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxv
b3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4Nyw2ICs2MTAwLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAg
ICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBA
IC02MTE1LDcgKzYxMzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6
CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBMZXQncyBkbyB0aGlzIGF0IHRoZSBPU1Ig
ZW50cnkgcG9pbnQgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyB3ZSBkbyBpdCBlbHNld2hlcmUu
CisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpCisgICAgICAgIG1faml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisKICAgICBtX3N0cmVhbS0+YXBw
ZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwogICAgIAogICAgIG1faml0LmppdEFz
c2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBAIC0xODczLDcgKzE4NzcsMjMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVu
dHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoYmxvY2stPmlzQ2F0Y2hPU1JU
YXJnZXQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNW
ZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJn
dW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUq
IHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNl
dEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0
ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgbWFrZSB0aGlzIGEgZGVidWcgYXNzZXJ0
LgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVz
aGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0g
Rmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRG
b3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tv
c3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywg
bV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOwogICAgIH0KICAg
ICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRF
c3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNv
dW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBG
SVhNRTogCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAg
ICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChv
cF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMpCiAg
ICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Nv
bnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24q
KTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGludCwgaW50MzJf
dCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpLCB1aW50MzJf
dCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVy
YXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25f
RUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw2ICs1NzksMTMg
QEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVyYXRpb24sIHVp
bnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUzLDYgKzg1MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3Vy
CiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7
CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgeworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCBy
ZWdUMCk7CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxl
KTsKKyAgICB9KTsKKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENh
dGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIGRvbmUgPSBicmFuY2hUZXN0UHRyKFpl
cm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBkb25l
LmxpbmsodGhpcyk7CisgICAgLy8gRklYTUU6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMu
Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUxNyw2ICsxNTE3LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RG
RyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQor
CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3Rh
dGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAg
ICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJl
cGxhY2VtZW50KCk7IC8vIEZJWE1FOiBjYW50aGlzIGV2ZXIgYmUgbnVsbD8gT3IganVzdCBpdCBy
ZXR1cm4gaXRzZWxmPworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9
IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1p
emVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5cGVkZWYgY2hh
ciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJ
T04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0
eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0
ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9K
SVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBj
aGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50
MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9K
SVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0
cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUq
LCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRP
cGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYg
RU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJf
dCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFs
dWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsx
NjM4LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBM
TElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2Nh
dGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
Kj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIC8vZGF0YUxvZ0xuKCJQcm9maWxpbmcg
cmVnICIsIFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCksICIgOiAiLCBleGVjLT51
bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxl
Lm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2Vk
Uihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKyAgICAvL2RhdGFMb2dM
bigiQ29tcGxldGVkIHZhbHVlIHByb2ZpbGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwog
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3df
ZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25f
aXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsK
K0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJy
b3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkK
IGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2Vu
dHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNp
b24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NzgsNiArMTk3OCwxMSBAQCBfbGxpbnRf
b3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitf
bGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfZW5kOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317196</attachid>
            <date>2017-08-03 19:03:20 -0700</date>
            <delta_ts>2017-08-03 19:43:41 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>69792</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOworICAgIHZvaWQgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
OwogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKQEAgLTMyOSw2ICszMzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBjYWNoaW5nIGNvZGUgc291bmQ/CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5vZmZzZXQoKSk7CkBAIC0xMTMwLDcgKzExMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIxLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDkwLDYg
KzQwOTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0
VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CisKKyAgICAgICAgbV9ncmFw
aC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIG1fZ3JhcGgubV9h
cmd1bWVudHMpOwogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01MTUwLDYgKzUxNTcs
OTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBj
YXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJz
ID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBj
YXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxp
bmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgYml0IHdoZW4gZG9p
bmcgT1NSIGVudHJ5LiBCdXQgd2Ugc2V0IHRoaXMgdG8gb3BfYWZ0ZXJfY2F0Y2gncworICAgICAg
ICAgICAgLy8gYnl0ZWNvZGUgaW5kZXguIEFsdGVybmF0aXZlbHksIHdoZW4gZG9pbmcgT1NSIGVu
dHJ5LCB3ZSBjb3VsZCBzZWFyY2ggZm9yIHRoZSBwcmV2aW91cyBieXRlY29kZSBpbmRleAorICAg
ICAgICAgICAgLy8gb2YgdGhlIG9wX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBp
cyB0aGlzIHJpZ2h0PworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0g
dHJ1ZTsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQgPSB0
cnVlOworCisgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVu
dEJsb2NrKTsKKworICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxp
bnQsIE5vZGUqPj4gdmFsdWVzVG9TZXQ7CisgICAgICAgICAgICB2YWx1ZXNUb1NldC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyBtYXkgcmVzZXJ2
ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhl
IGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxh
dGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3
ZSB3b3VsZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRoaXMgY292ZXJzIGFyZ3VtZW50
cy4gV2UgbmVlZCBhcmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9w
ZXJhbmQuaXNMb2NhbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9w
SW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mTG9j
YWxzOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8o
cHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZXNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIocHJvZmlsZS5tX29wZXJhbmQs
IHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFu
ZC50b0FyZ3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFs
bCBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25z
W29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAq
bV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNoZWNr
IGlmIHRoaXMgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VT
dHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJh
eUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdU
eXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dy
YXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1
bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1l
bnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdmFsdWVzVG9TZXQp
CisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgVmlydHVhbFJl
Z2lzdGVyKHBhaXIuZmlyc3QpLCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBD
YWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC01OTQwLDYgKzYwMzMsMzAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VQogICAgIH0KIH0KIAordm9pZCBCeXRlQ29k
ZVBhcnNlcjo6Y3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpCit7CisgICAgcmV0dXJuOworICAg
IC8vIEZJWE1FOiBkb2VzIHRoaXMgYnJlYWsgY29uc3RhbnRzPworICAgIC8vVmVjdG9yPEJhc2lj
QmxvY2sqPiBtX2VudHJ5cG9pbnRCbG9ja3M7CisgICAgaWYgKG1fZW50cnlwb2ludEJsb2Nrcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW50cnlwb2ludEJsb2Nrcy5hcHBl
bmQobV9ncmFwaC5ibG9jaygwKSk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9ncmFwaC5tX2Vu
dHJ5U3dpdGNoRGF0YSk7CisgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW50cnlTd2l0Y2hEYXRhPigpOworICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERh
dGEtPmJsb2Nrcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cnlwb2ludEJsb2Nrcy5zaXpl
KCkpOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2VudHJ5cG9pbnRCbG9ja3MpCisg
ICAgICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5hcHBlbmQoYmxvY2spOwor
CisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKDAs
IG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOworICAgIGJsb2NrLT5hcHBlbmQobV9n
cmFwaC5hZGROb2RlKEVudHJ5U3dpdGNoLCBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVP
cmlnaW4oMCksIGZhbHNlKSwKKyAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9lbnRyeVN3aXRjaERh
dGEuZ2V0KCkpLCBFZGdlKCksIEVkZ2UoKSwgRWRnZSgpKSk7CisgICAgbV9ncmFwaC5tX2Jsb2Nr
cy5pbnNlcnQoMCwgV1RGTW92ZShibG9jaykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAgICBtX2dyYXBoLm1fYmxvY2tz
W2ldLT5pbmRleCA9IGk7Cit9CisKIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJ
bmxpbmVTdGFja0VudHJ5KAogICAgIEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlciwKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisgICAgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpOworCiAgICAgbV9n
cmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJs
ZUJsb2NrcygpOwogICAgIApAQCAtNjIxNCw2ICs2MzM0LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2UoKQogICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2FsczsKICAgICBt
X2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRlclNsb3RzOwogCisgICAgaWYgKHRy
dWUpCisgICAgICAgIG1fZ3JhcGguZHVtcCgpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRv
IGZha2UgYSByb290IHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBlbnRyeXBvaW50cy4KICAgICBOb2Rl
IHJvb3QoKSB7IHJldHVybiBtX2dyYXBoLmJsb2NrKDApOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGlu
Z1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQ
U1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjksOCArMzY5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1
bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJs
b2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQg
dXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAg
ICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIg
dXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAg
bV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGks
IG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAgIC8vIEZJWE1FOiBncmVwIGZvciBh
bGwgdXNlcyBvZiBibG9jaygwKSBhbmQgcGVyaGFwcyBhbHNvIGFkZCBub3Rpb24gb2YgZW50cnlw
b2ludHMuCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBwYWlyLmtl
eTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50cyA9IHBhaXIu
dmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBp
LS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1
bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAg
Y2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2FzZSBv
cF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0
X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgogICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoK
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAgICAg
ICAgIApAQCAtNDIyLDYgKzQyMyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0
Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFRocm93OgogICAgIGNhc2UgRm9y
Y2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAg
ICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNWZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLnZhbHVlcygpKQorICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYXJndW1lbnRz
VmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVh
bi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJs
b2NrcygpOyBibG9ja0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBKdW1wOgogICAgIGNh
c2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAg
Y2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxs
OgpAQCAtMTk2LDYgKzE5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFw
QnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2Nh
bDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJ
bkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTcwLDYgKzE5NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246
CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICBjYXNlIEp1bXA6
CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAg
ICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk4Myw2
ICsxOTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RyYXBzOgogICAgICAgICBj
YXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAg
ICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAg
ICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDIyMDE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKLWVudW0gRmx1c2hGb3JtYXQgeworZW51bSBGbHVzaEZvcm1hdCA6IHVpbnQ4X3QgewogICAg
IERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCiAgICAgRmx1c2hlZEludDUyLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MTEsNyArNDExLDggQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogCiB2b2lk
IEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJl
Zml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBNb2RlIHBoaU5vZGVEdW1wTW9kZSwg
RHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIs
ICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBj
b250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJs
b2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKKyAgICBvdXQu
cHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0
KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLAorICAgICAgICBibG9jay0+aXNS
ZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NS
IHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0ID8gIiAoQ2F0Y2ggT1NSIHRh
cmdldCkiIDogIiIsICJcbiIpOwogICAgIGlmIChibG9jay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxv
Y2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBFeGVjdXRp
b24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3VudCwgIlxuIik7CiAgICAgb3V0LnByaW50
KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAtNjQwLDggKzY0MSwxMCBAQCB2b2lkIEdy
YXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVS
ZWFjaGFiaWxpdHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0Owot
ICAgIHdvcmtsaXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxl
ID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRz
KSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29y
a2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0Lmlz
RW1wdHkoKSkgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGkt
LTspCkBAIC04NTAsNyArODUzLDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVy
KCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7
Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0
aGlzIGlzIHJlYWxseSB3aGF0IHdlIHdhbnQgaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVu
dHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9p
bnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtODYzLDcgKzg2OCw5IEBAIEJsb2NrTGlz
dCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAg
ICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJs
b2NrKDApKTsKKyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ug
d2FudCBoZXJlLgorICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2lu
dHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2Nr
V2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0u
b3JkZXIpIHsKICAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMSw3ICs5MjEsMTAg
QEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBt
X3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4
PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsK
KyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7CisgICAgLy8gRklYTUU6
IENvdWxkIGluY29ycG9yYXRlIHRoaXMgYWJvdmUuCisgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwg
VmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHM7CiAgICAgVmVjdG9yPEVk
Z2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwg
RnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0
cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk2Nyw2ICs5NzAsNyBAQCBwdWJsaWM6CiAgICAgU2Vn
bWVudGVkVmVjdG9yPE5ld0FycmF5QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7
CiAgICAgQmFnPEJyYW5jaERhdGE+IG1fYnJhbmNoRGF0YTsKICAgICBCYWc8U3dpdGNoRGF0YT4g
bV9zd2l0Y2hEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVN3aXRjaERhdGE+IG1fZW50
cnlTd2l0Y2hEYXRhOwogICAgIEJhZzxNdWx0aUdldEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aUdldEJ5
T2Zmc2V0RGF0YTsKICAgICBCYWc8TXVsdGlQdXRCeU9mZnNldERhdGE+IG1fbXVsdGlQdXRCeU9m
ZnNldERhdGE7CiAgICAgQmFnPE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE+IG1fb2JqZWN0TWF0
ZXJpYWxpemF0aW9uRGF0YTsKQEAgLTEwMDksNiArMTAxMyw3IEBAIHB1YmxpYzoKICAgICBSZWZD
b3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVk
OwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgc3RkOjpv
cHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0
ICs5Myw1OSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZv
aWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0
cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3Vu
ZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0
SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2Ji
ZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewot
ICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAg
ICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0Ep
Ci0gICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRz
W2ldOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZs
dXNoZWRKU1ZhbHVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgu
bV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0g
dHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAg
ICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBv
aW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hl
ZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0g
U3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKwor
ICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9mb3JtID09IFNTQSkKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1l
bnRGb3JtYXRzW2ldOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgICAgIGlm
ICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Cisg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5v
cCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkg
eworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgor
ICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRU
eXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3Ig
YXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBG
bHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSku
c2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50
KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
aSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQg
Zmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQu
bnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2Nh
bChpKS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIo
KTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRl
eCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxv
Y2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1
ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAg
ICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAg
ICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxl
KTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxv
Y2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw2ICszNjksMTMgQEAgaW5saW5lIGJv
b2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICBy
ZXR1cm4gY2hhbmdlZDsKICAgICB9CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOiB7CisgICAgICAg
IGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHRhcmdldEJs
b2NrIDogdGVybWluYWwtPmVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3MpCisgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRhcmdldEJsb2NrKTsKKyAgICAgICAgcmV0dXJu
IGNoYW5nZWQ7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRh
aWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JF
bnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NS
RW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hPU1JFbnRyeURhdGEq
IGNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4
KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBhIGJpbmFyeSBzZWFyY2guCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYXRjaE9TUkVudHJ5LnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICBpZiAoY2F0Y2hPU1JFbnRyeVtpXS5tX2J5dGVjb2RlSW5kZXggPT0g
Ynl0ZWNvZGVJbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmNhdGNoT1NSRW50cnlbaV07
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZENhdGNoT1NSRW50cnkodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFj
aGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisg
ICAgeworICAgICAgICBjYXRjaE9TUkVudHJ5LmFwcGVuZChERkc6OkNhdGNoT1NSRW50cnlEYXRh
IHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3Jt
YXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBP
U1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiw2ICsxNDgsNyBAQCBwcml2YXRlOgogcHVibGlj
OgogICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4g
b3NyRW50cnk7CisgICAgVmVjdG9yPERGRzo6Q2F0Y2hPU1JFbnRyeURhdGE+IGNhdGNoT1NSRW50
cnk7CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBW
ZWN0b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAg
IERGRzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpAQCAtMTY4LDYg
KzE4NSw4IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX29zckVudHJ5
QmxvY2s7CiAgICAgdW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAgICBib29sIGFiYW5kb25PU1JF
bnRyeTsKKworICAgIHZvaWQqIGNhdGNoT1NSRW50cnlCdWZmZXIgeyBudWxscHRyIH07IC8vIEZJ
WE1FOiBtYWtlIGFsbG9jYXRpb24vZGVzdHJ1Y3Rpb24gYXV0b21hdGljIGhlcmUuIEhvbGRzIHRo
ZSBsb2NhbHMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guCiAjZW5kaWYgLy8gRU5BQkxF
KEZUTF9KSVQpCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw2ICszNjcsOSBA
QCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvCiAKIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGUoKQogeworICAgIGlmIChtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hP
U1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyID0gZmFzdE1h
bGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAg
IG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7
CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlC
dWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGls
ZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRy
ZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VD
YXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBi
bG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBh
cmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNo
T1NSVGFyZ2V0KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9m
Q0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFi
bGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaE9TUkVudHJ5KGJhc2ljQmxvY2suYnl0ZWNv
ZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50
Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Js
b2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hP
U1JUYXJnZXQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tz
IGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFi
YXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9T
UkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2Yo
YmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2lj
QmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBG
aXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUg
d2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwg
SklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90
aWNlQ2F0Y2hPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVh
ZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwog
ICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlh
YmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEs
MTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3Vt
ZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3Vt
ZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBu
b2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0
ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAg
ICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQg
PSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9ib29sIGlzUHJpbW9yZGlhbFNldEFyZ3Vt
ZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3Vt
ZW50KCldOwogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2Fs
bEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMg
QEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJs
b2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50
ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50
KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2Rl
LT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVu
ZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBu
b2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8
fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQp
KSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+
bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFj
Y2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3Jh
cGgsIE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEp1bXA6CiAgICAg
Y2FzZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFVucmVhY2hhYmxl
OgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1
ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAg
ICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTQgQEAgc3RydWN0IFN3aXRjaERhdGEg
ewogICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwogfTsKIAorc3RydWN0IEVudHJ5U3dpdGNoRGF0
YSB7CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFZlY3Rv
cjxCYXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwogc3RydWN0IENhbGxWYXJhcmdzRGF0YSB7CiAg
ICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAgLTEyNzcsMTcgKzEyODUsMjMgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJv
b2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9
CisKICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7
CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2Ug
U3dpdGNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoK
ICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAg
LTEzNDksNiArMTM2MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRjaCgpKTsK
ICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0KKworICAg
IEVudHJ5U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChpc0VudHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0
Y2hEYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpCiAg
ICAgewpAQCAtMTM1OSw2ICsxMzc5LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDI7
CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+
Y2FzZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgICAg
IHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEzOTQsMTAg
QEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0
YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFs
bFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3aXRjaCgp
KQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5kZXhdOwor
CiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAg
aWYgKGlzSnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNl
IEF0b21pY3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0
b21pY3NYb3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE5MzAsNiArMTk1NywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92
aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NS
RW50cnlJbmRleCgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCgpID09
IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90
PigpOworICAgIH0KICAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4g
SW5kaWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxl
IGZyb20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlM
b2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVS
ZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8g
dGhlIEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKQEAgLTM4Niw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oSnVtcCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEJyYW5jaCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAorICAgIG1hY3JvKEVudHJ5U3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UmV0dXJuLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGFpbENhbGwsIE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKERpcmVjdFRhaWxDYWxsLCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2
LDYgKzMzNiw2MiBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAg
ICAgcmV0dXJuIHNjcmF0Y2g7CiB9CiAKK1NVUFBSRVNTX0FTQU4KK3ZvaWQqIHByZXBhcmVDYXRj
aE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUQ29kZTo6REZHSklUKTsKKworICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlU
b0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRm
ZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaE9TUkVu
dHJ5RGF0YSogY2F0Y2hPU1JFbnRyeSA9IGppdENvZGUtPmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0
ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBpZiAoIWNhdGNoT1NSRW50cnkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3Vt
ZW50KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5yKHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOworICAgICAgICBzd2l0Y2ggKGNhdGNoT1NS
RW50cnktPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6
Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9v
bGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1l
YW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIEl0IGNhbiBiZSBhbnl0aGluZy4gSGVuY2Us
IGl0J3MgdHJpdmlhbGx5IHRydWUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
Rkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gVGhpcyBpcyB0cml2aWFsbHkgdHJ1
ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNp
Z25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVy
Q291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1cmVT
dGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIC8vIEZJWE1FOiBhc3NlcnQgdGhpcyBpcyBvcF9hZnRlcl9jYXRjaC4KKyAgICBWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4
ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4
ID0gMDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBw
cm9maWxlKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEpTVmFsdWUqPihqaXRDb2RlLT5jYXRjaE9T
UkVudHJ5QnVmZmVyKVtpbmRleF0gPSBleGVjLT5yKFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1f
b3BlcmFuZCkpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJl
dHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNhdGNoT1NSRW50cnktPm1f
bWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1
c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0
YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0K
IAorc3RydWN0IENhdGNoT1NSRW50cnlEYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5k
ZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhp
cyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cwor
ICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRj
aCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsK
KwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50
cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51
bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3
ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAg
dG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlw
ZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2lu
OwogICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6IEkgbmVlZCB0byBtYWtlIHRoaXMgd29yayBp
biB0aGUgbmV3IHN5c3RlbS4KKwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3Vt
ZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAg
ICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3Vt
ZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTIsNiArMjkyLDggQEAg
UGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIAogICAgIFJVTl9Q
SEFTRShwZXJmb3JtQ1BTUmV0aHJlYWRpbmcpOwogICAgIFJVTl9QSEFTRShwZXJmb3JtVW5pZmlj
YXRpb24pOworICAgIGRhdGFMb2dMbigiQmVmb3JlIHByZWRpY3Rpb24gaW5qZWN0aW9uIik7Cisg
ICAgZGZnLmR1bXAoKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVByZWRpY3Rpb25JbmplY3Rpb24p
OwogICAgIAogICAgIFJVTl9QSEFTRShwZXJmb3JtU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIFByZVBvc3ROdW1iZXJpbmc6
OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBoKQogeworICAgIC8vIEZJWE1FOiB0aGlzIGxv
b2tzIHVudXNlZCwgYnV0IEkgdGhpbmsgaXQncyBlYXN5IHRvIG1ha2UgaXQgd29yaworICAgIC8v
IHcvIG11bHRpcGxlIHJvb3RzLiBWZXJpZnkgaXQgZG9lcy4KICAgICBtX21hcCA9IEJsb2NrTWFw
PE51bWJlcmluZz4oZ3JhcGgpOwogICAgIAogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29y
a2xpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Jbmpl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlm
ICghcHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogYWRqdXN0IHRoaXMgc28gd2UgZG9uJ3QgbmVlZCBt
X2FyZ3VtZW50cyBhbnltb3JlIGFuZCBqdXN0IHVzZSB0aGUgSGFzaE1hcC4KICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVk
aWN0KAogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNh
c2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgRXh0
cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAgICAg
ICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTExMSw2ICsxMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVtcDoKICAg
ICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNh
c2UgU3dpdGNoOgogICAgICAgICBjYXNlIFByb2ZpbGVUeXBlOgogICAgICAgICBjYXNlIFByb2Zp
bGVDb250cm9sRmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMwNyw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIEp1bXA6
CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CkBAIC0zMjMsNiArMzI0LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFVucmVhY2hh
YmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0
Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlICJU
eXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJQcmludGVyLmgiCisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02MDc5LDYgKzYwODEsMTcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICBKU1ZhbHVl
KiBwdHIgPSAmc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JF
bnRyeUJ1ZmZlcilbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwor
ICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1w
R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BS
KSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LnByaW50KCJFeHRyYWN0Q2F0Y2hMb2NhbCIpOwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAjZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29w
OgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKQEAgLTYwODcsNiArNjEwMCw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAKKworICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAg
Y2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpAQCAt
NjExNSw3ICs2MTMwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgog
ICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoKLSAgICAgICAgREZHX0NSQVNIKG1f
aml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzYsNiArMTY3Niwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogTGV0J3MgZG8gdGhpcyBhdCB0aGUgT1NSIGVu
dHJ5IHBvaW50IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgd2UgZG8gaXQgZWxzZXdoZXJlLgor
ICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0KQorICAgICAgICBtX2ppdC5hZGRQdHIo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgoKS5zdGFja1BvaW50ZXJPZmZz
ZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIEND
YWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworCiAgICAgbV9zdHJlYW0tPmFwcGVu
ZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3Nl
cnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTc3MCw4ICsxNzc0LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUp
OwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDAp
LCB0cnVlKTsKIAorICAgIC8vIEZJWE1FOiByZW1vdmUgbV9ncmFwaC5tX2FyZ3VtZW50cyEKKyAg
ICBhdXRvJiBhcmd1bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9qaXQuZ3JhcGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAg
IE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2Rl
KiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAg
IC8vIFRoZSBhcmd1bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNo
IGFyZ3VtZW50cy4KICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg3Myw3ICsxODc5LDIzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlI
ZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5p
c0NhdGNoT1NSVGFyZ2V0KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2ppdC5ncmFwaCgp
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgYXV0byYg
YXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICBWZWN0b3I8Rmx1c2hG
b3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOworICAgICAgICAgICAg
Zm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3RvcikgeworICAgICAgICAgICAg
ICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBm
bHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3Jt
YXQoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE1heWJlIG1ha2UgdGhpcyBhIGRl
YnVnIGFzc2VydC4KKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmx1c2hGb3Jt
YXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRDZWxsIHx8IGZsdXNo
Rm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRKU1ZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChm
bHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoT1NSRW50cnkoKmJsb2NrLCBtX29zckVu
dHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVudEZv
cm1hdHMpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRy
eSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsK
ICAgICB9CiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUo
KSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNF
eGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYg
KzgwLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFwcGx5Q291bnRzKGRhdGEtPmZhbGxU
aHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gRklYTUU6IAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDE4ICsxOTUsMTgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIShtYXlFeGl0KG1f
Z3JhcGgsIG5vZGUpID09IEV4aXRzICYmICFub2RlLT5vcmlnaW4uZXhpdE9LKSk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgICAgICAgICBOb2RlKiBwcmV2aW91c05v
ZGUgPSBibG9jay0+YXQoaSAtIDEpOwotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICFj
bG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCi0gICAgICAgICAgICAgICAg
ICAgICAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAg
fHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUt
Pm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwotICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAm
JiBub2RlLT5vcmlnaW4uZXhpdE9LKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+
b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9yaWdpbi5m
b3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAg
ICAgICAvL05vZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7CisgICAgICAgICAg
ICAgICAgICAgIC8vVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgIC8vICAgIChub2RlKSwK
KyAgICAgICAgICAgICAgICAgICAgLy8gICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3JhcGgsIHBy
ZXZpb3VzTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgIW5vZGUtPm9yaWdpbi5l
eGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sK
KyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJl
dmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAgICAgICAgICAgIC8vVkFMSURB
VEUoCisgICAgICAgICAgICAgICAgICAgIC8vICAgIChub2RlKSwKKyAgICAgICAgICAgICAgICAg
ICAgLy8gICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9LICYmIG5vZGUtPm9yaWdpbi5l
eGl0T0spCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHBy
ZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1
Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3RhaWxfY2Fs
bF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09QKG9wX2NvbnN0cnVjdF92YXJh
cmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2F0Y2gpCisgICAgICAgIERFRklORV9PUChvcF9h
ZnRlcl9jYXRjaCkKICAgICAgICAgREVGSU5FX09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAgREVG
SU5FX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfdG9fdGhpcykKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDYgKzQ3Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3Rf
dmFyYXJncyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2F0Y2goSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTUsNiArNzk2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0UpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUywgR1BSUmVn
LCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBf
SklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJ
RCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVy
YXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1wbCop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDIy
MDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NzksNiArNTc5LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogfQogCitBTFdB
WVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50MzJfdCBhcmcxKQoreworICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOworICAgIHVwZGF0ZVRvcENhbGxG
cmFtZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBzaXplX3QgYXJnMikKIHsKICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Myw2ICs4NTMsMTAgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRTdG9yZSh0aHJvd25WYWx1ZSwgcmVn
VDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rp
b24qKQoreworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
Myw2ICs1NTMsMjEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgog
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcihwcm9maWxlLm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKCZwcm9maWxlLm1fcHJvZmlsZSk7CisgICAgfSk7CisKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0
byBkb25lID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7CisgICAganVtcChy
ZXR1cm5WYWx1ZUdQUik7CisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIC8vIEZJWE1FOiBhZGQg
YSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTcsNiArMTUxNywxOSBAQCBTbG93UGF0aFJldHVy
blR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2Rl
QmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25U
cnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVu
dCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOyAvLyBGSVhNRTogY2FudGhpcyBl
dmVyIGJlIG51bGw/IE9yIGp1c3QgaXQgcmV0dXJuIGl0c2VsZj8KKyAgICBpZiAob3B0aW1pemVk
UmVwbGFjZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpERkdKSVQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihERkc6OnByZXBhcmVD
YXRjaE9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KSk7
Cit9CisKICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcnJheVZhbHVlLCBpbnQzMl90
IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
Niw2ICszMTYsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0
eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0
ZSosIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9K
SVRPcGVyYXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKIHR5cGVkZWYg
Y2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91
YmxlLCBpbnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0
aW9uX0VVaSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5
cGUgKEpJVF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENh
bGxMaW5rSW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRP
cGVyYXRpb25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcq
IChKSVRfT1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90
KTsKQEAgLTM5Niw2ICszOTcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3co
RXhlY1N0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50
MzJfdCkgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShERkdfSklUKQogU2xvd1BhdGhSZXR1cm5U
eXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0
Q2F0Y2goRXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwg
aW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwyMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisg
ICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVy
LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAg
ICAvL2RhdGFMb2dMbigiUHJvZmlsaW5nIHJlZyAiLCBWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5t
X29wZXJhbmQpLCAiIDogIiwgZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNW
YWx1ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7
CisgICAgfSk7CisgICAgLy9kYXRhTG9nTG4oIkNvbXBsZXRlZCB2YWx1ZSBwcm9maWxlISIpOwor
CisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHBy
b3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmls
ZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2No
aWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9s
b2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5U
RVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFM
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTc4LDYgKzE5NzgsMTEgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2FmdGVyX2NhdGNoOgorICAgIGNhbGxP
cGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVyX2NhdGNoKQorICAgIGRpc3BhdGNo
KDMpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317204</attachid>
            <date>2017-08-03 19:43:41 -0700</date>
            <delta_ts>2017-08-06 09:30:42 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>69236</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOworICAgIHZvaWQgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
OwogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKQEAgLTMyOSw2ICszMzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBjYWNoaW5nIGNvZGUgc291bmQ/CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5vZmZzZXQoKSk7CkBAIC0xMTMwLDcgKzExMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIxLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDkwLDYg
KzQwOTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0
VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CisKKyAgICAgICAgbV9ncmFw
aC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIG1fZ3JhcGgubV9h
cmd1bWVudHMpOwogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01MTUwLDYgKzUxNTcs
OTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBj
YXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJz
ID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBj
YXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxp
bmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgYml0IHdoZW4gZG9p
bmcgT1NSIGVudHJ5LiBCdXQgd2Ugc2V0IHRoaXMgdG8gb3BfYWZ0ZXJfY2F0Y2gncworICAgICAg
ICAgICAgLy8gYnl0ZWNvZGUgaW5kZXguIEFsdGVybmF0aXZlbHksIHdoZW4gZG9pbmcgT1NSIGVu
dHJ5LCB3ZSBjb3VsZCBzZWFyY2ggZm9yIHRoZSBwcmV2aW91cyBieXRlY29kZSBpbmRleAorICAg
ICAgICAgICAgLy8gb2YgdGhlIG9wX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBp
cyB0aGlzIHJpZ2h0PworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0g
dHJ1ZTsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQgPSB0
cnVlOworCisgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVu
dEJsb2NrKTsKKworICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxp
bnQsIE5vZGUqPj4gdmFsdWVzVG9TZXQ7CisgICAgICAgICAgICB2YWx1ZXNUb1NldC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyBtYXkgcmVzZXJ2
ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhl
IGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxh
dGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3
ZSB3b3VsZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRoaXMgY292ZXJzIGFyZ3VtZW50
cy4gV2UgbmVlZCBhcmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9w
ZXJhbmQuaXNMb2NhbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9w
SW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mTG9j
YWxzOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8o
cHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZXNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIocHJvZmlsZS5tX29wZXJhbmQs
IHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFu
ZC50b0FyZ3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFs
bCBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25z
W29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAq
bV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNoZWNr
IGlmIHRoaXMgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VT
dHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJh
eUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdU
eXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dy
YXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1
bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1l
bnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdmFsdWVzVG9TZXQp
CisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgVmlydHVhbFJl
Z2lzdGVyKHBhaXIuZmlyc3QpLCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBD
YWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC01OTQwLDYgKzYwMzMsMzAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VQogICAgIH0KIH0KIAordm9pZCBCeXRlQ29k
ZVBhcnNlcjo6Y3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpCit7CisgICAgcmV0dXJuOworICAg
IC8vIEZJWE1FOiBkb2VzIHRoaXMgYnJlYWsgY29uc3RhbnRzPworICAgIC8vVmVjdG9yPEJhc2lj
QmxvY2sqPiBtX2VudHJ5cG9pbnRCbG9ja3M7CisgICAgaWYgKG1fZW50cnlwb2ludEJsb2Nrcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW50cnlwb2ludEJsb2Nrcy5hcHBl
bmQobV9ncmFwaC5ibG9jaygwKSk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9ncmFwaC5tX2Vu
dHJ5U3dpdGNoRGF0YSk7CisgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW50cnlTd2l0Y2hEYXRhPigpOworICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERh
dGEtPmJsb2Nrcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cnlwb2ludEJsb2Nrcy5zaXpl
KCkpOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2VudHJ5cG9pbnRCbG9ja3MpCisg
ICAgICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5hcHBlbmQoYmxvY2spOwor
CisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKDAs
IG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOworICAgIGJsb2NrLT5hcHBlbmQobV9n
cmFwaC5hZGROb2RlKEVudHJ5U3dpdGNoLCBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVP
cmlnaW4oMCksIGZhbHNlKSwKKyAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9lbnRyeVN3aXRjaERh
dGEuZ2V0KCkpLCBFZGdlKCksIEVkZ2UoKSwgRWRnZSgpKSk7CisgICAgbV9ncmFwaC5tX2Jsb2Nr
cy5pbnNlcnQoMCwgV1RGTW92ZShibG9jaykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAgICBtX2dyYXBoLm1fYmxvY2tz
W2ldLT5pbmRleCA9IGk7Cit9CisKIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJ
bmxpbmVTdGFja0VudHJ5KAogICAgIEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlciwKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisgICAgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpOworCiAgICAgbV9n
cmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJs
ZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAg
Ly8gRklYTUU6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGVu
dHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0
byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdl
IGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBm
b3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFu
b3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2ls
bC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7
IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0
QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisKKyAgICAgICAg
Ly8gRklYTUU6IGdyZXAgZm9yIGFsbCB1c2VzIG9mIGJsb2NrKDApIGFuZCBwZXJoYXBzIGFsc28g
YWRkIG5vdGlvbiBvZiBlbnRyeXBvaW50cy4KKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayog
ZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4
PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFy
aWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBv
cF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jl
c3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgog
ICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJy
YW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2Ug
VGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBm
aXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3Jh
cGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVh
blZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNp
YyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTYsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAg
ICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBj
YXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAg
ICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6
CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAg
Y2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENo
ZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAg
IGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21i
aWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
aAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVz
aEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9y
bWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBG
bHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsOCBAQCBib29sIEdyYXBoOjp0ZXJtaW5h
bHNBcmVWYWxpZCgpCiAKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVtcE1v
ZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQucHJp
bnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDAp
LT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUgPyAi
IiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDog
IiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIs
IGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIs
CisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+
aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hPU1JUYXJn
ZXQgPyAiIChDYXRjaCBPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5l
eGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAi
XG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBAIC02NDAs
OCArNjQxLDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZv
aWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJhc2ljQmxv
Y2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsKLSAgICBi
bG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlw
b2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFjaGFibGUg
PSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAgfQogICAg
IHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2st
Pm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg1MCw3ICs4NTMsOSBAQCBCbG9ja0xpc3QgR3Jh
cGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAv
LyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAg
IGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdv
cmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0g
d29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NjMs
NyArODY4LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAg
QmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0Owot
ICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhp
cyBpcyByZWFsbHkgd2hhdCB3ZSB3YW50IGhlcmUuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRy
eXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50
KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAg
ICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlBy
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtOTIxLDcgKzkyMSwxMCBAQCBwdWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9j
azsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJl
ZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNC
bG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBv
aW50czsKKyAgICAvLyBGSVhNRTogQ291bGQgaW5jb3Jwb3JhdGUgdGhpcyBhYm92ZS4KKyAgICBI
YXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNo
TWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5j
b2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTY3LDYgKzk3MCw3
IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBt
X25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwog
ICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZz
ZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0
RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtMTAwOSw2ICsxMDEzLDcg
QEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwogICAgIGJvb2wg
bV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsg
ZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0Nh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3Ry
YWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMo
VmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgp
CiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+
Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNl
OwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3Ry
dWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9v
dC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChp
KS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1f
Z3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9
IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAg
ICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBl
bnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQt
PmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNp
dGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9
IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3Vt
ZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1
bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAgICAgICAgICAgICAgIGZvcm1h
dCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAg
ICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0
KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07
CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2Vs
bCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1Zh
bHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJC
YWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52
YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0
VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAg
ICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5O
YXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRh
aW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMg
YWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VS
VChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9
IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYg
KzM2OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdl
dC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50
cnlTd2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAo
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2NrcykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0Qmxv
Y2spOworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
UmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgs
CiAgICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAg
ICBDYXRjaE9TUkVudHJ5RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlz
IGEgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhdGNo
T1NSRW50cnkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjYXRjaE9TUkVudHJ5W2ld
Lm1fYnl0ZWNvZGVJbmRleCA9PSBieXRlY29kZUluZGV4KQorICAgICAgICAgICAgICAgIHJldHVy
biAmY2F0Y2hPU1JFbnRyeVtpXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hPU1JFbnRyeSh1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoT1NSRW50cnkuYXBwZW5kKERG
Rzo6Q2F0Y2hPU1JFbnRyeURhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwg
V1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBh
cHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDYgKzE0OCw3
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9y
PERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8REZHOjpDYXRjaE9TUkVu
dHJ5RGF0YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0
LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1
bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZl
bnRTdHJlYW07CkBAIC0xNjgsNiArMTg1LDggQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxD
b2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25lZCBvc3JFbnRyeVJldHJ5Owog
ICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgdm9pZCogY2F0Y2hPU1JFbnRyeUJ1ZmZl
ciB7IG51bGxwdHIgfTsgLy8gRklYTUU6IG1ha2UgYWxsb2NhdGlvbi9kZXN0cnVjdGlvbiBhdXRv
bWF0aWMgaGVyZS4gSG9sZHMgdGhlIGxvY2FscyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4KICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2so
SklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAg
ICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IGZhc3RNYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICog
KCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMgQEAgdm9p
ZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQg
SklUQ29tcGlsZXI6Om5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywg
SklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2lj
QmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBi
eSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50
cnkoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVh
ZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5v
dGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBi
bG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90
IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBh
bmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9
IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwg
bGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4
cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7
CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9j
b2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9T
UkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVm
ZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7
IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDcgKzEwMSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL2Jvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CiAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAg
ICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUt
PmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2Rl
LT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRp
YWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0Fy
Z3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3Bl
cmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDEzIEBAIEV4aXRNb2RlIG1h
eUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgog
ICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgog
ICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1
MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAg
Y2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxNCBA
QCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7CiB9OwogCitz
dHJ1Y3QgRW50cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9OworCiBzdHJ1Y3Qg
Q2FsbFZhcmFyZ3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9OwpAQCAtMTI3
NywxNyArMTI4NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQogCisgICAg
Ym9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJvb2wgaXNUZXJtaW5hbCgpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKdW1wOgogICAgICAgICBjYXNlIEJy
YW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAg
ICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNl
IERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3dpdGNoRGF0
YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0Y2hEYXRhKiBlbnRyeVN3aXRjaERhdGEoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlTd2l0Y2goKSk7CisgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigpOworICAgIH0KICAgICAKICAgICB1bnNpZ25l
ZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0xMzU5LDYgKzEzNzksOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgICAgICBy
ZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgKyAxOworICAgICAgICBjYXNlIEVudHJ5
U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Muc2l6
ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0K
QEAgLTEzNzIsNiArMTM5NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCisgICAgICAg
IGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRh
KCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAgICAgICBj
YXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTE4LDYgKzE1NDQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWljc1N0b3JlOgogICAgICAgICBjYXNlIEF0b21pY3NT
dWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3LDEyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7CiAgICAgfQorCisg
ICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQogICAgIAogICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1Ig
ZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwg
Ki9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1h
Y3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRy
YWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hl
Y2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcElu
TG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNo
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDYyIEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAorU1VQUFJFU1NfQVNB
Tgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworCisgICAgaWYgKCFP
cHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisK
KyAgICBERkc6OkNhdGNoT1NSRW50cnlEYXRhKiBjYXRjaE9TUkVudHJ5ID0gaml0Q29kZS0+Y2F0
Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICgh
Y2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9y
bWF0cy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMt
PnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAg
ICAgIHN3aXRjaCAoY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7
CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVl
LmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAo
IXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAg
ICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVzaDoKKyAg
ICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4gSXQgY2Fu
IGJlIGFueXRoaW5nLiBIZW5jZSwgaXQncyB0cml2aWFsbHkgdHJ1ZS4KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAvLyBU
aGlzIGlzIHRyaXZpYWxseSB0cnVlLgorICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHVuc2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+Y29t
bW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJlZ2lzdGVycygpW3Zp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZzZXQoKV0pKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRklYTUU6IGFzc2VydCB0aGlzIGlzIG9wX2Fm
dGVyX2NhdGNoLgorICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSArIDFdLnUucG9pbnRlcik7
CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNWYWx1
ZSo+KGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIpW2luZGV4XSA9IGV4ZWMtPnIoVmlydHVh
bFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKSkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4
OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZz
ZXQoY2F0Y2hPU1JFbnRyeS0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUu
aCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAj
aW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5z
aWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+
bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hPU1JFbnRyeURhdGEgeworICAgIHVu
c2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0
OworICAgIC8vIFdlIHVzZSB0aGlzIHdoZW4gZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBw
cm92ZSB0aGUgYXJndW1lbnRzCisgICAgLy8gYXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9y
ZSBlbnRlcmluZyBhdCBhIGNhdGNoIGJsb2NrLgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9h
cmd1bWVudEZvcm1hdHM7Cit9OworCiAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVm
ZmVyIHRoYXQgdGhlIE9TUiBlbnRyeSB0aHVuayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNl
LiBJZiB0aGlzIHJldHVybnMgbnVsbCwgaXQgbWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnko
RXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElm
IG51bGwgaXMgcmV0dXJuZWQsIHdlIGNhbid0IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwg
aXQncyB0aGUgUEMgdG8ganVtcCB0by4KK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNT
dGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGlu
ZSB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQp
IHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDggQEAgcHVi
bGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0
YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICAvLyBGSVhNRTogSSBuZWVk
IHRvIG1ha2UgdGhpcyB3b3JrIGluIHRoZSBuZXcgc3lzdGVtLgorCiAgICAgICAgIGZvciAoaW50
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2Fy
Z3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNB
dEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBQcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0
TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKIHsKKyAgICAvLyBGSVhNRTogdGhpcyBsb29rcyB1bnVz
ZWQsIGJ1dCBJIHRoaW5rIGl0J3MgZWFzeSB0byBtYWtlIGl0IHdvcmsKKyAgICAvLyB3LyBtdWx0
aXBsZSByb290cy4gVmVyaWZ5IGl0IGRvZXMuCiAgICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJp
bmc+KGdyYXBoKTsKICAgICAKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXByb2Zp
bGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IGFkanVzdCB0aGlzIHNvIHdlIGRvbid0IG5lZWQgbV9hcmd1bWVu
dHMgYW55bW9yZSBhbmQganVzdCB1c2UgdGhlIEhhc2hNYXAuCiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cikpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNlIFRvTnVt
YmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNh
c2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFN3aXRj
aDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJv
bEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBKdW1wOgogICAgIGNh
c2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAg
Y2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxs
OgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1
cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAiVHlwZVByb2Zp
bGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyUHJpbnRlci5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQpAQCAtNjA3OSw2ICs2MDgxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgbV9qaXQucHJvYmUoW10g
KFByb2JlQ29udGV4dCopIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiRXh0cmFjdENhdGNoTG9j
YWwhIik7CisgICAgICAgIH0pOworCisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZzdGF0aWNfY2Fz
dDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyKVtub2RlLT5j
YXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwor
ICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2pp
dC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAg
ICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAg
ICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBAIC02MDg3LDYgKzYxMDMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlm
IC8vIEVOQUJMRShGVExfSklUKQogCisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2Ug
TGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgVXBzaWxvbjoKQEAgLTYxMTUs
NyArNjEzMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBj
YXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5n
cmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc2LDYgKzE2NzYsMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAg
Ly8gRklYTUU6IExldCdzIGRvIHRoaXMgYXQgdGhlIE9TUiBlbnRyeSBwb2ludCB0byBiZSBjb25z
aXN0ZW50IHdpdGggaG93IHdlIGRvIGl0IGVsc2V3aGVyZS4KKyAgICAgICAgbV9qaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNh
dmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycygpOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVF
dmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJh
bWUoKTsKQEAgLTE3NzAsOCArMTc3NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
Z3VtZW50VHlwZXMoCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9
IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICAv
LyBGSVhNRTogcmVtb3ZlIG1fZ3JhcGgubV9hcmd1bWVudHMhCisgICAgYXV0byYgYXJndW1lbnRz
ID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBo
KCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVC
bG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9q
aXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50
c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQg
aXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTE4NzMsNyArMTg4MiwyMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
aWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
bV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRl
eCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaE9TUlRhcmdldCkg
eworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9
IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZv
cm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJn
dW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRB
cmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSBtYWtlIHRoaXMgYSBkZWJ1ZyBhc3NlcnQuCisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNoZWRJbnQz
MiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVk
Qm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQpOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMu
dW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2ppdC5ub3RpY2VDYXRjaE9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5
SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVu
dHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CiAgICAgfQogICAgIEFTU0VS
VChvc3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiAK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBoLCBub2RlKSA9PSBF
eGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAgICAgICAgaWYgKGkp
IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkg
LSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJlcnNFeGl0U3RhdGUo
bV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgIW5vZGUt
Pm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0g
RXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAh
PSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4
aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0g
ICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9Ob2RlKiBwcmV2
aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElE
QVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAg
ICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAg
ICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAgICAgICAgICAgICAg
ICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2lu
LmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAg
ICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICEoIXByZXZp
b3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQorICAgICAgICAg
ICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAgICAgICAg
ICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdp
bi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2Rl
LT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVG
SU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAg
ICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVh
dGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0
cnVjdGlvbiopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50
LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWks
IHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihT
X0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3Rl
cklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYg
KzU3OSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJh
dGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NTMsNiArODUzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0
aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDIyIEBAIHZv
aWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5w
b2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
JiBwcm9maWxlKSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29w
ZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5t
X3Byb2ZpbGUpOworICAgIH0pOworCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JF
bnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gZG9uZSA9IGJyYW5jaFRl
c3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMo
KTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAg
Ly8gRklYTUU6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNyw2ICsxNTE3LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7IC8vIEZJ
WE1FOiBjYW50aGlzIGV2ZXIgYmUgbnVsbD8gT3IganVzdCBpdCByZXR1cm4gaXRzZWxmPworICAg
IGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+
KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5
dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5
VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04g
KlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9u
X0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRf
T1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMy
X3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShF
eGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElP
TiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNs
b3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSko
RXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BF
UkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlw
ZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNT
dGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhF
eGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3Rh
dGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwog
I2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDIwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVy
KTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIC8vZGF0YUxvZ0xuKCJQcm9maWxpbmcgcmVnICIsIFZpcnR1YWxSZWdp
c3Rlcihwcm9maWxlLm1fb3BlcmFuZCksICIgOiAiLCBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUu
bV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFu
ZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKyAgICAvL2RhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVl
IHByb2ZpbGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90
b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9w
Q2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5k
X25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxG
cmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIq
KSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTE5NzgsNiArMTk3OCwxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0
Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gp
CisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317363</attachid>
            <date>2017-08-06 09:30:42 -0700</date>
            <delta_ts>2017-08-06 10:49:48 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>69236</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gTGlu
ayBibG9jayBzdWNjZXNzb3JzLgogICAgIHZvaWQgbGlua0Jsb2NrKEJhc2ljQmxvY2sqLCBWZWN0
b3I8QmFzaWNCbG9jayo+JiBwb3NzaWJsZVRhcmdldHMpOwogICAgIHZvaWQgbGlua0Jsb2NrcyhW
ZWN0b3I8VW5saW5rZWRCbG9jaz4mIHVubGlua2VkQmxvY2tzLCBWZWN0b3I8QmFzaWNCbG9jayo+
JiBwb3NzaWJsZVRhcmdldHMpOworICAgIHZvaWQgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgp
OwogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogbmV3VmFyaWFibGVBY2Nlc3NEYXRhKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKQEAgLTMyOSw2ICszMzAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAob3BlcmFuZC5pc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGNvbnN0YW50SW5kZXggPSBvcGVyYW5kLnRvQ29uc3RhbnRJbmRleCgpOwogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkU2l6ZSA9IG1fY29uc3RhbnRzLnNpemUoKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyBjYWNoaW5nIGNvZGUgc291bmQ/CiAgICAgICAgICAgICBpZiAo
Y29uc3RhbnRJbmRleCA+PSBvbGRTaXplIHx8ICFtX2NvbnN0YW50c1tjb25zdGFudEluZGV4XSkg
ewogICAgICAgICAgICAgICAgIGNvbnN0IENvZGVCbG9jayYgY29kZUJsb2NrID0gKm1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrOwogICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBj
b2RlQmxvY2suZ2V0Q29uc3RhbnQob3BlcmFuZC5vZmZzZXQoKSk7CkBAIC0xMTMwLDcgKzExMzIs
NyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRz
LiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90
IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAor
CiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRv
IHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxz
aXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAg
IC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJl
J3Mgbm8gd2F5IGZvcgpAQCAtMTIxOSw2ICsxMjIxLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICBW
ZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKKyAgICBWZWN0b3I8
QmFzaWNCbG9jayo+IG1fZW50cnlwb2ludEJsb2NrczsKKyAgICAgICAgCisKICAgICBDb2RlQmxv
Y2sqIG1fZGZnQ29kZUJsb2NrOwogICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2Fs
bENvbnRleHRNYXA7CiAgICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7CkBAIC00MDkwLDYg
KzQwOTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0
VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CisKKyAgICAgICAgbV9ncmFw
aC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIG1fZ3JhcGgubV9h
cmd1bWVudHMpOwogICAgIH0KIAogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01MTUwLDYgKzUxNTcs
OTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBj
YXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJz
ID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBj
YXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxp
bmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBtYXliZSB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgYml0IHdoZW4gZG9p
bmcgT1NSIGVudHJ5LiBCdXQgd2Ugc2V0IHRoaXMgdG8gb3BfYWZ0ZXJfY2F0Y2gncworICAgICAg
ICAgICAgLy8gYnl0ZWNvZGUgaW5kZXguIEFsdGVybmF0aXZlbHksIHdoZW4gZG9pbmcgT1NSIGVu
dHJ5LCB3ZSBjb3VsZCBzZWFyY2ggZm9yIHRoZSBwcmV2aW91cyBieXRlY29kZSBpbmRleAorICAg
ICAgICAgICAgLy8gb2YgdGhlIG9wX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBp
cyB0aGlzIHJpZ2h0PworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0g
dHJ1ZTsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQgPSB0
cnVlOworCisgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVu
dEJsb2NrKTsKKworICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxp
bnQsIE5vZGUqPj4gdmFsdWVzVG9TZXQ7CisgICAgICAgICAgICB2YWx1ZXNUb1NldC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyBtYXkgcmVzZXJ2
ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhl
IGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxh
dGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIG1f
ZXhpdE9LID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3
ZSB3b3VsZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRoaXMgY292ZXJzIGFyZ3VtZW50
cy4gV2UgbmVlZCBhcmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9w
ZXJhbmQuaXNMb2NhbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9
IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9w
SW5mbyhwcmVkaWN0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mTG9j
YWxzOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8o
cHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZXNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIocHJvZmlsZS5tX29wZXJhbmQs
IHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFu
ZC50b0FyZ3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFs
bCBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25z
W29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgICAgICBtX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAq
bV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNoZWNr
IGlmIHRoaXMgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VT
dHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJh
eUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdU
eXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dy
YXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1
bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1l
bnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdmFsdWVzVG9TZXQp
CisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgVmlydHVhbFJl
Z2lzdGVyKHBhaXIuZmlyc3QpLCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBD
YWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC01OTQwLDYgKzYwMzMsMzAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6bGlua0Jsb2NrcyhWZWN0b3I8VQogICAgIH0KIH0KIAordm9pZCBCeXRlQ29k
ZVBhcnNlcjo6Y3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpCit7CisgICAgcmV0dXJuOworICAg
IC8vIEZJWE1FOiBkb2VzIHRoaXMgYnJlYWsgY29uc3RhbnRzPworICAgIC8vVmVjdG9yPEJhc2lj
QmxvY2sqPiBtX2VudHJ5cG9pbnRCbG9ja3M7CisgICAgaWYgKG1fZW50cnlwb2ludEJsb2Nrcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZW50cnlwb2ludEJsb2Nrcy5hcHBl
bmQobV9ncmFwaC5ibG9jaygwKSk7CisKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9ncmFwaC5tX2Vu
dHJ5U3dpdGNoRGF0YSk7CisgICAgbV9ncmFwaC5tX2VudHJ5U3dpdGNoRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8RW50cnlTd2l0Y2hEYXRhPigpOworICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERh
dGEtPmJsb2Nrcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZW50cnlwb2ludEJsb2Nrcy5zaXpl
KCkpOworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2VudHJ5cG9pbnRCbG9ja3MpCisg
ICAgICAgIG1fZ3JhcGgubV9lbnRyeVN3aXRjaERhdGEtPmJsb2Nrcy5hcHBlbmQoYmxvY2spOwor
CisgICAgUmVmPEJhc2ljQmxvY2s+IGJsb2NrID0gYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKDAs
IG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscywgMSkpOworICAgIGJsb2NrLT5hcHBlbmQobV9n
cmFwaC5hZGROb2RlKEVudHJ5U3dpdGNoLCBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVP
cmlnaW4oMCksIGZhbHNlKSwKKyAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9lbnRyeVN3aXRjaERh
dGEuZ2V0KCkpLCBFZGdlKCksIEVkZ2UoKSwgRWRnZSgpKSk7CisgICAgbV9ncmFwaC5tX2Jsb2Nr
cy5pbnNlcnQoMCwgV1RGTW92ZShibG9jaykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytpKQorICAgICAgICBtX2dyYXBoLm1fYmxvY2tz
W2ldLT5pbmRleCA9IGk7Cit9CisKIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJ
bmxpbmVTdGFja0VudHJ5KAogICAgIEJ5dGVDb2RlUGFyc2VyKiBieXRlQ29kZVBhcnNlciwKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisgICAgY3JlYXRlRW50cnlTd2l0Y2hJZk5lZWRlZCgpOworCiAgICAgbV9n
cmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJs
ZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAg
Ly8gRklYTUU6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGVu
dHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0
byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdl
IGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBm
b3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFu
b3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2ls
bC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7
IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0
QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisKKyAgICAgICAg
Ly8gRklYTUU6IGdyZXAgZm9yIGFsbCB1c2VzIG9mIGJsb2NrKDApIGFuZCBwZXJoYXBzIGFsc28g
YWRkIG5vdGlvbiBvZiBlbnRyeXBvaW50cy4KKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayog
ZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4
PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFy
aWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAg
ICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBv
cF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jl
c3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgog
ICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVy
aXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJy
YW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2Ug
VGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBm
aXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3Jh
cGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVh
blZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNp
YyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTYsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAg
ICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBj
YXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAg
ICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6
CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAg
Y2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENo
ZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAg
IGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21i
aWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
aAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVz
aEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9y
bWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBG
bHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsOCBAQCBib29sIEdyYXBoOjp0ZXJtaW5h
bHNBcmVWYWxpZCgpCiAKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVtcE1v
ZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQucHJp
bnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDAp
LT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUgPyAi
IiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDog
IiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIs
IGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIs
CisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+
aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hPU1JUYXJn
ZXQgPyAiIChDYXRjaCBPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5l
eGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAi
XG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBAIC02NDAs
OCArNjQxLDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZv
aWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJhc2ljQmxv
Y2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsKLSAgICBi
bG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlw
b2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFjaGFibGUg
PSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAgfQogICAg
IHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2st
Pm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg1MCw3ICs4NTMsOSBAQCBCbG9ja0xpc3QgR3Jh
cGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAv
LyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAg
IGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdv
cmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0g
d29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NjMs
NyArODY4LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAg
QmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0Owot
ICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhp
cyBpcyByZWFsbHkgd2hhdCB3ZSB3YW50IGhlcmUuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRy
eXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50
KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAg
ICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlBy
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtOTIxLDcgKzkyMSwxMCBAQCBwdWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9j
azsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJl
ZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNC
bG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBv
aW50czsKKyAgICAvLyBGSVhNRTogQ291bGQgaW5jb3Jwb3JhdGUgdGhpcyBhYm92ZS4KKyAgICBI
YXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNo
TWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5j
b2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTY3LDYgKzk3MCw3
IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBt
X25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwog
ICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVu
dHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZz
ZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0
RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0
aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtMTAwOSw2ICsxMDEzLDcg
QEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwogICAgIGJvb2wg
bV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsg
ZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0Nh
Y2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3Ry
YWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMo
VmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgp
CiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+
Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNl
OwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3Ry
dWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9v
dC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChp
KS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1f
Z3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9
IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAg
ICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBl
bnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQt
PmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNp
dGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9
IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3Vt
ZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1
bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAgICAgICAgICAgICAgIGZvcm1h
dCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAg
ICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0
KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07
CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2Vs
bCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1Zh
bHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJC
YWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52
YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0
VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAg
ICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5O
YXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRh
aW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMg
YWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VS
VChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9
IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYg
KzM2OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdl
dC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50
cnlTd2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAo
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2NrcykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0Qmxv
Y2spOworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
UmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgs
CiAgICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAg
ICBDYXRjaE9TUkVudHJ5RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlz
IGEgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhdGNo
T1NSRW50cnkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjYXRjaE9TUkVudHJ5W2ld
Lm1fYnl0ZWNvZGVJbmRleCA9PSBieXRlY29kZUluZGV4KQorICAgICAgICAgICAgICAgIHJldHVy
biAmY2F0Y2hPU1JFbnRyeVtpXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hPU1JFbnRyeSh1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoT1NSRW50cnkuYXBwZW5kKERG
Rzo6Q2F0Y2hPU1JFbnRyeURhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwg
V1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBh
cHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDYgKzE0OCw3
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9y
PERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8REZHOjpDYXRjaE9TUkVu
dHJ5RGF0YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0
LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1
bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZl
bnRTdHJlYW07CkBAIC0xNjgsNiArMTg1LDggQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxD
b2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25lZCBvc3JFbnRyeVJldHJ5Owog
ICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgdm9pZCogY2F0Y2hPU1JFbnRyeUJ1ZmZl
ciB7IG51bGxwdHIgfTsgLy8gRklYTUU6IG1ha2UgYWxsb2NhdGlvbi9kZXN0cnVjdGlvbiBhdXRv
bWF0aWMgaGVyZS4gSG9sZHMgdGhlIGxvY2FscyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4KICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2so
SklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAg
ICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IGZhc3RNYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICog
KCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMgQEAgdm9p
ZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQg
SklUQ29tcGlsZXI6Om5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywg
SklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2lj
QmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBi
eSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50
cnkoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVh
ZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5v
dGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBi
bG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90
IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBh
bmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9
IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwg
bGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4
cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7
CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9j
b2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9T
UkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVm
ZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7
IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDcgKzEwMSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL2Jvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CiAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZy
YW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAg
ICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUt
PmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2Rl
LT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRp
YWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0Fy
Z3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3Bl
cmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDEzIEBAIEV4aXRNb2RlIG1h
eUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgog
ICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgog
ICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1
MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAg
Y2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxNCBA
QCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7CiB9OwogCitz
dHJ1Y3QgRW50cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9OworCiBzdHJ1Y3Qg
Q2FsbFZhcmFyZ3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9OwpAQCAtMTI3
NywxNyArMTI4NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsK
ICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQogCisgICAg
Ym9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJvb2wgaXNUZXJtaW5hbCgpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKdW1wOgogICAgICAgICBjYXNlIEJy
YW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAg
ICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNl
IERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3dpdGNoRGF0
YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0Y2hEYXRhKiBlbnRyeVN3aXRjaERhdGEoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlTd2l0Y2goKSk7CisgICAgICAgIHJldHVybiBt
X29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigpOworICAgIH0KICAgICAKICAgICB1bnNpZ25l
ZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0xMzU5LDYgKzEzNzksOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgICAgICBy
ZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgKyAxOworICAgICAgICBjYXNlIEVudHJ5
U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Muc2l6
ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0K
QEAgLTEzNzIsNiArMTM5NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCisgICAgICAg
IGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRh
KCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAgICAgICBj
YXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTE4LDYgKzE1NDQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWljc1N0b3JlOgogICAgICAgICBjYXNlIEF0b21pY3NT
dWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3LDEyIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7CiAgICAgfQorCisg
ICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQogICAgIAogICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1Ig
ZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwg
Ki9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1h
Y3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRy
YWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hl
Y2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcElu
TG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNo
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDYyIEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAorU1VQUFJFU1NfQVNB
Tgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworCisgICAgaWYgKCFP
cHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisK
KyAgICBERkc6OkNhdGNoT1NSRW50cnlEYXRhKiBjYXRjaE9TUkVudHJ5ID0gaml0Q29kZS0+Y2F0
Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICgh
Y2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9y
bWF0cy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMt
PnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAg
ICAgIHN3aXRjaCAoY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7
CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVl
LmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAo
IXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAg
ICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVzaDoKKyAg
ICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4gSXQgY2Fu
IGJlIGFueXRoaW5nLiBIZW5jZSwgaXQncyB0cml2aWFsbHkgdHJ1ZS4KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAvLyBU
aGlzIGlzIHRyaXZpYWxseSB0cnVlLgorICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHVuc2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+Y29t
bW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJlZ2lzdGVycygpW3Zp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZzZXQoKV0pKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgLy8gRklYTUU6IGFzc2VydCB0aGlzIGlzIG9wX2Fm
dGVyX2NhdGNoLgorICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSArIDFdLnUucG9pbnRlcik7
CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNWYWx1
ZSo+KGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIpW2luZGV4XSA9IGV4ZWMtPnIoVmlydHVh
bFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKSkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4
OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZz
ZXQoY2F0Y2hPU1JFbnRyeS0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUu
aCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAj
aW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5z
aWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+
bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hPU1JFbnRyeURhdGEgeworICAgIHVu
c2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0
OworICAgIC8vIFdlIHVzZSB0aGlzIHdoZW4gZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBw
cm92ZSB0aGUgYXJndW1lbnRzCisgICAgLy8gYXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9y
ZSBlbnRlcmluZyBhdCBhIGNhdGNoIGJsb2NrLgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9h
cmd1bWVudEZvcm1hdHM7Cit9OworCiAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVm
ZmVyIHRoYXQgdGhlIE9TUiBlbnRyeSB0aHVuayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNl
LiBJZiB0aGlzIHJldHVybnMgbnVsbCwgaXQgbWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnko
RXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElm
IG51bGwgaXMgcmV0dXJuZWQsIHdlIGNhbid0IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwg
aXQncyB0aGUgUEMgdG8ganVtcCB0by4KK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNT
dGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGlu
ZSB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQp
IHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2lu
dENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDggQEAgcHVi
bGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0
YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICAvLyBGSVhNRTogSSBuZWVk
IHRvIG1ha2UgdGhpcyB3b3JrIGluIHRoZSBuZXcgc3lzdGVtLgorCiAgICAgICAgIGZvciAoaW50
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2Fy
Z3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNB
dEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBQcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0
TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKIHsKKyAgICAvLyBGSVhNRTogdGhpcyBsb29rcyB1bnVz
ZWQsIGJ1dCBJIHRoaW5rIGl0J3MgZWFzeSB0byBtYWtlIGl0IHdvcmsKKyAgICAvLyB3LyBtdWx0
aXBsZSByb290cy4gVmVyaWZ5IGl0IGRvZXMuCiAgICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJp
bmc+KGdyYXBoKTsKICAgICAKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXByb2Zp
bGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IGFkanVzdCB0aGlzIHNvIHdlIGRvbid0IG5lZWQgbV9hcmd1bWVu
dHMgYW55bW9yZSBhbmQganVzdCB1c2UgdGhlIEhhc2hNYXAuCiAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cikpOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNlIFRvTnVt
YmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNh
c2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFN3aXRj
aDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJv
bEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBKdW1wOgogICAgIGNh
c2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAg
Y2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxs
OgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1
cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAiVHlwZVByb2Zp
bGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyUHJpbnRlci5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBV
U0UoSlNWQUxVRTY0KQpAQCAtNjA3OSw2ICs2MDgxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgbV9qaXQucHJvYmUoW10g
KFByb2JlQ29udGV4dCopIHsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiRXh0cmFjdENhdGNoTG9j
YWwhIik7CisgICAgICAgIH0pOworCisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZzdGF0aWNfY2Fz
dDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyKVtub2RlLT5j
YXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwor
ICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2pp
dC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAg
ICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAg
ICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBAIC02MDg3LDYgKzYxMDMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlm
IC8vIEVOQUJMRShGVExfSklUKQogCisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2Ug
TGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgVXBzaWxvbjoKQEAgLTYxMTUs
NyArNjEzMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBj
YXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5n
cmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc2LDYgKzE2NzYsMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAg
Ly8gRklYTUU6IExldCdzIGRvIHRoaXMgYXQgdGhlIE9TUiBlbnRyeSBwb2ludCB0byBiZSBjb25z
aXN0ZW50IHdpdGggaG93IHdlIGRvIGl0IGVsc2V3aGVyZS4KKyAgICAgICAgbV9qaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNh
dmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycygpOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVF
dmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJh
bWUoKTsKQEAgLTE3NzAsOCArMTc3NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
Z3VtZW50VHlwZXMoCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9
IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICAv
LyBGSVhNRTogcmVtb3ZlIG1fZ3JhcGgubV9hcmd1bWVudHMhCisgICAgYXV0byYgYXJndW1lbnRz
ID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBo
KCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVC
bG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9q
aXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50
c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQg
aXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTE4NzMsNyArMTg4MiwyMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
aWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
bV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRl
eCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaE9TUlRhcmdldCkg
eworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9
IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZv
cm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJn
dW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRB
cmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSBtYWtlIHRoaXMgYSBkZWJ1ZyBhc3NlcnQuCisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNoZWRJbnQz
MiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVk
Qm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQpOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMu
dW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2ppdC5ub3RpY2VDYXRjaE9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5
SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVu
dHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CiAgICAgfQogICAgIEFTU0VS
VChvc3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiAK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBoLCBub2RlKSA9PSBF
eGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAgICAgICAgaWYgKGkp
IHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkg
LSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJlcnNFeGl0U3RhdGUo
bV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgIW5vZGUt
Pm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0g
RXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAh
PSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4
aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0g
ICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9Ob2RlKiBwcmV2
aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElE
QVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAg
ICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAg
ICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAgICAgICAgICAgICAg
ICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2lu
LmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAg
ICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICEoIXByZXZp
b3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQorICAgICAgICAg
ICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAgICAgICAg
ICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdp
bi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2Rl
LT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVG
SU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAg
ICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVh
dGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0
cnVjdGlvbiopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50
LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWks
IHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihT
X0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3Rl
cklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYg
KzU3OSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJh
dGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NTMsNiArODUzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0
aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDIyIEBAIHZv
aWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5w
b2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
JiBwcm9maWxlKSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29w
ZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5t
X3Byb2ZpbGUpOworICAgIH0pOworCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JF
bnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gZG9uZSA9IGJyYW5jaFRl
c3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMo
KTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAg
Ly8gRklYTUU6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNyw2ICsxNTE3LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7IC8vIEZJ
WE1FOiBjYW50aGlzIGV2ZXIgYmUgbnVsbD8gT3IganVzdCBpdCByZXR1cm4gaXRzZWxmPworICAg
IGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+
KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5
dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5
VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04g
KlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9u
X0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRf
T1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMy
X3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShF
eGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElP
TiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNs
b3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSko
RXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BF
UkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlw
ZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNT
dGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhF
eGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3Rh
dGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwog
I2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDIwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVy
KTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIC8vZGF0YUxvZ0xuKCJQcm9maWxpbmcgcmVnICIsIFZpcnR1YWxSZWdp
c3Rlcihwcm9maWxlLm1fb3BlcmFuZCksICIgOiAiLCBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUu
bV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFu
ZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKyAgICAvL2RhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVl
IHByb2ZpbGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90
b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9w
Q2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5k
X25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxG
cmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIq
KSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTE5NzgsNiArMTk3OCwxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0
Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gp
CisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317368</attachid>
            <date>2017-08-06 10:49:48 -0700</date>
            <delta_ts>2017-08-06 15:31:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>73953</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
IChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJ
bmRleCA9IG9wZXJhbmQudG9Db25zdGFudEluZGV4KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBv
bGRTaXplID0gbV9jb25zdGFudHMuc2l6ZSgpOworICAgICAgICAgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIGNhY2hpbmcgY29kZSBzb3VuZD8KICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4
ID49IG9sZFNpemUgfHwgIW1fY29uc3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2s7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRD
b25zdGFudChvcGVyYW5kLm9mZnNldCgpKTsKQEAgLTExMzAsNyArMTEzMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29y
dGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxv
Y2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFz
aWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8g
SWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRo
aXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0
IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtl
ZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9y
CkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1
c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2lu
ZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBt
X2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50
cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVu
dHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0
QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2Yg
YW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgo
U2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRB
cmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUwLDYgKzUxNTUsOTIgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNo
OgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVy
X2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4g
V2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBtYXliZSB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgYml0IHdoZW4gZG9pbmcgT1NSIGVudHJ5
LiBCdXQgd2Ugc2V0IHRoaXMgdG8gb3BfYWZ0ZXJfY2F0Y2gncworICAgICAgICAgICAgLy8gYnl0
ZWNvZGUgaW5kZXguIEFsdGVybmF0aXZlbHksIHdoZW4gZG9pbmcgT1NSIGVudHJ5LCB3ZSBjb3Vs
ZCBzZWFyY2ggZm9yIHRoZSBwcmV2aW91cyBieXRlY29kZSBpbmRleAorICAgICAgICAgICAgLy8g
b2YgdGhlIG9wX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVn
aW4gPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIHJpZ2h0
PworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKworICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQgPSB0cnVlOworCisgICAg
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKwor
ICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51LnBvaW50ZXIpOworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIE5vZGUqPj4g
dmFsdWVzVG9TZXQ7CisgICAgICAgICAgICB2YWx1ZXNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyBtYXkgcmVzZXJ2ZSBtb3JlIHRoYW4g
dGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBpbmNs
dWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJn
dW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFs
c2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qg
a25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0g
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRoaXMgY292ZXJzIGFyZ3VtZW50cy4gV2UgbmVlZCBh
cmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2Nh
bCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgo
RXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29w
ZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNUb1NldC51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIocHJvZmlsZS5tX29wZXJhbmQsIHZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50
KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFsbCBhcmd1bWVudHMu
CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9B
cmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBt
X2V4aXRPSyA9IHRydWU7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQg
dXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRk
KG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0
b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxl
QWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3Vt
ZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHRoaXMgaXMg
bmVlZGVkLgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVj
a0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFp
bGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3Vt
ZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJn
dW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50
XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdmFsdWVzVG9TZXQpCisgICAgICAgICAg
ICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgVmlydHVhbFJlZ2lzdGVyKHBhaXIu
Zmlyc3QpLCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVy
X2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoK
ICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9k
ZTo6UmVndWxhcik7CkBAIC02MTM4LDggKzYyMjksMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5h
cHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxv
Y2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5u
dW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5h
cHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAg
ICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjE5
Niw4ICs2Mjg5LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAog
ICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMp
OworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtp
bGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZl
IG11bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGgu
YmxvY2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFs
IGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNp
YWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0
eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUg
Y2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlr
ZSBJUiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJs
ZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7
CisKKyAgICAgICAgLy8gRklYTUU6IGdyZXAgZm9yIGFsbCB1c2VzIG9mIGJsb2NrKDApIGFuZCBw
ZXJoYXBzIGFsc28gYWRkIG5vdGlvbiBvZiBlbnRyeXBvaW50cy4KKyAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAg
QmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVj
dG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50
c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQg
b3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6
CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ug
b3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBv
cF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsx
NDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2Fz
ZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJ
bW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNo
OgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAg
ICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFy
aWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAg
ICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1
c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIy
MDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0
Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRh
aWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTYsNiArMTk3LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNo
YWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVu
dHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGll
clVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7Citl
bnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJ
bnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsOCBAQCBib29sIEdy
YXBoOjp0ZXJtaW5hbHNBcmVWYWxpZCgpCiAKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQ
aGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQo
YmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNS
ZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NS
IHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAq
YmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29u
dGV4dCksICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBl
ZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlz
Q2F0Y2hPU1JUYXJnZXQgPyAiIChDYXRjaCBPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CiAgICAg
aWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1
dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6
Iik7CkBAIC01MDIsOCArNTAzLDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRT
dGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlm
aWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxu
Iik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVs
c2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9y
IGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJc
biIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5v
ZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY0MywxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNj
ZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQog
ewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFw
cGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVu
dHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NTAsNyAr
ODU1LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9j
a0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3Qu
cHVzaChibG9jaygwKSk7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGlzIHJlYWxseSB3
aGF0IHdlIHdhbnQgaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vz
c29ycygpOyBpLS07KQpAQCAtODYzLDcgKzg3MCw5IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tz
SW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAv
LyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAg
IGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdv
cmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0g
PSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAg
ICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC0xNTI3LDcgKzE1MzYsOCBAQCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IG1heWJlIHdlIHNob3VsZCBzZWFyY2ggYWxsIGhlcmU/IEFsc28sIHRoaXMgc2VlbXMgd3Jvbmcg
aW4gU1NBIGluIHRoZSBmdXR1cmUuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50
Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1
bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MjEsNyArOTIxLDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9y
PCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJh
c2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50
cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAg
SGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gs
IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1Niw3ICs5
NTcsOSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFu
ZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNp
ZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7Cisg
ICAgLy8KKyAgICAvLyBGSVhNRTogQ291bGQgaW5jb3Jwb3JhdGUgdGhpcyBpbnRvIG1fZW50cnlw
b2ludHMgdmVjdG9yLgorICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+
IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBt
ZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0
IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3Jt
YXRzOwpAQCAtOTY3LDYgKzk3MCw3IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3
QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNo
RGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAg
ICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAg
IEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBC
YWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OwpAQCAtMTAwOSw2ICsxMDEzLDcgQEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZD
b3VudFN0YXRlOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hh
c0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJ
bmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFi
c3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRp
YyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGgu
YmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+
Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJl
c0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0g
U3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZh
bHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZv
cm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZv
cm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAg
ICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Cisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7
CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBl
bnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNm
YUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRy
eXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0
Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVz
aEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQor
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07
CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2Vs
bCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1Zh
bHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJC
YWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52
YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0
VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAg
ICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5O
YXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRh
aW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMg
YWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VS
VChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9
IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYg
KzM2OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdl
dC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50
cnlTd2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAo
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2NrcykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0Qmxv
Y2spOworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
UmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgs
CiAgICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAg
ICBDYXRjaE9TUkVudHJ5RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlz
IGEgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhdGNo
T1NSRW50cnkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjYXRjaE9TUkVudHJ5W2ld
Lm1fYnl0ZWNvZGVJbmRleCA9PSBieXRlY29kZUluZGV4KQorICAgICAgICAgICAgICAgIHJldHVy
biAmY2F0Y2hPU1JFbnRyeVtpXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hPU1JFbnRyeSh1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoT1NSRW50cnkuYXBwZW5kKERG
Rzo6Q2F0Y2hPU1JFbnRyeURhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwg
V1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBh
cHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDYgKzE0OCw3
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9y
PERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8REZHOjpDYXRjaE9TUkVu
dHJ5RGF0YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0
LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1
bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZl
bnRTdHJlYW07CkBAIC0xNjgsNiArMTg1LDggQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxD
b2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25lZCBvc3JFbnRyeVJldHJ5Owog
ICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgdm9pZCogY2F0Y2hPU1JFbnRyeUJ1ZmZl
ciB7IG51bGxwdHIgfTsgLy8gRklYTUU6IG1ha2UgYWxsb2NhdGlvbi9kZXN0cnVjdGlvbiBhdXRv
bWF0aWMgaGVyZS4gSG9sZHMgdGhlIGxvY2FscyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4KICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2so
SklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAg
ICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IGZhc3RNYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICog
KCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMgQEAgdm9p
ZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQg
SklUQ29tcGlsZXI6Om5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywg
SklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2lj
QmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBi
eSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50
cnkoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVh
ZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5v
dGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBi
bG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90
IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBh
bmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9
IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwg
bGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4
cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7
CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9j
b2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9T
UkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVm
ZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7
IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDcgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAg
ICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRz
W25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
IWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291bnRFeGVjdXRp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNl
IEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAz
LDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsKIH07
CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisKIHN0
cnVjdCBDYWxsVmFyYXJnc0RhdGEgewogICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07CkBA
IC0xMjc3LDE3ICsxMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJh
bmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNo
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CiAK
KyAgICBib29sIGlzRW50cnlTd2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9w
KCkgPT0gRW50cnlTd2l0Y2g7CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAgIGNh
c2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTd2l0
Y2hEYXRhKj4oKTsKICAgICB9CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNoRGF0
YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3OSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAg
ICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNhc2Ug
RW50cnlTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nr
cy5zaXplKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgfQpAQCAtMTM3Miw2ICsxMzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAg
IHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGlzRW50cnlTd2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRj
aERhdGEoKS0+YmxvY2tzW2luZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAgICAg
ICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1MTgsNiArMTU0NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAgICAgIGNhc2UgQXRv
bWljc1N1YjoKICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9
CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUgZm9y
IE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcgYSBs
b2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9cCiAg
ICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGllci11
cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNrVGll
clVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhT
d2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3aXRjaCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdz
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2
aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsNjIgQEAgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQogCitTVVBQUkVT
U19BU0FOCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVC
bG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisKKyAgICBp
ZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2Rl
KTsKKworICAgIERGRzo6Q2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnkgPSBqaXRDb2Rl
LT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAg
aWYgKCFjYXRjaE9TUkVudHJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoT1NSRW50cnktPm1fYXJndW1l
bnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
ZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsK
KyAgICAgICAgc3dpdGNoIChjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1bWVu
dF0pIHsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAg
IGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6RGVhZEZsdXNo
OgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZlLiBJ
dCBjYW4gYmUgYW55dGhpbmcuIEhlbmNlLCBpdCdzIHRyaXZpYWxseSB0cnVlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgdHJpdmlhbGx5IHRydWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2Rl
LT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAg
IGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJz
KClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTogYXNzZXJ0IHRoaXMgaXMg
b3BfYWZ0ZXJfY2F0Y2guCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2lu
dGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAo
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBzdGF0aWNfY2FzdDxK
U1ZhbHVlKj4oaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlcilbaW5kZXhdID0gZXhlYy0+cihW
aXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpKS5qc1ZhbHVlKCk7CisgICAgICAgICsr
aW5kZXg7CisgICAgfSk7CisKKyAgICByZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NB
dE9mZnNldChjYXRjaE9TUkVudHJ5LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RW
YWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGlu
ZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlE
YXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaE9TUkVudHJ5RGF0YSB7Cisg
ICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVP
ZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2gu
IFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUg
YmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0
PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0
YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8g
cGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JF
bnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKwor
Ly8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBu
dWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnko
RXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQog
aW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNp
Z25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDE5
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3Jp
Z2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6
IFRoaXMgd2lsbCBuZWVkIHNvbWUgd29yayBvbmNlIHdlIGhhdmUgbXVsdGlwbGUgZW50cnlwb2lu
dHMgaW4gdGhlIEZUTC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9p
bnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAg
ICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0
ZXJzKCk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQt
PnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICBpZiAoIW9s
ZE5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZl
IGEgU2V0QXJndW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAg
b2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAg
IG9sZE5vZGUgPSBhcmd1bWVudHNbYXJndW1lbnRdOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9n
cmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJ
bmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBhcmd1bWVudHNbYXJn
dW1lbnRdID0gbm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsg
bG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIFByZVBvc3ROdW1iZXJpbmc6OlByZVBvc3ROdW1iZXJp
bmcoR3JhcGgmIGdyYXBoKQogeworICAgIC8vIEZJWE1FOiB0aGlzIGxvb2tzIHVudXNlZCwgYnV0
IEkgdGhpbmsgaXQncyBlYXN5IHRvIG1ha2UgaXQgd29yaworICAgIC8vIHcvIG11bHRpcGxlIHJv
b3RzLiBWZXJpZnkgaXQgZG9lcy4KICAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3Jh
cGgpOwogICAgIAogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhl
IGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVu
dHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rp
b25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2so
KS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFy
Zyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAg
ICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNl
IFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAg
IHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAg
ICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNl
IFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxl
Q29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IC8vIERlY2lkZSB3aGVyZSBQaGlzIGFyZSB0byBiZSBpbnNlcnRlZC4gVGhpcyBjcmVhdGVzIHRo
ZSBQaGkncyBidXQgZG9lc24ndCBpbnNlcnQgdGhlbQotICAgICAgICAvLyB5ZXQuIFdlIHdpbGwg
bGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgdGhlbSBiZWNhdXNlIFNTQUNhbGN1bGF0b3IgaXMg
c3VjaCBhIGJyby4KKyAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8g
aW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNTQUNhbGN1bGF0b3IgdGVsbHMgdXMgdG8uCiAgICAgICAg
IG1fY2FsY3VsYXRvci5jb21wdXRlUGhpcygKICAgICAgICAgICAgIFsmXSAoU1NBQ2FsY3VsYXRv
cjo6VmFyaWFibGUqIHNzYVZhcmlhYmxlLCBCYXNpY0Jsb2NrKiBibG9jaykgLT4gTm9kZSogewog
ICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX3ZhcmlhYmxl
Rm9yU1NBSW5kZXhbc3NhVmFyaWFibGUtPmluZGV4KCldOwpAQCAtMzgxLDE4ICszODEsMjEgQEAg
cHVibGljOgogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwogICAgICAg
ICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4o
YmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRG
b3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CisKKyAgICAg
ICAgLy8gRklYTUU6IGFkZCBidWcgaGVyZSBmb3Igc3VwcG9ydGluZyBjYXRjaCBpbiBGVEwuCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7
CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1h
dCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
YXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBm
b3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0
aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5n
LgorICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRo
YXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcu
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoK
ICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJu
OgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2
ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRy
YWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNh
c2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgog
I2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIu
aCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKQEAgLTYwNzksNiArNjA4MSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIG1faml0LnByb2JlKFtdIChQcm9iZUNvbnRl
eHQqKSB7CisgICAgICAgICAgICBkYXRhTG9nTG4oIkV4dHJhY3RDYXRjaExvY2FsISIpOworICAg
ICAgICB9KTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+
KG1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlcilbbm9kZS0+Y2F0Y2hPU1JFbnRy
eUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEND
YWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVS
ZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICNlbHNlIC8vIEVO
QUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4Nyw2ICs2MTAzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICNlbmRpZiAvLyBFTkFCTEUo
RlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIExhc3ROb2RlVHlw
ZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBAIC02MTE1LDcgKzYxMzMsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFu
dG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9k
ZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2LDE0IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0KSB7CisgICAgICAgIC8vIEZJWE1FOiBM
ZXQncyBkbyB0aGlzIGF0IHRoZSBPU1IgZW50cnkgcG9pbnQgdG8gYmUgY29uc2lzdGVudCB3aXRo
IGhvdyB3ZSBkbyBpdCBlbHNld2hlcmUuCisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6
ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJz
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2
ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsK
KyAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygp
LCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBl
bmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNz
ZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKQEAgLTE3NzAsOCArMTc3OCw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUp
OwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDAp
LCB0cnVlKTsKIAorICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyAr
K2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07
CisgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkg
ewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBj
aGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODcz
LDcgKzE4ODIsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9j
aywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAg
ICBpZiAoYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9
IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAg
ICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAg
IFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1l
bnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7
CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7
CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
IEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUg
bWFrZSB0aGlzIGEgZGVidWcgYXNzZXJ0LgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hl
ZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0g
Rmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5j
aGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgq
YmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZN
b3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0
Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10s
IGxpbmtCdWZmZXIpOwogICAgIH0KICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVu
dHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsNiArODAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3Vu
dHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTogCiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCAhKG1heUV4aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMgJiYgIW5vZGUtPm9yaWdpbi5leGl0
T0spKTsKIAogICAgICAgICAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3JhcGgsIHByZXZpb3VzTm9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCi0gICAgICAgICAg
ICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9y
RXhpdCk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAg
ICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgISghcHJldmlvdXNOb2RlLT5v
cmlnaW4uZXhpdE9LICYmIG5vZGUtPm9yaWdpbi5leGl0T0spCi0gICAgICAgICAgICAgICAgICAg
ICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwg
bm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Cisg
ICAgICAgICAgICAgICAgICAgIC8vTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAx
KTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAgICAhY2xvYmJlcnNFeGl0U3Rh
dGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCAh
bm9kZS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5v
cCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4u
Zm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAg
ICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAg
ICAgICAgICAgICAgICAgICAvLyAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYg
bm9kZS0+b3JpZ2luLmV4aXRPSykKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+
b3AoKSA9PSBFeGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2lu
LmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwg
IW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2
aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsOCArMjY2LDkgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CiAgICAgICAgIG1fb3JpZ2luID0gTm9kZU9y
aWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKKyAgICAgICAgYXV0byYg
YXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGgu
YmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCkt
Pm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3Jh
cGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ld
OwogICAgICAgICAgICAgbV9vdXQuc2V0T3JpZ2luKG5vZGUpOwogICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwMTQ3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBE
RUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRj
aCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAg
IERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
YWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVj
dChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKQEAg
LTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGludCwgaW50MzJfdCwgaW50
MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRP
cGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpLCB1aW50MzJfdCk7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25f
RUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpJLCBH
UFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw2ICs1NzksMTMgQEAgQUxX
QVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90
IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihh
cmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBU
cnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUzLDYg
Kzg1MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAg
ZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1p
dF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
YXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0
ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAg
YnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdUMCk7
CisgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAg
ICB9KTsKKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBt
X2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIGRvbmUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJl
dHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChy
ZXR1cm5WYWx1ZUdQUik7CisgICAgZG9uZS5saW5rKHRoaXMpOworICAgIC8vIEZJWE1FOiBhZGQg
YSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTcsNiArMTUxNywxOSBAQCBTbG93UGF0aFJldHVy
blR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2Rl
QmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25U
cnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVu
dCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOyAvLyBGSVhNRTogY2FudGhpcyBl
dmVyIGJlIG51bGw/IE9yIGp1c3QgaXQgcmV0dXJuIGl0c2VsZj8KKyAgICBpZiAob3B0aW1pemVk
UmVwbGFjZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpERkdKSVQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihERkc6OnByZXBhcmVD
YXRjaE9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KSk7
Cit9CisKICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcnJheVZhbHVlLCBpbnQzMl90
IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
Niw2ICszMTYsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0
eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0
ZSosIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9K
SVRPcGVyYXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKIHR5cGVkZWYg
Y2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91
YmxlLCBpbnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0
aW9uX0VVaSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5
cGUgKEpJVF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENh
bGxMaW5rSW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRP
cGVyYXRpb25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcq
IChKSVRfT1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90
KTsKQEAgLTM5Niw2ICszOTcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3co
RXhlY1N0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50
MzJfdCkgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShERkdfSklUKQogU2xvd1BhdGhSZXR1cm5U
eXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0
Q2F0Y2goRXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwg
aW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwyMCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisg
ICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVy
LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAg
ICAvL2RhdGFMb2dMbigiUHJvZmlsaW5nIHJlZyAiLCBWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5t
X29wZXJhbmQpLCAiIDogIiwgZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNW
YWx1ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7
CisgICAgfSk7CisgICAgLy9kYXRhTG9nTG4oIkNvbXBsZXRlZCB2YWx1ZSBwcm9maWxlISIpOwor
CisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxs
aW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHBy
b3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmls
ZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2No
aWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9s
b2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5U
RVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFM
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTc4LDYgKzE5NzgsMTEgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2FmdGVyX2NhdGNoOgorICAgIGNhbGxP
cGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVyX2NhdGNoKQorICAgIGRpc3BhdGNo
KDMpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317386</attachid>
            <date>2017-08-06 15:31:23 -0700</date>
            <delta_ts>2017-08-06 17:44:40 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>75684</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
IChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJ
bmRleCA9IG9wZXJhbmQudG9Db25zdGFudEluZGV4KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBv
bGRTaXplID0gbV9jb25zdGFudHMuc2l6ZSgpOworICAgICAgICAgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIGNhY2hpbmcgY29kZSBzb3VuZD8KICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4
ID49IG9sZFNpemUgfHwgIW1fY29uc3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2s7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRD
b25zdGFudChvcGVyYW5kLm9mZnNldCgpKTsKQEAgLTExMzAsNyArMTEzMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29y
dGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxv
Y2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFz
aWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8g
SWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRo
aXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0
IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtl
ZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9y
CkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1
c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2lu
ZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBt
X2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50
cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVu
dHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0
QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2Yg
YW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgo
U2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRB
cmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUwLDYgKzUxNTUsOTIgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNo
OgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVy
X2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4g
V2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBtYXliZSB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgYml0IHdoZW4gZG9pbmcgT1NSIGVudHJ5
LiBCdXQgd2Ugc2V0IHRoaXMgdG8gb3BfYWZ0ZXJfY2F0Y2gncworICAgICAgICAgICAgLy8gYnl0
ZWNvZGUgaW5kZXguIEFsdGVybmF0aXZlbHksIHdoZW4gZG9pbmcgT1NSIGVudHJ5LCB3ZSBjb3Vs
ZCBzZWFyY2ggZm9yIHRoZSBwcmV2aW91cyBieXRlY29kZSBpbmRleAorICAgICAgICAgICAgLy8g
b2YgdGhlIG9wX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVn
aW4gPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIHJpZ2h0
PworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKworICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQgPSB0cnVlOworCisgICAg
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKwor
ICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51LnBvaW50ZXIpOworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIE5vZGUqPj4g
dmFsdWVzVG9TZXQ7CisgICAgICAgICAgICB2YWx1ZXNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyBtYXkgcmVzZXJ2ZSBtb3JlIHRoYW4g
dGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBpbmNs
dWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJn
dW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFs
c2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qg
a25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0g
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRoaXMgY292ZXJzIGFyZ3VtZW50cy4gV2UgbmVlZCBh
cmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2Nh
bCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgo
RXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29w
ZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNUb1NldC51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIocHJvZmlsZS5tX29wZXJhbmQsIHZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50
KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFsbCBhcmd1bWVudHMu
CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9B
cmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBt
X2V4aXRPSyA9IHRydWU7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQg
dXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRk
KG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0
b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxl
QWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3Vt
ZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHRoaXMgaXMg
bmVlZGVkLgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVj
a0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFp
bGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3Vt
ZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJn
dW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50
XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdmFsdWVzVG9TZXQpCisgICAgICAgICAg
ICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgVmlydHVhbFJlZ2lzdGVyKHBhaXIu
Zmlyc3QpLCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVy
X2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoK
ICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9k
ZTo6UmVndWxhcik7CkBAIC02MTM4LDggKzYyMjksMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5h
cHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxv
Y2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5u
dW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5h
cHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAg
ICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjE5
Niw4ICs2Mjg5LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAog
ICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMp
OworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtp
bGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZl
IG11bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGgu
YmxvY2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFs
IGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNp
YWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0
eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUg
Y2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlr
ZSBJUiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJs
ZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7
CisKKyAgICAgICAgLy8gRklYTUU6IGdyZXAgZm9yIGFsbCB1c2VzIG9mIGJsb2NrKDApIGFuZCBw
ZXJoYXBzIGFsc28gYWRkIG5vdGlvbiBvZiBlbnRyeXBvaW50cy4KKyAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAg
QmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVj
dG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50
c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQg
b3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6
CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ug
b3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBv
cF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsx
NDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2Fz
ZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJ
bW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNo
OgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAg
ICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFy
aWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAg
ICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1
c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIy
MDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0
Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRh
aWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTYsNiArMTk3LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNo
YWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVu
dHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGll
clVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7Citl
bnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJ
bnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsOCBAQCBib29sIEdy
YXBoOjp0ZXJtaW5hbHNBcmVWYWxpZCgpCiAKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQ
aGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQo
YmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNS
ZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NS
IHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAq
YmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29u
dGV4dCksICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBl
ZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlz
Q2F0Y2hPU1JUYXJnZXQgPyAiIChDYXRjaCBPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CiAgICAg
aWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1
dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6
Iik7CkBAIC01MDIsOCArNTAzLDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRT
dGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlm
aWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxu
Iik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVs
c2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9y
IGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJc
biIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5v
ZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY0MywxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNj
ZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQog
ewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFw
cGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVu
dHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NTAsNyAr
ODU1LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9j
a0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3Qu
cHVzaChibG9jaygwKSk7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGlzIHJlYWxseSB3
aGF0IHdlIHdhbnQgaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vz
c29ycygpOyBpLS07KQpAQCAtODYzLDcgKzg3MCw5IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tz
SW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAv
LyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAg
IGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdv
cmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0g
PSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAg
ICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC0xNTI3LDcgKzE1MzYsOCBAQCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IG1heWJlIHdlIHNob3VsZCBzZWFyY2ggYWxsIGhlcmU/IEFsc28sIHRoaXMgc2VlbXMgd3Jvbmcg
aW4gU1NBIGluIHRoZSBmdXR1cmUuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50
Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1
bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MjEsNyArOTIxLDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9y
PCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJh
c2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50
cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAg
SGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gs
IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1Niw3ICs5
NTcsOSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFu
ZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNp
ZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7Cisg
ICAgLy8KKyAgICAvLyBGSVhNRTogQ291bGQgaW5jb3Jwb3JhdGUgdGhpcyBpbnRvIG1fZW50cnlw
b2ludHMgdmVjdG9yLgorICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+
IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBt
ZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0
IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3Jt
YXRzOwpAQCAtOTY3LDYgKzk3MCw3IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3
QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNo
RGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAg
ICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAg
IEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBC
YWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OwpAQCAtMTAwOSw2ICsxMDEzLDcgQEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZD
b3VudFN0YXRlOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hh
c0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJ
bmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFi
c3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRp
YyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGgu
YmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+
Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJl
c0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0g
U3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZh
bHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZv
cm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZv
cm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAg
ICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Cisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7
CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBl
bnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNm
YUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRy
eXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0
Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVz
aEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQor
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07
CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2Vs
bCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1Zh
bHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJC
YWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52
YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0
VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAg
ICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5O
YXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRh
aW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMg
YWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VS
VChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9
IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYg
KzM2OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdl
dC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50
cnlTd2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAo
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2NrcykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0Qmxv
Y2spOworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
UmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgs
CiAgICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAg
ICBDYXRjaE9TUkVudHJ5RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlz
IGEgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhdGNo
T1NSRW50cnkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjYXRjaE9TUkVudHJ5W2ld
Lm1fYnl0ZWNvZGVJbmRleCA9PSBieXRlY29kZUluZGV4KQorICAgICAgICAgICAgICAgIHJldHVy
biAmY2F0Y2hPU1JFbnRyeVtpXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hPU1JFbnRyeSh1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoT1NSRW50cnkuYXBwZW5kKERG
Rzo6Q2F0Y2hPU1JFbnRyeURhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwg
V1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBh
cHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDYgKzE0OCw3
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9y
PERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8REZHOjpDYXRjaE9TUkVu
dHJ5RGF0YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0
LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1
bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZl
bnRTdHJlYW07CkBAIC0xNjgsNiArMTg1LDggQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxD
b2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25lZCBvc3JFbnRyeVJldHJ5Owog
ICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgdm9pZCogY2F0Y2hPU1JFbnRyeUJ1ZmZl
ciB7IG51bGxwdHIgfTsgLy8gRklYTUU6IG1ha2UgYWxsb2NhdGlvbi9kZXN0cnVjdGlvbiBhdXRv
bWF0aWMgaGVyZS4gSG9sZHMgdGhlIGxvY2FscyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4KICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2so
SklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAg
ICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IGZhc3RNYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICog
KCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMgQEAgdm9p
ZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQg
SklUQ29tcGlsZXI6Om5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywg
SklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2lj
QmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBi
eSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50
cnkoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVh
ZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5v
dGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBi
bG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90
IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBh
bmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9
IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwg
bGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4
cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7
CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9j
b2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9T
UkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVm
ZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7
IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDcgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAg
ICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRz
W25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
IWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291bnRFeGVjdXRp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNl
IEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAz
LDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsKIH07
CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisKIHN0
cnVjdCBDYWxsVmFyYXJnc0RhdGEgewogICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07CkBA
IC0xMjc3LDE3ICsxMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJh
bmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNo
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CiAK
KyAgICBib29sIGlzRW50cnlTd2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9w
KCkgPT0gRW50cnlTd2l0Y2g7CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAgIGNh
c2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTd2l0
Y2hEYXRhKj4oKTsKICAgICB9CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNoRGF0
YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3OSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAg
ICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNhc2Ug
RW50cnlTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nr
cy5zaXplKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgfQpAQCAtMTM3Miw2ICsxMzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAg
IHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGlzRW50cnlTd2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRj
aERhdGEoKS0+YmxvY2tzW2luZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAgICAg
ICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1MTgsNiArMTU0NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAgICAgIGNhc2UgQXRv
bWljc1N1YjoKICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9
CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUgZm9y
IE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcgYSBs
b2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9cCiAg
ICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGllci11
cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNrVGll
clVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhT
d2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3aXRjaCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdz
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2
aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsNjQgQEAgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQogCitTVVBQUkVT
U19BU0FOCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVC
bG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisKKyAgICBp
ZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2Rl
KTsKKworICAgIERGRzo6Q2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnkgPSBqaXRDb2Rl
LT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAg
aWYgKCFjYXRjaE9TUkVudHJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoT1NSRW50cnktPm1fYXJndW1l
bnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
ZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsK
KyAgICAgICAgc3dpdGNoIChjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1bWVu
dF0pIHsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAg
IGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6RGVhZEZsdXNo
OgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZlLiBJ
dCBjYW4gYmUgYW55dGhpbmcuIEhlbmNlLCBpdCdzIHRyaXZpYWxseSB0cnVlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgdHJpdmlhbGx5IHRydWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2Rl
LT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAg
IGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJz
KClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTogYXNzZXJ0IHRoaXMgaXMg
b3BfYWZ0ZXJfY2F0Y2guCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2lu
dGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAo
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxS
ZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4oaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1
ZmZlcilbaW5kZXhdID0gZXhlYy0+cihWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQp
KS5qc1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICByZXR1cm4gaml0
Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaE9TUkVudHJ5LT5tX21hY2hpbmVD
b2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAK
QEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29k
ZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVj
dCBDYXRjaE9TUkVudHJ5RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAg
IHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBk
b2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBh
cmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2su
CisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJl
dHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5r
IHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBt
ZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3Qg
T1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9p
ZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVj
U3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMiwxNiArMTEyLDE5IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVj
a3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAg
ICAgICAKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBuZWVkIHNvbWUgd29yayBvbmNlIHdl
IGhhdmUgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTC4KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYg
YXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGgu
YmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVu
dCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAg
IE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVu
dCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBKdXN0
IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJndW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBu
ZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJn
dW1lbnRdOworICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBhcmd1bWVudHNbYXJndW1lbnRdOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5v
ZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmln
aW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
KSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7Cisg
ICAgICAgICAgICBhcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQogCiAgICAg
ICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2Nh
bHM7ICsrbG9jYWwpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4
LDggKzExOCw5IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
aWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCkKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0tPmNh
bGxGcmFtZUZvckNhdGNoID09IGV4ZWMpOwotICAgIAorCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKwogICAgIEFTU0VSVChjb2RlQmxvY2spOwogICAgIEFT
U0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51
bWJlcmluZyhHcmFwaCYgZ3JhcGgpCiB7CisgICAgLy8gRklYTUU6IHRoaXMgbG9va3MgdW51c2Vk
LCBidXQgSSB0aGluayBpdCdzIGVhc3kgdG8gbWFrZSBpdCB3b3JrCisgICAgLy8gdy8gbXVsdGlw
bGUgcm9vdHMuIFZlcmlmeSBpdCBkb2VzLgogICAgIG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5n
PihncmFwaCk7CiAgICAgCiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBh
dCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3Ro
ZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJl
ZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVC
bG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1l
bnQoYXJnKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAg
ICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAg
IGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExMSw2ICsxMTEyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVtcDoK
ICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAg
IGNhc2UgU3dpdGNoOgogICAgICAgICBjYXNlIFByb2ZpbGVUeXBlOgogICAgICAgICBjYXNlIFBy
b2ZpbGVDb250cm9sRmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0
ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ug
d2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRv
ciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVy
ZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAg
ICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxj
dWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2Rl
KiB7CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFy
aWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MSwy
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAg
ICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FE
YXRhPihibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKwor
ICAgICAgICAvLyBGSVhNRTogYWRkIGJ1ZyBoZXJlIGZvciBzdXBwb3J0aW5nIGNhdGNoIGluIEZU
TC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNo
Rm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAg
ICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0g
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBs
b2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9m
aWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxv
YWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2Zp
bGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJh
bmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBS
ZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAt
MzIzLDYgKzMyNCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QK
ICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAg
Y2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAg
ICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9n
LmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyUHJp
bnRlci5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtNjA3OSw2ICs2MDgxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAg
IGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgLy9tX2ppdC5wcm9iZShbXSAoUHJv
YmVDb250ZXh0KikgeworICAgICAgICAvLyAgICBkYXRhTG9nTG4oIkV4dHJhY3RDYXRjaExvY2Fs
ISIpOworICAgICAgICAvL30pOworCisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZzdGF0aWNfY2Fz
dDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyKVtub2RlLT5j
YXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwor
ICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2pp
dC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAg
ICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAg
ICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBAIC02MDg3LDYgKzYxMDMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlm
IC8vIEVOQUJMRShGVExfSklUKQogCisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2Ug
TGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgVXBzaWxvbjoKQEAgLTYxMTUs
NyArNjEzMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBj
YXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5n
cmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc2LDYgKzE2NzYsMTQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAg
Ly8gRklYTUU6IExldCdzIGRvIHRoaXMgYXQgdGhlIE9TUiBlbnRyeSBwb2ludCB0byBiZSBjb25z
aXN0ZW50IHdpdGggaG93IHdlIGRvIGl0IGVsc2V3aGVyZS4KKyAgICAgICAgbV9qaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNh
dmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQu
Y29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9z
dHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBt
X2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTc3MCw4ICsxNzc4LDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9j
dXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENv
ZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgo
KS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52
YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2Fy
Z3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAg
aWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9u
J3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE4NzMsNyArMTg4MiwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50
cmllcyhMaW5rCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFibG9jay0+aXNP
U1JUYXJnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NS
RW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZl
cik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaE9TUlRhcmdldCkgeworICAgICAgICAgICAg
YXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJs
b2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOwor
ICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAg
ICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0
b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVu
dHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBNYXliZSBtYWtlIHRoaXMgYSBkZWJ1ZyBhc3NlcnQuCisgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1h
dCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVz
aEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50
Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5k
KERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRj
aE9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtC
dWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50
cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CiAgICAgfQogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4
ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25D
b3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiAKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwx
MCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1
ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVu
dGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50
cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBk
b2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhi
bG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+
b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9L
KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExv
Y2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2lu
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhKG1heUV4aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMg
JiYgIW5vZGUtPm9yaWdpbi5leGl0T0spKTsKIAogICAgICAgICAgICAgICAgIGlmIChpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7
Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAg
KG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3Jh
cGgsIHByZXZpb3VzTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFub2RlLT5vcmln
aW4uZXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRP
SwotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJl
dmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KAotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9LICYmIG5vZGUtPm9yaWdpbi5leGl0T0sp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2Rl
LT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAgICAgICAgICAgIC8vTm9kZSogcHJldmlvdXNO
b2RlID0gYmxvY2stPmF0KGkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgK
KyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAv
LyAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQorICAgICAgICAg
ICAgICAgICAgICAvLyAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgICAg
ICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAv
LyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JF
eGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAg
ICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAgICAhKCFwcmV2aW91c05v
ZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKKyAgICAgICAgICAgICAg
ICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9y
RXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3Ry
dWN0dXJlKCkuZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsOCArMjY2
LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CiAgICAg
ICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0
cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbV9vdXQuc2V0T3JpZ2luKG5vZGUp
OwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAg
ICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNo
KQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3Ro
aXMoSW5zdHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
WlosIGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwg
UmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
U19KSVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3OSw2ICs1NzksMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OgogICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VV
aSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7Cisg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODUzLDYgKzg1MywxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJ
bnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDAp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cit9
CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1Mywy
NCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1
dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAor
dm9pZCBKSVQ6OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9u
WzFdLnUucG9pbnRlcik7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAg
ICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7
CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCBy
ZWdUMCk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCZwcm9maWxlLm1fcHJv
ZmlsZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIGRvbmUgPSBi
cmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxl
ZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgZG9uZS5saW5rKHRoaXMp
OworICAgIC8vIEZJWE1FOiBhZGQgYSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorfQorCiB2b2lk
IEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTcsNiArMTUx
NywxOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09E
RUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBm
YWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1
aW50MzJfdCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2Nr
KiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgp
OyAvLyBGSVhNRTogY2FudGhpcyBldmVyIGJlIG51bGw/IE9yIGp1c3QgaXQgcmV0dXJuIGl0c2Vs
Zj8KKyAgICBpZiAob3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpE
RkdKSVQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNoYXIqPihERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2Vt
ZW50LCBieXRlY29kZUluZGV4KSk7Cit9CisKICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRBcnJheVZhbHVlLCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNp
b24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxNiw2ICszMTYsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BF
UkFUSU9OICpQX0pJVE9wZXJhCiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9w
ZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFy
KiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90
LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9u
X0VEWikoRXhlY1N0YXRlKiwgZG91YmxlLCBpbnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VVaSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwogdHlw
ZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKEpJVF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0aW9u
X0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBsKiAo
SklUX09QRVJBVElPTiAqVF9KSVRPcGVyYXRpb25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcq
KTsKIHR5cGVkZWYgSlNTdHJpbmcqIChKSVRfT1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9uX0Va
KShFeGVjU3RhdGUqLCBpbnQzMl90KTsKQEAgLTM5Niw2ICszOTcsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
RGVidWcoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShERkdf
SklUKQogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUo
RXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9JTlRF
Uk5BTDsKICNlbmRpZgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5URVJO
QUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwyMCBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7
CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUu
cG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICAvL2RhdGFMb2dMbigiUHJvZmlsaW5nIHJlZyAiLCBWaXJ0
dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLCAiIDogIiwgZXhlYy0+dW5jaGVja2VkUihw
cm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUu
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5t
X29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisgICAgLy9kYXRhTG9nTG4oIkNvbXBsZXRl
ZCB2YWx1ZSBwcm9maWxlISIpOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2
bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
dm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hh
YmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJv
dG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJl
Z2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTc4LDYgKzE5NzgsMTEgQEAgX2xsaW50X29wX2NhdGNoOgog
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2Fm
dGVyX2NhdGNoOgorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVy
X2NhdGNoKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317389</attachid>
            <date>2017-08-06 17:44:40 -0700</date>
            <delta_ts>2017-08-06 19:12:40 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>76285</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisgICAgCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQqIG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5NjEsNiArMzk2MSwxMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2go
UmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2Fm
dGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2Nv
cGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJl
dHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0
ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlz
T1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNm
YUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwg
Y2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90
IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNl
IFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+
aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwg
aSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRo
ZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2ls
bCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBU
aGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVu
LgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBv
dXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYg
KzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBC
bG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBp
c0NhdGNoT1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
IChvcGVyYW5kLmlzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJ
bmRleCA9IG9wZXJhbmQudG9Db25zdGFudEluZGV4KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBv
bGRTaXplID0gbV9jb25zdGFudHMuc2l6ZSgpOworICAgICAgICAgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIGNhY2hpbmcgY29kZSBzb3VuZD8KICAgICAgICAgICAgIGlmIChjb25zdGFudEluZGV4
ID49IG9sZFNpemUgfHwgIW1fY29uc3RhbnRzW2NvbnN0YW50SW5kZXhdKSB7CiAgICAgICAgICAg
ICAgICAgY29uc3QgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2s7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvZGVCbG9jay5nZXRD
b25zdGFudChvcGVyYW5kLm9mZnNldCgpKTsKQEAgLTExMzAsNyArMTEzMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29y
dGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxv
Y2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFz
aWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8g
SWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRo
aXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0
IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtl
ZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9y
CkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1
c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2lu
ZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBt
X2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50
cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVu
dHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0
QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2Yg
YW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgo
U2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRB
cmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUwLDYgKzUxNTUsOTIgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNo
OgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVy
X2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4g
V2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBtYXliZSB3ZSBzaG91bGQgaGFuZGxlIHRoaXMgYml0IHdoZW4gZG9pbmcgT1NSIGVudHJ5
LiBCdXQgd2Ugc2V0IHRoaXMgdG8gb3BfYWZ0ZXJfY2F0Y2gncworICAgICAgICAgICAgLy8gYnl0
ZWNvZGUgaW5kZXguIEFsdGVybmF0aXZlbHksIHdoZW4gZG9pbmcgT1NSIGVudHJ5LCB3ZSBjb3Vs
ZCBzZWFyY2ggZm9yIHRoZSBwcmV2aW91cyBieXRlY29kZSBpbmRleAorICAgICAgICAgICAgLy8g
b2YgdGhlIG9wX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVn
aW4gPSBtX2N1cnJlbnRJbmRleDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIHJpZ2h0
PworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKworICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQgPSB0cnVlOworCisgICAg
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKwor
ICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51LnBvaW50ZXIpOworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIE5vZGUqPj4g
dmFsdWVzVG9TZXQ7CisgICAgICAgICAgICB2YWx1ZXNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyBtYXkgcmVzZXJ2ZSBtb3JlIHRoYW4g
dGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBpbmNs
dWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJn
dW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFs
c2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qg
a25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0g
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gc2VlIGlmIHRoaXMgY292ZXJzIGFyZ3VtZW50cy4gV2UgbmVlZCBh
cmd1bWVudCBwcm9maWxlcyBoZXJlLgorICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2Nh
bCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgo
RXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29w
ZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNUb1NldC51bmNo
ZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIocHJvZmlsZS5tX29wZXJhbmQsIHZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50
KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFsbCBhcmd1bWVudHMu
CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9B
cmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBt
X2V4aXRPSyA9IHRydWU7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQg
dXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRk
KG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0
b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFy
Z3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxl
QWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3Vt
ZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNoZWNrIGlmIHRoaXMgaXMg
bmVlZGVkLgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVj
a0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFp
bGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3Vt
ZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJn
dW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50
XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogdmFsdWVzVG9TZXQpCisgICAgICAgICAg
ICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgVmlydHVhbFJlZ2lzdGVyKHBhaXIu
Zmlyc3QpLCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVy
X2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoK
ICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9k
ZTo6UmVndWxhcik7CkBAIC02MTM4LDggKzYyMjksMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5h
cHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxv
Y2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5u
dW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5h
cHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAg
ICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjE5
Niw4ICs2Mjg5LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAog
ICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMp
OworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtp
bGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZl
IG11bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGgu
YmxvY2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFs
IGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNp
YWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0
eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUg
Y2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlr
ZSBJUiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJs
ZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7
CisKKyAgICAgICAgLy8gRklYTUU6IGdyZXAgZm9yIGFsbCB1c2VzIG9mIGJsb2NrKDApIGFuZCBw
ZXJoYXBzIGFsc28gYWRkIG5vdGlvbiBvZiBlbnRyeXBvaW50cy4KKyAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAg
QmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVj
dG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50
c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQg
b3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6
CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ug
b3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBv
cF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsx
NDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2Fz
ZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJ
bW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNo
OgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAg
ICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFy
aWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAg
ICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1
c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIy
MDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0
Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRh
aWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTYsNiArMTk3LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01h
cEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNo
YWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVu
dHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGll
clVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7Citl
bnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJ
bnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsOCBAQCBib29sIEdy
YXBoOjp0ZXJtaW5hbHNBcmVWYWxpZCgpCiAKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQ
aGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsK
LSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQo
YmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNS
ZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NS
IHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAq
YmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29u
dGV4dCksICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBl
ZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlz
Q2F0Y2hPU1JUYXJnZXQgPyAiIChDYXRjaCBPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CiAgICAg
aWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1
dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6
Iik7CkBAIC01MDIsOCArNTAzLDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRT
dGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlm
aWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxu
Iik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVs
c2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9y
IGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJc
biIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5v
ZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY0MywxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNj
ZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQog
ewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFw
cGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVu
dHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NTAsNyAr
ODU1LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9j
a0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3Qu
cHVzaChibG9jaygwKSk7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGlzIHJlYWxseSB3
aGF0IHdlIHdhbnQgaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vz
c29ycygpOyBpLS07KQpAQCAtODYzLDcgKzg3MCw5IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tz
SW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAv
LyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAg
IGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdv
cmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0g
PSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAg
ICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC0xNTI3LDcgKzE1MzYsOCBAQCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IG1heWJlIHdlIHNob3VsZCBzZWFyY2ggYWxsIGhlcmU/IEFsc28sIHRoaXMgc2VlbXMgd3Jvbmcg
aW4gU1NBIGluIHRoZSBmdXR1cmUuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50
Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1
bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MjEsNyArOTIxLDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9y
PCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJh
c2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50
cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAg
SGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gs
IEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1Niw3ICs5
NTcsOSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFu
ZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNp
ZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7Cisg
ICAgLy8KKyAgICAvLyBGSVhNRTogQ291bGQgaW5jb3Jwb3JhdGUgdGhpcyBpbnRvIG1fZW50cnlw
b2ludHMgdmVjdG9yLgorICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+
IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBt
ZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0
IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3Jt
YXRzOwpAQCAtOTY3LDYgKzk3MCw3IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3
QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNo
RGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAg
ICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAg
IEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBC
YWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
OwpAQCAtMTAwOSw2ICsxMDEzLDcgQEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZD
b3VudFN0YXRlOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hh
c0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJ
bmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFi
c3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRp
YyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGgu
YmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+
Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJl
c0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0g
U3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZh
bHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZv
cm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZv
cm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAg
ICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Cisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7
CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBl
bnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNm
YUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRy
eXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0
Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVz
aEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQor
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07
CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2Vs
bCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1Zh
bHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJC
YWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52
YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0
VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJ
bmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4
KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAg
ICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5O
YXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRh
aW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMg
YWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VS
VChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9
IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYg
KzM2OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdl
dC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50
cnlTd2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAo
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2NrcykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0Qmxv
Y2spOworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
UmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgs
CiAgICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAg
ICBDYXRjaE9TUkVudHJ5RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlz
IGEgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhdGNo
T1NSRW50cnkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjYXRjaE9TUkVudHJ5W2ld
Lm1fYnl0ZWNvZGVJbmRleCA9PSBieXRlY29kZUluZGV4KQorICAgICAgICAgICAgICAgIHJldHVy
biAmY2F0Y2hPU1JFbnRyeVtpXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hPU1JFbnRyeSh1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoT1NSRW50cnkuYXBwZW5kKERG
Rzo6Q2F0Y2hPU1JFbnRyeURhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwg
V1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBh
cHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDYgKzE0OCw3
IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9y
PERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8REZHOjpDYXRjaE9TUkVu
dHJ5RGF0YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0
LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1
bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZl
bnRTdHJlYW07CkBAIC0xNjgsNiArMTg1LDggQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxD
b2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25lZCBvc3JFbnRyeVJldHJ5Owog
ICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgdm9pZCogY2F0Y2hPU1JFbnRyeUJ1ZmZl
ciB7IG51bGxwdHIgfTsgLy8gRklYTUU6IG1ha2UgYWxsb2NhdGlvbi9kZXN0cnVjdGlvbiBhdXRv
bWF0aWMgaGVyZS4gSG9sZHMgdGhlIGxvY2FscyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4KICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2so
SklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIgPSBmYXN0TWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3Bl
Y3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAg
ICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IGZhc3RNYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICog
KCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRP
ZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMgQEAgdm9p
ZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQg
SklUQ29tcGlsZXI6Om5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywg
SklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VS
VChiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2lj
QmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBi
eSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50
cnkoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVh
ZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5v
dGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBi
bG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90
IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBh
bmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9
IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwg
bGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4
cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7
CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9j
b2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9T
UkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVm
ZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7
IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAxLDcgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAg
ICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRz
W25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
IWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291bnRFeGVjdXRp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNl
IEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAz
LDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsKIH07
CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisKIHN0
cnVjdCBDYWxsVmFyYXJnc0RhdGEgewogICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07CkBA
IC0xMjc3LDE3ICsxMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJh
bmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNo
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CiAK
KyAgICBib29sIGlzRW50cnlTd2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9w
KCkgPT0gRW50cnlTd2l0Y2g7CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAgIGNh
c2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTd2l0
Y2hEYXRhKj4oKTsKICAgICB9CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNoRGF0
YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3OSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAg
ICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNhc2Ug
RW50cnlTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nr
cy5zaXplKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgfQpAQCAtMTM3Miw2ICsxMzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAg
IHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGlzRW50cnlTd2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRj
aERhdGEoKS0+YmxvY2tzW2luZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAgICAg
ICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1MTgsNiArMTU0NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAgICAgIGNhc2UgQXRv
bWljc1N1YjoKICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9
CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAgICAgVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUgZm9y
IE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcgYSBs
b2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9cCiAg
ICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGllci11
cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNrVGll
clVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhT
d2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3aXRjaCwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdz
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2
aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsNjQgQEAgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQogCitTVVBQUkVT
U19BU0FOCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVC
bG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisKKyAgICBp
ZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2Rl
KTsKKworICAgIERGRzo6Q2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnkgPSBqaXRDb2Rl
LT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAg
aWYgKCFjYXRjaE9TUkVudHJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoT1NSRW50cnktPm1fYXJndW1l
bnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
ZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsK
KyAgICAgICAgc3dpdGNoIChjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1bWVu
dF0pIHsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAg
IGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6RGVhZEZsdXNo
OgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZlLiBJ
dCBjYW4gYmUgYW55dGhpbmcuIEhlbmNlLCBpdCdzIHRyaXZpYWxseSB0cnVlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgdHJpdmlhbGx5IHRydWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2Rl
LT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAg
IGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJz
KClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAvLyBGSVhNRTogYXNzZXJ0IHRoaXMgaXMg
b3BfYWZ0ZXJfY2F0Y2guCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2lu
dGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAo
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxS
ZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4oaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1
ZmZlcilbaW5kZXhdID0gZXhlYy0+cihWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQp
KS5qc1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICByZXR1cm4gaml0
Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaE9TUkVudHJ5LT5tX21hY2hpbmVD
b2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAK
QEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29k
ZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVj
dCBDYXRjaE9TUkVudHJ5RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAg
IHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBk
b2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBh
cmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2su
CisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJl
dHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5r
IHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBt
ZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3Qg
T1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9p
ZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVj
U3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMiwxNiArMTEyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVj
a3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAg
ICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAg
ICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRl
cnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xk
Tm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUg
YSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBv
bGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
b2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcElu
Zm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1
bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBs
b2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDYg
KzE0MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5lZWQgc29t
ZSB3b3JrIG9uY2Ugd2UgaGF2ZSBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUgRlRMLgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOwor
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0gPSBuZXdSb290OworICAgICAgICBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFyKCk7CisgICAgICAgIG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3QsIGFyZ3VtZW50cyk7CisKICAgICAgICAg
bV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICBtX2dyYXBoLmtpbGxVbnJlYWNo
YWJsZUJsb2NrcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCw5IEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgaWYgKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCkKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQodm0tPmNhbGxGcmFtZUZvckNhdGNoID09IGV4ZWMpOwotICAgIAorCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKwogICAgIEFTU0VS
VChjb2RlQmxvY2spOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2Rl
OjpERkdKSVQpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQ
b3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogUHJlUG9z
dE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCiB7CisgICAgLy8gRklY
TUU6IHRoaXMgbG9va3MgdW51c2VkLCBidXQgSSB0aGluayBpdCdzIGVhc3kgdG8gbWFrZSBpdCB3
b3JrCisgICAgLy8gdy8gbXVsdGlwbGUgcm9vdHMuIFZlcmlmeSBpdCBkb2VzLgogICAgIG1fbWFw
ID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7CiAgICAgCiAgICAgUG9zdE9yZGVyQmxvY2tX
b3JrbGlzdCB3b3JrbGlzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2Nr
KCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhp
cyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJv
bQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9w
dWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1bWVu
dHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygw
KSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0
aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewog
ICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+
dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb2Zp
bGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIExvYWRGcm9t
SlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgR2V0QXJn
dW1lbnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgQ2Fs
bERPTUdldHRlcjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5n
ZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExMSw2ICsxMTEy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAg
ICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2Ug
RW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICBjYXNlIFByb2ZpbGVU
eXBlOgogICAgICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJl
IGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVt
Ci0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVt
IGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdl
IHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3Vs
YXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAg
ICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2lj
QmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgo
KV07CkBAIC0zODEsMTggKzM4MSwyMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+dmFs
dWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3Vu
aXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVu
dHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogYWRkIGJ1ZyBoZXJlIGZvciBz
dXBwb3J0aW5nIGNhdGNoIGluIEZUTC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5t
X2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1
ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNp
emUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0g
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9h
cmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5n
LmdldChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChub2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgp
LT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZv
cm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0g
bm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhl
IGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBu
b2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUg
YmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
bV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICsz
MDcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2Fz
ZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50
cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNl
IERpcmVjdFRhaWxDYWxsOgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0
cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENo
ZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBACiAjaW5j
bHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAorI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjA3OSw2ICs2MDgxLDIwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAg
Ly9tX2ppdC5wcm9iZShbXSAoUHJvYmVDb250ZXh0KikgeworICAgICAgICAvLyAgICBkYXRhTG9n
TG4oIkV4dHJhY3RDYXRjaExvY2FsISIpOworICAgICAgICAvL30pOworCisgICAgICAgIEpTVmFs
dWUqIHB0ciA9ICZzdGF0aWNfY2FzdDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9T
UkVudHJ5QnVmZmVyKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7
CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRl
bXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBH
UFIpLCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBAIC02MDg3
LDYgKzYxMDMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCisKKyAgICBjYXNlIEVu
dHJ5U3dpdGNoOgogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNh
c2UgVXBzaWxvbjoKQEAgLTYxMTUsNyArNjEzMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2Ug
UGhhbnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAg
ICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjc2LDYgKzE2NzYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRC
bG9jawogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hP
U1JUYXJnZXQpIHsKKyAgICAgICAgLy8gRklYTUU6IExldCdzIGRvIHRoaXMgYXQgdGhlIE9TUiBl
bnRyeSBwb2ludCB0byBiZSBjb25zaXN0ZW50IHdpdGggaG93IHdlIGRvIGl0IGVsc2V3aGVyZS4K
KyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0Lmdy
YXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
KyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0
TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50Ojpy
ZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpA
QCAtMTc3MCw4ICsxNzc4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5
cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3Jp
Z2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJn
dW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0
LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0
LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2Rl
ID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFy
Z3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJn
dW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMu
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NzMsNyArMTg4MiwyMyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50
cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaE9TUlRh
cmdldCkgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1Zl
Y3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1
bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSog
c2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0
QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQg
PSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAg
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBNYXliZSBtYWtlIHRoaXMgYSBkZWJ1ZyBhc3NlcnQu
CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNo
ZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBG
bHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQp
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZv
cm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBtX2ppdC5ub3RpY2VDYXRjaE9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29z
ckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBt
X29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CiAgICAgfQogICAg
IEFTU0VSVChvc3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVz
dGltYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIy
MDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291
bnRFc3RpbWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiAKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC05OCw2ICsxMDAsNyBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1T
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb24oR3JhcGgmIGdyYXBoKQogeworICAgIHJldHVy
biBmYWxzZTsKICAgICByZXR1cm4gcnVuUGhhc2U8U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZh
bHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2lu
ZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAv
LyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0
QXJndW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCht
X2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKTsKIAogICAgICAgICAgICAgICAg
ICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4aXRPSyk7CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNlcnRO
b2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFibGUt
PnByZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDE4
ICsxOTUsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgISht
YXlFeGl0KG1fZ3JhcGgsIG5vZGUpID09IEV4aXRzICYmICFub2RlLT5vcmlnaW4uZXhpdE9LKSk7
CiAKICAgICAgICAgICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgICAgICAgICBOb2RlKiBw
cmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOwotICAgICAgICAgICAgICAgICAgICBWQUxJ
REFURSgKLSAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRPSwotICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAg
IHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQp
OwotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgICAg
IChub2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2lu
LmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQotICAgICAgICAgICAgICAgICAgICAgICAg
fHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUt
Pm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAg
ICAgICAgICAgICAgICAvL05vZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7Cisg
ICAgICAgICAgICAgICAgICAgIC8vVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgIC8vICAg
IChub2RlKSwKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1f
Z3JhcGgsIHByZXZpb3VzTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgIW5vZGUt
Pm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9
PSBFeGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4
aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAgICAgICAgICAg
IC8vVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgIC8vICAgIChub2RlKSwKKyAgICAgICAg
ICAgICAgICAgICAgLy8gICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9LICYmIG5vZGUt
Pm9yaWdpbi5leGl0T0spCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JF
eGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2Rl
LT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9u
IDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgICAgICBtX25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3Vt
ZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2Nr
KDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1f
YXJndW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAg
ICAgICAgICAgIG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3
LDYgKzI3Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5F
X09QKG9wX2NvbnN0cnVjdF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2F0Y2gpCisg
ICAgICAgIERFRklORV9PUChvcF9hZnRlcl9jYXRjaCkKICAgICAgICAgREVGSU5FX09QKG9wX2Nv
bnN0cnVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJ
TkVfT1Aob3BfdG9fdGhpcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDc2LDYgKzQ3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRf
b3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FmdGVy
X2NhdGNoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTUs
NiArNzk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3Qp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0UpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklU
T3BlcmF0aW9uX0VKUywgR1BSUmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywg
UmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVn
LCBVbmlxdWVkU3RyaW5nSW1wbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNiArNTc5LDEzIEBAIEFMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50MzJfdCBhcmcx
KQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkp
OworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7Cit9CisKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBzaXpl
X3QgYXJnMikKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cihhcmcyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Myw2ICs4NTMs
MTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRT
dG9yZSh0aHJvd25WYWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
YWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKQoreworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3Nl
cnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2Vy
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0
Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgVmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRl
Y29kZU9mZnNldCk7CisgICAgYXV0byBkb25lID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5W
YWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJu
VmFsdWVHUFIpOworICAgIGRvbmUubGluayh0aGlzKTsKKyAgICAvLyBGSVhNRTogYWRkIGEgaml0
IGZhc3QgcGF0aCBmb3IgdGhpcy4KK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTE3LDYgKzE1MTcsMTkgQEAgU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwogICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CiB9CisKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgYnl0ZWNvZGVJbmRleCkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKworICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+cmVwbGFjZW1lbnQoKTsgLy8gRklYTUU6IGNhbnRoaXMgZXZlciBi
ZSBudWxsPyBPciBqdXN0IGl0IHJldHVybiBpdHNlbGY/CisgICAgaWYgKG9wdGltaXplZFJlcGxh
Y2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpwcmVwYXJlQ2F0Y2hP
U1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRleCkpOworfQor
CiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwgaW50MzJfdCBpbmRl
eCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiAr
MzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYQogdHlwZWRl
ZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBp
bnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3Bl
cmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIq
IChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0ZSosIGRvdWJsZSwg
aW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9F
VWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIChK
SVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3RhdGUqLCBDYWxsTGlu
a0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04gKlRfSklUT3BlcmF0
aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTU3RyaW5nKiAoSklU
X09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CkBA
IC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNT
dAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSosIGludDMyX3Qp
IFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRoUmV0dXJuVHlwZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9J
TlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNo
KEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMy
X3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMjAgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9y
RWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgLy9k
YXRhTG9nTG4oIlByb2ZpbGluZyByZWcgIiwgVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVy
YW5kKSwgIiA6ICIsIGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUo
KSk7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAg
IH0pOworICAgIC8vZGF0YUxvZ0xuKCJDb21wbGV0ZWQgdmFsdWUgcHJvZmlsZSEiKTsKKworICAg
IExMSU5UX0VORCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90
aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0Zy
YW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24g
MjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2Vu
X3Byb2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3No
YWRvd19jaGlja2VuX3RhaWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9hZnRlcl9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJv
d19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFM
OwogI2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
c3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk3OCw2
ICsxOTc4LDExIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3Bf
Y2F0Y2hfbGVuZ3RoKQogCiAKK19sbGludF9vcF9hZnRlcl9jYXRjaDoKKyAgICBjYWxsT3Bjb2Rl
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9hZnRlcl9jYXRjaCkKKyAgICBkaXNwYXRjaCgzKQor
CisKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dpdGNo
VG9KSVRGb3JFcGlsb2d1ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317393</attachid>
            <date>2017-08-06 19:12:40 -0700</date>
            <delta_ts>2017-08-06 19:32:23 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>76304</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCogbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzk2MSw2ICszOTYxLDEwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdp
c3QKICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0
aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKworICAgIGVtaXRPcGNvZGUob3BfYWZ0ZXJf
Y2F0Y2gpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJl
Z2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODM4LDYgKzE4MzksOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2Ug
Y29uZGl0aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEVu
dHJ5U3dpdGNoOgorICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBAIEJhc2ljQmxvY2s6OkJhc2ljQmxvY2soCiAgICAgOiBieXRlY29k
ZUJlZ2luKGJ5dGVjb2RlQmVnaW4pCiAgICAgLCBpbmRleChOb0Jsb2NrKQogICAgICwgaXNPU1JU
YXJnZXQoZmFsc2UpCisgICAgLCBpc0NhdGNoT1NSVGFyZ2V0KGZhbHNlKQogICAgICwgY2ZhSGFz
VmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFG
b3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3Ry
dWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9
IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBj
YXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dp
dGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxs
OgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFp
bENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgot
ICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rl
cm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJp
dHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHBy
b2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkg
YXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAg
ICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1
bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3
LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2Nr
SW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0
Y2hPU1JUYXJnZXQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxk
UmV2aXNpdDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjksNiArMzI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG9w
ZXJhbmQuaXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4
ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9sZFNp
emUgPSBtX2NvbnN0YW50cy5zaXplKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2h5IGlzIHRo
aXMgY2FjaGluZyBjb2RlIHNvdW5kPwogICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0g
b2xkU2l6ZSB8fCAhbV9jb25zdGFudHNbY29uc3RhbnRJbmRleF0pIHsKICAgICAgICAgICAgICAg
ICBjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jayA9ICptX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jazsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENvbnN0
YW50KG9wZXJhbmQub2Zmc2V0KCkpOwpAQCAtMTEzMCw3ICsxMTMxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQg
YnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3Mg
dGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Js
b2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0
aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3
aWxsIGJlCiAgICAgICAgIC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVl
ZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxv
Y2tzLCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAg
LTQwNzQsNyArNDA3NSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgLy8gdXMgdG8gdHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0
aGUgYWN0dWFsIGFyZ3VtZW50IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEg
dmFsdWUgd2Ugc2V0IGV4cGxpY2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3Jh
cGguYmxvY2soMCkgJiYgIWlubGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVj
dG9yPE5vZGUqLCA4PigpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOworICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5y
ZXNpemUobV9udW1Bcmd1bWVudHMpOworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1
bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBv
cF9lbnRlciBzbwogICAgICAgICAvLyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRPSyA9
IHRydWU7CkBAIC00MDg3LDcgKzQwOTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRB
cmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3Vt
ZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTUxNTAsNiArNTE1NSw5MiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfY2F0Y2g6CiAg
ICAgICAgICAgICBtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMgPSB0cnVlOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworCisgICAgICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgeworICAgICAgICAgICAg
ICAgIC8vIFdlIGRvbid0IGRvIGFueXRoaW5nIGhlcmUgZm9yIGlubGluZWQgZnJhbWVzLiBXZSB3
b24ndCB0cmVhdCB0aGlzIGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
aXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKworICAgICAgICAgICAgLy8gRklYTUU6
IG1heWJlIHdlIHNob3VsZCBoYW5kbGUgdGhpcyBiaXQgd2hlbiBkb2luZyBPU1IgZW50cnkuIEJ1
dCB3ZSBzZXQgdGhpcyB0byBvcF9hZnRlcl9jYXRjaCdzCisgICAgICAgICAgICAvLyBieXRlY29k
ZSBpbmRleC4gQWx0ZXJuYXRpdmVseSwgd2hlbiBkb2luZyBPU1IgZW50cnksIHdlIGNvdWxkIHNl
YXJjaCBmb3IgdGhlIHByZXZpb3VzIGJ5dGVjb2RlIGluZGV4CisgICAgICAgICAgICAvLyBvZiB0
aGUgb3BfY2F0Y2guCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9
IG1fY3VycmVudEluZGV4OworICAgICAgICAgICAgLy8gRklYTUU6IGlzIHRoaXMgcmlnaHQ/Cisg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworCisgICAgICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+aXNDYXRjaE9TUlRhcmdldCA9IHRydWU7CisKKyAgICAgICAg
ICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisgICAg
ICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUu
cG9pbnRlcik7CisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPGludCwgTm9kZSo+PiB2YWx1
ZXNUb1NldDsKKyAgICAgICAgICAgIHZhbHVlc1RvU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
YnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIG1heSByZXNlcnZlIG1vcmUgdGhhbiB0aGUg
bnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUgYnVmZmVyIGluY2x1ZGVz
IGFyZ3VtZW50cy4KKworICAgICAgICAgICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBhcmd1bWVu
dFByZWRpY3Rpb25zKG1fbnVtQXJndW1lbnRzKTsKKworICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsg
Ly8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxkIG5vdCBrbm93
IGhvdyB0byBkbyB2YWx1ZSByZWNvdmVyeS4KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1i
ZXJPZkxvY2FscyA9IDA7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogTmVlZCB0byBzZWUgaWYgdGhpcyBjb3ZlcnMgYXJndW1lbnRzLiBXZSBuZWVkIGFyZ3Vt
ZW50IHByb2ZpbGVzIGhlcmUuCisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGlj
dGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gYWRkVG9HcmFwaChFeHRy
YWN0Q2F0Y2hMb2NhbCwgT3BJbmZvKG51bWJlck9mTG9jYWxzKSwgT3BJbmZvKHByZWRpY3Rpb24p
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFu
ZCksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1RvU2V0LnVuY2hlY2tl
ZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihwcm9maWxlLm1fb3BlcmFuZCwgdmFsdWUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkg
PCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogQWRkIHNvbWUgd2F5IHRvIGFzc2VydCB3ZSBzZWUgYWxsIGFyZ3VtZW50cy4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3Vt
ZW50KCldID0gcHJlZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0
Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5ID0gc3RkOjptYXgobnVtYmVyT2ZMb2NhbHMsICptX2dyYXBoLm1fbWF4TG9j
YWxzRm9yQ2F0Y2hPU1JFbnRyeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fZXhp
dE9LID0gdHJ1ZTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNldCB1cCBv
dXIgYXJndW1lbnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LgorICAgICAgICAgICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9j
dXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAgICAgICAgIFZlY3RvcjxO
b2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVl
OworICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1l
bnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1l
bnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nl
c3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CisgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50UHJlZGljdGlvbnNbYXJndW1lbnRd
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogY2hlY2sgaWYgdGhpcyBpcyBuZWVk
ZWQuCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9p
c3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQo
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKKworICAgICAg
ICAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQs
IE9wSW5mbyh2YXJpYWJsZSkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+
dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVu
dCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0g
c2V0QXJndW1lbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiB2YWx1ZXNUb1NldCkKKyAgICAgICAgICAgICAg
ICBzZXRMb2NhbChjdXJyZW50Q29kZU9yaWdpbigpLCBWaXJ0dWFsUmVnaXN0ZXIocGFpci5maXJz
dCksIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0
Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAg
ICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpS
ZWd1bGFyKTsKQEAgLTYxMzgsOCArNjIyOSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBp
cyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJs
b2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDgg
KzYyODksOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAg
cGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3Vu
bGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisK
ICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVu
cmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKKyAgICAvLyBGSVhNRTogd2UgbmVlZCB0byBmYWtlIGEgcm9vdCB3aGVuIHdlIGhhdmUgbXVs
dGlwbGUgZW50cnlwb2ludHMuCiAgICAgTm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9j
aygwKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwxNCBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJn
dW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1j
YXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVz
IC0gb25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNl
LCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElS
IG92ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRz
LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0
SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKwor
ICAgICAgICAvLyBGSVhNRTogZ3JlcCBmb3IgYWxsIHVzZXMgb2YgYmxvY2soMCkgYW5kIHBlcmhh
cHMgYWxzbyBhZGQgbm90aW9uIG9mIGVudHJ5cG9pbnRzLgorICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8
Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ld
KTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVy
YW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0
ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAg
ICBjYXNlIG9wX2NhdGNoOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9j
cmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xv
Z19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBo
YW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgor
ICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVk
aWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAg
IGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAg
ICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFk
Q2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAg
ICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJs
ZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAgIGZvciAoYXV0byYgYXJndW1lbnRzVmVj
dG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy52YWx1ZXMoKSkKKyAgICAgICAg
ICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rvcik7CiAKICAgICAgICAgLy8gSnVzdCBk
byBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRl
eCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwMTQ3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODIsNiArMTgyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoK
KyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENh
bGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5Niw2ICsxOTcsNyBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVj
a2V0OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxl
OgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBB
dFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBKdW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgog
ICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2Fz
ZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2Fz
ZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoK
ICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBj
YXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNo
Rm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVz
aEZvcm1hdC5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0g
Rmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMy
LAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDExLDcgKzQxMSw4IEBAIGJvb2wgR3JhcGg6
OnRlcm1pbmFsc0FyZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5v
ZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAg
IG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9j
ay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNo
YWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFy
Z2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9j
aywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0
KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIs
IGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRj
aE9TUlRhcmdldCA/ICIgKENhdGNoIE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAo
YmxvY2stPmV4ZWN1dGlvbkNvdW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9u
Q291bnQsICJcbiIpOwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsK
QEAgLTUwMiw4ICs1MDMsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBE
dW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRl
LCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0
aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsK
ICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZv
cm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQot
ICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyks
ICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2lu
dFRvQXJndW1lbnRzKQorICAgICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxv
Y2sjIiwgcGFpci5rZXktPmluZGV4LCAiOiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7
CisgICAgfQogICAgIG91dC5wcmludCgiXG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9
IG51bGxwdHI7CkBAIC02NDAsOCArNjQzLDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3Nv
cihWZWN0b3I8QmFzaWMKIHZvaWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5k
KGJsb2NrKDApKTsKLSAgICBibG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAo
QmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlw
b2ludC0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlw
b2ludCk7CisgICAgfQogICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAg
IEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg1MCw3ICs4NTUs
OSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlz
dCByZXN1bHQ7CiAgICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNo
KGJsb2NrKDApKTsKKyAgICAvLyBGSVhNRTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQg
d2Ugd2FudCBoZXJlLgorICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlw
b2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJh
c2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVu
ZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3Jz
KCk7IGktLTspCkBAIC04NjMsNyArODcwLDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBv
c3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dv
cmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIC8vIEZJ
WE1FOiBNYWtlIHN1cmUgdGhpcyBpcyByZWFsbHkgd2hhdCB3ZSB3YW50IGhlcmUuCisgICAgZm9y
IChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xp
c3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdv
cmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBj
YXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTE1MjcsNyArMTUzNiw4IEBAIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5sb2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0g
bV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWF5
YmUgd2Ugc2hvdWxkIHNlYXJjaCBhbGwgaGVyZT8gQWxzbywgdGhpcyBzZWVtcyB3cm9uZyBpbiBT
U0EgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2Rl
ID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVlW2FyZ3VtZW50
XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyMSw3ICs5MjEsOCBAQCBwdWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9j
azsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJl
ZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNC
bG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBv
aW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNo
TWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5j
b2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDcgKzk1Nyw5
IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdl
IHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQog
ICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICAv
LworICAgIC8vIEZJWE1FOiBDb3VsZCBpbmNvcnBvcmF0ZSB0aGlzIGludG8gbV9lbnRyeXBvaW50
cyB2ZWN0b3IuCisgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9l
bnRyeXBvaW50VG9Bcmd1bWVudHM7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5p
bmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2Un
dmUgbG9ja2VkIGluLgogICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7
CkBAIC05NjcsNiArOTcwLDcgQEAgcHVibGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJh
eUJ1ZmZlckRhdGEsIDQ+IG1fbmV3QXJyYXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRh
PiBtX2JyYW5jaERhdGE7CiAgICAgQmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnlTd2l0Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBC
YWc8TXVsdGlHZXRCeU9mZnNldERhdGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFn
PE11bHRpUHV0QnlPZmZzZXREYXRhPiBtX211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxP
YmplY3RNYXRlcmlhbGl6YXRpb25EYXRhPiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkBA
IC0xMDA5LDYgKzEwMTMsNyBAQCBwdWJsaWM6CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50
U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhj
ZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1f
bWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4
aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJh
Y3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw1NCArOTMsNTkgQEAgc3RhdGljIHZv
aWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8Tm9kZUFicwogCiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKCkKIHsKLSAgICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9j
aygwKTsKLSAgICByb290LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKLSAgICByb290LT5jZmFI
YXNWaXNpdGVkID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsK
LSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJl
V2F0Y2hlZDsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1
Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVz
QXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0KLSAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0
OwotICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQotICAgICAgICAgICAgZm9ybWF0
ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlm
ICghbm9kZSkKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAg
ICAgICAgZW50cnlwb2ludC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7CisgICAgICAgIGVudHJ5
cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhRm91
bmRDb25zdGFudHMgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xv
YmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisgICAgICAgIGVudHJ5cG9p
bnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVk
OworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+
dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7CisKKyAgICAgICAgICAgIEZsdXNoRm9y
bWF0IGZvcm1hdDsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50KTsKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFw
aC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAg
ICAgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZs
dXNoZWRKU1ZhbHVlOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAg
ICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNw
ZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBG
bHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQu
YXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6
CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1h
a2VCeXRlY29kZVRvcCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBm
bHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7
Ci0gICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBo
LCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9v
dC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52
YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWls
LmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsK
LSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwot
ICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5
cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAg
IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVy
YWxPcmRlcigpKSB7CisgICAgICAgIGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMo
YmxvY2spKSB7CisgICAgICAgICAgICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92
ZS4KICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJs
b2NrLT5pc1JlYWNoYWJsZSk7CiAgICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFs
c2U7CiAgICAgICAgIGJsb2NrLT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNiArMzY5
LDEzIEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJs
b2NrKTsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3
aXRjaDogeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiB0YXJnZXRCbG9jayA6IHRlcm1pbmFsLT5lbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tz
KQorICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCB0YXJnZXRCbG9jayk7
CisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBSZXR1
cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMjIgQEAgcHVibGljOgog
ICAgICAgICAgICAgb3NyRW50cnksIG9zckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKICAg
ICAgICAgICAgIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXgpOwogICAgIH0KKworICAgIENh
dGNoT1NSRW50cnlEYXRhKiBjYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYSBi
aW5hcnkgc2VhcmNoLgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2F0Y2hPU1JF
bnRyeS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGNhdGNoT1NSRW50cnlbaV0ubV9i
eXRlY29kZUluZGV4ID09IGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZj
YXRjaE9TUkVudHJ5W2ldOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaE9TUkVudHJ5KHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJn
dW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hPU1JFbnRyeS5hcHBlbmQoREZHOjpD
YXRjaE9TUkVudHJ5RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2RlT2Zmc2V0LCBXVEZN
b3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGFwcGVu
ZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBAIC0xMzIsNiArMTQ4LDcgQEAg
cHJpdmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZH
OjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxERkc6OkNhdGNoT1NSRW50cnlE
YXRhPiBjYXRjaE9TUkVudHJ5OwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+
IG9zckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRp
b25SZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0
cmVhbTsKQEAgLTE2OCw2ICsxODUsOCBAQCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPENvZGVC
bG9jaz4gbV9vc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5UmV0cnk7CiAgICAg
Ym9vbCBhYmFuZG9uT1NSRW50cnk7CisKKyAgICBNYWxsb2NQdHI8SlNWYWx1ZT4gY2F0Y2hPU1JF
bnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJm
bG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYg
KG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUt
PmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI6Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkg
KiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFy
dE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVG
dW5jdGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5
KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI6Om1h
bGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBA
IC01NTEsMTQgKzU1NywyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29u
c3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hPU1JFbnRyeShC
YXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRz
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQp
OyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0
Q29kZS0+YXBwZW5kQ2F0Y2hPU1JFbnRyeShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtC
dWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30K
Kwogdm9pZCBKSVRDb21waWxlcjo6bm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9j
aywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikK
IHsKKyAgICBSRUxFQVNFX0FTU0VSVCghYmFzaWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0KTsKKwog
ICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFj
aGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRl
cnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAg
ICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFz
aWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwot
ICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2Vj
dGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3Rl
ZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBl
eHBlY3RlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpM
YWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoT1NSRW50
cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXIm
LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQ
dHI8SklUQ29kZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xp
dmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7
Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9
PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAg
ICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5p
c0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVy
LT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5h
ZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaElu
c2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGlj
OgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2st
PnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChp
KTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2Rl
ID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAg
ICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgp
LmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0
ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9
CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsK
ICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEg
PSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDExICs3OCwxMyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUq
CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFu
Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNh
c2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQ
dXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNp
b24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTQgQEAgc3RydWN0IFN3aXRjaERhdGEgewogICAgIGJv
b2wgZGlkVXNlSnVtcFRhYmxlOwogfTsKIAorc3RydWN0IEVudHJ5U3dpdGNoRGF0YSB7CisgICAg
RW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxCYXNpY0Js
b2NrKj4gYmxvY2tzOworfTsKKwogc3RydWN0IENhbGxWYXJhcmdzRGF0YSB7CiAgICAgaW50IGZp
cnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAgLTEyNzcsMTcgKzEyODUsMjMgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTd2l0
Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9w
KCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9CisKICAgICBi
b29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAg
IGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgor
ICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAg
Y2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTEzNDksNiAr
MTM2MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRjaCgpKTsKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0KKworICAgIEVudHJ5U3dp
dGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0VudHJ5
U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0Y2hEYXRhKj4o
KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpCiAgICAgewpAQCAt
MTM1OSw2ICsxMzc5LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAg
IGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6
ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgICAgIHJldHVybiBl
bnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEzOTQsMTAgQEAgcHVibGlj
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNl
cy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRocm91Z2gu
YmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3aXRjaCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5kZXhdOworCiAgICAgICAg
IHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVt
cCgpKQpAQCAtMTUxOCw2ICsxNTQ0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEF0b21pY3NT
dG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0b21pY3NYb3I6
CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MzAs
NiArMTk1NywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVn
aXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRl
eCgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCgpID09IEV4dHJhY3RD
YXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAg
IH0KICAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVz
IHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhl
IHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykg
XAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4g
Ki9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAg
LTM4Niw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oSnVtcCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKFN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1h
Y3JvKEVudHJ5U3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUmV0dXJuLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKERpcmVjdFRhaWxDYWxsLCBOb2RlTXVzdEdl
bmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw2
MyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJu
IHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAg
aWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0
Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChq
aXRDb2RlKTsKKworICAgIERGRzo6Q2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnkgPSBq
aXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7
CisgICAgaWYgKCFjYXRjaE9TUkVudHJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhh
dmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50
ID0gMDsgYXJndW1lbnQgPCBjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7
ICsrYXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIodmlydHVhbFJl
Z2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3aXRjaCAo
Y2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNh
c2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2Vs
bCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGlmICghdmFs
dWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVzaDoKKyAgICAgICAgICAgIC8v
IFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4gVGhlcmVmb3JlLCBpdCdzIGFs
bG93ZWQgdG8gYmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
Rkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4gYXJndW1lbnQgaXMgdHJpdmlh
bGx5IGEgSlNWYWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZ
KCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIC8vIEZJWE1FOiBhc3NlcnQgdGhpcyBpcyBvcF9hZnRlcl9jYXRj
aC4gT09QUy4KKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVy
KHByb2ZpbGUubV9vcGVyYW5kKS5pc0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbaW5kZXhdID0gZXhlYy0+cihW
aXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpKS5qc1ZhbHVlKCk7CisgICAgICAgICsr
aW5kZXg7CisgICAgfSk7CisKKyAgICByZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NB
dE9mZnNldChjYXRjaE9TUkVudHJ5LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RW
YWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGlu
ZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlE
YXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaE9TUkVudHJ5RGF0YSB7Cisg
ICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVP
ZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2gu
IFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUg
YmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0
PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0
YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8g
cGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JF
bnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKwor
Ly8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBu
dWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnko
RXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQog
aW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNp
Z25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDE3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3Jp
Z2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5v
ZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
bV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAg
ICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAg
IC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0
J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1
bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+
YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1l
bnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0g
bm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9
CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNh
bGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDYgKzE0MCwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFy
Z2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAg
ICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG5lZWQgc29tZSB3b3JrIG9uY2Ugd2UgaGF2ZSBtdWx0
aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUgRlRMLgorICAgICAgICAvLyBhZGQgdGhlIGJ1ZyBudW1i
ZXIgaGVyZS4gT09QUy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9p
bnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0gbmV3
Um9vdDsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigpOwor
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBhcmd1
bWVudHMpOworCiAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAg
bV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw4ICsxMTgsOSBAQCB2b2lk
IGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGlmICh2bS0+Y2FsbEZyYW1l
Rm9yQ2F0Y2gpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCA9
PSBleGVjKTsKLSAgICAKKwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CisKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5q
aXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIw
MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKIFByZVBvc3ROdW1iZXJpbmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdy
YXBoKQogeworICAgIC8vIEZJWE1FOiB0aGlzIGxvb2tzIHVudXNlZCwgYnV0IEkgdGhpbmsgaXQn
cyBlYXN5IHRvIG1ha2UgaXQgd29yaworICAgIC8vIHcvIG11bHRpcGxlIHJvb3RzLiBWZXJpZnkg
aXQgZG9lcy4KICAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3JhcGgpOwogICAgIAog
ICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwx
NiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2Nr
LiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhh
dmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAg
ICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5m
aW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
YXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1l
dGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNb
YXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAg
IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNlIFRvTnVtYmVyOgog
ICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2Fs
OgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rp
b24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJh
bmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKICAg
ICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJz
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsx
MTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIERlY2lkZSB3
aGVyZSBQaGlzIGFyZSB0byBiZSBpbnNlcnRlZC4gVGhpcyBjcmVhdGVzIHRoZSBQaGkncyBidXQg
ZG9lc24ndCBpbnNlcnQgdGhlbQotICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3
aGVyZSB0byBpbnNlcnQgdGhlbSBiZWNhdXNlIFNTQUNhbGN1bGF0b3IgaXMgc3VjaCBhIGJyby4K
KyAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IGJhc2Vk
IG9uIHdoZXJlIFNTQUNhbGN1bGF0b3IgdGVsbHMgdXMgdG8uCiAgICAgICAgIG1fY2FsY3VsYXRv
ci5jb21wdXRlUGhpcygKICAgICAgICAgICAgIFsmXSAoU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUq
IHNzYVZhcmlhYmxlLCBCYXNpY0Jsb2NrKiBibG9jaykgLT4gTm9kZSogewogICAgICAgICAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX3ZhcmlhYmxlRm9yU1NBSW5kZXhb
c3NhVmFyaWFibGUtPmluZGV4KCldOwpAQCAtMzgxLDE4ICszODEsMjEgQEAgcHVibGljOgogICAg
ICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2st
PnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6
ZShtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CisKKyAgICAgICAgLy8gRklYTUU6
IGFkZCBidWcgaGVyZSBmb3Igc3VwcG9ydGluZyBjYXRjaCBpbiBGVEwuCisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1
dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dy
YXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMu
cmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1
bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBG
bHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBw
aW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2Rl
LT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRo
ZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAg
ICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhl
IGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDE0NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3
aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2Ug
VGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBl
ZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJ
bkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsNiArNTEsOCBAQAogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldh
dGNoZG9nLmgiCiAKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwNzks
NiArNjA4MSwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOiB7CisgICAgICAgIC8vbV9qaXQucHJvYmUoW10gKFByb2JlQ29udGV4dCopIHsKKyAg
ICAgICAgLy8gICAgZGF0YUxvZ0xuKCJFeHRyYWN0Q2F0Y2hMb2NhbCEiKTsKKyAgICAgICAgLy99
KTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG1faml0
LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlcilbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4
KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVs
cGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQo
dGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICNlbHNlIC8vIEVOQUJMRShG
VExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEF0UmV0dXJuOgpAQCAtNjA4Nyw2ICs2MTAzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJ
VCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAg
ICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBAIC02MTE1LDcgKzYxMzMsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tQ3Jl
YXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJy
YXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVu
ZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlm
IChtX2Jsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0KSB7CisgICAgICAgIC8vIEZJWE1FOiBMZXQncyBk
byB0aGlzIGF0IHRoZSBPU1IgZW50cnkgcG9pbnQgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyB3
ZSBkbyBpdCBlbHNld2hlcmUuCisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsK
KyAgICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAg
ICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRM
b2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFz
VmFsaWRDYWxsRnJhbWUoKTsKQEAgLTE3NzAsOCArMTc3OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAg
IG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVl
KTsKIAorICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsK
LSAgICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAg
ICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAg
ICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3Mg
Zm9yIHN1Y2ggYXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODczLDcgKzE4
ODIsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9v
c3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBpZiAo
YmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1faml0
LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAg
ICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZlY3Rv
cjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRGb3Jt
YXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7CisgICAg
ICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZsdXNo
Rm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5m
bHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgbWFrZSB0
aGlzIGEgZGVidWcgYXNzZXJ0LgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChm
bHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwg
fHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hl
ZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2Vk
QXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgqYmxvY2ss
IG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFy
Z3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0Lm5vdGlj
ZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtC
dWZmZXIpOwogICAgIH0KICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVh
ZHMuc2l6ZSgpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rh
dGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODAsNiArODAsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0
YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBGSVhNRTogCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTgsNiArMTAwLDcgQEAgcHJpdmF0
ZToKIAogYm9vbCBwZXJmb3JtU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uKEdyYXBoJiBn
cmFwaCkKIHsKKyAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0YXRpY0V4
ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQs
MTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3Ry
dWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ug
c2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRo
ZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4KTsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRo
aXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBhbiBlbnRyeXBvaW50LgorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7
CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47
CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbi5leGl0T0spOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0TG9jYWwgPSBp
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5C
bG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdldExvY2FsLCBvcmlnaW4sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjIw
MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBoLCBub2RlKSA9PSBFeGl0cyAmJiAhbm9k
ZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKLSAgICAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJl
dmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0
T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAg
ICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05v
ZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhKCFw
cmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAg
ICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdp
bi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9Ob2RlKiBwcmV2aW91c05vZGUgPSBi
bG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAg
ICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICFj
bG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCisgICAgICAgICAgICAgICAg
ICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8
IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwor
ICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAg
ICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICEoIXByZXZpb3VzTm9kZS0+b3Jp
Z2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQorICAgICAgICAgICAgICAgICAgICAv
LyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8
fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUo
KS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw4ICsyNjYsOSBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9v
cmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwor
ICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2Rl
KiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBhcmd1bWVudHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpOwogICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShy
ZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVu
dHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVG
SU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAg
ICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVh
dGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0
cnVjdGlvbiopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50
LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWks
IHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihT
X0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3Rl
cklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYg
KzU3OSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJh
dGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1
cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NTMsNiArODUzLDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0
aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwogdm9p
ZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZv
aWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5w
b2ludGVyKTsKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGJ1ZmZl
ci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAg
ICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsK
KyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JF
bnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gZG9uZSA9IGJyYW5jaFRl
c3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMo
KTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAg
Ly8gRklYTUU6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNyw2ICsxNTE3LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7IC8vIEZJ
WE1FOiBjYW50aGlzIGV2ZXIgYmUgbnVsbD8gT3IganVzdCBpdCByZXR1cm4gaXRzZWxmPworICAg
IGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+
KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5
dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5
VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04g
KlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9u
X0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRf
T1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMy
X3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShF
eGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElP
TiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNs
b3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSko
RXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BF
UkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlw
ZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNT
dGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhF
eGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3Rh
dGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwog
I2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDIwIEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVy
KTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIC8vZGF0YUxvZ0xuKCJQcm9maWxpbmcgcmVnICIsIFZpcnR1YWxSZWdp
c3Rlcihwcm9maWxlLm1fb3BlcmFuZCksICIgOiAiLCBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUu
bV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFu
ZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKyAgICAvL2RhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVl
IHByb2ZpbGUhIik7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90
b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9w
Q2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5k
X25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJl
dHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxG
cmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIq
KSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtp
bmcgY29weSkKQEAgLTE5NzgsNiArMTk3OCwxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0
Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gp
CisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317394</attachid>
            <date>2017-08-06 19:32:23 -0700</date>
            <delta_ts>2017-08-09 14:26:19 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>77477</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI4LDYgKzUyOCw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDQsMTAgKzgwNiwxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMiw2
ICs4NDAsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg4LDIy
ICsyNTE4LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCogbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzk2MSw2ICszOTYxLDEwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdp
c3QKICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0
aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKworICAgIGVtaXRPcGNvZGUob3BfYWZ0ZXJf
Y2F0Y2gpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJl
Z2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODM4LDYgKzE4MzksOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2Ug
Y29uZGl0aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEVu
dHJ5U3dpdGNoOgorICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBAIEJhc2ljQmxvY2s6OkJhc2ljQmxvY2soCiAgICAgOiBieXRlY29k
ZUJlZ2luKGJ5dGVjb2RlQmVnaW4pCiAgICAgLCBpbmRleChOb0Jsb2NrKQogICAgICwgaXNPU1JU
YXJnZXQoZmFsc2UpCisgICAgLCBpc0NhdGNoT1NSVGFyZ2V0KGZhbHNlKQogICAgICwgY2ZhSGFz
VmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFG
b3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3Ry
dWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9
IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBj
YXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dp
dGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxs
OgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFp
bENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgot
ICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rl
cm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJp
dHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHBy
b2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkg
YXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAg
ICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1
bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3
LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2Nr
SW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0
Y2hPU1JUYXJnZXQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxk
UmV2aXNpdDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjksNiArMzI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG9w
ZXJhbmQuaXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4
ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9sZFNp
emUgPSBtX2NvbnN0YW50cy5zaXplKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2h5IGlzIHRo
aXMgY2FjaGluZyBjb2RlIHNvdW5kPwogICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0g
b2xkU2l6ZSB8fCAhbV9jb25zdGFudHNbY29uc3RhbnRJbmRleF0pIHsKICAgICAgICAgICAgICAg
ICBjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jayA9ICptX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jazsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENvbnN0
YW50KG9wZXJhbmQub2Zmc2V0KCkpOwpAQCAtMTEzMCw3ICsxMTMxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQg
YnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3Mg
dGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Js
b2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0
aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3
aWxsIGJlCiAgICAgICAgIC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVl
ZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxv
Y2tzLCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAg
LTQwNzQsNyArNDA3NSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgLy8gdXMgdG8gdHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0
aGUgYWN0dWFsIGFyZ3VtZW50IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEg
dmFsdWUgd2Ugc2V0IGV4cGxpY2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3Jh
cGguYmxvY2soMCkgJiYgIWlubGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVj
dG9yPE5vZGUqLCA4PigpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOworICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5y
ZXNpemUobV9udW1Bcmd1bWVudHMpOworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1
bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBv
cF9lbnRlciBzbwogICAgICAgICAvLyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRPSyA9
IHRydWU7CkBAIC00MDg3LDcgKzQwOTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRB
cmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3Vt
ZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTUxNTAsNiArNTE1NSwxMTEgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNoOgog
ICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVyX2Nh
dGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2Ug
d29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAgICAgICAgLy8gT09QUy4g
QWRkIEZJWE1FIGFuZCBsaW5rIHRvIGJ1ZyBoZXJlLgorICAgICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAg
ICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251
bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJl
ZGljdGlvbnM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisK
KyAgICAgICAgICAgICAgICBib29sIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQm
IHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2VlIGlm
IHRoaXMgY292ZXJzIGFyZ3VtZW50cy4gV2UgbmVlZCBhcmd1bWVudCBwcm9maWxlcyBoZXJlLgor
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3Bl
cmFuZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBw
cm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNw
ZWNOb25lOworICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50
KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFsbCBhcmd1bWVudHMu
IE9PUFMuCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJh
bmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0Fy
ZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25z
LnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwg
d2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAg
ICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjb21w
aWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICAvLyBGSVhNRTogbWF5
YmUgd2Ugc2hvdWxkIGhhbmRsZSB0aGlzIGJpdCB3aGVuIGRvaW5nIE9TUiBlbnRyeS4gQnV0IHdl
IHNldCB0aGlzIHRvIG9wX2FmdGVyX2NhdGNoJ3MKKyAgICAgICAgICAgIC8vIGJ5dGVjb2RlIGlu
ZGV4LiBBbHRlcm5hdGl2ZWx5LCB3aGVuIGRvaW5nIE9TUiBlbnRyeSwgd2UgY291bGQgc2VhcmNo
IGZvciB0aGUgcHJldmlvdXMgYnl0ZWNvZGUgaW5kZXgKKyAgICAgICAgICAgIC8vIG9mIHRoZSBv
cF9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9j
dXJyZW50SW5kZXg7CisgICAgICAgICAgICAvLyBGSVhNRTogaXMgdGhpcyByaWdodD8KKyAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jay0+aXNDYXRjaE9TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBtX2dy
YXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxWaXJ0dWFsUmVnaXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7Cisg
ICAgICAgICAgICBsb2NhbHNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9z
aXplKTsgLy8gTm90ZTogVGhpcyB3aWxsIHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2Yg
bG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNhdXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRz
LgorCisgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0
byBleGl0IGhlcmUgc2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292
ZXJ5LgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAg
ICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkg
eworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHNlZSBpZiB0aGlzIGNvdmVycyBh
cmd1bWVudHMuIFdlIG5lZWQgYXJndW1lbnQgcHJvZmlsZXMgaGVyZS4KKyAgICAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAg
ICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5m
byhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxz
XSkpOworICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgbG9jYWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWly
KG9wZXJhbmQsIHZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAq
bV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICBtX2V4
aXRPSyA9IHRydWU7IC8vIFdlIGNhbiBub3cgZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIg
T1NSIGV4aXQgc3RhdGUgdG8gcmVjb3ZlciBhbnkgbGl2ZSBsb2NhbHMuCisKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdz
IHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlw
ZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9n
cmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJs
b2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+
JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJn
dW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0Zh
aWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZv
KHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJs
ZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExv
Y2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI0
OCwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlu
a2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJn
ZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhX
VEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2so
KTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDggKzYzMDgsOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElu
bGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAg
IGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFj
a0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJl
YWNoYWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDE0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogd2UgbmVl
ZCB0byBmYWtlIGEgcm9vdCB3aGVuIHdlIGhhdmUgbXVsdGlwbGUgZW50cnlwb2ludHMuCiAgICAg
Tm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY5LDggKzM2OSwxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0
QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENv
ZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0
ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRz
CiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90
aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAg
ICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGlt
ZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICAvLyBGSVhNRTogZ3JlcCBm
b3IgYWxsIHVzZXMgb2YgYmxvY2soMCkgYW5kIHBlcmhhcHMgYWxzbyBhZGQgbm90aW9uIG9mIGVu
dHJ5cG9pbnRzLgorICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFp
ci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBw
YWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUo
KTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0
QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Ogog
ICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9w
X2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoK
ICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2Ug
U3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNl
IEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2sp
OwogICAgICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7
CisgICAgICAgIGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3Vt
ZW50c1ZlY3Rvcik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sg
Y2xlYW4tdXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5u
dW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSnVtcDoKICAg
ICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgog
ICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWls
Q2FsbDoKQEAgLTE5Niw2ICsxOTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgIGNhc2UgSXNOb25FbXB0
eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENoZWNrVGll
clVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Z1bmN0
aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBK
dW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAg
ICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5
ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAg
ICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoK
KyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoK
ICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsK
ICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDExLDcgKzQxMSw4IEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKIAog
dm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIq
IHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1v
ZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9j
ayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRp
YywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCki
LCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAg
b3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2Nr
LT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2st
PmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIg
KE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaE9TUlRhcmdldCA/ICIgKENhdGNoIE9T
UiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2stPmV4ZWN1dGlvbkNvdW50ID09
IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRXhl
Y3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQsICJcbiIpOwogICAgIG91dC5w
cmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTUwMiw4ICs1MDMsMTAgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwogICAgIG91dC5wcmludCgiICBG
aXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7
IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3RhdGUsICI7IFJlZiBjb3VudCBz
dGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBpZiAobV9mb3JtID09IFNTQSkK
ICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6ICIsIGxpc3REdW1wKG1fYXJn
dW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAgICBvdXQucHJpbnQoIiAgQXJn
dW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIpOworICAgIGVsc2UgeworICAg
ICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJndW1lbnRzKQorICAgICAgICAg
ICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwgcGFpci5rZXktPmluZGV4LCAi
OiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAgfQogICAgIG91dC5wcmludCgi
XG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CkBAIC02NDAsOCArNjQz
LDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZvaWQgR3Jh
cGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAx
Nj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsKLSAgICBibG9jaygw
KS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6
IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFjaGFibGUgPSB0cnVl
OworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAgfQogICAgIHdoaWxl
ICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29y
a2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1
Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg1MCw3ICs4NTUsOSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJs
b2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxvY2tXb3Jr
bGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAvLyBGSVhN
RTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAgIGZvciAo
QmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0
LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xp
c3QucG9wKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NjMsNyArODcw
LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tM
aXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdv
cmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBpcyBy
ZWFsbHkgd2hhdCB3ZSB3YW50IGhlcmUuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50
IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAg
ICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAg
IHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKQEAg
LTE1MjcsNyArMTUzNiw4IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1l
dGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9hcmd1bWVudHNbYXJndW1lbnRdOwor
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWF5YmUgd2Ugc2hvdWxkIHNlYXJjaCBhbGwg
aGVyZT8gQWxzbywgdGhpcyBzZWVtcyB3cm9uZyBpbiBTU0EgaW4gdGhlIGZ1dHVyZS4KKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZmluZChibG9jaygwKSktPnZhbHVlW2FyZ3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFhcmd1bWVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9
IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMSw3ICs5MjEsOCBAQCBw
dWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJv
ZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1f
YmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAg
IFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwg
MTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96
ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBt
X2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDcgKzk1Nyw5IEBAIHB1YmxpYzoKICAgICAvLwogICAg
IC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9u
IHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVj
dG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICAvLworICAgIC8vIEZJWE1FOiBDb3VsZCBp
bmNvcnBvcmF0ZSB0aGlzIGludG8gbV9lbnRyeXBvaW50cyB2ZWN0b3IuCisgICAgSGFzaE1hcDxC
YXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHM7CiAg
ICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMg
dGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgogICAgIFZlY3Rv
cjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7CkBAIC05NjcsNiArOTcwLDcgQEAgcHVi
bGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+IG1fbmV3QXJy
YXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7CiAgICAgQmFn
PFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlTd2l0
Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9mZnNldERhdGE+
IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZzZXREYXRhPiBt
X211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
PiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkBAIC0xMDA5LDYgKzEwMTMsNyBAQCBwdWJs
aWM6CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0Rl
YnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRy
eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1
ZXNDYWNoZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw1NCArOTMsNTkgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8
Tm9kZUFicwogCiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91
bGRSZXZpc2l0ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAg
cm9vdC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFT
dHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50
cygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFy
KCk7Ci0KLSAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5t
X2Zvcm0gPT0gU1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9y
bWF0c1tpXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFw
aC5tX2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9p
bnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hv
dWxkUmV2aXNpdCA9IHRydWU7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBm
YWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAg
ICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0
dXJlc0FyZVdhdGNoZWQ7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJT
dGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7
ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkp
LmNsZWFyKCk7CisKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9n
cmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUp
CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVj
Qm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNo
ZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBE
RkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50
Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hlZElu
dDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUo
U3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVk
Qm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRU
eXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNo
ZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5
cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Rmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
aSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZv
cm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9m
TG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xl
YXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAg
fQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dy
YXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1i
ZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWls
LmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgIGlm
IChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAgICAgICAgICAv
LyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAgICAg
ICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFI
YXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNiArMzY5LDEzIEBAIGlubGluZSBib29sIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFz
aWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNo
YW5nZWQ7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDogeworICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA6IHRl
cm1pbmFsLT5lbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzKQorICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZShiYXNpY0Jsb2NrLCB0YXJnZXRCbG9jayk7CisgICAgICAgIHJldHVybiBjaGFuZ2Vk
OworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksMjIgQEAgcHVibGljOgogICAgICAgICAgICAgb3NyRW50cnksIG9z
ckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0
YUJ5dGVjb2RlSW5kZXgpOwogICAgIH0KKworICAgIENhdGNoT1NSRW50cnlEYXRhKiBjYXRjaE9T
UkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYSBiaW5hcnkgc2VhcmNoLgorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2F0Y2hPU1JFbnRyeS5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKGNhdGNoT1NSRW50cnlbaV0ubV9ieXRlY29kZUluZGV4ID09IGJ5dGVjb2Rl
SW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZjYXRjaE9TUkVudHJ5W2ldOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRD
YXRjaE9TUkVudHJ5KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2Rl
T2Zmc2V0LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAg
ICAgICAgY2F0Y2hPU1JFbnRyeS5hcHBlbmQoREZHOjpDYXRjaE9TUkVudHJ5RGF0YSB7IGJ5dGVj
b2RlSW5kZXgsIG1hY2hpbmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7
CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYg
ZXhpdCkKICAgICB7CkBAIC0xMzIsNiArMTQ4LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBD
b21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5
OworICAgIFZlY3RvcjxERkc6OkNhdGNoT1NSRW50cnlEYXRhPiBjYXRjaE9TUkVudHJ5OwogICAg
IFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERG
Rzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZh
cmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxODUsOCBA
QCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwog
ICAgIHVuc2lnbmVkIG9zckVudHJ5UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisK
KyAgICBNYWxsb2NQdHI8SlNWYWx1ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBF
TkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2
Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBN
YWxsb2NQdHI6Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVF
bnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZl
SklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1f
Z3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNh
dGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI6Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAo
Km1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9m
Q29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NywyMyBAQCB2b2lk
KiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBK
SVRDb21waWxlcjo6bm90aWNlQ2F0Y2hPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBK
SVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBWZWN0
b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQoreworICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNC
bG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5
IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hPU1JFbnRy
eShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFk
KSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30KKwogdm9pZCBKSVRDb21waWxlcjo6bm90
aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJs
b2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
YmFzaWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3Qg
YWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFu
YWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQp
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0g
bV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBs
aW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1fZXhw
ZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsK
ICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2Nv
bCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwMTQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NS
RW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZm
ZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBp
bGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYg
YXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSgpIHsg
cmV0dXJuIG1faml0Q29kZTsgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBp
c1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9k
ZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9y
ZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5m
aW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgpLnRv
QXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAg
ICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1h
bEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29s
IGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBu
b2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNb
bm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmlt
b3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3Ao
KSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCku
dG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAh
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRh
Lm9wZXJhbmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0TW9k
ZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlv
bjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2Ug
SW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxv
Y2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90Ogog
ICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMs
MTQgQEAgc3RydWN0IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwogfTsK
IAorc3RydWN0IEVudHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwogc3Ry
dWN0IENhbGxWYXJhcmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAg
LTEyNzcsMTcgKzEyODUsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFu
Y2g7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2go
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAor
ICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb3Ao
KSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9CisKICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2Fz
ZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNo
OgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAg
Y2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTEzNDksNiArMTM2MywxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChpc1N3aXRjaCgpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRj
aERhdGEqPigpOwogICAgIH0KKworICAgIEVudHJ5U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRh
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0VudHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0Y2hEYXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5z
aWduZWQgbnVtU3VjY2Vzc29ycygpCiAgICAgewpAQCAtMTM1OSw2ICsxMzc5LDggQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAg
ICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBF
bnRyeVN3aXRjaDoKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tz
LnNpemUoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICB9CkBAIC0xMzcyLDYgKzEzOTQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAg
cmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAg
ICAgICBpZiAoaXNFbnRyeVN3aXRjaCgpKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNo
RGF0YSgpLT5ibG9ja3NbaW5kZXhdOworCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAg
ICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ0LDcg
QEAgcHVibGljOgogICAgICAgICBjYXNlIEF0b21pY3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9t
aWNzU3ViOgogICAgICAgICBjYXNlIEF0b21pY3NYb3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MzAsNiArMTk1NywxMiBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0K
KworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNvbnN0CisgICAgeworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KICAgICAKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3Ig
T1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxv
Y2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAg
ICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8o
RXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVw
IGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVy
VXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM4Niw2ICszODcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSnVtcCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFN3
aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEVudHJ5U3dpdGNoLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oVGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAg
IG1hY3JvKERpcmVjdFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3Mp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZp
c2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw2MyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50
cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHBy
ZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRy
eVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2Rl
OjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0Q29k
ZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2RlKTsKKworICAgIERGRzo6Q2F0
Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnkgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0
YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaE9TUkVudHJ5
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0
byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0
eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaE9T
UkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1l
bnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3aXRjaCAoY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVu
dEZvcm1hdHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6Cisg
ICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENl
bGw6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVz
aGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBERkc6OkRlYWRGbHVzaDoKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50
IGlzIG5vdCBhbGl2ZS4gVGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQgdG8gYmUgYW55IHR5cGUuCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAg
ICAgICAgICAgLy8gQW4gYXJndW1lbnQgaXMgdHJpdmlhbGx5IGEgSlNWYWx1ZS4KKyAgICAgICAg
ICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNp
emVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVj
dXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5
Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVG
b3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIC8vIEZJ
WE1FOiBhc3NlcnQgdGhpcyBpcyBvcF9hZnRlcl9jYXRjaC4gT09QUy4KKyAgICBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5
dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
KyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5pc0xv
Y2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGppdENvZGUtPmNhdGNoT1NSRW50
cnlCdWZmZXIuZ2V0KClbaW5kZXhdID0gZXhlYy0+cihWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5t
X29wZXJhbmQpKS5qc1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICBy
ZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaE9TUkVudHJ5LT5t
X21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0Zs
dXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVj
dG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURh
dGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9
CiAKK3N0cnVjdCBDYXRjaE9TUkVudHJ5RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUlu
ZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRo
aXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMK
KyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0
Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307
CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVu
dHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBu
dWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxv
Y2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwg
d2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1w
IHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JF
bnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
dHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3Jp
Z2luOwogICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVl
OwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51
bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9
IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAg
IGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3
YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAg
ICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAg
ICAgICAgICAgb2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAg
ICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAg
ICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAg
IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9j
YWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpA
QCAtMTM5LDYgKzE0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJl
SGVhZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAg
ICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxs
IG5lZWQgc29tZSB3b3JrIG9uY2Ugd2UgaGF2ZSBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUg
RlRMLgorICAgICAgICAvLyBhZGQgdGhlIGJ1ZyBudW1iZXIgaGVyZS4gT09QUy4KKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAg
ICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0gbmV3Um9vdDsKKyAgICAgICAgbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBhcmd1bWVudHMpOworCiAgICAgICAgIG1fZ3Jh
cGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVC
bG9ja3MoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOCw4ICsxMTgsOSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0
ZSogZXhlYykKIAogICAgIGlmICh2bS0+Y2FsbEZyYW1lRm9yQ2F0Y2gpCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHZtLT5jYWxsRnJhbWVGb3JDYXRjaCA9PSBleGVjKTsKLSAgICAKKwogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisKICAgICBBU1NFUlQoY29k
ZUJsb2NrKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZH
SklUKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIFByZVBvc3ROdW1i
ZXJpbmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBoKQogeworICAgIC8vIEZJWE1FOiB0
aGlzIGxvb2tzIHVudXNlZCwgYnV0IEkgdGhpbmsgaXQncyBlYXN5IHRvIG1ha2UgaXQgd29yawor
ICAgIC8vIHcvIG11bHRpcGxlIHJvb3RzLiBWZXJpZnkgaXQgZG9lcy4KICAgICBtX21hcCA9IEJs
b2NrTWFwPE51bWJlcmluZz4oZ3JhcGgpOwogICAgIAogICAgIFBvc3RPcmRlckJsb2NrV29ya2xp
c3Qgd29ya2xpc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5t
X2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9y
IHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAg
ICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRl
ZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0g
bV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52
YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAg
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRp
Y3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MjAsNiArNzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFw
QnVja2V0OgogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50
OgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01H
ZXR0ZXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVh
cFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAg
Y2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToK
ICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIC8vIERlY2lkZSB3aGVyZSBQaGlzIGFyZSB0byBiZSBpbnNl
cnRlZC4gVGhpcyBjcmVhdGVzIHRoZSBQaGkncyBidXQgZG9lc24ndCBpbnNlcnQgdGhlbQotICAg
ICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgdGhlbSBiZWNh
dXNlIFNTQUNhbGN1bGF0b3IgaXMgc3VjaCBhIGJyby4KKyAgICAgICAgLy8geWV0LiBXZSB3aWxs
IGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNTQUNhbGN1bGF0b3Ig
dGVsbHMgdXMgdG8uCiAgICAgICAgIG1fY2FsY3VsYXRvci5jb21wdXRlUGhpcygKICAgICAgICAg
ICAgIFsmXSAoU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHNzYVZhcmlhYmxlLCBCYXNpY0Jsb2Nr
KiBibG9jaykgLT4gTm9kZSogewogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGUgPSBtX3ZhcmlhYmxlRm9yU1NBSW5kZXhbc3NhVmFyaWFibGUtPmluZGV4KCldOwpA
QCAtMzgxLDE4ICszODEsMjEgQEAgcHVibGljOgogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0
SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRzLnNp
emUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6
ZSgpOyBpLS07KSB7CisKKyAgICAgICAgLy8gRklYTUU6IGFkZCBidWcgaGVyZSBmb3Igc3VwcG9y
dGluZyBjYXRjaCBpbiBGVEwuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7Cisg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1l
bnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQo
YXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9y
bWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRz
W2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7
IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5l
Zml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsg
Ly8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVm
aXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3Jh
cGgubV9mb3JtID0gU1NBOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDE0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVt
cDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJl
Y3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
cmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUg
IlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwNzksNiArNjA4MSwyMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVh
azsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIC8vbV9q
aXQucHJvYmUoW10gKFByb2JlQ29udGV4dCopIHsKKyAgICAgICAgLy8gICAgZGF0YUxvZ0xuKCJF
eHRyYWN0Q2F0Y2hMb2NhbCEiKTsKKyAgICAgICAgLy99KTsKKworICAgICAgICBKU1ZhbHVlKiBw
dHIgPSAmc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRy
eUJ1ZmZlcilbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAg
ICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BS
KTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwg
dGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4Nyw2ICs2
MTAzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVw
c2lsb246CkBAIC02MTE1LDcgKzYxMzMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50
b21TcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBE
RkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3
Niw2ICsxNjc2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoT1NSVGFy
Z2V0KSB7CisgICAgICAgIC8vIEZJWE1FOiBMZXQncyBkbyB0aGlzIGF0IHRoZSBPU1IgZW50cnkg
cG9pbnQgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyB3ZSBkbyBpdCBlbHNld2hlcmUuCisgICAg
ICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgp
LnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAg
ICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1pdE1hdGVy
aWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwor
ICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQo
KSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKQEAgLTE3
NzAsOCArMTc3OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygK
ICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8mIGFyZ3VtZW50
cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2ppdC5ncmFw
aCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1f
aml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVu
dHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50
IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgogICAg
ICAgICAgICAgY29udGludWU7CkBAIC0xODczLDcgKzE4ODIsMjMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5k
ZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQp
IHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3Ig
PSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRG
b3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFy
Z3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3Vt
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0
QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgbWFrZSB0aGlzIGEgZGVidWcgYXNzZXJ0LgorICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50
MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hl
ZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRz
LnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
bV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRy
eUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JF
bnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOwogICAgIH0KICAgICBBU1NF
UlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjAxNDcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0
aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGSVhNRTog
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtOTgsNiArMTAwLDcgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uKEdyYXBoJiBncmFwaCkKIHsKKyAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBo
YXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlw
ZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5t
X2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhp
cyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3Vt
ZW50cyBhdCBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFw
aC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAg
Tm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVk
aWN0aW9uKCksIEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhp
dChtX2dyYXBoLCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAg
ICAgICAgICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlv
dXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBu
b2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9k
ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0
T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAg
ICAgICAgICAgLy9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAg
ICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9k
ZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBo
LCBwcmV2aW91c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmln
aW4uZXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhp
dE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9
IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZB
TElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAg
ICAgICAgIC8vICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmln
aW4uZXhpdE9LKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4
aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAh
PSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFz
U3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjAx
NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAg
ICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVP
cmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSkt
PnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1l
dGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAg
ICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsy
NzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklO
RV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChv
cF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNoKQorICAgICAg
ICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1
Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09Q
KG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRj
aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiopOwpAQCAtNzk1LDYgKzc5
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90LCBpbnQzMl90KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9F
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90KTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkksIEdQUlJlZywgVW5p
cXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwxMyBAQCBBTFdBWVNfSU5MSU5F
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWludDMyX3QgYXJnMSkKK3sK
KyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAg
ICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgc2l6ZV90IGFy
ZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMsNiArODUzLDEwIEBA
IHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0U3RvcmUo
dGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVy
X2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAy
MjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKElu
c3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBpZiAoc2hvdWxk
RW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVP
ZmZzZXQpOworICAgIGF1dG8gZG9uZSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVH
UFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJldHVyblZhbHVl
R1BSKTsKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgLy8gRklYTUU6IGFkZCBhIGppdCBmYXN0
IHBhdGggZm9yIHRoaXMuCit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIw
MTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUxNyw2ICsxNTE3LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRl
bGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVy
QXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2
bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7IC8vIEZJWE1FOiBjYW50aGlzIGV2ZXIgYmUgbnVs
bD8gT3IganVzdCBpdCByZXR1cm4gaXRzZWxmPworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVu
dC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50
cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2Vu
ZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjAxNDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3
IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hh
ciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJf
dCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlv
bl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklU
X09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMy
X3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShF
eGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09Q
RVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZv
Kik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9F
SnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVS
QVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk2
LDYgKzM5Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJO
QUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVj
U3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJf
dCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRl
ckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9w
dGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwMTQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYzOCw2ICsxNjM4LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9s
b2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIC8vZGF0YUxv
Z0xuKCJQcm9maWxpbmcgcmVnICIsIFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCks
ICIgOiAiLCBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOwor
ICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsK
KyAgICAvL2RhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVlIHByb2ZpbGUhIik7CisKKyAgICBMTElO
VF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3df
c3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkK
IHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDE0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVj
a19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9s
b2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3df
Y2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWZ0
ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3Rh
Y2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNp
ZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNr
X2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQkocmV2aXNpb24gMjIwMTQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NzgsNiArMTk3
OCwxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NhdGNo
X2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goMykKKworCiBf
bGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklU
Rm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317742</attachid>
            <date>2017-08-09 14:26:19 -0700</date>
            <delta_ts>2017-08-09 20:14:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>76970</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVt
cGVyLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEz
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6IHsKKyAgICAgICAgdW5zaWduZWQgbnVtTGl2ZVZhbHVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiYWZ0ZXJfY2F0Y2gi
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXUsICVwIiwgbnVtTGl2ZVZhbHVlcywgcG9pbnRlcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGlu
dCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdp
c3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1
bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoK
ICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNl
IG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9w
Y29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQ
RVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJD
YXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAgKzgwNywxNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9m
QXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDog
eworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAg
YnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMyw2
ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAg
IAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NB
bmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6IGFmdGVy
Q2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2NhbHMgPSBi
eXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0ZXJDYXRj
aEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5k
czsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVM
b2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQo
WyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMu
YXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVycygpOyAr
K2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJvZmlsZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxpdmVPcGVyYW5kcy5zaXplKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMtPm1fc2l6ZSA9PSBsaXZlT3Bl
cmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm9m
aWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJvZmlsZXMtPm1fYnVmZmVyW2ld
Lm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdldCgp
OworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDg0LDIy
ICsyNTE0LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWdu
ZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJl
ck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
ID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZp
ZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKLSAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CisK
KyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsK
ICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1w
bGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1
Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0
byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8
IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUtPm1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpCisgICAgICAgIHByb2Nlc3NQcm9m
aWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsKKworICAgIC8vIEZJWE1FOiBQZXJoYXBz
IGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpIHNvbWVob3cuCisgICAgLy8g
b3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUgb2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNp
bmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlmZmVyZW50IHRoaW5nLgorICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5
PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFy
cmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUg
OiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFs
dWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0K
LSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExv
Z051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxl
KCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0
ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0Owog
fQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1f
cHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWdu
ZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBtYXliZSB3ZSBzaG91bGQgYWRkIGJ5dGVjb2RlIG9mZnNldCBoZXJlLiBCdXQgbWF5YmUgaXQn
cyB3b3J0aCBldmVuIHVzaW5nIGEgZGlmZmVyZW50CisgICAgICAgIC8vIGtpbmQgb2YgdmFsdWUg
cHJvZmlsZXIgaGVyZS4KKyAgICAgICAgbV9idWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKj4oZmFzdE1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCkpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXJbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlcltpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgICAgICBmYXN0RnJl
ZShtX2J1ZmZlcik7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCogbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzk2MSw2ICszOTYxLDEwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdp
c3QKICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0
aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKworICAgIGVtaXRPcGNvZGUob3BfYWZ0ZXJf
Y2F0Y2gpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJl
Z2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODM4LDYgKzE4MzksOSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2Ug
Y29uZGl0aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEVu
dHJ5U3dpdGNoOgorICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBAIEJhc2ljQmxvY2s6OkJhc2ljQmxvY2soCiAgICAgOiBieXRlY29k
ZUJlZ2luKGJ5dGVjb2RlQmVnaW4pCiAgICAgLCBpbmRleChOb0Jsb2NrKQogICAgICwgaXNPU1JU
YXJnZXQoZmFsc2UpCisgICAgLCBpc0NhdGNoT1NSVGFyZ2V0KGZhbHNlKQogICAgICwgY2ZhSGFz
VmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFG
b3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3Ry
dWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9
IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBj
YXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dp
dGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxs
OgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFp
bENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgot
ICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rl
cm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJp
dHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHBy
b2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkg
YXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAg
ICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1
bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3
LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2Nr
SW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0
Y2hPU1JUYXJnZXQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxk
UmV2aXNpdDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjksNiArMzI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG9w
ZXJhbmQuaXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBjb25zdGFudEluZGV4
ID0gb3BlcmFuZC50b0NvbnN0YW50SW5kZXgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9sZFNp
emUgPSBtX2NvbnN0YW50cy5zaXplKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2h5IGlzIHRo
aXMgY2FjaGluZyBjb2RlIHNvdW5kPwogICAgICAgICAgICAgaWYgKGNvbnN0YW50SW5kZXggPj0g
b2xkU2l6ZSB8fCAhbV9jb25zdGFudHNbY29uc3RhbnRJbmRleF0pIHsKICAgICAgICAgICAgICAg
ICBjb25zdCBDb2RlQmxvY2smIGNvZGVCbG9jayA9ICptX2lubGluZVN0YWNrVG9wLT5tX2NvZGVC
bG9jazsKICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY29kZUJsb2NrLmdldENvbnN0
YW50KG9wZXJhbmQub2Zmc2V0KCkpOwpAQCAtMTEzMCw3ICsxMTMxLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQg
YnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3Mg
dGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Js
b2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0
aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3
aWxsIGJlCiAgICAgICAgIC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVl
ZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxv
Y2tzLCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAg
LTQwNzQsNyArNDA3NSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgLy8gdXMgdG8gdHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0
aGUgYWN0dWFsIGFyZ3VtZW50IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEg
dmFsdWUgd2Ugc2V0IGV4cGxpY2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3Jh
cGguYmxvY2soMCkgJiYgIWlubGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVj
dG9yPE5vZGUqLCA4PigpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOworICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0g
YWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5y
ZXNpemUobV9udW1Bcmd1bWVudHMpOworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1
bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBv
cF9lbnRlciBzbwogICAgICAgICAvLyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRPSyA9
IHRydWU7CkBAIC00MDg3LDcgKzQwOTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRB
cmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3Vt
ZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTUxNTAsNiArNTE1NSwxMTEgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNoOgog
ICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVyX2Nh
dGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2Ug
d29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAgICAgICAgLy8gT09QUy4g
QWRkIEZJWE1FIGFuZCBsaW5rIHRvIGJ1ZyBoZXJlLgorICAgICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAg
ICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251
bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJl
ZGljdGlvbnM7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisK
KyAgICAgICAgICAgICAgICBib29sIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQm
IHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc2VlIGlm
IHRoaXMgY292ZXJzIGFyZ3VtZW50cy4gV2UgbmVlZCBhcmd1bWVudCBwcm9maWxlcyBoZXJlLgor
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3Bl
cmFuZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBw
cm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNw
ZWNOb25lOworICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50
KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBzb21lIHdheSB0byBhc3NlcnQgd2Ugc2VlIGFsbCBhcmd1bWVudHMu
IE9PUFMuCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJh
bmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0Fy
ZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25z
LnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwg
d2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAg
ICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjb21w
aWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICAvLyBGSVhNRTogbWF5
YmUgd2Ugc2hvdWxkIGhhbmRsZSB0aGlzIGJpdCB3aGVuIGRvaW5nIE9TUiBlbnRyeS4gQnV0IHdl
IHNldCB0aGlzIHRvIG9wX2FmdGVyX2NhdGNoJ3MKKyAgICAgICAgICAgIC8vIGJ5dGVjb2RlIGlu
ZGV4LiBBbHRlcm5hdGl2ZWx5LCB3aGVuIGRvaW5nIE9TUiBlbnRyeSwgd2UgY291bGQgc2VhcmNo
IGZvciB0aGUgcHJldmlvdXMgYnl0ZWNvZGUgaW5kZXgKKyAgICAgICAgICAgIC8vIG9mIHRoZSBv
cF9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9j
dXJyZW50SW5kZXg7CisgICAgICAgICAgICAvLyBGSVhNRTogaXMgdGhpcyByaWdodD8KKyAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBt
X2N1cnJlbnRCbG9jay0+aXNDYXRjaE9TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBtX2dy
YXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxWaXJ0dWFsUmVnaXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7Cisg
ICAgICAgICAgICBsb2NhbHNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9z
aXplKTsgLy8gTm90ZTogVGhpcyB3aWxsIHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2Yg
bG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNhdXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRz
LgorCisgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0
byBleGl0IGhlcmUgc2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292
ZXJ5LgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAg
ICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkg
eworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHNlZSBpZiB0aGlzIGNvdmVycyBh
cmd1bWVudHMuIFdlIG5lZWQgYXJndW1lbnQgcHJvZmlsZXMgaGVyZS4KKyAgICAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAg
ICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAg
ICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5m
byhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxz
XSkpOworICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAg
YWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgbG9jYWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWly
KG9wZXJhbmQsIHZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAq
bV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICBtX2V4
aXRPSyA9IHRydWU7IC8vIFdlIGNhbiBub3cgZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIg
T1NSIGV4aXQgc3RhdGUgdG8gcmVjb3ZlciBhbnkgbGl2ZSBsb2NhbHMuCisKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdz
IHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlw
ZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9n
cmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJs
b2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+
JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJn
dW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAg
ICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0Zh
aWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZv
KHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJs
ZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExv
Y2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI0
OCwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlu
a2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJn
ZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhX
VEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2so
KTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDggKzYzMDgsOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElu
bGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAg
IGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFj
a0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJl
YWNoYWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogd2UgbmVl
ZCB0byBmYWtlIGEgcm9vdCB3aGVuIHdlIGhhdmUgbXVsdGlwbGUgZW50cnlwb2ludHMuCiAgICAg
Tm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY5LDggKzM2OSwxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0
QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENv
ZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0
ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRz
CiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90
aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAg
ICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGlt
ZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICAvLyBGSVhNRTogZ3JlcCBm
b3IgYWxsIHVzZXMgb2YgYmxvY2soMCkgYW5kIHBlcmhhcHMgYWxzbyBhZGQgbm90aW9uIG9mIGVu
dHJ5cG9pbnRzLgorICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFp
ci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBw
YWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUo
KTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0
QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAg
ICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5
TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Ogog
ICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9w
X2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoK
ICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2Ug
U3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNl
IEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2sp
OwogICAgICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7
CisgICAgICAgIGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3Vt
ZW50c1ZlY3Rvcik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sg
Y2xlYW4tdXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5u
dW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSnVtcDoKICAg
ICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgog
ICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWls
Q2FsbDoKQEAgLTE5Niw2ICsxOTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgIGNhc2UgSXNOb25FbXB0
eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENoZWNrVGll
clVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Z1bmN0
aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBK
dW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAg
ICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5
ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAg
ICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoK
KyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoK
ICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsK
ICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDExLDcgKzQxMSw4IEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKIAog
dm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIq
IHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1v
ZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9j
ayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRp
YywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCki
LCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAg
b3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2Nr
LT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2st
PmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIg
KE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaE9TUlRhcmdldCA/ICIgKENhdGNoIE9T
UiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2stPmV4ZWN1dGlvbkNvdW50ID09
IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRXhl
Y3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQsICJcbiIpOwogICAgIG91dC5w
cmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTUwMiw4ICs1MDMsMTAgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwogICAgIG91dC5wcmludCgiICBG
aXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7
IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3RhdGUsICI7IFJlZiBjb3VudCBz
dGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBpZiAobV9mb3JtID09IFNTQSkK
ICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6ICIsIGxpc3REdW1wKG1fYXJn
dW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAgICBvdXQucHJpbnQoIiAgQXJn
dW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIpOworICAgIGVsc2UgeworICAg
ICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJndW1lbnRzKQorICAgICAgICAg
ICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwgcGFpci5rZXktPmluZGV4LCAi
OiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAgfQogICAgIG91dC5wcmludCgi
XG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CkBAIC02NDAsOCArNjQz
LDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZvaWQgR3Jh
cGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAx
Nj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsKLSAgICBibG9jaygw
KS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6
IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFjaGFibGUgPSB0cnVl
OworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAgfQogICAgIHdoaWxl
ICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29y
a2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1
Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg1MCw3ICs4NTUsOSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJs
b2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxvY2tXb3Jr
bGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICAvLyBGSVhN
RTogTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IHdoYXQgd2Ugd2FudCBoZXJlLgorICAgIGZvciAo
QmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0
LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xp
c3QucG9wKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NjMsNyArODcw
LDkgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tM
aXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdv
cmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIC8vIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBpcyBy
ZWFsbHkgd2hhdCB3ZSB3YW50IGhlcmUuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50
IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAg
ICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAg
IHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKQEAg
LTE1MjcsNyArMTUzNiw4IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1l
dGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9hcmd1bWVudHNbYXJndW1lbnRdOwor
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWF5YmUgd2Ugc2hvdWxkIHNlYXJjaCBhbGwg
aGVyZT8gQWxzbywgdGhpcyBzZWVtcyB3cm9uZyBpbiBTU0EgaW4gdGhlIGZ1dHVyZS4KKyAgICAg
ICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZmluZChibG9jaygwKSktPnZhbHVlW2FyZ3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFhcmd1bWVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9
IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMSw3ICs5MjEsOCBAQCBw
dWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJv
ZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1f
YmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAg
IFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwg
MTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96
ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBt
X2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDcgKzk1Nyw5IEBAIHB1YmxpYzoKICAgICAvLwogICAg
IC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9u
IHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVj
dG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICAvLworICAgIC8vIEZJWE1FOiBDb3VsZCBp
bmNvcnBvcmF0ZSB0aGlzIGludG8gbV9lbnRyeXBvaW50cyB2ZWN0b3IuCisgICAgSGFzaE1hcDxC
YXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHM7CiAg
ICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMg
dGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgogICAgIFZlY3Rv
cjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7CkBAIC05NjcsNiArOTcwLDcgQEAgcHVi
bGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+IG1fbmV3QXJy
YXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7CiAgICAgQmFn
PFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlTd2l0
Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9mZnNldERhdGE+
IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZzZXREYXRhPiBt
X211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
PiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkBAIC0xMDA5LDYgKzEwMTMsNyBAQCBwdWJs
aWM6CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0Rl
YnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRy
eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1
ZXNDYWNoZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw1NCArOTMsNTkgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8
Tm9kZUFicwogCiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91
bGRSZXZpc2l0ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAg
cm9vdC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFT
dHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50
cygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFy
KCk7Ci0KLSAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5t
X2Zvcm0gPT0gU1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9y
bWF0c1tpXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFw
aC5tX2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9p
bnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hv
dWxkUmV2aXNpdCA9IHRydWU7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBm
YWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAg
ICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0
dXJlc0FyZVdhdGNoZWQ7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJT
dGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7
ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkp
LmNsZWFyKCk7CisKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9n
cmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUp
CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVj
Qm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNo
ZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBE
RkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50
Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hlZElu
dDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUo
U3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVk
Qm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRU
eXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNo
ZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5
cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Rmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
aSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZv
cm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
fQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9m
TG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xl
YXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAg
fQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dy
YXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1i
ZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWls
LmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgIGlm
IChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAgICAgICAgICAv
LyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAgICAg
ICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFI
YXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNiArMzY5LDEzIEBAIGlubGluZSBib29sIEluUGxh
Y2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFz
aWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNo
YW5nZWQ7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDogeworICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA6IHRl
cm1pbmFsLT5lbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzKQorICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZShiYXNpY0Jsb2NrLCB0YXJnZXRCbG9jayk7CisgICAgICAgIHJldHVybiBjaGFuZ2Vk
OworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNjksNiArNjksMjIgQEAgcHVibGljOgogICAgICAgICAgICAgb3NyRW50cnksIG9z
ckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0
YUJ5dGVjb2RlSW5kZXgpOwogICAgIH0KKworICAgIENhdGNoT1NSRW50cnlEYXRhKiBjYXRjaE9T
UkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgYSBiaW5hcnkgc2VhcmNoLgorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2F0Y2hPU1JFbnRyeS5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKGNhdGNoT1NSRW50cnlbaV0ubV9ieXRlY29kZUluZGV4ID09IGJ5dGVjb2Rl
SW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZjYXRjaE9TUkVudHJ5W2ldOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRD
YXRjaE9TUkVudHJ5KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2Rl
T2Zmc2V0LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAg
ICAgICAgY2F0Y2hPU1JFbnRyeS5hcHBlbmQoREZHOjpDYXRjaE9TUkVudHJ5RGF0YSB7IGJ5dGVj
b2RlSW5kZXgsIG1hY2hpbmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7
CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYg
ZXhpdCkKICAgICB7CkBAIC0xMzIsNiArMTQ4LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBD
b21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5
OworICAgIFZlY3RvcjxERkc6OkNhdGNoT1NSRW50cnlEYXRhPiBjYXRjaE9TUkVudHJ5OwogICAg
IFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERG
Rzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZh
cmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxODUsOCBA
QCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwog
ICAgIHVuc2lnbmVkIG9zckVudHJ5UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisK
KyAgICBNYWxsb2NQdHI8SlNWYWx1ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBF
TkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2
Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBK
SVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBN
YWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAg
IGNvbXBpbGVFbnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNw
ZWN1bGF0aXZlSklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7Cisg
ICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2pp
dENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhz
aXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7
CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEs
MTQgKzU1NywyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9
CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hPU1JFbnRyeShCYXNpY0Js
b2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVy
JiBsaW5rQnVmZmVyLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKGJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBB
biBlbnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+
YXBwZW5kQ2F0Y2hPU1JFbnRyeShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIu
b2Zmc2V0T2YoYmxvY2tIZWFkKSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30KKwogdm9p
ZCBKSVRDb21waWxlcjo6bm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghYmFzaWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0KTsKKwogICAgIC8v
IE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUg
YnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rp
b25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JF
bnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9j
ay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAor
CiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9m
UGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1
ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3Rl
ZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBi
bG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoT1NSRW50cnkoQmFz
aWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImLCBWZWN0
b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQdHI8SklU
Q29kZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRj
aFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7
IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAg
ICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dy
YXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAg
ICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3Vt
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0
ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1
ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5s
aW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1h
bEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgogICAg
ICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUo
KTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAg
ICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1f
Z3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJn
dW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZh
bHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJy
ZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDEx
ICs3OCwxMyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAg
Y2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6Cisg
ICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRG91
YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAg
Y2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1
Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwMyw2ICsyMDMsMTQgQEAgc3RydWN0IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlk
VXNlSnVtcFRhYmxlOwogfTsKIAorc3RydWN0IEVudHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlT
d2l0Y2hEYXRhKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4g
YmxvY2tzOworfTsKKwogc3RydWN0IENhbGxWYXJhcmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFy
QXJnT2Zmc2V0OwogfTsKQEAgLTEyNzcsMTcgKzEyODUsMjMgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTd2l0Y2goKQor
ICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
U3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9CisKICAgICBib29sIGlz
VGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2Ug
SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgorICAgICAg
ICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBU
YWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTEzNDksNiArMTM2Mywx
MiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRjaCgpKTsKICAgICAgICAgcmV0dXJu
IG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0KKworICAgIEVudHJ5U3dpdGNoRGF0
YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0VudHJ5U3dpdGNo
KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0Y2hEYXRhKj4oKTsKKyAg
ICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpCiAgICAgewpAQCAtMTM1OSw2
ICsxMzc5LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgIGNhc2Ug
U3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpICsg
MTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3
aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEzOTQsMTAgQEAgcHVibGljOgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7
CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3aXRjaCgpKQorICAgICAgICAgICAg
cmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5kZXhdOworCiAgICAgICAgIHN3aXRj
aCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQpA
QCAtMTUxOCw2ICsxNTQ0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEF0b21pY3NTdG9yZToK
ICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0b21pY3NYb3I6CisgICAg
ICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MzAsNiArMTk1
NywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIu
aXNWYWxpZCgpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNv
bnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExv
Y2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KICAg
ICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8q
IFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQg
d2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0
Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3Vs
dEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAg
IFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAg
ICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM4Niw2
ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSnVt
cCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKFN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEVu
dHJ5U3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
SGFzVmFyQXJncykgXAogICAgIG1hY3JvKERpcmVjdFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUhhc1ZhckFyZ3MpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw2MyBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0
Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmpp
dFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2Rl
KTsKKworICAgIERGRzo6Q2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnkgPSBqaXRDb2Rl
LT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAg
aWYgKCFjYXRjaE9TUkVudHJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFdl
J3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29t
cGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7ICsrYXJn
dW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3aXRjaCAoY2F0Y2hP
U1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNhc2UgREZH
OjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNC
b29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVzaDoKKyAgICAgICAgICAgIC8vIFRoaXMg
bWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4gVGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQg
dG8gYmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZs
dXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4gYXJndW1lbnQgaXMgdHJpdmlhbGx5IGEg
SlNWYWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJl
Z2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5l
bnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIC8vIEZJWE1FOiBhc3NlcnQgdGhpcyBpcyBvcF9hZnRlcl9jYXRjaC4gT09Q
Uy4KKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2Zp
bGUubV9vcGVyYW5kKS5pc0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGpp
dENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbaW5kZXhdID0gZXhlYy0+cihWaXJ0dWFs
UmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpKS5qc1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7
CisgICAgfSk7CisKKyAgICByZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNl
dChjYXRjaE9TUkVudHJ5LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5o
IgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNp
bmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNp
Z25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5t
X2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaE9TUkVudHJ5RGF0YSB7CisgICAgdW5z
aWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7
CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHBy
b3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3Jl
IGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2Fy
Z3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZm
ZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2Uu
IElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYg
bnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBp
dCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0
YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5l
IHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkg
eyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDE3IEBAIHB1
YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0g
dGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4
PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFw
aC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3Vt
ZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAg
ICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3Vt
ZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1
c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90
IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1th
cmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5k
Tm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9y
aWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsK
KyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAg
ICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxv
Y2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDYgKzE0MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkp
OwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIG5lZWQgc29tZSB3b3JrIG9uY2Ugd2UgaGF2ZSBtdWx0aXBsZSBl
bnRyeXBvaW50cyBpbiB0aGUgRlRMLgorICAgICAgICAvLyBhZGQgdGhlIGJ1ZyBudW1iZXIgaGVy
ZS4gT09QUy4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNp
emUoKSA9PSAxKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0gbmV3Um9vdDsK
KyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigpOworICAgICAg
ICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBhcmd1bWVudHMp
OworCiAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgbV9ncmFw
aC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9z
dE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBQcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVy
aW5nKEdyYXBoJiBncmFwaCkKIHsKKyAgICAvLyBGSVhNRTogdGhpcyBsb29rcyB1bnVzZWQsIGJ1
dCBJIHRoaW5rIGl0J3MgZWFzeSB0byBtYWtlIGl0IHdvcmsKKyAgICAvLyB3LyBtdWx0aXBsZSBy
b290cy4gVmVyaWZ5IGl0IGRvZXMuCiAgICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdy
YXBoKTsKICAgICAKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSwxMiArNTEsMTYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gV2Ugb25seSBkbyB0aGlzIGZvciB0aGUgYXJndW1lbnRzIGF0IHRo
ZSBmaXJzdCBibG9jay4gVGhlIGFyZ3VtZW50cyBmcm9tCisgICAgICAgICAgICAvLyBvdGhlciBl
bnRyeXBvaW50cyBoYXZlIGFscmVhZHkgYmVlbiBwb3B1bGF0ZWQgd2l0aCB0aGVpciBwcmVkaWN0
aW9ucy4KKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50
VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2Nr
KCktPm51bVBhcmFtZXRlcnMoKSk7ICsrYXJnKSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gcHJvZmlsZWRCbG9jaygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChh
cmcpOwogICAgICAgICAgICAgICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorCisgICAgICAgICAgICAg
ICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAg
ICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2Fz
ZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAg
ICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMTExLDYgKzExMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAg
ICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2Fz
ZSBTd2l0Y2g6CiAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgICAgIGNhc2UgUHJvZmls
ZUNvbnRyb2xGbG93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252
ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0
aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3aWxs
IGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlz
IHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRv
IGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAgICAg
ICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0
b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsK
ICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJpYWJs
ZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgxLDIxIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAg
ICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+
KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50
Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisgICAg
ICAgIC8vIEZJWE1FOiBhZGQgYnVnIGhlcmUgZm9yIHN1cHBvcnRpbmcgY2F0Y2ggaW4gRlRMLgor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEp
OworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworICAgICAgICBtX2dyYXBoLm1fYXJn
dW1lbnRGb3JtYXRzLnJlc2l6ZShhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgRmx1c2hGb3Jt
YXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgICAg
ICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KGFyZ3VtZW50c1tpXSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUpOwogICAgICAgICAgICAg
Zm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1hdDsKLSAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQg
dGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGlu
Zy4KKyAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0
aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5n
LgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fZm9ybSA9IFNTQTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMwNyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6
CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVy
bjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0zMjMs
NiArMzI0LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBj
YXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIK
ICNpbmNsdWRlICJXYXRjaGRvZy5oIgogCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJQcmludGVy
LmgiCisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogI2lmIFVTRShKU1ZBTFVF
NjQpCkBAIC02MDc5LDYgKzYwODEsMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICBtX2ppdC5wcmludCgiRXh0cmFjdENhdGNo
TG9jYWwiKTsKKyAgICAgICAgLy9tX2ppdC5wcm9iZShbXSAoUHJvYmVDb250ZXh0KikgeworICAg
ICAgICAvLyAgICBkYXRhTG9nTG4oIkV4dHJhY3RDYXRjaExvY2FsISIpOworICAgICAgICAvL30p
OworCisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50
cnlCdWZmZXIuZ2V0KClbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigp
OworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0
ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1w
R1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4
Nyw2ICs2MTA0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBicmVhazsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorCisgICAgY2FzZSBF
bnRyeVN3aXRjaDoKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBj
YXNlIFVwc2lsb246CkBAIC02MTE1LDcgKzYxMzQsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNl
IFBoYW50b21TcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAg
ICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY3Niw2ICsxNjc2LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50
QmxvY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNo
T1NSVGFyZ2V0KSB7CisgICAgICAgIC8vIEZJWE1FOiBMZXQncyBkbyB0aGlzIGF0IHRoZSBPU1Ig
ZW50cnkgcG9pbnQgdG8gYmUgY29uc2lzdGVudCB3aXRoIGhvdyB3ZSBkbyBpdCBlbHNld2hlcmUu
CisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5n
cmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1p
dE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6
cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsK
QEAgLTE3NzAsOCArMTc3OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRU
eXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9kZU9y
aWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8mIGFy
Z3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2pp
dC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2pp
dC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9k
ZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBh
cmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFy
Z3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRz
LgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODczLDcgKzE4ODIsMjMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVu
dHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoYmxvY2stPmlzQ2F0Y2hPU1JU
YXJnZXQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNW
ZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJn
dW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUq
IHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNl
dEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0
ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogTWF5YmUgbWFrZSB0aGlzIGEgZGVidWcgYXNzZXJ0
LgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVz
aGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0g
Rmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRG
b3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgbV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tv
c3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywg
bV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOwogICAgIH0KICAg
ICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRF
c3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNv
dW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBG
SVhNRTogCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtOTgsNiArMTAwLDcgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3Jt
U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uKEdyYXBoJiBncmFwaCkKIHsKKyAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1h
dGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52
YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9p
bmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNl
dEFyZ3VtZW50cyBhdCBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxl
LT5wcmVkaWN0aW9uKCksIEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwx
OCArMTk1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEo
bWF5RXhpdChtX2dyYXBoLCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykp
OwogCiAgICAgICAgICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSog
cHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFM
SURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAg
ICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0
KTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdp
bi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAg
IHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2Rl
LT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAg
ICAgICAgICAgICAgICAgLy9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOwor
ICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAg
ICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZSht
X2dyYXBoLCBwcmV2aW91c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2Rl
LT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JF
eGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAg
ICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAg
ICAgICAgICAgICAgIC8vICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2Rl
LT5vcmlnaW4uZXhpdE9LKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgp
ID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9y
RXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9k
ZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2lu
KENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9j
aygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVt
UGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAg
ICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklO
RV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNoKQor
ICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9j
b25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVG
SU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZnRl
cl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiopOwpAQCAtNzk1
LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90LCBpbnQzMl90
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90KTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FQ0Ms
IFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkksIEdQUlJl
ZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwxMyBAQCBBTFdBWVNf
SU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGwo
b3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWludDMyX3QgYXJn
MSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEp
KTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgc2l6
ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMsNiArODUz
LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0
U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3Nl
cnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9j
YXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBpZiAo
c2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0
ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gZG9uZSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJu
VmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJldHVy
blZhbHVlR1BSKTsKKyAgICBkb25lLmxpbmsodGhpcyk7CisgICAgLy8gRklYTUU6IGFkZCBhIGpp
dCBmYXN0IHBhdGggZm9yIHRoaXMuCit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlw
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9j
aywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5j
b2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9T
UkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0g
ZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7IC8vIEZJWE1FOiBjYW50aGlzIGV2ZXIg
YmUgbnVsbD8gT3IganVzdCBpdCByZXR1cm4gaXRzZWxmPworICAgIGlmIChvcHRpbWl6ZWRSZXBs
YWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNo
T1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30K
KwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5k
ZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYg
KzMxNiw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVk
ZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwg
aW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9w
ZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFy
KiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUs
IGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAo
SklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExp
bmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJh
dGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJ
VF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpA
QCAtMzk2LDYgKzM5Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVj
U3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90
KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRj
aChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQz
Ml90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDIwIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIC8v
ZGF0YUxvZ0xuKCJQcm9maWxpbmcgcmVnICIsIFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3Bl
cmFuZCksICIgOiAiLCBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVl
KCkpOworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjpl
bmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAg
ICB9KTsKKyAgICAvL2RhdGFMb2dMbigiQ29tcGxldGVkIHZhbHVlIHByb2ZpbGUhIik7CisKKyAg
ICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9G
cmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tl
bl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhy
b3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5B
TDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5Nzcs
NiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9w
X2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29k
ZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goMykK
KworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRj
aFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317777</attachid>
            <date>2017-08-09 20:14:24 -0700</date>
            <delta_ts>2017-08-09 20:20:37 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>90829</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDIyICsyNTE0LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENv
ZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9u
c0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQ
cm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZl
Tm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2Zp
bGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNr
ZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFy
ZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQ
cm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJv
bUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHBy
b2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMg
dGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAg
bnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJv
ZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9m
U2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAg
ICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyAr
K2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsK
KworICAgIC8vIEZJWE1FOiBQZXJoYXBzIGhvb2sgaW50byB0b3RhbE51bWJlck9mVmFsdWVQcm9m
aWxlcygpIHNvbWVob3cuCisgICAgLy8gb3IgbWF5YmUgd2UganVzdCBuZWVkIGEgbmV3IHR5cGUg
b2YgdmFsdWUgcHJvZmlsZSBoZXJlIHNpbmNlCisgICAgLy8gdGhpcyBpcyBzb3J0IG9mIGEgZGlm
ZmVyZW50IHRoaW5nLgorICAgIGZvciAoYXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9m
aWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxl
QW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgcHJvY2Vzc1Byb2ZpbGUoJnByb2Zp
bGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CiAgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVz
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
cj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxl
LCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxl
VmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zm
c2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNl
dCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0K
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBp
bnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9m
aWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsK
Kworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkK
KyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1vcmUgc3R1ZmYgdGhh
biB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGUgb3VyIHZhbHVlIHByb2ZpbGVzCisgICAg
ICAgIC8vIHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0g
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9m
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5k
T3BlcmFuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAg
ICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1
ZmZlci5nZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxv
Y1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTYxLDYgKzM5NjEsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2F0Y2goUmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bj
b2RlKG9wX2FmdGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2Fs
U2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xODM4LDYgKzE4MzksOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0aW9uYWwgdGhpbmdz
LgogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBtX3N0YXRl
LnNldElzVmFsaWQoZmFsc2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
IEJhc2ljQmxvY2s6OkJhc2ljQmxvY2soCiAgICAgOiBieXRlY29kZUJlZ2luKGJ5dGVjb2RlQmVn
aW4pCiAgICAgLCBpbmRleChOb0Jsb2NrKQogICAgICwgaXNPU1JUYXJnZXQoZmFsc2UpCisgICAg
LCBpc0NhdGNoT1NSVGFyZ2V0KGZhbHNlKQogICAgICwgY2ZhSGFzVmlzaXRlZChmYWxzZSkKICAg
ICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxz
ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBS
ZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9IHNpemUoKTsKICAgICAgICAg
d2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAg
ICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dpdGNoOgotICAgICAgICAgICAg
Y2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsOgotICAgICAgICAgICAgY2Fz
ZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAg
ICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBV
bnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRh
aW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25l
IG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5k
IHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAgICAgICAgICAgICBjYXNlIENo
ZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAg
ICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3LDcgQEAgc3RydWN0IEJhc2lj
QmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2NrSW5kZXggaW5kZXg7CiAgICAg
CiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0Y2hPU1JUYXJnZXQ7CiAgICAg
Ym9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29s
IGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTMwLDcgKzExMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlu
a2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAg
ICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVC
ZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7
Ci0gICAgICAgIAorCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdh
cyBzcGxpdCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQg
b2YgdGhlIGNhbGxzaXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8g
dGhlCiAgICAgICAgIC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBh
cm91bmQ6IHRoZXJlJ3Mgbm8gd2F5IGZvcgpAQCAtNDA3NCw3ICs0MDc0LDExIEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAvLyB1cyB0byB0cmFjayBpZiBh
IHVzZSBvZiBhbiBhcmd1bWVudCBtYXkgdXNlIHRoZSBhY3R1YWwgYXJndW1lbnQgcGFzc2VkLCBh
cwogICAgIC8vIG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAg
ICBpZiAobV9jdXJyZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZy
YW1lKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVu
dHMpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1
bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIFZlY3RvcjxOb2Rl
KiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwor
ICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisKICAg
ICAgICAgLy8gV2Ugd2lsbCBlbWl0IFNldEFyZ3VtZW50IG5vZGVzLiBUaGV5IGRvbid0IGV4aXQs
IGJ1dCB3ZSdyZSBhdCB0aGUgdG9wIG9mIGFuIG9wX2VudGVyIHNvCiAgICAgICAgIC8vIGV4aXRP
SyA9IHRydWUuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTQwODcsNyArNDA5MSw3IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSog
c2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsK
LSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7
CisgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50
OwogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVu
dEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAt
NTE1MCw2ICs1MTU0LDExOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgICAgICAgICBtX2dyYXBoLm1faGFzRXhj
ZXB0aW9uSGFuZGxlcnMgPSB0cnVlOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gp
OworCisgICAgICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgICAgIGlmIChpbmxp
bmVDYWxsRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGRvIGFueXRoaW5n
IGhlcmUgZm9yIGlubGluZWQgZnJhbWVzLiBXZSB3b24ndCB0cmVhdCB0aGlzIGFzIGFuIGVudHJ5
cG9pbnQuCisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkp
IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0aGUgRlRMLgor
ICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9j
ay0+c2l6ZSgpKTsKKworICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworCisgICAgICAgICAgICBWZWN0b3I8U3BlY3Vs
YXRlZFR5cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworICAgICAgICAg
ICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBsb2NhbFByZWRpY3Rpb25zOworICAgICAgICAgICAg
SGFzaFNldDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IHNlZW5Bcmd1bWVudHM7CisKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIGJv
b2wgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnVmZmVy
LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7
CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxl
Lm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNwZWNOb25l
OworICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50KCkpIDwg
YXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlbkFy
Z3VtZW50cy5hZGQob3BlcmFuZC50b0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRQcmVkaWN0aW9uc1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9u
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKyth
cmd1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1
bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAoYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmJiAoYXJndW1lbnRQcmVkaWN0aW9u
cy5zaXplKCkgfHwgbG9jYWxQcmVkaWN0aW9ucy5zaXplKCkpKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHRoaXMgaXMgdGhlIGNhc2UsIHdlIGhhdmVuJ3QgZXhlY3V0ZWQgdGhpcyBjYXRj
aCB5ZXQuIExldCdzIG5vdCBjb21waWxlCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IGFzIGFu
IGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2Nh
dGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY29tcGlsaW5nIHRoaXMgYXMgYW4gZW50cnlwb2ludC4K
KworICAgICAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gc2VhcmNoaW5nIGZvciB3
aGVyZSB0byBPU1IgZW50ZXIsIHdlIGRvIGl0IHJlbGF0aXZlCisgICAgICAgICAgICAvLyB0byBv
cF9hZnRlcl9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2lu
ID0gbV9jdXJyZW50SW5kZXg7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBpcyB0aGlzIHJpZ2h0
PworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAg
ICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisgICAg
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNU
b1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYnVm
ZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51
bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBh
cmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBh
bGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cgdG8gZG8gdmFs
dWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscyA9IDA7Cisg
ICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBw
cm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmls
ZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQoKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFTU0VSVChvcGVy
YW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBhZGRUb0dyYXBo
KEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcEluZm8obG9jYWxQ
cmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICArK251bWJlck9m
TG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJbmZvKHByb2Zp
bGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnVuY2hl
Y2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkg
PSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBz
dGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KTsKKworICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAvLyBXZSBjYW4gbm93IGV4aXQg
YmVjYXVzZSB3ZSd2ZSBzZXQgdXAgb3VyIE9TUiBleGl0IHN0YXRlIHRvIHJlY292ZXIgYW55IGxp
dmUgbG9jYWxzLgorCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gU2V0IHVwIG91
ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBzYWZlIHRvIGV4aXQuIFRoaXMgaGFwcGVucyBoZXJl
IGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUgY2hlY2tzIHVwCisgICAgICAgICAgICAgICAgLy8g
dG8gdGhpcyBwb2ludCBpbiB0aGUgcHJvZ3JhbSwgc28gaXQgbXVzdCBiZSBzYWZlIHRvIGV4aXQu
CisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4PigpKTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAg
ICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5y
ZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJn
dW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpOyArK2FyZ3Vt
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUg
PSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1l
bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QoYXJndW1lbnRQcmVk
aWN0aW9uc1thcmd1bWVudF0pOworCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJn
ZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRDYWNoZSkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0Fy
cmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGlu
Z1R5cGUpKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRv
R3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOworICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFy
Z3VtZW50LCBzZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1
bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBsb2NhbHNUb1Nl
dCkKKyAgICAgICAgICAgICAgICBzZXRMb2NhbChjdXJyZW50Q29kZU9yaWdpbigpLCBwYWlyLmZp
cnN0LCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2Nh
dGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAg
ICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6
UmVndWxhcik7CkBAIC02MTM4LDggKzYyNTQsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Vu
bGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBl
bmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sg
aXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAoIW1f
Z3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1C
bG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBl
bmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAgICAg
ICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjE5Niw4
ICs2MzE0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAogICAg
IHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91
bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOwor
CiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxV
bnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
Ry5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
Ry5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCisgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11
bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxv
Y2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFy
Z3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwt
Y2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBl
cyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2Fz
ZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJ
UiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9w
X2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVy
X2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBF
eHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBA
IC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAg
ICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4
aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDgg
QEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAg
Ci0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBm
b3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3Ip
OwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgog
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFu
Y2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJl
dHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0x
OTYsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6
CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoK
ICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAg
ICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2Ug
VGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51
bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZs
dXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5o
IgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1i
ZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVk
ZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVE
dW1wLmgiCkBAIC00MTEsNyArNDEwLDggQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQo
KQogCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
Y2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBNb2RlIHBoaU5vZGVE
dW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnByaW50KHByZWZpeCwg
IkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNl
bWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lw
cGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsK
KyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQo
YmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLAorICAgICAgICBi
bG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0
ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0ID8gIiAoQ2F0
Y2ggT1NSIHRhcmdldCkiIDogIiIsICJcbiIpOwogICAgIGlmIChibG9jay0+ZXhlY3V0aW9uQ291
bnQgPT0gYmxvY2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBFeGVjdXRpb24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3VudCwgIlxuIik7CiAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAtNDIyLDggKzQyMiw2IEBA
IHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICBpZiAoYmxvY2st
PnRlcm1pbmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9j
ay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqc3VjY2Vzc29y
KTsKLSAgICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgICAgICAgICAg
b3V0LnByaW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+ZWRnZUtpbmQoYmxvY2ssIHN1Y2Nl
c3NvciksICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgb3V0LnByaW50KCIg
PGludmFsaWQ+Iik7CkBAIC00NDYsOCArNDQ0LDYgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVh
ZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAg
ICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAiLCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJl
cihibG9jayksICIvIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxu
Iik7CiAgICAgaWYgKG1fbmF0dXJhbExvb3BzKSB7CiAgICAgICAgIGlmIChjb25zdCBOYXR1cmFs
TG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKICAgICAgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKQEAgLTUw
Miw4ICs0OTgsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwog
ICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBG
b3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3Rh
dGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBp
ZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6
ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAg
ICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIp
OworICAgIGVsc2UgeworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJn
dW1lbnRzKQorICAgICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwg
cGFpci5rZXktPmluZGV4LCAiOiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAg
fQogICAgIG91dC5wcmludCgiXG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxw
dHI7CkBAIC02NDAsOCArNjM4LDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0
b3I8QmFzaWMKIHZvaWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVj
dG9yPEJhc2ljQmxvY2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2Nr
KDApKTsKLSAgICBibG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNC
bG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+
aXNSZWFjaGFibGUgPSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7
CisgICAgfQogICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2lj
QmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTgwMCw3ICs4MDAsNiBAQCB2
b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKICAgICBtX2RvbWluYXRvcnMgPSBudWxscHRy
OwogICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJpbmcg
PSBudWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwog
ICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcg
PSBudWxscHRyOwpAQCAtODUwLDcgKzg0OSw5IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Q
cmVPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0IHdv
cmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIC8vIEZJWE1FOiBNYWtl
IHN1cmUgdGhpcyBpcyByZWFsbHkgd2hhdCB3ZSB3YW50IGhlcmUuCisgICAgZm9yIChCYXNpY0Js
b2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChl
bnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3Ao
KSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg2Myw3ICs4NjQsOSBAQCBC
bG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVz
dWx0OwogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3Qu
cHVzaChibG9jaygwKSk7CisgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSB0aGlzIGlzIHJlYWxseSB3
aGF0IHdlIHdhbnQgaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNo
IChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtMTQ3OSwx
MyArMTQ4Miw2IEBAIERvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVEb21pbmF0b3JzKCkKICAgICBy
ZXR1cm4gKm1fZG9taW5hdG9yczsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3Vy
ZVByZVBvc3ROdW1iZXJpbmcoKQotewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAg
ICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJp
bmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKLX0KLQogTmF0dXJh
bExvb3BzJiBHcmFwaDo6ZW5zdXJlTmF0dXJhbExvb3BzKCkKIHsKICAgICBlbnN1cmVEb21pbmF0
b3JzKCk7CkBAIC0xNTI3LDcgKzE1MjMsOCBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+bG9jYWwoKS5pc0Fy
Z3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCk7
Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fYXJndW1lbnRzW2Fy
Z3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1heWJlIHdlIHNob3VsZCBz
ZWFyY2ggYWxsIGhlcmU/IEFsc28sIHRoaXMgc2VlbXMgd3JvbmcgaW4gU1NBIGluIHRoZSBmdXR1
cmUuIE9PUFMuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
OSw3ICs1OSw2IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogY2xhc3MgRG9t
aW5hdG9yczsKIGNsYXNzIEZsb3dJbmRleGluZzsKIGNsYXNzIE5hdHVyYWxMb29wczsKLWNsYXNz
IFByZVBvc3ROdW1iZXJpbmc7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGbG93TWFwOwog
CkBAIC05MDIsNyArOTAxLDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRGVidWdnZXJFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAogICAgIERvbWluYXRv
cnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5nJiBlbnN1cmVQcmVQ
b3N0TnVtYmVyaW5nKCk7CiAgICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1cmFsTG9vcHMoKTsK
ICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NGRygpOwogICAgIEJhY2t3YXJkc0Rv
bWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKTsKQEAgLTkyMSw3ICs5MTksOCBA
QCBwdWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1f
cHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+
IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOwor
ICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRn
ZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBG
cm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRz
PiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDcgKzk1NSw5IEBAIHB1YmxpYzoKICAgICAvLwog
ICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNr
IG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAg
VmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICAvLworICAgIC8vIEZJWE1FOiBDb3Vs
ZCBpbmNvcnBvcmF0ZSB0aGlzIGludG8gbV9lbnRyeXBvaW50cyB2ZWN0b3IuCisgICAgSGFzaE1h
cDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHM7
CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMg
aXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgogICAgIFZl
Y3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7CkBAIC05NjcsNiArOTY4LDcgQEAg
cHVibGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+IG1fbmV3
QXJyYXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7CiAgICAg
QmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlT
d2l0Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9mZnNldERh
dGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZzZXREYXRh
PiBtX211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRpb25E
YXRhPiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkBAIC05ODMsNyArOTg1LDYgQEAgcHVi
bGljOgogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0
b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+PiBtX2RvbUpJVFNu
aXBwZXRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3JzPiBtX2RvbWluYXRvcnM7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9zdE51bWJlcmluZzsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25hdHVyYWxMb29wczsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRz
Q0ZHPiBtX2JhY2t3YXJkc0NGRzsKQEAgLTEwMDksNiArMTAxMCw3IEBAIHB1YmxpYzoKICAgICBS
ZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFi
bGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgc3Rk
OjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkz
LDU0ICs5Myw1OSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAK
IHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQg
PSB0cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFG
b3VuZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0
ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNs
b2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkg
ewotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAg
ICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBT
U0EpCi0gICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1l
bnRzW2ldOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9
IEZsdXNoZWRKU1ZhbHVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0
ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRy
eXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0
Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWls
ID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsK
KworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9mb3JtID09IFNTQSkKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJn
dW1lbnRGb3JtYXRzW2ldOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50
cnlwb2ludCktPnZhbHVlW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2Fz
ZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVu
dHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Cisg
ICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5
cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAg
ICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJP
bmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgot
ICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jv
b2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0g
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBo
LCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNW
YWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0
ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBh
cmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsg
KytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAg
ICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3Jh
cGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxz
KCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkp
LmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSku
Y2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgu
bV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRs
ZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2st
PmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQg
PSBmYWxzZTsKQEAgLTM2NCw2ICszNjksMTMgQEAgaW5saW5lIGJvb2wgSW5QbGFjZUFic3RyYWN0
U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBk
YXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAg
ICB9CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOiB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZh
bHNlOworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrIDogdGVybWluYWwtPmVu
dHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3MpCisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJh
c2ljQmxvY2ssIHRhcmdldEJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQog
ICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw2ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6
ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJ
bmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnlEYXRh
Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAg
Ly8gRklYTUU6IE1ha2UgdGhpcyBhIGJpbmFyeSBzZWFyY2guIE9PUFMuCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjYXRjaE9TUkVudHJ5LnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAoY2F0Y2hPU1JFbnRyeVtpXS5tX2J5dGVjb2RlSW5kZXggPT0gYnl0ZWNvZGVJbmRl
eCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmNhdGNoT1NSRW50cnlbaV07CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhdGNo
T1NSRW50cnkodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZz
ZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAg
ICBjYXRjaE9TUkVudHJ5LmFwcGVuZChERkc6OkNhdGNoT1NSRW50cnlEYXRhIHsgYnl0ZWNvZGVJ
bmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAg
ICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0
KQogICAgIHsKQEAgLTEzMiw2ICsxNDgsNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1v
bkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7Cisg
ICAgVmVjdG9yPERGRzo6Q2F0Y2hPU1JFbnRyeURhdGE+IGNhdGNoT1NSRW50cnk7CiAgICAgU2Vn
bWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpT
cGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFi
bGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpAQCAtMTY4LDYgKzE4NSw4IEBAIHB1
YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAg
dW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAgICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAg
IE1hbGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9TUkVudHJ5QnVmZmVyOwogI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDkg
QEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxv
Y1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29t
cGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3Vs
YXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAgICBp
ZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29k
ZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVv
ZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwog
ICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCAr
NTU3LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNl
bmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2sm
IGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxp
bmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVu
dHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBl
bmRDYXRjaE9TUkVudHJ5KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZz
ZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJ
VENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworCiAgICAgLy8gT1NS
IGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBj
b250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9m
Q0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVudHJ5
RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5
dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAg
ICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0
VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczog
aW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
dm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2Nr
SGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0Y2hPU1JFbnRyeShCYXNpY0Js
b2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxG
bHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2Rl
PiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgu
bV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAg
IGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAh
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVD
YWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAg
ICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFw
aC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAg
ICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVy
ICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVb
bm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRC
bG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4
LDEzIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNl
IENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKKyAgICBj
YXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBEb3VibGVS
ZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVy
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDYgKzIwMywxNCBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VK
dW1wVGFibGU7CiB9OwogCitzdHJ1Y3QgRW50cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRj
aERhdGEoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9j
a3M7Cit9OworCiBzdHJ1Y3QgQ2FsbFZhcmFyZ3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdP
ZmZzZXQ7CiB9OwpAQCAtMTI3NywxNyArMTI4NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAg
Ym9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0
Y2g7CiAgICAgfQogCisgICAgYm9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvcCgpID09IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJvb2wgaXNUZXJt
aW5hbCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKdW1w
OgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CisgICAgICAgIGNh
c2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxD
YWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8U3dpdGNoRGF0YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0Y2hEYXRhKiBl
bnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlTd2l0Y2goKSk7
CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigpOworICAgIH0K
ICAgICAKICAgICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0xMzU5LDYgKzEz
NzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgY2FzZSBTd2l0
Y2g6CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgKyAxOwor
ICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNo
RGF0YSgpLT5ibG9ja3Muc2l6ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNzIsNiArMTM5NCwxMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAg
ICAgICAgfQorCisgICAgICAgIGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAgICAgICByZXR1
cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAgc3dpdGNoIChp
bmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0x
NTE4LDYgKzE1NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWljc1N0b3JlOgogICAg
ICAgICBjYXNlIEF0b21pY3NTdWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoKKyAgICAgICAg
Y2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3LDEy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1Zh
bGlkKCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QK
KyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwp
OworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQogICAgIAog
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAt
OTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3Bl
Y2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdy
ZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBi
dWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMp
IFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAog
ICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBt
YWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYgKzM4
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKdW1wLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRW50cnlT
d2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNW
YXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDY0IEBAIHZvaWQq
IHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsK
IH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlv
bnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlw
ZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29k
ZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOwor
CisgICAgREZHOjpDYXRjaE9TUkVudHJ5RGF0YSogY2F0Y2hPU1JFbnRyeSA9IGppdENvZGUtPmNh
dGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBpZiAo
IWNhdGNoT1NSRW50cnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gV2UncmUg
b25seSBhbGxvd2VkIHRvIE9TUiBlbnRlciBpZiB3ZSd2ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRp
YmxlIGFyZ3VtZW50IHR5cGVzLgorICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1
bWVudCA8IGNhdGNoT1NSRW50cnktPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVu
dCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaE9TUkVu
dHJ5LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1bWVudF0pIHsKKyAgICAgICAgY2FzZSBERkc6OkZs
dXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
REZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Jvb2xl
YW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERGRzo6RGVhZEZsdXNoOgorICAgICAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZlLiBUaGVyZWZvcmUsIGl0J3MgYWxsb3dlZCB0byBi
ZSBhbnkgdHlwZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hl
ZEpTVmFsdWU6CisgICAgICAgICAgICAvLyBBbiBhcmd1bWVudCBpcyB0cml2aWFsbHkgYSBKU1Zh
bHVlLgorICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVu
c2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+Y29tbW9uLnJlcXVpcmVkUmVnaXN0
ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIXZtLmVuc3Vy
ZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZzZXQoKV0pKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBBU1NFUlQoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpXS51Lm9wY29kZSkgPT0g
b3BfYWZ0ZXJfY2F0Y2gpOworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZl
ciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSArIDFdLnUucG9p
bnRlcik7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0g
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgaWYgKCFWaXJ0dWFs
UmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLmlzTG9jYWwoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKVtpbmRleF0gPSBl
eGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgICsr
aW5kZXg7CisgICAgfSk7CisKKyAgICByZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NB
dE9mZnNldChjYXRjaE9TUkVudHJ5LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RW
YWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGlu
ZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlE
YXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaE9TUkVudHJ5RGF0YSB7Cisg
ICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVP
ZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2gu
IFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUg
YmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0
PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0
YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8g
cGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JF
bnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKwor
Ly8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBu
dWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnko
RXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQog
aW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNp
Z25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiwxNiArMTEyLDE3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3Jp
Z2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5v
ZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
bV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAg
ICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50
KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAg
IC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0
J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1
bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+
YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1l
bnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0g
bm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9
CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNh
bGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDYgKzE0MCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFy
Z2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOwor
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0gPSBuZXdSb290OworICAgICAgICBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFyKCk7CisgICAgICAgIG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3QsIGFyZ3VtZW50cyk7CisKICAgICAgICAg
bV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICBtX2dyYXBoLmtpbGxVbnJlYWNo
YWJsZUJsb2NrcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDcgKzM2OCw2IEBA
IFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICBpZiAodmFsaWRh
dGlvbkVuYWJsZWQoKSkgewogICAgICAgICBkZmcuZW5zdXJlRG9taW5hdG9ycygpOwogICAgICAg
ICBkZmcuZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVQcmVQb3N0TnVt
YmVyaW5nKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2RlKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1
ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrV29ya2xpc3QuaCIK
LSNpbmNsdWRlICJERkdHcmFwaC5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
Ci0KLVByZVBvc3ROdW1iZXJpbmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBoKQotewot
ICAgIG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7Ci0gICAgCi0gICAgUG9zdE9y
ZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGdyYXBoLmJsb2Nr
KDApKTsKLSAgICB1bnNpZ25lZCBuZXh0UHJlTnVtYmVyID0gMDsKLSAgICB1bnNpZ25lZCBuZXh0
UG9zdE51bWJlciA9IDA7Ci0gICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlz
dC5wb3AoKSkgewotICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAgY2FzZSBW
aXNpdE9yZGVyOjpQcmU6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcHJlTnVtYmVy
ID0gbmV4dFByZU51bWJlcisrOwotICAgICAgICAgICAgd29ya2xpc3QucHVzaFBvc3QoaXRlbS5u
b2RlKTsKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogaXRlbS5ub2Rl
LT5zdWNjZXNzb3JzKCkpCi0gICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzdWNjZXNzb3Ip
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UG9zdDoKLSAg
ICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wb3N0TnVtYmVyID0gbmV4dFBvc3ROdW1iZXIr
KzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1QcmVQb3N0TnVt
YmVyaW5nOjp+UHJlUG9zdE51bWJlcmluZygpIHsgfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KLXZv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBFZGdlS2luZCBraW5kKQotewotICAg
IHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgRm9yd2FyZEVkZ2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiRm9yd2FyZEVkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3Jvc3NFZGdlOgot
ICAgICAgICBvdXQucHJpbnQoIkNyb3NzRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBCYWNrRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJCYWNrRWRnZSIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3RO
dW1iZXJpbmcuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZH
QmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0g
RWRnZUtpbmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRn
ZQotfTsKLQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUHJlUG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5n
KCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsg
cmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1i
ZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3RO
dW1iZXI7IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwot
ICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sq
IHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51
bWJlcih0bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRv
KTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwg
QmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8
fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlz
U3RyaWN0RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFz
aWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRv
LCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3
ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRl
cm1pbmUKLSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBp
dCB5b3Vyc2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRP
Zih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAot
ICAgICAgICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBC
YWNrRWRnZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAg
IAotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9w
cmVOdW1iZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAg
QmxvY2tNYXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygp
LT5tX2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMg
Zm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20K
KyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVs
YXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRz
ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkp
LT52YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAg
ICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZh
bHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxl
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MjAsNiArNzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpT
TWFwQnVja2V0OgogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3Vt
ZW50OgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxE
T01HZXR0ZXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0
SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAg
ICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVu
dHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlw
ZToKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIERlY2lkZSB3aGVyZSBQaGlzIGFyZSB0byBiZSBp
bnNlcnRlZC4gVGhpcyBjcmVhdGVzIHRoZSBQaGkncyBidXQgZG9lc24ndCBpbnNlcnQgdGhlbQot
ICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgdGhlbSBi
ZWNhdXNlIFNTQUNhbGN1bGF0b3IgaXMgc3VjaCBhIGJyby4KKyAgICAgICAgLy8geWV0LiBXZSB3
aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNTQUNhbGN1bGF0
b3IgdGVsbHMgdXMgdG8uCiAgICAgICAgIG1fY2FsY3VsYXRvci5jb21wdXRlUGhpcygKICAgICAg
ICAgICAgIFsmXSAoU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHNzYVZhcmlhYmxlLCBCYXNpY0Js
b2NrKiBibG9jaykgLT4gTm9kZSogewogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUgPSBtX3ZhcmlhYmxlRm9yU1NBSW5kZXhbc3NhVmFyaWFibGUtPmluZGV4KCld
OwpAQCAtMzgxLDE4ICszODEsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgYmxvY2stPnZhbHVl
c0F0SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlx
dWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRz
LnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMu
c2l6ZSgpOyBpLS07KSB7CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbXVsdGlwbGUgZW50
cnlwb2ludHMgaW4gREZHIFNTQToKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1f
ZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVl
OworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShhcmd1bWVudHMuc2l6
ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykg
ewogICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAKLSAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2Fy
Z3VtZW50c1tpXSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcu
Z2V0KGFyZ3VtZW50c1tpXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG5vZGUpOwogICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCkt
PmZvcm1hdDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9y
bWF0c1tpXSA9IGZvcm1hdDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBu
b2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUg
YmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KKyAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG5v
ZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBi
ZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBt
X2dyYXBoLm1fZm9ybSA9IFNTQTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMw
Nyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRy
eVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2Ug
RGlyZWN0VGFpbENhbGw6CkBAIC0zMjMsNiArMzI0LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFVu
cmVhY2hhYmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDggQEAKICNpbmNs
dWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogCisjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJQcmludGVyLmgiCisKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC02MDc5LDYgKzYwODEsMjEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICBt
X2ppdC5wcmludCgiRXh0cmFjdENhdGNoTG9jYWwiKTsKKyAgICAgICAgLy9tX2ppdC5wcm9iZShb
XSAoUHJvYmVDb250ZXh0KikgeworICAgICAgICAvLyAgICBkYXRhTG9nTG4oIkV4dHJhY3RDYXRj
aExvY2FsISIpOworICAgICAgICAvL30pOworCisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZtX2pp
dC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbbm9kZS0+Y2F0Y2hPU1JFbnRy
eUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEND
YWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVS
ZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICNlbHNlIC8vIEVO
QUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4Nyw2ICs2MTA0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICNlbmRpZiAvLyBFTkFCTEUo
RlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIExhc3ROb2RlVHlw
ZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBAIC02MTE1LDcgKzYxMzQsNiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFu
dG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAgICAgY2FzZSBQaGFudG9t
TmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9k
ZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2LDEzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0KSB7CisgICAgICAgIG1faml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRT
YXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tS
ZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0
LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1f
c3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAg
bV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKQEAgLTE3NzAsOCArMTc3Nyw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1f
Y3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBD
b2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBo
KCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+
dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFy
YW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9h
cmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAg
IGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRv
bid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xODczLDcgKzE4ODEsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVu
dHJpZXMoTGluawogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghYmxvY2stPmlz
T1NSVGFyZ2V0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9T
UkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZm
ZXIpOworICAgICAgICBpZiAoYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAgICAg
IGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChi
bG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsK
KyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAg
ICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVj
dG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1l
bnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRD
ZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hl
Y2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoT1NSRW50cnkoKmJs
b2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92
ZShhcmd1bWVudEZvcm1hdHMpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ppdC5u
b3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBs
aW5rQnVmZmVyKTsKICAgICB9CiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRy
eUhlYWRzLnNpemUoKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDYgKzgwLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFwcGx5Q291bnRz
KGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gRklYTUU6IAogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTk4LDYgKzEwMCw3IEBAIHBy
aXZhdGU6CiAKIGJvb2wgcGVyZm9ybVN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvbihHcmFw
aCYgZ3JhcGgpCiB7CisgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBydW5QaGFzZTxTdGF0
aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMCAr
MTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5t
X3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5
IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBh
dCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2lu
ZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9j
aykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3Jp
Z2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2Fs
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoKG5vZGUpLCAhKG1heUV4aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMgJiYg
IW5vZGUtPm9yaWdpbi5leGl0T0spKTsKIAogICAgICAgICAgICAgICAgIGlmIChpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7Ci0g
ICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAgKG5v
ZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3JhcGgs
IHByZXZpb3VzTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFub2RlLT5vcmlnaW4u
ZXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwot
ICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlv
dXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAot
ICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9LICYmIG5vZGUtPm9yaWdpbi5leGl0T0spCi0g
ICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5v
cmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAgICAgICAgICAgIC8vTm9kZSogcHJldmlvdXNOb2Rl
ID0gYmxvY2stPmF0KGkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAg
ICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAg
ICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQorICAgICAgICAgICAg
ICAgICAgICAvLyAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgICAgICAg
ICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAg
ICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0
KTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAgICAhKCFwcmV2aW91c05vZGUt
Pm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKKyAgICAgICAgICAgICAgICAg
ICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8g
ICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhp
dCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0
dXJlKCkuZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsOCArMjY2LDkg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CiAgICAgICAg
IG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVl
KTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbV9vdXQuc2V0T3JpZ2luKG5vZGUpOwog
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChpKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAg
IERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3Jl
YXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMo
SW5zdHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlos
IGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVn
aXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
OSw2ICs1NzksMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6Ogog
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBv
cGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUzLDYgKzg1MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0
cnVjdGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwog
fQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7CisgICAg
Ly8gRklYTUU6IE9PUFMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2
b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMsMjQgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgLy8gRklYTUU6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuIE9PUFMKKwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBtX2J5dGVjb2Rl
T2Zmc2V0KTsKKyAgICBhdXRvIHNraXBPU1JFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0
dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJl
dHVyblZhbHVlR1BSKTsKKyAgICBza2lwT1NSRW50cnkubGluayh0aGlzKTsKKyAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAg
aWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBidWZmZXItPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdUMCk7CisgICAgICAgICAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKCZwcm9maWxlLm1fcHJvZmlsZSk7CisgICAgICAgIH0pOwor
ICAgIH0KK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTE0LDYgKzE1MTQsMTkgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aQogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6
ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7
CiB9CisKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4
ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsK
KworICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBleGVjLT5jb2RlQmxvY2so
KS0+cmVwbGFjZW1lbnQoKTsKKyAgICBpZiAob3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUo
KSAhPSBKSVRDb2RlOjpERkdKSVQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNoYXIqPihERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KGV4ZWMsIG9w
dGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KSk7Cit9CisKICNlbmRpZgogCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRBcnJheVZhbHVlLCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw2ICszMTYsNyBAQCB0eXBlZGVm
IGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0eXBlZGVmIGNoYXIqIChKSVRfT1BF
UkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3Qp
OwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVFaKShFeGVj
U3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04g
KlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91YmxlLCBpbnQzMl90KTsKK3R5cGVk
ZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VVaSkoRXhlY1N0YXRlKiwg
dWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKEpJVF9PUEVSQVRJT04gKlNw
cnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopOwogdHlwZWRl
ZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRPcGVyYXRpb25fRUpzcykoRXhlY1N0
YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcqIChKSVRfT1BFUkFUSU9OICpKc3Nf
SklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKQEAgLTM5Niw2ICszOTcsNyBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwog
I2lmIEVOQUJMRShERkdfSklUKQogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOworY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiwgdWlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRK
U1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkKEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0Nl
bGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Mzgs
NiArMTYzOCwxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvCiAg
ICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZnRl
cl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1f
b3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKworICAgIExMSU5UX0VORCgpOworfQorCiBl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19l
cnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Niw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9p
c191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwpOwor
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCk7CiBleHRl
cm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJv
cihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmICFFTkFCTEUoSklUKQog
ZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50
cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk3Nyw2ICsxOTc3LDExIEBAIF9sbGludF9v
cF9jYXRjaDoKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2F0Y2hfbGVuZ3RoKQogCiAKK19s
bGludF9vcF9hZnRlcl9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9hZnRlcl9jYXRjaCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfYWZ0ZXJfY2F0Y2hf
bGVuZ3RoKQorCisKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317779</attachid>
            <date>2017-08-09 20:20:37 -0700</date>
            <delta_ts>2017-08-09 20:28:01 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>90789</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDIyICsyNTE0LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENv
ZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9u
c0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQ
cm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZl
Tm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2Zp
bGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNr
ZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFy
ZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQ
cm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJv
bUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHBy
b2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMg
dGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAg
bnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJv
ZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9m
U2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAg
ICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyAr
K2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsK
KworICAgIC8vIE9PUFM6IFBlcmhhcHMgaG9vayBpbnRvIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCkgc29tZWhvdy4KKyAgICAvLyBvciBtYXliZSB3ZSBqdXN0IG5lZWQgYSBuZXcgdHlwZSBv
ZiB2YWx1ZSBwcm9maWxlIGhlcmUgc2luY2UKKyAgICAvLyB0aGlzIGlzIHNvcnQgb2YgYSBkaWZm
ZXJlbnQgdGhpbmcuIE9PUFMuCisgICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRj
aFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBwcm9jZXNzUHJvZmlsZSgm
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiAgICAgCiAjaWYgRU5BQkxF
KERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDIsNiArMTAwMiw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFs
dWVQcm9maWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJv
ZmlsZXM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVBy
b2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9maWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8QXJyYXlB
bGxvY2F0aW9uUHJvZmlsZT4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlczsKICAgICBBcnJheVBy
b2ZpbGVWZWN0b3IgbV9hcnJheVByb2ZpbGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsOCArMTc0LDggQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dAogfTsKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+IHsKLSAgICBWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlV2l0
aExvZ051bWJlck9mQnVja2V0czwwPigpIHsgfQotICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNv
ZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1i
ZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0
KSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQp
IHsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTIwMiw0ICsyMDIsMzggQEAgaW5s
aW5lIGludCBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZgogICAgIHJldHVybiByYXJlQ2Fz
ZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7CiB9CiAKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kIHsKKyAgICBWYWx1ZVByb2ZpbGUgbV9wcm9maWxlOworICAgIGludCBtX29wZXJhbmQ7
Cit9OworCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciB7CisgICAgVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcih1bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShz
aXplKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFZhbHVlUHJvZmlsZSBoYXMgbW9yZSBzdHVm
ZiB0aGFuIHdlIG5lZWQuIFdlIGNvdWxkIG9wdGltaXplIHRoZSBvdXIgdmFsdWUgcHJvZmlsZXMK
KyAgICAgICAgLy8gdG8gYmUgbW9yZSBzcGFjZSBlZmZpY2llbnQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTMKKyAgICAgICAgbV9idWZm
ZXIgPSBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD46Om1hbGxvYyhtX3NpemUgKiBz
aXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBuZXcgKCZtX2J1ZmZlci5nZXQoKVtp
XSkgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKworICAgIH5WYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG1fYnVmZmVyLmdldCgpW2ldLn5WYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9u
PgorICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9u
KG1fYnVmZmVyLmdldCgpW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAg
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+IG1fYnVmZmVyOworfTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiArMzk2MSw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYXRjaChSZWdpc3QKICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKworICAgIGVt
aXRPcGNvZGUob3BfYWZ0ZXJfY2F0Y2gpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
IH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzdG9yZVNjb3BlUmVnaXN0ZXIoaW50IGxl
eGljYWxTY29wZUluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDogewogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwogICAgICAg
ICBicmVhazsKQEAgLTE4MzgsNiArMTgzOSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gRklYTUU6IERvIHNwYXJzZSBjb25kaXRpb25hbCB0
aGluZ3MuCiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRW50cnlTd2l0Y2g6Cisg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIG1f
c3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygKICAgICA6IGJ5dGVjb2RlQmVnaW4oYnl0ZWNv
ZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkK
KyAgICAsIGlzQ2F0Y2hPU1JUYXJnZXQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNl
KQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRz
KGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9j
ayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAg
ICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAg
ICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAg
ICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAg
ICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6
Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBj
YXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4g
Y29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBi
ZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9w
cyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNh
c2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1v
cC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsK
ICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaE9TUlRhcmdldDsK
ICAgICBib29sIGNmYUhhc1Zpc2l0ZWQ7CiAgICAgYm9vbCBjZmFTaG91bGRSZXZpc2l0OwogICAg
IGJvb2wgY2ZhRm91bmRDb25zdGFudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMzAsNyArMTEzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9j
ayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAog
ICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRl
Y29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFy
Z2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxv
Y2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUg
aGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtl
ZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIg
d2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzQsMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNr
IGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNz
ZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5
LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVD
YWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9y
PE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
KwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3Qg
ZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8g
ZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkx
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBO
b2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJs
ZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJn
dW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFy
Z3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01MTUwLDYgKzUxNTQsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9o
YXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55
dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4g
ZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5t
b2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBG
VEwuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVu
dEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4o
Y3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxT
cGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAg
ICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAg
ICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAg
ICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
dWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVy
YW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHBy
b2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3Bl
Y05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQo
KSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRp
Y3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRz
OyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2Vl
bkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRp
Y3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlz
IGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQg
YXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0
ZXJfY2F0Y2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBv
aW50LgorCisgICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcg
Zm9yIHdoZXJlIHRvIE9TUiBlbnRlciwgd2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8v
IHRvIG9wX2FmdGVyX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2Rl
QmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgLy8gT09QUzogaXMgdGhpcyBy
aWdodD8gQXVkaXQgaXNPU1JUYXJnZXQuCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNP
U1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JU
YXJnZXQgPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJl
Z2lzdGVyLCBOb2RlKj4+IGxvY2Fsc1RvU2V0OworICAgICAgICAgICAgbG9jYWxzVG9TZXQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCBy
ZXNlcnZlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVz
ZSB0aGUgYnVmZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgbV9leGl0T0sg
PSBmYWxzZTsgLy8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxk
IG5vdCBrbm93IGhvdyB0byBkbyB2YWx1ZSByZWNvdmVyeS4KKyAgICAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mTG9jYWxzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYg
KG9wZXJhbmQuaXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJP
ZkxvY2FscyksIE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAg
ICAgICAgICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgbG9jYWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQs
IHZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1f
bWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4
TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9j
YWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRy
dWU7IC8vIFdlIGNhbiBub3cgZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIgT1NSIGV4aXQg
c3RhdGUgdG8gcmVjb3ZlciBhbnkgbGl2ZSBsb2NhbHMuCisKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8g
ZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3Mg
dXAKKyAgICAgICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBp
dCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0
b3I8Tm9kZSosIDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBv
aW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAg
ICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVk
aWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxl
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
c2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJl
bnRDb2RlT3JpZ2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1
Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI1NCwxMCBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2so
YmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9i
bG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAg
ICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJs
b2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAg
ICAgICAgICAgICB9CkBAIC02MTk2LDggKzYzMTQsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxG
cmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9j
a3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1f
YmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0
eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICAvLyBPT1BTOiB3ZSBuZWVkIHRvIGZha2Ug
YSByb290IHdoZW4gd2UgaGF2ZSBtdWx0aXBsZSBlbnRyeXBvaW50cy4KICAgICBOb2RlIHJvb3Qo
KSB7IHJldHVybiBtX2dyYXBoLmJsb2NrKDApOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjks
OCArMzY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMg
dXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdl
dAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0
d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAg
Ly8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4g
QnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9ncmFw
aC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3Jh
cGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5
cG9pbnQgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFy
Z3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1
bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxl
c0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9
CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0
Y2g6CisgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0Ogog
ICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlj
a2VuX3Byb2xvZ3VlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBj
YXNlIENoZWNrOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAg
ICByZXR1cm47CiAgICAgICAgIApAQCAtNDIyLDYgKzQyMyw3IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6
CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFRocm93
OgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBC
bG9jayhibG9jayk7CiAgICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1f
YXJndW1lbnRzKTsKKyAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNWZWN0b3IgOiBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLnZhbHVlcygpKQorICAgICAgICAgICAgY2xlYW5WYXJp
YWJsZXMoYXJndW1lbnRzVmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhh
bnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2
ICsxODIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50
cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNl
IERpcmVjdFRhaWxDYWxsOgpAQCAtMTk2LDYgKzE5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgY2Fz
ZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNh
c2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTcwLDYgKzE5NzAsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIElzRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAg
ICAgICBjYXNlIEp1bXA6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2Ug
UmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxD
YWxsOgpAQCAtMTk4Myw2ICsxOTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDaGVja1Ry
YXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBjYXNl
IExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGlu
dDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJl
dmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3JtYXQgeworZW51bSBGbHVzaEZvcm1hdCA6
IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCiAgICAgRmx1c2hl
ZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgog
I2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdOYXR1cmFsTG9vcHMuaCIKLSNp
bmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAtNDExLDcgKzQxMCw4IEBAIGJvb2wgR3Jh
cGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBo
aU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewot
ICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChi
bG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1Jl
YWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1Ig
dGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpi
bG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250
ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVk
KSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXND
YXRjaE9TUlRhcmdldCA/ICIgKENhdGNoIE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKICAgICBp
ZiAoYmxvY2stPmV4ZWN1dGlvbkNvdW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0
aW9uQ291bnQsICJcbiIpOwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoi
KTsKQEAgLTQyMiw4ICs0MjIsNiBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRT
dHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNC
bG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0
LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVy
aW5nKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmct
PmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNl
CiAgICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwpAQCAtNDQ2LDggKzQ0NCw2IEBAIHZv
aWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAg
ICBvdXQucHJpbnQoIlxuIik7CiAgICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0g
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQ
b3N0TnVtYmVyaW5nLT5wcmVOdW1iZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+
cG9zdE51bWJlcihibG9jayksICJcbiIpOwogICAgIGlmIChtX25hdHVyYWxMb29wcykgewogICAg
ICAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVy
T2YoYmxvY2spKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBMb29wIGhlYWRl
ciwgY29udGFpbnM6Iik7CkBAIC01MDIsOCArNDk4LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIs
IG1fZml4cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0
ZTogIiwgbV91bmlmaWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291
bnRTdGF0ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmlu
dCgiICBBcmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJc
biIpOwotICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1
bXAobV9hcmd1bWVudHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBh
aXIgOiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBB
cmd1bWVudHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFp
ci52YWx1ZSksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAg
Tm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzYzOCwxMCBAQCB2b2lkIEdyYXBo
OjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFj
aGFiaWxpdHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAg
IHdvcmtsaXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0g
dHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7
CisgICAgICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xp
c3QuYXBwZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1w
dHkoKSkgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTsp
CkBAIC04MDAsNyArODAwLDYgQEAgdm9pZCBHcmFwaDo6aW52YWxpZGF0ZUNGRygpCiB7CiAgICAg
bV9kb21pbmF0b3JzID0gbnVsbHB0cjsKICAgICBtX25hdHVyYWxMb29wcyA9IG51bGxwdHI7Ci0g
ICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gbnVsbHB0cjsKICAgICBtX2NvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzID0gbnVsbHB0cjsKICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRy
OwogICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0cjsKQEAgLTg1MCw3ICs4NDksOSBAQCBCbG9j
a0xpc3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7
CiAgICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDAp
KTsKKyAgICAvLyBPT1BTOiBhZGQgdmFsaWRhdGlvbiBoZXJlLgorICAgIGZvciAoQmFzaWNCbG9j
ayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50
cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkp
IHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04NjMsNyArODY0LDkgQEAgQmxv
Y2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3Vs
dDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1
c2goYmxvY2soMCkpOworICAgIC8vIE9PUFM6IGFkZCB2YWxpZGF0aW9uIGhlcmUuCisgICAgZm9y
IChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xp
c3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdv
cmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBj
YXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTE0NzksMTMgKzE0ODIsNiBAQCBEb21pbmF0b3JzJiBH
cmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCiAgICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAK
LVByZVBvc3ROdW1iZXJpbmcmIEdyYXBoOjplbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCkKLXsKLSAg
ICBpZiAoIW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0g
c3RkOjptYWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICpt
X3ByZVBvc3ROdW1iZXJpbmc7Ci19Ci0KIE5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVy
YWxMb29wcygpCiB7CiAgICAgZW5zdXJlRG9taW5hdG9ycygpOwpAQCAtMTUyNyw3ICsxNTIzLDgg
QEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAg
ICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVu
dCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
ICAgIC8vIE9PUFM6IG1heWJlIHdlIHNob3VsZCBzZWFyY2ggYWxsIGhlcmU/IEFsc28sIHRoaXMg
c2VlbXMgd3JvbmcgaW4gU1NBIGluIHRoZSBmdXR1cmUuCisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkp
LT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2Rl
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzOwogY2xhc3MgRG9taW5hdG9yczsKIGNsYXNzIEZsb3dJbmRleGluZzsKIGNs
YXNzIE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBvc3ROdW1iZXJpbmc7CiAKIHRlbXBsYXRlPHR5
cGVuYW1lPiBjbGFzcyBGbG93TWFwOwogCkBAIC05MDIsNyArOTAxLDYgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzRGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVu
YWJsZWQ7IH0KIAogICAgIERvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQ
b3N0TnVtYmVyaW5nJiBlbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7CiAgICAgTmF0dXJhbExvb3Bz
JiBlbnN1cmVOYXR1cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJk
c0NGRygpOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRv
cnMoKTsKQEAgLTkyMSw3ICs5MTksOCBAQCBwdWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVC
bG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8
IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFz
aWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRy
eXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBI
YXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwg
RW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDcgKzk1
NSw5IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5k
IHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lk
ZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAg
ICAvLworICAgIC8vIE9PUFM6IE1heWJlIHdlIHNob3VsZCBpbmNvcnBvcmF0ZSB0aGlzIGludG8g
bV9lbnRyeXBvaW50cyB2ZWN0b3I/CisgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5v
ZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHM7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0
aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0
aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgogICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1
bWVudEZvcm1hdHM7CkBAIC05NjcsNiArOTY4LDcgQEAgcHVibGljOgogICAgIFNlZ21lbnRlZFZl
Y3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+IG1fbmV3QXJyYXlCdWZmZXJEYXRhOwogICAgIEJh
ZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7CiAgICAgQmFnPFN3aXRjaERhdGE+IG1fc3dpdGNo
RGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnlTd2l0Y2hEYXRhPiBtX2VudHJ5U3dpdGNo
RGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9mZnNldERhdGE+IG1fbXVsdGlHZXRCeU9mZnNldERh
dGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZzZXREYXRhPiBtX211bHRpUHV0QnlPZmZzZXREYXRh
OwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhPiBtX29iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGE7CkBAIC05ODMsNyArOTg1LDYgQEAgcHVibGljOgogICAgIEhhc2hNYXA8UHJvcGVy
dHlUeXBlS2V5LCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsKICAg
ICBWZWN0b3I8UmVmPFNuaXBwZXQ+PiBtX2RvbUpJVFNuaXBwZXRzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxEb21pbmF0b3JzPiBtX2RvbWluYXRvcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByZVBv
c3ROdW1iZXJpbmc+IG1fcHJlUG9zdE51bWJlcmluZzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0
dXJhbExvb3BzPiBtX25hdHVyYWxMb29wczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2Nm
ZzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKQEAg
LTEwMDksNiArMTAxMCw3IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRT
dGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNl
cHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhp
bmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFj
dFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw1OSBAQCBzdGF0aWMgdm9p
ZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3Rh
dGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2Nr
KDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhh
c1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwot
ICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVX
YXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVj
dHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVz
QXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNB
dFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7
Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQg
PSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYg
KCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgIGZv
ciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlw
b2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3Vu
ZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2lu
dC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7
CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52
YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3Jt
YXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKKyAgICAg
ICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwogICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAg
ICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1
c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBz
d2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAg
ICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3Bl
Y0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZs
dXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToK
KyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFr
ZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZs
dXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsK
LSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgs
IG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290
LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwu
bG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewot
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0g
ICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJh
bE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhi
bG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3Zl
LgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxv
Y2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxz
ZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw2ICszNjks
MTMgQEAgaW5saW5lIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxv
Y2spOwogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CisKKyAgICBjYXNlIEVudHJ5U3dp
dGNoOiB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHRhcmdldEJsb2NrIDogdGVybWluYWwtPmVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Mp
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRhcmdldEJsb2NrKTsK
KyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFJldHVy
bjoKICAgICBjYXNlIFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwyMiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAg
ICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0
Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25l
ZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAgLy8gT09QUzogTWFrZSB0aGlzIGEgYmlu
YXJ5IHNlYXJjaC4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhdGNoT1NSRW50
cnkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChjYXRjaE9TUkVudHJ5W2ldLm1fYnl0
ZWNvZGVJbmRleCA9PSBieXRlY29kZUluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiAmY2F0
Y2hPU1JFbnRyeVtpXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hPU1JFbnRyeSh1bnNpZ25lZCBieXRlY29kZUluZGV4
LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3Vt
ZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoT1NSRW50cnkuYXBwZW5kKERGRzo6Q2F0
Y2hPU1JFbnRyeURhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwgV1RGTW92
ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBhcHBlbmRP
U1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDYgKzE0OCw3IEBAIHBy
aXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6
T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8REZHOjpDYXRjaE9TUkVudHJ5RGF0
YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBv
c3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9u
UmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJl
YW07CkBAIC0xNjgsNiArMTg1LDggQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxDb2RlQmxv
Y2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25lZCBvc3JFbnRyeVJldHJ5OwogICAgIGJv
b2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgTWFsbG9jUHRyPEpTVmFsdWU+IGNhdGNoT1NSRW50
cnlCdWZmZXI7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxv
d0NoZWNrKEpJVENvCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogeworICAgIGlmICht
X2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5j
YXRjaE9TUkVudHJ5QnVmZmVyID0gTWFsbG9jUHRyPEpTVmFsdWU+OjptYWxsb2Moc2l6ZW9mKEpT
VmFsdWUpICogKCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAg
c2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQy
OSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlRnVuY3Rpb24oKQogeworICAgIGlmIChtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hP
U1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyID0gTWFsbG9j
UHRyPEpTVmFsdWU+OjptYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICogKCptX2dyYXBoLm1fbWF4TG9j
YWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21w
aWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFk
ZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQgSklUQ29tcGlsZXI6Om5vdGlj
ZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVs
IGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYm
IGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0
Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2ljQmxvY2suaW50ZXJzZWN0aW9u
T2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBieSBkZWZpbml0aW9uIHJlYWNo
YWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoT1NSRW50cnkoYmFzaWNCbG9jay5ieXRl
Y29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1l
bnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2lj
QmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRj
aE9TUlRhcmdldCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90IGFsbG93ZWQgaW50byBibG9j
a3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBhbmFseXNpcy4KICAgICBpZiAo
IWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKQogICAgICAgICByZXR1cm47
Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9IG1faml0Q29kZS0+YXBwZW5k
T1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRP
ZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzID0gYmFz
aWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7CiAgICAgICAgIAogICAgIC8v
IEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9jb2wsIGEgZGVhZCB2YXJpYWJs
ZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2sm
LCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJik7CisgICAgdm9pZCBu
b3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tI
ZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7
CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hW
YXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEw
MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1
bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYm
IG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
aXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVu
dCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAg
ICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2Vlbklu
bGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRB
cmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0Fy
Z3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9B
cmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQg
JiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3Vt
ZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07Cisg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0
TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFy
Z3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
Zmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3Jh
cGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgY2FzZSBKdW1w
OgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNlIEludDUyUmVwOgogICAgIGNh
c2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4
dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIE5vdGlmeVdy
aXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDE0IEBAIHN0cnVjdCBTd2l0
Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsKIH07CiAKK3N0cnVjdCBFbnRyeVN3
aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisKIHN0cnVjdCBDYWxsVmFyYXJnc0Rh
dGEgewogICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07CkBAIC0xMjc3LDE3ICsxMjg1LDIz
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAK
LSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CiAKKyAgICBib29sIGlzRW50cnlT
d2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRW50cnlTd2l0Y2g7
CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
b3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgogICAgICAg
ICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBS
ZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENh
bGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoaXNTd2l0
Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTd2l0Y2hEYXRhKj4oKTsKICAgICB9
CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNoRGF0YSgpCisgICAgeworICAgICAg
ICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEVu
dHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIG51bVN1Y2Nlc3Nv
cnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiAyOwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hE
YXRhKCktPmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CisgICAg
ICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrcy5zaXplKCk7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMTM3Miw2ICsx
Mzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHN3
aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRh
KCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzRW50cnlT
d2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzW2lu
ZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAgICAgICAgIGNhc2UgMDoKICAgICAg
ICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1MTgsNiArMTU0NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAgICAgIGNhc2UgQXRvbWljc1N1YjoKICAgICAgICAg
Y2FzZSBBdG9taWNzWG9yOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBj
YXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
b3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczx1
aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRvIHRo
ZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcgYSBsb2NhbCAqL1wKICAgICAvKiB2
YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9cCiAgICAgbWFjcm8oRXh0cmFjdE9T
UkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEV4dHJhY3RDYXRjaExvY2Fs
LCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGllci11cCBjaGVja3MgZnJvbSB0aGUg
REZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNrVGllclVwSW5Mb29wLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhC
cmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhTd2l0Y2gsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRhaWxDYWxsLCBO
b2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhEaXJlY3RUYWls
Q2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzNiw2ICszMzYsNjQgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQogCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRy
eShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQoreworICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAgICBE
Rkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisKKyAgICBERkc6OkNhdGNoT1NSRW50cnlEYXRhKiBj
YXRjaE9TUkVudHJ5ID0gaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICghY2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBXZSdyZSBvbmx5IGFsbG93ZWQgdG8gT1NSIGVudGVyIGlmIHdl
J3ZlIHByb3ZlbiB3ZSBoYXZlIGNvbXBhdGlibGUgYXJndW1lbnQgdHlwZXMuCisgICAgZm9yICh1
bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVu
dEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOwor
ICAgICAgICBzd2l0Y2ggKGNhdGNoT1NSRW50cnktPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50
XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2
YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAg
aWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAg
ICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6
CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRo
ZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFy
Z3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRD
b2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOwor
ICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0
ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgp
XSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6
Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVj
b2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9hZnRlcl9jYXRjaCk7CisgICAgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5i
eXRlY29kZU9mZnNldCgpICsgMV0udS5wb2ludGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNM
b2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBqaXRDb2RlLT5jYXRjaE9TUkVu
dHJ5QnVmZmVyLmdldCgpW2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJh
bmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBq
aXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNhdGNoT1NSRW50cnktPm1fbWFjaGlu
ZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1c2hGb3Jt
YXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4K
IApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0YUJ5dGVj
b2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0KIAorc3Ry
dWN0IENhdGNoT1NSRW50cnlEYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7Cisg
ICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVu
IGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8v
IGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9j
ay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8g
UmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1
bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0
IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4n
dCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2
b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4
ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEyLDE2ICsxMTIsMTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNo
ZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAg
ICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAg
ICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1l
dGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0
LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFv
bGROb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2
ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAg
IG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAg
ICBvbGROb2RlID0gYXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1f
Z3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9w
SW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRzW2Fy
Z3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7
IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzks
NiArMTQwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIo
bV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNl
cnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9l
bnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1sw
XSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xl
YXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9v
dCwgYXJndW1lbnRzKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAg
ICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgICAgIHJldHVybiB0
cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAy
MjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjgsNyArMzY4LDYgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNv
bXBpbGVJblRocgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CiAgICAgICAgIGRmZy5l
bnN1cmVEb21pbmF0b3JzKCk7CiAgICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAg
ICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKICAgICB9CiAKICAgICBzd2l0Y2gg
KG1vZGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJl
cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQ
b3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDg4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lm
IEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5j
bHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51
bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+
KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAg
IHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQcmVOdW1i
ZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGlsZSAoQmxv
Y2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRl
bS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAgICAgIG1f
bWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAgICAgICAg
ICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAg
ICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bv
c3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9
Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5n
IG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBGb3J3
YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NFZGdlIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQucHJpbnQo
IkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCShub25leGlzdGVudCkKQEAgLTEs
MTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jh
c2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0g
ICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5n
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBo
Jik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihC
YXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVy
OyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyBy
ZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20g
YSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFz
aWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51
bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5j
ZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7
Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJp
Y3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRh
bnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBU
aGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNo
IGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBz
dWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VL
aW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVy
biBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZy
b20pKQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJp
bmcgewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9w
b3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsK
LQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIg
KzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3Qg
YmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2lu
dHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisg
ICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmdd
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1i
ZXI6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAgICAgICAgc2V0UHJl
ZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTExMSw2ICsxMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBEZWZp
bmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2Fz
ZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgU3dpdGNo
OgogICAgICAgICBjYXNlIFByb2ZpbGVUeXBlOgogICAgICAgICBjYXNlIFByb2ZpbGVDb250cm9s
RmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNv
bnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVj
aWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdz
IGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBr
bm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEg
YnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQg
YmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxj
dWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJp
YWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJ
bmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MSwyMiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBi
bG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7
CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMu
cmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBG
SVhNRTogU3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAg
ICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZv
cm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3Jt
YXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1l
bnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQg
PSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxv
YWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAg
ICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9h
ZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBj
YXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAg
IGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQs
NyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NS
RW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1
ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAg
LTYwNzksNiArNjA4MSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOiB7CisgICAgICAgIG1faml0LnByaW50KCJFeHRyYWN0Q2F0Y2hMb2NhbCIp
OworICAgICAgICAvL21faml0LnByb2JlKFtdIChQcm9iZUNvbnRleHQqKSB7CisgICAgICAgIC8v
ICAgIGRhdGFMb2dMbigiRXh0cmFjdENhdGNoTG9jYWwhIik7CisgICAgICAgIC8vfSk7CisKKyAg
ICAgICAgSlNWYWx1ZSogcHRyID0gJm1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZl
ci5nZXQoKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAg
ICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIp
OworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0
ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBAIC02MDg3LDYgKzYx
MDQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCisKKyAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgVXBz
aWxvbjoKQEAgLTYxMTUsNyArNjEzNCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRv
bVNwcmVhZDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAgIERG
R19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc2
LDYgKzE2NzYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hPU1JUYXJn
ZXQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1f
aml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2pp
dC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0
UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2
ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFt
ZSgpOwpAQCAtMTc3MCw4ICsxNzc3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1
bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBO
b2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0
byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5k
KG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2Rl
KiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9k
ZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBU
aGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1
bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NzMsNyArMTg4MSwyMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNb
b3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRj
aE9TUlRhcmdldCkgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3Vt
ZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0
PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAo
Tm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hG
b3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIg
fHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJv
b2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVu
Y2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9q
aXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUlu
ZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRy
eUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOwogICAgIH0KICAgICBBU1NFUlQo
b3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rh
dGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1h
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
OTgsNiArOTgsOCBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TdGF0aWNFeGVjdXRpb25Db3Vu
dEVzdGltYXRpb24oR3JhcGgmIGdyYXBoKQogeworICAgIC8vIE9PUFMuCisgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiBydW5QaGFzZTxTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25Q
aGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUu
bV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRo
aXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1
bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3Jh
cGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJl
ZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTggKzE5
NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhKG1heUV4
aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMgJiYgIW5vZGUtPm9yaWdpbi5leGl0T0spKTsKIAog
ICAgICAgICAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIHByZXZp
b3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KAotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3JhcGgsIHByZXZpb3VzTm9kZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCi0gICAgICAgICAgICAgICAgICAg
ICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwg
bm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Ci0g
ICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAgKG5v
ZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhp
dE9LICYmIG5vZGUtPm9yaWdpbi5leGl0T0spCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBu
b2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3Jp
Z2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAg
ICAgICAgICAgIC8vTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5v
ZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFw
aCwgcHJldmlvdXNOb2RlKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCAhbm9kZS0+b3Jp
Z2luLmV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4
aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAh
PSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9W
QUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAg
ICAgICAgICAvLyAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3Jp
Z2luLmV4aXRPSykKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBF
eGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQg
IT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhh
c1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjYsOCArMjY2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
ICAgIG1fbm9kZSA9IG51bGxwdHI7CiAgICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2Rl
T3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRz
ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkp
LT52YWx1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFt
ZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1
bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAg
ICAgICAgbV9vdXQuc2V0T3JpZ2luKG5vZGUpOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiAr
Mjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Ao
b3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAg
ICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3Ry
dWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9P
UChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0
Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3
OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdp
c3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVu
aXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw2ICs1NzksMTMgQEAgQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7
CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7Cisg
ICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVy
YXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIHNpemVfdCBh
cmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1t
UHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUzLDYgKzg1MywxMiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFN0b3Jl
KHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRl
cl9jYXRjaChJbnN0cnVjdGlvbiopCit7CisgICAgLy8gT09QUworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUzLDYgKzU1MywyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlv
biogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICAvLyBPT1BTOiBhZGQgYSBqaXQgZmFzdCBw
YXRoIGZvciB0aGlzLgorCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0
Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNo
VGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRo
aXMpOworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5wb2ludGVyKTsKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGJ1
ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAg
ICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1Qw
KTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxl
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTQsNiArMTUxNCwxOSBAQCBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxv
Y2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlP
U1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBs
YWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNo
T1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30K
KwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5k
ZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYg
KzMxNiw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVk
ZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwg
aW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9w
ZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFy
KiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUs
IGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAo
SklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExp
bmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJh
dGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJ
VF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpA
QCAtMzk2LDYgKzM5Nyw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVj
U3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90
KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRj
aChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQz
Ml90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHBy
b2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNo
ZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgIH0pOworCisgICAgTExJ
TlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93
X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUp
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hl
Y2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJv
bG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93
X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fm
dGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0
YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAj
aWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFj
a19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc3LDYgKzE5
NzcsMTEgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRj
aF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2FmdGVyX2NhdGNoOgorICAgIGNhbGxPcGNvZGVTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVyX2NhdGNoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9hZnRlcl9jYXRjaF9sZW5ndGgpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317780</attachid>
            <date>2017-08-09 20:28:01 -0700</date>
            <delta_ts>2017-08-10 20:39:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>90836</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDIyICsyNTE0LDM0IEBAIGNvbnN0IElkZW50aWZpZXImIENv
ZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9u
c0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQ
cm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAgICAgbnVtYmVyT2ZMaXZl
Tm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJblByb2Zp
bGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZCdWNr
ZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2ZpbGVzIGFy
ZSBmdWxsLgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQ
cm9maWxlcygpOyArK2kpIHsKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0RnJv
bUFsbFZhbHVlUHJvZmlsZXMoaSk7CisKKyAgICBhdXRvIHByb2Nlc3NQcm9maWxlID0gWyZdIChW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9IHBy
b2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0g
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMg
dGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAg
bnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1wbGVzOwogICAgICAgICBpZiAocHJv
ZmlsZS0+bV9ieXRlY29kZU9mZnNldCA8IDApIHsKICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwotICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb2ZpbGUtPm51bWJlck9m
U2FtcGxlcygpIHx8IHByb2ZpbGUtPm1fcHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKICAgICAgICAg
ICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICB9OworICAgIAorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyAr
K2kpCisgICAgICAgIHByb2Nlc3NQcm9maWxlKGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpKTsK
KworICAgIC8vIE9PUFM6IFBlcmhhcHMgaG9vayBpbnRvIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCkgc29tZWhvdy4KKyAgICAvLyBvciBtYXliZSB3ZSBqdXN0IG5lZWQgYSBuZXcgdHlwZSBv
ZiB2YWx1ZSBwcm9maWxlIGhlcmUgc2luY2UKKyAgICAvLyB0aGlzIGlzIHNvcnQgb2YgYSBkaWZm
ZXJlbnQgdGhpbmcuIE9PUFMuCisgICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRj
aFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBwcm9jZXNzUHJvZmlsZSgm
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKICAgICB9CiAgICAgCiAjaWYgRU5BQkxF
KERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDIsNiArMTAwMiw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFs
dWVQcm9maWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJv
ZmlsZXM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVBy
b2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9maWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8QXJyYXlB
bGxvY2F0aW9uUHJvZmlsZT4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlczsKICAgICBBcnJheVBy
b2ZpbGVWZWN0b3IgbV9hcnJheVByb2ZpbGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsOCArMTc0LDggQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dAogfTsKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+IHsKLSAgICBWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlV2l0
aExvZ051bWJlck9mQnVja2V0czwwPigpIHsgfQotICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNv
ZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1i
ZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0
KSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQp
IHsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTIwMiw0ICsyMDIsMzggQEAgaW5s
aW5lIGludCBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZgogICAgIHJldHVybiByYXJlQ2Fz
ZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7CiB9CiAKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kIHsKKyAgICBWYWx1ZVByb2ZpbGUgbV9wcm9maWxlOworICAgIGludCBtX29wZXJhbmQ7
Cit9OworCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciB7CisgICAgVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcih1bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShz
aXplKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFZhbHVlUHJvZmlsZSBoYXMgbW9yZSBzdHVm
ZiB0aGFuIHdlIG5lZWQuIFdlIGNvdWxkIG9wdGltaXplIHRoZSBvdXIgdmFsdWUgcHJvZmlsZXMK
KyAgICAgICAgLy8gdG8gYmUgbW9yZSBzcGFjZSBlZmZpY2llbnQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTMKKyAgICAgICAgbV9idWZm
ZXIgPSBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD46Om1hbGxvYyhtX3NpemUgKiBz
aXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBuZXcgKCZtX2J1ZmZlci5nZXQoKVtp
XSkgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKworICAgIH5WYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG1fYnVmZmVyLmdldCgpW2ldLn5WYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9u
PgorICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9u
KG1fYnVmZmVyLmdldCgpW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAg
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+IG1fYnVmZmVyOworfTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NjEsNiArMzk2MSw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYXRjaChSZWdpc3QKICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKworICAgIGVt
aXRPcGNvZGUob3BfYWZ0ZXJfY2F0Y2gpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
IH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzdG9yZVNjb3BlUmVnaXN0ZXIoaW50IGxl
eGljYWxTY29wZUluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDcgQEAgYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDogewogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwogICAgICAg
ICBicmVhazsKQEAgLTE4MzgsNiArMTgzOSw5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gRklYTUU6IERvIHNwYXJzZSBjb25kaXRpb25hbCB0
aGluZ3MuCiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRW50cnlTd2l0Y2g6Cisg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIG1f
c3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygKICAgICA6IGJ5dGVjb2RlQmVnaW4oYnl0ZWNv
ZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkK
KyAgICAsIGlzQ2F0Y2hPU1JUYXJnZXQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNl
KQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRz
KGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9j
ayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAg
ICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAg
ICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAg
ICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAg
ICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6
Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBj
YXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4g
Y29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBi
ZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9w
cyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNh
c2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1v
cC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsK
ICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaE9TUlRhcmdldDsK
ICAgICBib29sIGNmYUhhc1Zpc2l0ZWQ7CiAgICAgYm9vbCBjZmFTaG91bGRSZXZpc2l0OwogICAg
IGJvb2wgY2ZhRm91bmRDb25zdGFudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMzAsNyArMTEzMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9j
ayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAog
ICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRl
Y29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFy
Z2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxv
Y2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUg
aGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtl
ZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIg
d2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzQsMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNr
IGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNz
ZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5
LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVD
YWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9y
PE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
KwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3Qg
ZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8g
ZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkx
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBO
b2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJs
ZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJn
dW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFy
Z3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01MTUwLDYgKzUxNTQsMTIwIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9o
YXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55
dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4g
ZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5t
b2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBG
VEwuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVu
dEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4o
Y3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxT
cGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAg
ICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAg
ICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAg
ICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
dWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVy
YW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHBy
b2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAg
ICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3Bl
Y05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQo
KSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRp
Y3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRz
OyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2Vl
bkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRp
Y3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlz
IGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQg
YXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0
ZXJfY2F0Y2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBv
aW50LgorCisgICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcg
Zm9yIHdoZXJlIHRvIE9TUiBlbnRlciwgd2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8v
IHRvIG9wX2FmdGVyX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2Rl
QmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgLy8gT09QUzogaXMgdGhpcyBy
aWdodD8gQXVkaXQgaXNPU1JUYXJnZXQuCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNP
U1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hPU1JU
YXJnZXQgPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJl
Z2lzdGVyLCBOb2RlKj4+IGxvY2Fsc1RvU2V0OworICAgICAgICAgICAgbG9jYWxzVG9TZXQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCBy
ZXNlcnZlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVz
ZSB0aGUgYnVmZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgbV9leGl0T0sg
PSBmYWxzZTsgLy8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxk
IG5vdCBrbm93IGhvdyB0byBkbyB2YWx1ZSByZWNvdmVyeS4KKyAgICAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mTG9jYWxzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYg
KG9wZXJhbmQuaXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBO
b2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJP
ZkxvY2FscyksIE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAg
ICAgICAgICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgbG9jYWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQs
IHZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1f
bWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4
TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9j
YWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbm93
IGV4aXQgYmVjYXVzZSB3ZSd2ZSBzZXQgdXAgb3VyIE9TUiBleGl0IHN0YXRlIHRvIHJlY292ZXIg
YW55IGxpdmUgbG9jYWxzLgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IC8vIFNldCB1cCBvdXIgYXJndW1lbnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LiBUaGlz
IGhhcHBlbnMgaGVyZSBiZWNhdXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcyB1cAorICAgICAg
ICAgICAgICAgIC8vIHRvIHRoaXMgcG9pbnQgaW4gdGhlIHByb2dyYW0sIHNvIGl0IG11c3QgYmUg
c2FmZSB0byBleGl0LgorICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwg
OD4oKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50
cnkpOworICAgICAgICAgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVu
dHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIGVudHJ5cG9p
bnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNp
emUoKTsgKythcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0
KGFyZ3VtZW50UHJlZGljdGlvbnNbYXJndW1lbnRdKTsKKworICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
Pm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJn
dW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVu
dEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBl
bnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWly
IDogbG9jYWxzVG9TZXQpCisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmln
aW4oKSwgcGFpci5maXJzdCwgcGFpci5zZWNvbmQpOworCisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2Fs
bCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwpAQCAtNjEzOCw4ICs2MjU2LDEwIEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIo
KSkpOwogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2lu
Z1RhcmdldHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhl
IGZpcnN0IGJsb2NrIGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4KLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKQorICAgICAgICAgICAgICAgICAgICBpZiAo
IW1fZ3JhcGgubnVtQmxvY2tzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5p
c09TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fZW50
cnlwb2ludHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAg
ICAgICAgICAgICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTYxOTYsOCArNjMxNiw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAg
ICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxs
KTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVT
dGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtp
bmdUYXJnZXRzKTsKKwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAg
bV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAorICAgIC8vIE9PUFM6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hl
biB3ZSBoYXZlIG11bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJu
IG1fZ3JhcGguYmxvY2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0
aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAg
IC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJl
bnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUg
cHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBz
ZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFw
aC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBh
aXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0g
cGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXpl
KCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNl
dEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0
eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoK
ICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBj
YXNlIG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBv
cF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9n
dWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6
CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExv
Y2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNl
IFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2Fz
ZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2Nr
KTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMp
OworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1
bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNr
IGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAg
ICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoK
ICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFp
bENhbGw6CkBAIC0xOTYsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1w
dHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5j
dGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2Ug
SnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAg
ICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0x
OTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAg
ICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6
CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7
CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
REZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRG
R1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1w
LmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlv
bkV4ZWN1dGFibGVEdW1wLmgiCkBAIC00MTEsNyArNDEwLDggQEAgYm9vbCBHcmFwaDo6dGVybWlu
YWxzQXJlVmFsaWQoKQogCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgY2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBN
b2RlIHBoaU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnBy
aW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgw
KS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8g
IiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6
ICIiLCAiXG4iKTsKKyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgi
LCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToi
LAorICAgICAgICBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2st
PmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoT1NSVGFy
Z2V0ID8gIiAoQ2F0Y2ggT1NSIHRhcmdldCkiIDogIiIsICJcbiIpOwogICAgIGlmIChibG9jay0+
ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBFeGVjdXRpb24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3VudCwg
IlxuIik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAtNDIy
LDggKzQyMiw2IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAg
ICBpZiAoYmxvY2stPnRlcm1pbmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
LCAqc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAg
ICAgICAgICAgICAgb3V0LnByaW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+ZWRnZUtpbmQo
YmxvY2ssIHN1Y2Nlc3NvciksICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAg
b3V0LnByaW50KCIgPGludmFsaWQ+Iik7CkBAIC00NDYsOCArNDQ0LDYgQEAgdm9pZCBHcmFwaDo6
ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9CiAgICAgICAgIG91dC5wcmlu
dCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAiLCBtX3ByZVBvc3ROdW1iZXJp
bmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wb3N0TnVtYmVy
KGJsb2NrKSwgIlxuIik7CiAgICAgaWYgKG1fbmF0dXJhbExvb3BzKSB7CiAgICAgICAgIGlmIChj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykp
IHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250YWlu
czoiKTsKQEAgLTUwMiw4ICs0OTgsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBEdW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2lu
dFN0YXRlLCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3Vu
aWZpY2F0aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAi
XG4iKTsKICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3Vt
ZW50IGZvcm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAg
ZWxzZQotICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3Vt
ZW50cyksICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50
cnlwb2ludFRvQXJndW1lbnRzKQorICAgICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBm
b3IgYmxvY2sjIiwgcGFpci5rZXktPmluZGV4LCAiOiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwg
IlxuIik7CisgICAgfQogICAgIG91dC5wcmludCgiXG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0
Tm9kZSA9IG51bGxwdHI7CkBAIC02NDAsOCArNjM4LDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1
Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZvaWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgp
CiB7CiAgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3Qu
YXBwZW5kKGJsb2NrKDApKTsKLSAgICBibG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAg
IGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAg
ZW50cnlwb2ludC0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQo
ZW50cnlwb2ludCk7CisgICAgfQogICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTgwMCw3
ICs4MDAsNiBAQCB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKICAgICBtX2RvbWluYXRv
cnMgPSBudWxscHRyOwogICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBtX3ByZVBv
c3ROdW1iZXJpbmcgPSBudWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMg
PSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CiAgICAgbV9i
YWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDcgKzg0OSw5IEBAIEJsb2NrTGlzdCBHcmFw
aDo6YmxvY2tzSW5QcmVPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBCbG9j
a1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIC8v
IE9PUFM6IGFkZCB2YWxpZGF0aW9uIGhlcmUuCisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBv
aW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsK
ICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAg
ICByZXN1bHQuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2st
Pm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTg2Myw3ICs4NjQsOSBAQCBCbG9ja0xpc3QgR3Jh
cGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIFBv
c3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygw
KSk7CisgICAgLy8gT09QUzogYWRkIHZhbGlkYXRpb24gaGVyZS4KKyAgICBmb3IgKEJhc2ljQmxv
Y2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVu
dHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9w
KCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRP
cmRlcjo6UHJlOgpAQCAtMTQ3OSwxMyArMTQ4Miw2IEBAIERvbWluYXRvcnMmIEdyYXBoOjplbnN1
cmVEb21pbmF0b3JzKCkKICAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKIH0KIAotUHJlUG9zdE51
bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQotewotICAgIGlmICghbV9w
cmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51
bWJlcmluZzsKLX0KLQogTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlTmF0dXJhbExvb3BzKCkK
IHsKICAgICBlbnN1cmVEb21pbmF0b3JzKCk7CkBAIC0xNTI3LDcgKzE1MjMsOCBAQCBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlm
ICghbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+
bG9jYWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50
Tm9kZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgLy8gT09Q
UzogbWF5YmUgd2Ugc2hvdWxkIHNlYXJjaCBhbGwgaGVyZT8gQWxzbywgdGhpcyBzZWVtcyB3cm9u
ZyBpbiBTU0EgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1l
bnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVlW2Fy
Z3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM7CiBjbGFzcyBEb21pbmF0b3JzOwogY2xhc3MgRmxvd0luZGV4aW5nOwogY2xhc3MgTmF0dXJh
bExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNs
YXNzIEZsb3dNYXA7CiAKQEAgLTkwMiw3ICs5MDEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNE
ZWJ1Z2dlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsgfQog
CiAgICAgRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIFByZVBvc3ROdW1iZXJp
bmcmIGVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKICAgICBOYXR1cmFsTG9vcHMmIGVuc3VyZU5h
dHVyYWxMb29wcygpOwogICAgIEJhY2t3YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7CiAg
ICAgQmFja3dhcmRzRG9taW5hdG9ycyYgZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwpAQCAt
OTIxLDcgKzkxOSw4IEBAIHB1YmxpYzoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAg
IENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAgIAotICAgIFZlY3RvcjwgUmVmUHRyPEJh
c2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPFJlZlB0cjxCYXNpY0Jsb2NrPiwg
OD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxPiBtX2VudHJ5cG9pbnRzOwog
ICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKIAogICAgIEhhc2hNYXA8RW5j
b2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNW
YWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7CkBAIC05NTYsNyArOTU1LDkgQEAgcHVi
bGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3Zl
IHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8g
ZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAgIC8vCisgICAg
Ly8gT09QUzogTWF5YmUgd2Ugc2hvdWxkIGluY29ycG9yYXRlIHRoaXMgaW50byBtX2VudHJ5cG9p
bnRzIHZlY3Rvcj8KKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVh
bmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3
ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0
czsKQEAgLTk2Nyw2ICs5NjgsNyBAQCBwdWJsaWM6CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0Fy
cmF5QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERh
dGE+IG1fYnJhbmNoRGF0YTsKICAgICBCYWc8U3dpdGNoRGF0YT4gbV9zd2l0Y2hEYXRhOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeVN3aXRjaERhdGE+IG1fZW50cnlTd2l0Y2hEYXRhOwogICAg
IEJhZzxNdWx0aUdldEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aUdldEJ5T2Zmc2V0RGF0YTsKICAgICBC
YWc8TXVsdGlQdXRCeU9mZnNldERhdGE+IG1fbXVsdGlQdXRCeU9mZnNldERhdGE7CiAgICAgQmFn
PE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE+IG1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YTsK
QEAgLTk4Myw3ICs5ODUsNiBAQCBwdWJsaWM6CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXks
IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxS
ZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERvbWlu
YXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmlu
Zz4gbV9wcmVQb3N0TnVtYmVyaW5nOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+
IG1fbmF0dXJhbExvb3BzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dhcmRzQ0ZHOwpAQCAtMTAwOSw2ICsx
MDEwLDcgQEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwogICAg
IGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRl
eGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBt
X2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2b2lkIHNldExpdmVW
YWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlh
bGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAg
cm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9
IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+
Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0g
ICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdh
dGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVt
YmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1
bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgu
bV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSog
bm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0g
ICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgZm9yIChCYXNpY0Js
b2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5
cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFI
YXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRz
ID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0
SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1
Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJP
ZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFp
bC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7
CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAgICAgICAgICAgICAg
IGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0g
ICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNo
Rm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07CisgICAgICAgICAgICAg
ICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1
ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoZm9y
bWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xl
YW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAg
ICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0
IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAgICBj
YXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwg
IkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0
SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFk
LmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5j
bGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDEgOyBibG9j
a0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYg
KCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1
ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50
LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorCisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkg
eworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSkgewor
ICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMgYWJvdmUuCiAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFj
aGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZhbHNlOwogICAgICAg
ICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYgKzM2OSwxMyBAQCBpbmxp
bmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAg
ICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50cnlTd2l0Y2g6IHsKKyAg
ICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogdGFy
Z2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2NrcykKKyAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0QmxvY2spOworICAgICAgICBy
ZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgogICAgIGNh
c2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDIyIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCiAgICAgICAgICAgICBn
ZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAgICBDYXRjaE9TUkVudHJ5
RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCisgICAgeworICAgICAgICAvLyBPT1BTOiBNYWtlIHRoaXMgYSBiaW5hcnkgc2VhcmNo
LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2F0Y2hPU1JFbnRyeS5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgaWYgKGNhdGNoT1NSRW50cnlbaV0ubV9ieXRlY29kZUluZGV4
ID09IGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZjYXRjaE9TUkVudHJ5
W2ldOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
dm9pZCBhcHBlbmRDYXRjaE9TUkVudHJ5KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVk
IG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRz
KQorICAgIHsKKyAgICAgICAgY2F0Y2hPU1JFbnRyeS5hcHBlbmQoREZHOjpDYXRjaE9TUkVudHJ5
RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50
Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29u
c3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBAIC0xMzIsNiArMTQ4LDcgQEAgcHJpdmF0ZToKIHB1
YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURh
dGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxERkc6OkNhdGNoT1NSRW50cnlEYXRhPiBjYXRjaE9T
UkVudHJ5OwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAg
ICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsK
ICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsKQEAgLTE2
OCw2ICsxODUsOCBAQCBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9vc3JF
bnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9u
T1NSRW50cnk7CisKKyAgICBNYWxsb2NQdHI8SlNWYWx1ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsK
ICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklU
Q28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50
cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAo
Km1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9m
Q29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQor
ICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1
ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRj
aE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgp
OwogCkBAIC01NTEsMTQgKzU1NywyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91
YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hPU1JF
bnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFk
LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRG
b3JtYXRzKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdl
dCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zp
c2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAg
IG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hPU1JFbnRyeShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4s
IGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMp
KTsKK30KKwogdm9pZCBKSVRDb21waWxlcjo6bm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFz
aWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1
ZmZlcikKIHsKKyAgICBSRUxFQVNFX0FTU0VSVCghYmFzaWNCbG9jay5pc0NhdGNoT1NSVGFyZ2V0
KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQg
dW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9j
ay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAg
CisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURh
dGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVh
ZCkpOwotICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmlu
dGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBl
eHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2
ZSBhbiBleHBlY3RlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBp
bGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNo
T1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAg
ICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNl
cnZhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJl
c2VydmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJs
b2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYg
bm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsK
KyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9j
YWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9
PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0g
bm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZy
YW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMgQEAg
cHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2Nr
LT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0g
bm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAm
JiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCld
OworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5s
b2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBt
X2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAg
ICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2Rl
ID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAo
bm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7
CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9j
YWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vz
c0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDExICs3OCwxMyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgs
IE5vZGUqCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIEp1bXA6CiAgICAgY2Fz
ZSBCcmFuY2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgog
ICAgIGNhc2UgRG91YmxlUmVwOgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJl
cDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAg
Y2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsMTQgQEAgc3RydWN0IFN3aXRjaERhdGEgewog
ICAgIGJvb2wgZGlkVXNlSnVtcFRhYmxlOwogfTsKIAorc3RydWN0IEVudHJ5U3dpdGNoRGF0YSB7
CisgICAgRW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxC
YXNpY0Jsb2NrKj4gYmxvY2tzOworfTsKKwogc3RydWN0IENhbGxWYXJhcmdzRGF0YSB7CiAgICAg
aW50IGZpcnN0VmFyQXJnT2Zmc2V0OwogfTsKQEAgLTEyNzcsMTcgKzEyODUsMjMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJvb2wg
aXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9CisK
ICAgICBib29sIGlzVGVybWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAg
ICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dp
dGNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAg
ICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTEz
NDksNiArMTM2MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRjaCgpKTsKICAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0KKworICAgIEVu
dHJ5U3dpdGNoRGF0YSogZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
c0VudHJ5U3dpdGNoKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0Y2hE
YXRhKj4oKTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpCiAgICAg
ewpAQCAtMTM1OSw2ICsxMzc5LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAg
ICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+Y2Fz
ZXMuc2l6ZSgpICsgMTsKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgICAgIHJl
dHVybiBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEzOTQsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgp
LT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRo
cm91Z2guYmxvY2s7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3aXRjaCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5kZXhdOworCiAg
ICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYg
KGlzSnVtcCgpKQpAQCAtMTUxOCw2ICsxNTQ0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEF0
b21pY3NTdG9yZToKICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0b21p
Y3NYb3I6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE5MzAsNiArMTk1NywxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0
dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50
cnlJbmRleCgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCgpID09IEV4
dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90Pigp
OworICAgIH0KICAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAg
ICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5k
aWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZy
b20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1
bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhl
IEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKQEAgLTM4Niw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgbWFjcm8oSnVtcCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEJyYW5jaCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIG1hY3JvKEVudHJ5U3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUmV0
dXJuLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVGFpbENhbGwsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKERpcmVjdFRhaWxDYWxsLCBOb2Rl
TXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYg
KzMzNiw2NCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAg
cmV0dXJuIHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0
ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7
CisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChj
b2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29k
ZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChqaXRDb2RlKTsKKworICAgIERGRzo6Q2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50
cnkgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJ
bmRleCk7CisgICAgaWYgKCFjYXRjaE9TUkVudHJ5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVu
IHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFy
Z3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaE9TUkVudHJ5LT5tX2FyZ3VtZW50Rm9ybWF0cy5z
aXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3
aXRjaCAoY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7CisgICAg
ICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50
MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAoIXZhbHVl
LmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGlm
ICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVzaDoKKyAgICAgICAg
ICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4gVGhlcmVmb3JlLCBp
dCdzIGFsbG93ZWQgdG8gYmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4gYXJndW1lbnQgaXMg
dHJpdmlhbGx5IGEgSlNWYWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1v
bi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVO
TElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQo
KV0udS5vcGNvZGUpID09IG9wX2FmdGVyX2NhdGNoKTsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zm
c2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBidWZm
ZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAg
ICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5pc0xvY2FsKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIu
Z2V0KClbaW5kZXhdID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1
ZSgpOworICAgICAgICArK2luZGV4OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4
ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoY2F0Y2hPU1JFbnRyeS0+bV9tYWNoaW5lQ29kZU9mZnNl
dCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2lu
Y2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5
ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAg
cmV0dXJuIG9zckVudHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hP
U1JFbnRyeURhdGEgeworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25l
ZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8vIFdlIHVzZSB0aGlzIHdoZW4gZG9pbmcgT1NS
IGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUgYXJndW1lbnRzCisgICAgLy8gYXJlIG9mIHRo
ZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmluZyBhdCBhIGNhdGNoIGJsb2NrLgorICAgIFZl
Y3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Cit9OworCiAvLyBSZXR1cm5zIGEg
cG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQgdGhlIE9TUiBlbnRyeSB0aHVuayB3aWxsIHJl
Y29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlzIHJldHVybnMgbnVsbCwgaXQgbWVhbnMgCiB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMgcmV0dXJuZWQsIHdlIGNhbid0IE9TUiBlbnRl
ci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUgUEMgdG8ganVtcCB0by4KK3ZvaWQqIHByZXBh
cmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwg
Q29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTIsMTYgKzExMiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhl
cmUuCiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisg
ICAgICAgIFZlY3RvcjxOb2RlKiwgOD4gYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yIChp
bnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsr
YXJndW1lbnQpIHsKICAgICAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxl
c0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJn
dW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9
IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgIG9sZE5vZGUg
PSBhcmd1bWVudHNbYXJndW1lbnRdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSog
bm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3Bl
Y05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBhcmd1bWVudHNbYXJndW1lbnRdID0g
bm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBi
YXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKQEAgLTEzOSw2ICsxNDAsMTIg
QEAgcHVibGljOgogICAgICAgICAgICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBp
bnNlcnRpb25TZXQsIHRhcmdldCkpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlvblNldC5l
eGVjdXRlKCk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRz
LnNpemUoKSA9PSAxKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0gbmV3Um9v
dDsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigpOworICAg
ICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBhcmd1bWVu
dHMpOworCiAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgbV9n
cmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2OCw3ICszNjgsNiBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhy
CiAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKICAgICAgICAgZGZnLmVuc3VyZURvbWlu
YXRvcnMoKTsKICAgICAgICAgZGZnLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBkZmcu
ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJp
bmcuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuY3BwCShub25leGlzdGVudCkKQEAgLTEsODggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRlICJERkdC
bG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVyaW5nKEdy
YXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3JhcGgpOwot
ICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3Qu
cHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9IDA7Ci0g
ICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dpdGhPcmRl
ciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7
Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBbaXRlbS5u
b2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdvcmtsaXN0
LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nl
c3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdvcmtsaXN0
LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2l0
T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51bWJlciA9
IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNl
IEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRWRnZUtp
bmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRFZGdlOgot
ICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFja0VkZ2Ui
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBv
c3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmFzaWNCbG9jay5o
IgotI2luY2x1ZGUgIkRGR0Jsb2NrTWFwLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi1lbnVtIEVkZ2VLaW5kIHsKLSAgICBGb3J3YXJkRWRnZSwKLSAgICBDcm9zc0Vk
Z2UsCi0gICAgQmFja0VkZ2UKLX07Ci0KLWNsYXNzIFByZVBvc3ROdW1iZXJpbmcgewotICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFByZVBvc3ROdW1iZXJpbmcpOwotICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIFByZVBvc3ROdW1iZXJpbmcoR3JhcGgmKTsKLSAgICB+
UHJlUG9zdE51bWJlcmluZygpOwotCi0gICAgdW5zaWduZWQgcHJlTnVtYmVyKEJhc2ljQmxvY2sq
IGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wcmVOdW1iZXI7IH0KLSAgICB1
bnNpZ25lZCBwb3N0TnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21h
cFtibG9ja10ubV9wb3N0TnVtYmVyOyB9Ci0gICAgCi0gICAgLy8gSXMgZnJvbSBhIHN0cmljdCBh
bmNlc3RvciBvZiB0bz8KLSAgICBib29sIGlzU3RyaWN0QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBm
cm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcmVOdW1i
ZXIoZnJvbSkgPCBwcmVOdW1iZXIodG8pCi0gICAgICAgICAgICAmJiBwb3N0TnVtYmVyKGZyb20p
ID4gcG9zdE51bWJlcih0byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNBbmNlc3Rvck9mKEJh
c2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZyb20gPT0gdG8gfHwgaXNTdHJpY3RBbmNlc3Rvck9mKGZyb20sIHRvKTsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCBpc1N0cmljdERlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdEFuY2VzdG9y
T2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzRGVzY2VuZGFudE9mKEJhc2lj
QmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGlzQW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIC8vIFRoaXMgd2lsbCBn
aXZlIGEgYm9ndXMgYW5zd2VyIGlmIHRoZXJlIGlzIGFjdHVhbGx5IG5vIHN1Y2ggZWRnZS4gSWYg
eW91IHdhbnQgdG8gZGV0ZXJtaW5lCi0gICAgLy8gaWYgdGhlcmUgaXMgYW55IHN1Y2ggZWRnZSwg
eW91IGhhdmUgdG8gZG8gaXQgeW91cnNlbGYuCi0gICAgRWRnZUtpbmQgZWRnZUtpbmQoQmFzaWNC
bG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNT
dHJpY3REZXNjZW5kYW50T2YodG8sIGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEZvcndhcmRF
ZGdlOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzQW5jZXN0b3JPZih0bywgZnJvbSkpCi0gICAg
ICAgICAgICByZXR1cm4gQmFja0VkZ2U7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gQ3Jvc3NF
ZGdlOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgc3RydWN0IE51bWJlcmluZyB7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fcHJlTnVtYmVyOwotICAgICAgICB1bnNpZ25lZCBtX3Bvc3ROdW1iZXI7
Ci0gICAgfTsKLQotICAgIEJsb2NrTWFwPE51bWJlcmluZz4gbV9tYXA7Ci19OwotCi19IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mLCBKU0M6OkRGRzo6RWRnZUtpbmQpOwotCi19IC8vIG5hbWVzcGFjZSBX
VEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsMTYgQEAg
cHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHByb2ZpbGVkQmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8g
V2Ugb25seSBkbyB0aGlzIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBmaXJzdCBibG9jay4gVGhl
IGFyZ3VtZW50cyBmcm9tCisgICAgICAgICAgICAvLyBvdGhlciBlbnRyeXBvaW50cyBoYXZlIGFs
cmVhZHkgYmVlbiBwb3B1bGF0ZWQgd2l0aCB0aGVpciBwcmVkaWN0aW9ucy4KKyAgICAgICAgICAg
IGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZCht
X2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9
IDA7IGFyZyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMo
KSk7ICsrYXJnKSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gcHJv
ZmlsZWRCbG9jaygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmcpOwogICAgICAgICAgICAg
ICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10t
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAgICBwcm9m
aWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgY2FzZSBUb051bWJlcjoKICAgICAg
ICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAg
ICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1f
Y3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMTExLDYgKzExMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIERlZmluZUFjY2Vzc29y
UHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoK
KyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAg
IGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEwLDcg
QEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBEZWNpZGUgd2hlcmUg
UGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3MgYnV0IGRvZXNu
J3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUg
dG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBicm8uCisgICAg
ICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBiYXNlZCBvbiB3
aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1bGF0b3IuY29t
cHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxlKiBzc2FW
YXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAgICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUluZGV4W3NzYVZh
cmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgxLDIyIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT5zc2Eg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9n
cmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dy
YXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisgICAgICAgIC8vIEZJWE1FOiBTdXBw
b3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6CisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYg
YXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGgu
YmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNp
emUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50
cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNo
ZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcu
Z2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
YXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0
YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1f
YXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFy
Z3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBh
cmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJn
dW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNyw2ICszMDcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNo
OgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWls
Q2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJy
YXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2Fs
OgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9v
cDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFu
ZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2
ICs1MSw4IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hk
b2cuaCIKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIgorCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjA3OSw2ICs2
MDgxLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6IHsKKyAgICAgICAgbV9qaXQucHJpbnQoIkV4dHJhY3RDYXRjaExvY2FsIik7CisgICAgICAg
IC8vbV9qaXQucHJvYmUoW10gKFByb2JlQ29udGV4dCopIHsKKyAgICAgICAgLy8gICAgZGF0YUxv
Z0xuKCJFeHRyYWN0Q2F0Y2hMb2NhbCEiKTsKKyAgICAgICAgLy99KTsKKworICAgICAgICBKU1Zh
bHVlKiBwdHIgPSAmbV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW25v
ZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgbV9qaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAg
IG1faml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiksIHRlbXBHUFIpOwor
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAjZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29w
OgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKQEAgLTYwODcsNiArNjEwNCw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAKKworICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAg
Y2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpAQCAt
NjExNSw3ICs2MTM0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgog
ICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoKLSAgICAgICAgREZHX0NSQVNIKG1f
aml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzYsNiArMTY3Niwx
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+aXNDYXRjaE9TUlRhcmdldCkgeworICAg
ICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgo
KS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
ICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRNYXRl
cmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsK
KyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0
KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBAIC0x
NzcwLDggKzE3NzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMo
CiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1bWVu
dHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQuZ3Jh
cGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBt
X2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJndW1l
bnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVu
dCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg3Myw3ICsxODgxLDIyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUlu
ZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoT1NSVGFyZ2V0
KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9y
ID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50
Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOworICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRB
cmd1bWVudCA6IGFyZ3VtZW50c1ZlY3RvcikgeworICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1
bWVudCkgeworICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNl
dEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZv
cm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBm
bHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQpOworICAgICAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBw
ZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VD
YXRjaE9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxp
bmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3Ny
RW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CiAgICAgfQogICAgIEFTU0VSVChvc3JFbnRyeUlu
ZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC05OCw2ICs5OCw4
IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlv
bihHcmFwaCYgZ3JhcGgpCiB7CisgICAgLy8gT09QUy4KKyAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHJ1blBoYXNlPFN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFw
aCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdl
IHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCks
IEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBo
LCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0g
YmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJl
cnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9k
ZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhp
dCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91
c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9L
KQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgbV9ub2Rl
ID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCks
IENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBp
LS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsK
KyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgICAgICBtX291
dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1
Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVf
T1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAg
ICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3Ro
aXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0
NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29u
c3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNo
KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMs
IEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJl
Z2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNf
SklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmlu
Z0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0K
IAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVU
b3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFs
dWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKElu
c3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMs
NiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRo
aXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9i
eXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFpl
cm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAg
anVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIp
OworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCwgcmVnVDApOworICAgICAg
ICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAg
ICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5
T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRD
YXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29k
ZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5q
aXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShl
eGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYK
IAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAg
dHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAo
SklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBp
bnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VR
WikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BF
UkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7
Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNT
dGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFU
SU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsK
IHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3Mp
KEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElP
TiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CkBAIC0zOTYsNiAr
Mzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
K2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0
ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBF
bmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJ
ZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9u
cywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0g
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3By
b2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJv
ZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsK
K30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3Zl
cmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNl
cHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90
YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gp
OwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZs
b3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxF
KEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0
X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBf
bGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkK
IAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVy
X2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317912</attachid>
            <date>2017-08-10 20:39:57 -0700</date>
            <delta_ts>2017-08-11 11:43:27 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>90534</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDkgKzI1MTQsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDEsNiArMjUzMiw5IEBAIHZvaWQg
Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZEMKICAgICAgICAgICAgIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHByb2Zp
bGVCdWNrZXQgOiBtX2NhdGNoUHJvZmlsZXMpCisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgIAogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bnMobG9ja2VyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRW
YWx1ZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQ
cm9maWxlczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXI+PiBtX2NhdGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNl
UHJvZmlsZSwgOD4gbV9yYXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJh
eUFsbG9jYXRpb25Qcm9maWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5
UHJvZmlsZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3NCw4ICsxNzQsOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhM
b2dOdW1iZXJPZkJ1Y2tldHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVX
aXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRl
Y29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNv
ZGVPZmZzZXQpIHsgfQorICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051
bWJlck9mQnVja2V0czwwPigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZz
ZXQpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNl
dCkgeyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBp
bmxpbmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVD
YXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmQgeworICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFu
ZDsKK307CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXpl
KHNpemUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0
dWZmIHRoYW4gd2UgbmVlZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxl
cworICAgICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1
ZmZlciA9IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAq
IHNpemVvZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgp
W2ldKSBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rp
b24+CisgICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rp
b24obV9idWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAg
ICBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAg
ZW1pdE9wY29kZShvcF9hZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQg
bGV4aWNhbFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRy
eUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFs
IHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoK
KyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAg
bV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRl
Y29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNl
KQorICAgICwgaXNDYXRjaE9TUlRhcmdldChmYWxzZSkKICAgICAsIGNmYUhhc1Zpc2l0ZWQoZmFs
c2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwgY2ZhRm91bmRDb25zdGFu
dHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2su
aAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBAIHN0cnVjdCBCYXNpY0Js
b2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90IGkgPSBzaXplKCk7CiAg
ICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhdChpKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBKdW1wOgot
ICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNlIFN3aXRjaDoKLSAgICAg
ICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKLSAgICAgICAg
ICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJn
czoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKLSAgICAgICAgICAg
IGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+aXNUZXJtaW5hbCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwgaSk7CisgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBiaXR0ZXIgZW5kIGNh
biBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2lsbCBwcm9iYWJseSBvbmx5
IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBUaGV5IGFyZSBhbGwgbm8t
b3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVuLgogICAgICAgICAgICAg
Y2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBvdXIgdW5pdmVyc2FsIG5v
LW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYgKzE3Nyw3IEBAIHN0cnVj
dCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBCbG9ja0luZGV4IGluZGV4
OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBpc0NhdGNoT1NSVGFyZ2V0
OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNob3VsZFJldmlzaXQ7CiAg
ICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50aWFsIGJs
b2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5k
CiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5
dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdU
YXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBi
bG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAgIC8vIHRo
ZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3NvcnMgbGlu
a2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRoZSBvdGhl
ciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTQwNzQsNyArNDA3NCwxMSBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgLy8gdXMgdG8gdHJh
Y2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0aGUgYWN0dWFsIGFyZ3VtZW50IHBh
c3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEgdmFsdWUgd2Ugc2V0IGV4cGxpY2l0
bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3JhcGguYmxvY2soMCkgJiYgIWlubGlu
ZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHMucmVzaXplKG1fbnVt
QXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4PigpKTsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICBWZWN0
b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMp
OworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBkb24n
dCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwogICAgICAgICAv
LyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CkBAIC00MDg3LDcgKzQw
OTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1
cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlh
YmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFy
Z3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRB
cmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0
QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKICAgICAgICAgfQogICAg
IH0KQEAgLTUxNTAsNiArNTE1NCwxMjAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFwaC5t
X2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBh
bnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFu
Lm1vZGUpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgY2F0Y2ggaW4gdGhl
IEZUTC4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0
Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJy
ZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIq
PihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKworICAgICAgICAgICAgVmVjdG9y
PFNwZWN1bGF0ZWRUeXBlPiBhcmd1bWVudFByZWRpY3Rpb25zKG1fbnVtQXJndW1lbnRzKTsKKyAg
ICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbG9jYWxQcmVkaWN0aW9uczsKKyAgICAg
ICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5z
aWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1lbnRzOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAgICAgICAg
ICAgICBib29sIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29w
ZXJhbmQpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0g
cHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAg
ICAgICAgICAgICAgICAgIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJj0gcHJlZGljdGlvbiA9PSBT
cGVjTm9uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQocHJlZGljdGlvbik7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQob3BlcmFuZC5pc0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVu
dCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0gcHJl
ZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVu
dHM7ICsrYXJndW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChz
ZWVuQXJndW1lbnRzLmNvbnRhaW5zKGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJiYgKGFyZ3VtZW50UHJl
ZGljdGlvbnMuc2l6ZSgpIHx8IGxvY2FsUHJlZGljdGlvbnMuc2l6ZSgpKSkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSBoYXZlbid0IGV4ZWN1dGVkIHRo
aXMgY2F0Y2ggeWV0LiBMZXQncyBub3QgY29tcGlsZQorICAgICAgICAgICAgICAgICAgICAvLyBp
dCBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNvbXBpbGluZyB0aGlzIGFzIGFuIGVudHJ5
cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB3aGVuIHNlYXJjaGlu
ZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBpdCByZWxhdGl2ZQorICAgICAgICAgICAg
Ly8gdG8gb3BfYWZ0ZXJfY2F0Y2guCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNv
ZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OworCisgICAgICAgICAgICAvLyBPT1BTOiBpcyB0aGlz
IHJpZ2h0PyBBdWRpdCBpc09TUlRhcmdldC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5p
c09TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNDYXRjaE9T
UlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5k
KG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxWaXJ0dWFs
UmVnaXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7CisgICAgICAgICAgICBsb2NhbHNUb1NldC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyB3aWxs
IHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNh
dXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBtX2V4aXRP
SyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUgc2luY2Ugd2Ugd291
bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAgICAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAo
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBp
ZiAob3BlcmFuZC5pc0FyZ3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5pc0xvY2FsKCkpOworICAgICAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gYWRkVG9HcmFwaChFeHRyYWN0Q2F0Y2hMb2NhbCwgT3BJbmZvKG51bWJl
ck9mTG9jYWxzKSwgT3BJbmZvKGxvY2FsUHJlZGljdGlvbnNbbnVtYmVyT2ZMb2NhbHNdKSk7Cisg
ICAgICAgICAgICAgICAgKytudW1iZXJPZkxvY2FsczsKKyAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFuZCksIHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBsb2NhbHNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIob3BlcmFu
ZCwgdmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gc3RkOjptYXgobnVtYmVyT2ZMb2NhbHMsICptX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBu
b3cgZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIgT1NSIGV4aXQgc3RhdGUgdG8gcmVjb3Zl
ciBhbnkgbGl2ZSBsb2NhbHMuCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IAorICAgICAg
ICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgLy8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBzYWZlIHRvIGV4aXQuIFRo
aXMgaGFwcGVucyBoZXJlIGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUgY2hlY2tzIHVwCisgICAg
ICAgICAgICAgICAgLy8gdG8gdGhpcyBwb2ludCBpbiB0aGUgcHJvZ3JhbSwgc28gaXQgbXVzdCBi
ZSBzYWZlIHRvIGV4aXQuCisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUq
LCA4PigpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3Vt
ZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlw
b2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMu
c2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRp
Y3QoYXJndW1lbnRQcmVkaWN0aW9uc1thcmd1bWVudF0pOworCisgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudElu
ZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBzZXRB
cmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOworICAg
ICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3Vt
ZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAg
IGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
aXIgOiBsb2NhbHNUb1NldCkKKyAgICAgICAgICAgICAgICBzZXRMb2NhbChjdXJyZW50Q29kZU9y
aWdpbigpLCBwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBD
YWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC02MTM4LDggKzYyNTYsMTAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0
cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBU
aGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlm
ICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2st
PmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9l
bnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwog
ICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtNjE5Niw4ICs2MzE2LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQog
ICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNh
bGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGlu
ZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlu
a2luZ1RhcmdldHMpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAg
ICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCisgICAgLy8gT09QUzogd2UgbmVlZCB0byBmYWtlIGEgcm9vdCB3
aGVuIHdlIGhhdmUgbXVsdGlwbGUgZW50cnlwb2ludHMuCiAgICAgTm9kZSByb290KCkgeyByZXR1
cm4gbV9ncmFwaC5ibG9jaygwKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwx
MyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9y
IHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAg
ICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZl
cmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRo
ZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlz
IHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dy
YXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2so
MCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJn
dW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0g
cGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMg
PSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNp
emUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQu
c2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0K
ICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
OgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNl
IG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9s
b2d1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVj
azoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJu
OwogICAgICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBj
YXNlIEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxv
Y2spOwogICAgICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50
cyk7CisgICAgICAgIGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFy
Z3VtZW50c1ZlY3Rvcik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hl
Y2sgY2xlYW4tdXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFw
aC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNo
OgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RU
YWlsQ2FsbDoKQEAgLTE5Niw2ICsxOTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgIGNhc2UgSXNOb25F
bXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENoZWNr
VGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Z1
bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2Fz
ZSBKdW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoK
ICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAg
LTE5ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAg
ICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGlu
dDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAy
MjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90
IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRl
ICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHTmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAi
REZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1
bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTQxMSw3ICs0MTAsOCBAQCBib29sIEdyYXBoOjp0ZXJt
aW5hbHNBcmVWYWxpZCgpCiAKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVt
cE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQu
cHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0
KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUg
PyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCki
IDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIg
KCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIp
OiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9j
ay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hPU1JU
YXJnZXQgPyAiIChDYXRjaCBPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJsb2Nr
LT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50
LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00
MjIsOCArNDIyLDYgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgog
ICAgIGlmIChibG9jay0+dGVybWluYWwoKSkgewogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgi
ICIsICpzdWNjZXNzb3IpOwotICAgICAgICAgICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5lZGdlS2lu
ZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAg
ICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsKQEAgLTQ0Niw4ICs0NDQsNiBAQCB2b2lkIEdyYXBo
OjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnBy
aW50KCJcbiIpOwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJl
cmluZy0+cHJlTnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1i
ZXIoYmxvY2spLCAiXG4iKTsKICAgICBpZiAobV9uYXR1cmFsTG9vcHMpIHsKICAgICAgICAgaWYg
KGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2Nr
KSkgewogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRh
aW5zOiIpOwpAQCAtNTAyLDggKzQ5OCwxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBv
aW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1f
dW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUs
ICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJn
dW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAg
ICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJn
dW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogbV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRz
IGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIsIGxpc3REdW1wKHBhaXIudmFsdWUp
LCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAogICAgIE5vZGUqIGxh
c3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2MzgsMTAgQEAgdm9pZCBHcmFwaDo6aGFuZGxl
U3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5
KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3b3JrbGlz
dC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRydWU7Cisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykgeworICAgICAg
ICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0LmFwcGVu
ZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtODAw
LDcgKzgwMCw2IEBAIHZvaWQgR3JhcGg6OmludmFsaWRhdGVDRkcoKQogewogICAgIG1fZG9taW5h
dG9ycyA9IG51bGxwdHI7CiAgICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJl
UG9zdE51bWJlcmluZyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAgICBt
X2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg0OSwxOCBAQCBCbG9ja0xpc3Qg
R3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAg
QmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAg
ICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3
b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9
IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAgICAg
ICAgICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAgICBp
ZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9lbnRyeXBvaW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fZW50cnlwb2ludHMuY29udGFpbnMod29ya2xpc3RbaV0pKTsKKyAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtODYzLDcgKzg2OCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tz
SW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3Jr
bGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0g
d29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAg
IGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtODc2LDYgKzg4MiwxMiBAQCBCbG9ja0xpc3QgR3Jh
cGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKHdvcmtsaXN0W3dvcmtsaXN0LnNp
emUoKSAtIGkgLSAxXSkpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE0
NzksMTMgKzE0OTEsNiBAQCBEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCiAg
ICAgcmV0dXJuICptX2RvbWluYXRvcnM7CiB9CiAKLVByZVBvc3ROdW1iZXJpbmcmIEdyYXBoOjpl
bnN1cmVQcmVQb3N0TnVtYmVyaW5nKCkKLXsKLSAgICBpZiAoIW1fcHJlUG9zdE51bWJlcmluZykK
LSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVQb3N0TnVt
YmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBvc3ROdW1iZXJpbmc7Ci19Ci0KIE5h
dHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCiB7CiAgICAgZW5zdXJlRG9t
aW5hdG9ycygpOwpAQCAtMTUyNyw3ICsxNTMyLDggQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCku
aXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVu
dCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50
c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgICAgIC8vIE9PUFM6IG1heWJlIHdlIHNob3Vs
ZCBzZWFyY2ggYWxsIGhlcmU/IEFsc28sIHRoaXMgc2VlbXMgd3JvbmcgaW4gU1NBIGluIHRoZSBm
dXR1cmUuCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3
ICs1OSw2IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogY2xhc3MgRG9taW5h
dG9yczsKIGNsYXNzIEZsb3dJbmRleGluZzsKIGNsYXNzIE5hdHVyYWxMb29wczsKLWNsYXNzIFBy
ZVBvc3ROdW1iZXJpbmc7CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGbG93TWFwOwogCkBA
IC05MDIsNyArOTAxLDYgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRGVidWdnZXJFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAogICAgIERvbWluYXRvcnMm
IGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5nJiBlbnN1cmVQcmVQb3N0
TnVtYmVyaW5nKCk7CiAgICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1cmFsTG9vcHMoKTsKICAg
ICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NGRygpOwogICAgIEJhY2t3YXJkc0RvbWlu
YXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKTsKQEAgLTkyMSw3ICs5MTksOCBAQCBw
dWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJv
ZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1f
YmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAg
IFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwg
MTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96
ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBt
X2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDcgKzk1NSw5IEBAIHB1YmxpYzoKICAgICAvLwogICAg
IC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9u
IHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVj
dG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICAvLworICAgIC8vIE9PUFM6IE1heWJlIHdl
IHNob3VsZCBpbmNvcnBvcmF0ZSB0aGlzIGludG8gbV9lbnRyeXBvaW50cyB2ZWN0b3I/CisgICAg
SGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1
bWVudHM7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0Es
IHRoaXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgog
ICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7CkBAIC05NjcsNiArOTY4
LDcgQEAgcHVibGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+
IG1fbmV3QXJyYXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7
CiAgICAgQmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnlTd2l0Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9m
ZnNldERhdGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZz
ZXREYXRhPiBtX211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhPiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkBAIC05ODMsNyArOTg1LDYg
QEAgcHVibGljOgogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5cGU6OkRl
c2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+PiBtX2Rv
bUpJVFNuaXBwZXRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3JzPiBtX2RvbWluYXRv
cnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9zdE51bWJl
cmluZzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25hdHVyYWxMb29wczsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFj
a3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKQEAgLTEwMDksNiArMTAxMCw3IEBAIHB1YmxpYzoK
ICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdn
ZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0Nh
Y2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDU0ICs5Myw1OSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2Rl
QWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJl
dmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290
LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2Ji
ZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVj
dHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7
ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsK
LQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9y
bSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRz
W2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1f
YXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZv
cm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6
IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRS
ZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNl
OworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAgICAg
ICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVz
QXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRl
QXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytp
KSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xl
YXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAgaWYg
KG1fZ3JhcGgubV9mb3JtID09IFNTQSkKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBo
Lm1fYXJndW1lbnRGb3JtYXRzW2ldOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZv
cm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZp
bmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29s
ZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENl
bGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19D
UkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6
Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVj
SW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29s
ZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUo
U3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENl
bGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZSht
X2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVz
aGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5t
YWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0
IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigp
OwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0g
ICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9m
TG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxv
Y2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9j
YWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1f
Z3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdl
IGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAg
YmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zp
c2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw2ICszNjksMTMgQEAgaW5saW5lIGJvb2wgSW5QbGFjZUFi
c3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Js
b2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4gY2hhbmdl
ZDsKICAgICB9CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOiB7CisgICAgICAgIGJvb2wgY2hhbmdl
ZCA9IGZhbHNlOworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHRhcmdldEJsb2NrIDogdGVybWlu
YWwtPmVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3MpCisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlKGJhc2ljQmxvY2ssIHRhcmdldEJsb2NrKTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7Cisg
ICAgfQogICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw2ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50
cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0
ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hPU1JFbnRyeURhdGEqIGNhdGNoT1NSRW50
cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAg
ICAgICAgLy8gT09QUzogTWFrZSB0aGlzIGEgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNhdGNoT1NSRW50cnkuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmIChjYXRjaE9TUkVudHJ5W2ldLm1fYnl0ZWNvZGVJbmRleCA9PSBieXRlY29kZUluZGV4
KQorICAgICAgICAgICAgICAgIHJldHVybiAmY2F0Y2hPU1JFbnRyeVtpXTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hP
U1JFbnRyeSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNl
dCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAg
IGNhdGNoT1NSRW50cnkuYXBwZW5kKERGRzo6Q2F0Y2hPU1JFbnRyeURhdGEgeyBieXRlY29kZUlu
ZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAg
IH0KICAgICAKICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQp
CiAgICAgewpAQCAtMTMyLDYgKzE0OCw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9u
RGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAg
ICBWZWN0b3I8REZHOjpDYXRjaE9TUkVudHJ5RGF0YT4gY2F0Y2hPU1JFbnRyeTsKICAgICBTZWdt
ZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNw
ZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJs
ZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07CkBAIC0xNjgsNiArMTg1LDggQEAgcHVi
bGljOgogICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1
bnNpZ25lZCBvc3JFbnRyeVJldHJ5OwogICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAg
TWFsbG9jUHRyPEpTVmFsdWU+IGNhdGNoT1NSRW50cnlCdWZmZXI7CiAjZW5kaWYgLy8gRU5BQkxF
KEZUTF9KSVQpCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw2ICszNjcsOSBA
QCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvCiAKIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGUoKQogeworICAgIGlmIChtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hP
U1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyID0gTWFsbG9j
UHRyPEpTVmFsdWU+OjptYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICogKCptX2dyYXBoLm1fbWF4TG9j
YWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21w
aWxlRW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxh
dGl2ZUpJVD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQyOSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogeworICAgIGlm
IChtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2Rl
LT5jYXRjaE9TUkVudHJ5QnVmZmVyID0gTWFsbG9jUHRyPEpTVmFsdWU+OjptYWxsb2Moc2l6ZW9m
KEpTVmFsdWUpICogKCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1
NTcsMjMgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2Vu
ZGlmCiAKK3ZvaWQgSklUQ29tcGlsZXI6Om5vdGljZUNhdGNoT1NSRW50cnkoQmFzaWNCbG9jayYg
YmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlu
a0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hPU1JUYXJnZXQpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50
cnlwb2ludCBpcyBieSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVu
ZENhdGNoT1NSRW50cnkoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNl
dE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklU
Q29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBp
bGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVM
RUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRjaE9TUlRhcmdldCk7CisKICAgICAvLyBPU1Ig
ZW50cnkgaXMgbm90IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNv
bnRyb2wgZmxvdyBhbmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZD
RkFIYXNWaXNpdGVkKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlE
YXRhKiBlbnRyeSA9IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0
ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAg
IGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RW
YWx1ZXNBdEhlYWQ7CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBp
biBvdXIgcHJvdG9jb2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2
b2lkIG5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tI
ZWFkLCBMaW5rQnVmZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaE9TUkVudHJ5KEJhc2ljQmxv
Y2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZs
dXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+
IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJp
YWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAg
Ym9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50
VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9k
ZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFt
ZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNh
bGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVz
aEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkr
KykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAg
ICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0
QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBo
Lm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAg
ICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIg
IT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0
QXJndW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAg
ICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJs
b2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgs
MTMgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2Ug
Q291bnRFeGVjdXRpb246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNh
c2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJl
cDoKICAgICBjYXNlIEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRy
YWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2Ug
TG9naWNhbE5vdDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDMsNiArMjAzLDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1
bXBUYWJsZTsKIH07CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNo
RGF0YSgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2Nr
czsKK307CisKIHN0cnVjdCBDYWxsVmFyYXJnc0RhdGEgewogICAgIGludCBmaXJzdFZhckFyZ09m
ZnNldDsKIH07CkBAIC0xMjc3LDE3ICsxMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBi
b29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRj
aDsKICAgICB9CiAKKyAgICBib29sIGlzRW50cnlTd2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gRW50cnlTd2l0Y2g7CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1p
bmFsKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6
CiAgICAgICAgIGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2Fz
ZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENh
bGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29w
SW5mby5hczxTd2l0Y2hEYXRhKj4oKTsKICAgICB9CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVu
dHJ5U3dpdGNoRGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQog
ICAgIAogICAgIHVuc2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3
OSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICBjYXNlIFN3aXRj
aDoKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSArIDE7Cisg
ICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hE
YXRhKCktPmJsb2Nrcy5zaXplKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQpAQCAtMTM3Miw2ICsxMzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsK
ICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGlzRW50cnlTd2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVy
biBlbnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzW2luZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGlu
ZGV4KSB7CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1
MTgsNiArMTU0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAg
ICAgIGNhc2UgQXRvbWljc1N1YjoKICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICBj
YXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFs
aWQoKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7
CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
MCw2ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVj
aWFsIG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3Jl
IGxvYWRpbmcgYSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1
ZmZlci4gKi9cCiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykg
XAorICAgIG1hY3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAg
ICAgLyogVGllci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1h
Y3JvKENoZWNrVGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3
aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1Zh
ckFyZ3MpIFwKICAgICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVIYXNWYXJBcmdzKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw2ICszMzYsNjQgQEAgdm9pZCog
cHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwog
fQogCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9j
ayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIGlmICghT3B0aW9u
czo6dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBl
KCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2Rl
QmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisK
KyAgICBERkc6OkNhdGNoT1NSRW50cnlEYXRhKiBjYXRjaE9TUkVudHJ5ID0gaml0Q29kZS0+Y2F0
Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICgh
Y2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBXZSdyZSBv
bmx5IGFsbG93ZWQgdG8gT1NSIGVudGVyIGlmIHdlJ3ZlIHByb3ZlbiB3ZSBoYXZlIGNvbXBhdGli
bGUgYXJndW1lbnQgdHlwZXMuCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3Vt
ZW50IDwgY2F0Y2hPU1JFbnRyeS0+bV9hcmd1bWVudEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50
KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOworICAgICAgICBzd2l0Y2ggKGNhdGNoT1NSRW50
cnktPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1
c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
Rkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVh
bigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5z
IHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJl
IGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVk
SlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFs
dWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5z
aWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJl
U3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBv
cF9hZnRlcl9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2lu
dGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAo
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxS
ZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW2luZGV4XSA9IGV4
ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytp
bmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0
T2Zmc2V0KGNhdGNoT1NSRW50cnktPm1fbWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZh
bHVlLmgiCisjaW5jbHVkZSAiREZHRmx1c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5o
IgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5l
IHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURh
dGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0KIAorc3RydWN0IENhdGNoT1NSRW50cnlEYXRhIHsKKyAg
ICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9m
ZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4g
V2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBi
ZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+
IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRh
IGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBw
YXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisv
LyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51
bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBp
bmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2ln
bmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDE2ICsxMTIsMTcg
QEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmln
aW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9k
ZSosIDg+IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZCht
X2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAg
ICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQo
YXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAg
Ly8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQn
cyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1l
bnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICBvbGROb2RlID0gYXJndW1lbnRzW2FyZ3Vt
ZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5h
cHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVu
dCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBu
b2RlOworICAgICAgICAgICAgYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0K
IAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2Fs
bGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzksNiArMTQwLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJn
ZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7Cisg
ICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9vdCwgYXJndW1lbnRzKTsKKwogICAgICAgICBt
X2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hh
YmxlQmxvY2tzKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsNyArMzY4LDYgQEAg
UGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKSB7CiAgICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7CiAgICAgICAg
IGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1i
ZXJpbmcoKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKG1vZGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5n
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVk
ZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgot
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
LQotUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0g
ICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3Jk
ZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2so
MCkpOwotICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQ
b3N0TnVtYmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0
LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZp
c2l0T3JkZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIg
PSBuZXh0UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5v
ZGUpOwotICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUt
PnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAg
ICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisr
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1i
ZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAg
c3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50
KCJGb3J3YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0g
ICAgICAgIG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNl
IEJhY2tFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJl
dmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51
bWJlcmluZy5oCShub25leGlzdGVudCkKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdC
bG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBF
ZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdl
Ci19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmco
KTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyBy
ZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJl
cihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51
bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0g
ICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayog
dG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVt
YmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8p
OwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBC
YXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8
IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNT
dHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8s
IGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dl
ciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVy
bWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0
IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2lj
QmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9m
KHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEJh
Y2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAg
Ci1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcgewotICAgICAgICB1bnNpZ25lZCBtX3By
ZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBC
bG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAg
ewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCkt
Pm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBm
b3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQor
ICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxh
dGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSkt
PnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAg
ICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFs
dWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNN
YXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIGNhc2UgR2V0QXJndW1l
bnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgQ2FsbERP
TUdldHRlcjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRI
ZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExMSw2ICsxMTEyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAg
ICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRW50
cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICBjYXNlIFByb2ZpbGVUeXBl
OgogICAgICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGlu
c2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0g
ICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJl
Y2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdp
bGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRv
ciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAg
ICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxv
Y2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07
CkBAIC0zODEsMTggKzM4MSwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+dmFsdWVz
QXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1
ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMu
c2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5z
aXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtdWx0aXBsZSBlbnRy
eXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9l
bnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7
CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXpl
KCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJn
dW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5n
ZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+
Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3Jt
YXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5v
ZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBi
ZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9k
ZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJl
bmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1f
Z3JhcGgubV9mb3JtID0gU1NBOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2Ug
SnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBE
aXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1
ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwNzksNiArNjA4MSwyMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIG1f
aml0LnByaW50KCJFeHRyYWN0Q2F0Y2hMb2NhbCIpOworICAgICAgICAvL21faml0LnByb2JlKFtd
IChQcm9iZUNvbnRleHQqKSB7CisgICAgICAgIC8vICAgIGRhdGFMb2dMbigiRXh0cmFjdENhdGNo
TG9jYWwhIik7CisgICAgICAgIC8vfSk7CisKKyAgICAgICAgSlNWYWx1ZSogcHRyID0gJm1faml0
LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKVtub2RlLT5jYXRjaE9TUkVudHJ5
SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJS
ZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJl
c3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogI2Vsc2UgLy8gRU5B
QkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CkBAIC02MDg3LDYgKzYxMDQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8vIEVOQUJMRShG
VExfSklUKQogCisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgTGFzdE5vZGVUeXBl
OgogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgVXBzaWxvbjoKQEAgLTYxMTUsNyArNjEzNCw2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50
b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50b21O
ZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2Rl
LCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc2LDYgKzE2NzYsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hPU1JUYXJnZXQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNh
dmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQu
Y29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9z
dHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBt
X2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTc3MCw4ICsxNzc3LDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9j
dXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENv
ZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgo
KS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52
YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2Fy
Z3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAg
aWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9u
J3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE4NzMsNyArMTg4MSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50
cmllcyhMaW5rCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFibG9jay0+aXNP
U1JUYXJnZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NS
RW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZl
cik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaE9TUlRhcmdldCkgeworICAgICAgICAgICAg
YXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJs
b2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOwor
ICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAg
ICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0
b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVu
dHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENl
bGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1
c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVj
a2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hPU1JFbnRyeSgqYmxv
Y2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3Zl
KGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0Lm5v
dGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxp
bmtCdWZmZXIpOwogICAgIH0KICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5
SGVhZHMuc2l6ZSgpKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMo
ZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtOTgsNiArOTgsOCBAQCBwcml2YXRlOgogCiBi
b29sIHBlcmZvcm1TdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb24oR3JhcGgmIGdyYXBoKQog
eworICAgIC8vIE9PUFMuCisgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBydW5QaGFzZTxT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZT4oZ3JhcGgpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwx
MCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1
ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVu
dGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50
cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBk
b2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhi
bG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+
b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9L
KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExv
Y2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2lu
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhKG1heUV4aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMg
JiYgIW5vZGUtPm9yaWdpbi5leGl0T0spKTsKIAogICAgICAgICAgICAgICAgIGlmIChpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7
Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAg
KG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3Jh
cGgsIHByZXZpb3VzTm9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFub2RlLT5vcmln
aW4uZXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRP
SwotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJl
dmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KAotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9LICYmIG5vZGUtPm9yaWdpbi5leGl0T0sp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2Rl
LT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAgICAgICAgICAgIC8vTm9kZSogcHJldmlvdXNO
b2RlID0gYmxvY2stPmF0KGkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgK
KyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAv
LyAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQorICAgICAgICAg
ICAgICAgICAgICAvLyAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgICAg
ICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAv
LyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JF
eGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAg
ICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAgICAhKCFwcmV2aW91c05v
ZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKKyAgICAgICAgICAgICAg
ICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9y
RXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3Ry
dWN0dXJlKCkuZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsOCArMjY2
LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CiAgICAg
ICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0
cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbV9vdXQuc2V0T3JpZ2luKG5vZGUp
OwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRf
YXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAg
ICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNo
KQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOwor
ICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3Ro
aXMoSW5zdHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
WlosIGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwg
UmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
U19KSVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3OSw2ICs1NzksMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OgogICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VV
aSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7Cisg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODUzLDYgKzg1MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJ
bnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDAp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7Cisg
ICAgLy8gT09QUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQg
SklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyNCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICAvLyBPT1BTOiBhZGQgYSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorCisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQ
Uik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVH
UFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBpZiAoc2hvdWxk
RW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVBy
b2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQor
CiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTQs
NiArMTUxNCwxOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAg
ICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAo
Ik9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBl
eGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29k
ZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNl
bWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENv
ZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVw
bGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5cGVkZWYgY2hhciogKEpJ
VF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBf
SklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVm
IGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGlu
dDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVy
YXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAo
SklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7
CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVy
YXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0lt
cGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0
cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRp
b25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxF
KERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRp
bWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RG
X0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRl
eChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9J
TlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9F
TkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
KiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNb
MV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1sw
XSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5q
c1ZhbHVlKCkpOworICAgIH0pOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2
bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
dm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hh
YmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJv
dG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMi
IFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJl
Z2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTc3LDYgKzE5NzcsMTEgQEAgX2xsaW50X29wX2NhdGNoOgog
ICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2Fm
dGVyX2NhdGNoOgorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVy
X2NhdGNoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9hZnRlcl9jYXRjaF9sZW5ndGgpCisK
KwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tTd2l0Y2hU
b0pJVEZvckVwaWxvZ3VlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317942</attachid>
            <date>2017-08-11 11:43:27 -0700</date>
            <delta_ts>2017-08-11 11:58:19 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>93526</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDkgKzI1MTQsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDEsNiArMjUzMiwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Js
b2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAg
ICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRj
aEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICwgY2Zh
U2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50
ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAgICAgICB3aGlsZSAo
aS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAgICAgICAgICAgIGNh
c2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAgICAgICBjYXNlIFJl
dHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIERpcmVj
dFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAgICAg
ICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFVucmVhY2hh
YmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQaGFu
dG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3IgdHdv
IG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2lsbCBu
b3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IC8v
IFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6
IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsKICAgICAKICAgICBi
b29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9pbnQ7CiAgICAgYm9vbCBj
ZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29sIGNmYUZv
dW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMwLDcg
KzExMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0
YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8g
Y2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4K
ICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAg
ICAgIAorCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxp
dCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhl
IGNhbGxzaXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAg
ICAgICAgIC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6
IHRoZXJlJ3Mgbm8gd2F5IGZvcgpAQCAtNDA3NCw3ICs0MDc0LDExIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAvLyB1cyB0byB0cmFjayBpZiBhIHVzZSBv
ZiBhbiBhcmd1bWVudCBtYXkgdXNlIHRoZSBhY3R1YWwgYXJndW1lbnQgcGFzc2VkLCBhcwogICAg
IC8vIG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAgICBpZiAo
bV9jdXJyZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkp
IHsKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOwor
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
YWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4m
IGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAg
ICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisKICAgICAgICAg
Ly8gV2Ugd2lsbCBlbWl0IFNldEFyZ3VtZW50IG5vZGVzLiBUaGV5IGRvbid0IGV4aXQsIGJ1dCB3
ZSdyZSBhdCB0aGUgdG9wIG9mIGFuIG9wX2VudGVyIHNvCiAgICAgICAgIC8vIGV4aXRPSyA9IHRy
dWUuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTQwODcsNyArNDA5MSw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRJbmRleGluZ1R5cGUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJn
dW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAg
ICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0
VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE1MCw2
ICs1MTU0LDExOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgICAgICAgICBtX2dyYXBoLm1faGFzRXhjZXB0aW9u
SGFuZGxlcnMgPSB0cnVlOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworCisg
ICAgICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGRvIGFueXRoaW5nIGhlcmUg
Zm9yIGlubGluZWQgZnJhbWVzLiBXZSB3b24ndCB0cmVhdCB0aGlzIGFzIGFuIGVudHJ5cG9pbnQu
CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0aGUgRlRMLgorICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
OTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6
ZSgpKTsKKworICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51LnBvaW50ZXIpOworCisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5
cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgVmVj
dG9yPFNwZWN1bGF0ZWRUeXBlPiBsb2NhbFByZWRpY3Rpb25zOworICAgICAgICAgICAgSGFzaFNl
dDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IHNlZW5Bcmd1bWVudHM7CisKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIGJvb2wgYWxs
UHJlZGljdGlvbnNBcmVFbXB0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAg
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNwZWNOb25lOworICAg
ICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChv
cGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50KCkpIDwgYXJndW1l
bnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlbkFyZ3VtZW50
cy5hZGQob3BlcmFuZC50b0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXJn
dW1lbnRQcmVkaWN0aW9uc1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVu
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMu
Y29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmJiAoYXJndW1lbnRQcmVkaWN0aW9ucy5zaXpl
KCkgfHwgbG9jYWxQcmVkaWN0aW9ucy5zaXplKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IElmIHRoaXMgaXMgdGhlIGNhc2UsIHdlIGhhdmVuJ3QgZXhlY3V0ZWQgdGhpcyBjYXRjaCB5ZXQu
IExldCdzIG5vdCBjb21waWxlCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IGFzIGFuIGVudHJ5
cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlJ3Jl
IG5vdyBjb21taXR0ZWQgdG8gY29tcGlsaW5nIHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKworICAg
ICAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gc2VhcmNoaW5nIGZvciB3aGVyZSB0
byBPU1IgZW50ZXIsIHdlIGRvIGl0IHJlbGF0aXZlCisgICAgICAgICAgICAvLyB0byBvcF9hZnRl
cl9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9j
dXJyZW50SW5kZXg7CisKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoRW50cnlw
b2ludCA9IHRydWU7CisgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1f
Y3VycmVudEJsb2NrKTsKKworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxWaXJ0dWFsUmVn
aXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7CisgICAgICAgICAgICBsb2NhbHNUb1NldC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyB3aWxsIHJl
c2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNhdXNl
IHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBtX2V4aXRPSyA9
IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUgc2luY2Ugd2Ugd291bGQg
bm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBpZiAo
b3BlcmFuZC5pc0FyZ3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5pc0xvY2FsKCkpOworICAgICAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gYWRkVG9HcmFwaChFeHRyYWN0Q2F0Y2hMb2NhbCwgT3BJbmZvKG51bWJlck9m
TG9jYWxzKSwgT3BJbmZvKGxvY2FsUHJlZGljdGlvbnNbbnVtYmVyT2ZMb2NhbHNdKSk7CisgICAg
ICAgICAgICAgICAgKytudW1iZXJPZkxvY2FsczsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFuZCksIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBsb2NhbHNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIob3BlcmFuZCwg
dmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2Nh
bHNGb3JDYXRjaE9TUkVudHJ5ID0gc3RkOjptYXgobnVtYmVyT2ZMb2NhbHMsICptX2dyYXBoLm1f
bWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBub3cg
ZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIgT1NSIGV4aXQgc3RhdGUgdG8gcmVjb3ZlciBh
bnkgbGl2ZSBsb2NhbHMuCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IAorICAgICAgICAg
ICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBzYWZlIHRvIGV4aXQuIFRoaXMg
aGFwcGVucyBoZXJlIGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUgY2hlY2tzIHVwCisgICAgICAg
ICAgICAgICAgLy8gdG8gdGhpcyBwb2ludCBpbiB0aGUgcHJvZ3JhbSwgc28gaXQgbXVzdCBiZSBz
YWZlIHRvIGV4aXQuCisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4
PigpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50
cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2lu
dEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6
ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3Qo
YXJndW1lbnRQcmVkaWN0aW9uc1thcmd1bWVudF0pOworCisgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRJbmRleGluZ1R5cGUpKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1
bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOworICAgICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50
Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGVu
dHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBsb2NhbHNUb1NldCkKKyAgICAgICAgICAgICAgICBzZXRMb2NhbChjdXJyZW50Q29kZU9yaWdp
bigpLCBwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
b3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxs
LCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC02MTM4LDggKzYyNTQsMTAgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigp
KSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUg
Zmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlz
T1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAg
ICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAg
fQpAQCAtNjE5Niw4ICs2MzE0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAg
ICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwp
OwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0
YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2lu
Z1RhcmdldHMpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBt
X2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3JhcGgubV9wbGFuLm9z
ckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAobV92ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICBGb3VuZCBtdXN0LWhhbmRsZSBibG9jazogIiwgKmJsb2Nr
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAorICAgIC8vIE9PUFM6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11
bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxv
Y2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFy
Z3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwt
Y2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBl
cyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2Fz
ZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJ
UiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9w
X2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVy
X2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBF
eHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBA
IC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAg
ICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4
aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDgg
QEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAg
Ci0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBm
b3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3Ip
OwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgog
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFu
Y2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJl
dHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0x
OTYsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6
CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoK
ICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAg
ICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2Ug
VGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51
bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZs
dXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5o
IgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1i
ZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVk
ZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVE
dW1wLmgiCkBAIC00MTEsNyArNDEwLDggQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQo
KQogCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
Y2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBNb2RlIHBoaU5vZGVE
dW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnByaW50KHByZWZpeCwg
IkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNl
bWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lw
cGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsK
KyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQo
YmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLAorICAgICAgICBi
bG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0
ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA/ICIgKENh
dGNoIEVudHJ5cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2stPmV4ZWN1dGlvbkNv
dW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwg
IiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQsICJcbiIpOwogICAg
IG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTQyMiw4ICs0MjIsNiBA
QCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2Nr
LT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nv
cik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICAgICAgICAg
IG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNj
ZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91dC5wcmludCgi
IDxpbnZhbGlkPiIpOwpAQCAtNDQ2LDggKzQ0NCw2IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hl
YWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1i
ZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJc
biIpOwogICAgIGlmIChtX25hdHVyYWxMb29wcykgewogICAgICAgICBpZiAoY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CiAgICAgICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBMb29wIGhlYWRlciwgY29udGFpbnM6Iik7CkBAIC01
MDIsOCArNDk4LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMK
ICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsg
Rm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlmaWNhdGlvblN0
YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxuIik7CiAgICAg
aWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudCBmb3JtYXRz
OiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVsc2UKLSAgICAg
ICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVudHMpLCAiXG4i
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIs
IHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJcbiIpOworICAg
IH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxs
cHRyOwpAQCAtNjQwLDggKzYzOCwxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVj
dG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQogewogICAgIFZl
Y3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFwcGVuZChibG9j
aygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQt
PmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQp
OworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04MDAsNyArODAwLDYgQEAg
dm9pZCBHcmFwaDo6aW52YWxpZGF0ZUNGRygpCiB7CiAgICAgbV9kb21pbmF0b3JzID0gbnVsbHB0
cjsKICAgICBtX25hdHVyYWxMb29wcyA9IG51bGxwdHI7Ci0gICAgbV9wcmVQb3N0TnVtYmVyaW5n
ID0gbnVsbHB0cjsKICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsK
ICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzQ0ZH
ID0gbnVsbHB0cjsKQEAgLTg1MCwxMiArODQ5LDE4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tz
SW5QcmVPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0
IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNC
bG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2go
ZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9w
KCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCiAgICAgICAgICAgICB3b3JrbGlz
dC5wdXNoKGJsb2NrLT5zdWNjZXNzb3IoaSkpOwogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9u
RW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VudHJ5cG9p
bnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9lbnRyeXBvaW50
cy5jb250YWlucyhyZXN1bHRbaV0pKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtODYzLDcgKzg2OCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQog
ewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3Jr
bGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sq
IGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5
cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkp
IHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRl
cjo6UHJlOgpAQCAtODc2LDYgKzg4MiwxMiBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9z
dE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYg
KHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2VudHJ5cG9pbnRzLmNvbnRhaW5zKHJlc3VsdFtyZXN1bHQuc2l6ZSgpIC0gaSAtIDFdKSk7Cisg
ICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3OSwxMyArMTQ5MSw2IEBAIERv
bWluYXRvcnMmIEdyYXBoOjplbnN1cmVEb21pbmF0b3JzKCkKICAgICByZXR1cm4gKm1fZG9taW5h
dG9yczsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJp
bmcoKQotewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3RO
dW1iZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAg
ICByZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKLX0KLQogTmF0dXJhbExvb3BzJiBHcmFwaDo6
ZW5zdXJlTmF0dXJhbExvb3BzKCkKIHsKICAgICBlbnN1cmVEb21pbmF0b3JzKCk7CkBAIC0xNTAz
LDYgKzE1MDgsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAK
IEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkK
IHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dh
cmRzRG9taW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3
YXJkc0RvbWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1MTYsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3Jz
JiBHcmFwaDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFw
aDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cykKICAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE1MzQsNyBAQCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJn
dW1lbnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVl
W2FyZ3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXM7CiBjbGFzcyBEb21pbmF0b3JzOwogY2xhc3MgRmxvd0luZGV4aW5nOwogY2xhc3MgTmF0
dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKIAogdGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIEZsb3dNYXA7CiAKQEAgLTkwMiw3ICs5MDEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNEZWJ1Z2dlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsg
fQogCiAgICAgRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIFByZVBvc3ROdW1i
ZXJpbmcmIGVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKICAgICBOYXR1cmFsTG9vcHMmIGVuc3Vy
ZU5hdHVyYWxMb29wcygpOwogICAgIEJhY2t3YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7
CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwpA
QCAtOTIxLDcgKzkxOSw4IEBAIHB1YmxpYzoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwog
ICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAgIAotICAgIFZlY3RvcjwgUmVmUHRy
PEJhc2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPFJlZlB0cjxCYXNpY0Jsb2Nr
PiwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxPiBtX2VudHJ5cG9pbnRz
OwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKIAogICAgIEhhc2hNYXA8
RW5jb2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVk
SlNWYWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7CkBAIC05NTYsNyArOTU1LDcgQEAg
cHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVt
b3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAg
Ly8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hN
YXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRz
OwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlz
IGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBW
ZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwpAQCAtOTY3LDYgKzk2Niw3IEBA
IHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25l
d0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAg
IEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXRE
YXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0
YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtOTgzLDcgKzk4Myw2IEBAIHB1
YmxpYzoKICAgICBIYXNoTWFwPFByb3BlcnR5VHlwZUtleSwgSW5mZXJyZWRUeXBlOjpEZXNjcmlw
dG9yPiBtX2luZmVycmVkVHlwZXM7CiAgICAgVmVjdG9yPFJlZjxTbmlwcGV0Pj4gbV9kb21KSVRT
bmlwcGV0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9taW5hdG9ycz4gbV9kb21pbmF0b3JzOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmVQb3N0TnVtYmVyaW5nPiBtX3ByZVBvc3ROdW1iZXJpbmc7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdHVyYWxMb29wcz4gbV9uYXR1cmFsTG9vcHM7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPENGRz4gbV9jZmc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJk
c0NGRz4gbV9iYWNrd2FyZHNDRkc7CkBAIC0xMDA5LDYgKzEwMDgsNyBAQCBwdWJsaWM6CiAgICAg
UmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5h
YmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Myw1NCArOTMsNTkgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8Tm9kZUFicwog
CiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91bGRSZXZpc2l0
ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2Zh
Rm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3Rh
dGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kp
IHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0KLSAg
ICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0g
U1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dy
YXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hvdWxkUmV2aXNp
dCA9IHRydWU7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKKyAg
ICAgICAgZW50cnlwb2ludC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAgICAgICAgZW50
cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdh
dGNoZWQ7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFp
bCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewor
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7
CisKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2Fy
Z3VtZW50Rm9ybWF0c1tpXTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFT
U0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICBmb3JtYXQg
PSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGVu
dHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVu
dCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgor
ICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRU
eXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMy
T25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoK
LSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNC
b29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgot
ICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFw
aCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEpT
VmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5
dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3Ig
YXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7
ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAg
ICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgfQotICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJs
b2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChp
KS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkp
LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgIGlmIChtX2dyYXBo
Lm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAgICAgICAgICAvLyBXZSBoYW5k
bGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAgICAgICAgIGJsb2Nr
LT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFIYXNWaXNpdGVk
ID0gZmFsc2U7CkBAIC0zNjQsNiArMzY5LDEzIEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFj
dFN0YXRlOjptZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywg
ZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAg
ICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDogeworICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA6IHRlcm1pbmFsLT5l
bnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzKQorICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShi
YXNpY0Jsb2NrLCB0YXJnZXRCbG9jayk7CisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIEpJVENvZGU6OnNocmlua1RvRml0KCkKICAgICBjb21t
b24uc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFbnRyeS5zaHJpbmtUb0ZpdCgpOwogICAgIG9zckV4
aXQuc2hyaW5rVG9GaXQoKTsKKyAgICBjYXRjaEVudHJ5cG9pbnRzLnNocmlua1RvRml0KCk7CiAg
ICAgc3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgpOwogICAgIG1pbmlmaWVkREZHLnBy
ZXBhcmVBbmRTaHJpbmsoKTsKICAgICB2YXJpYWJsZUV2ZW50U3RyZWFtLnNocmlua1RvRml0KCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDYgKzY5LDI2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9zckVudHJ5LCBv
c3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCiAgICAgICAgICAgICBnZXRPU1JFbnRyeURh
dGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAgICBDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRj
aE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8Q2F0Y2hFbnRyeXBvaW50RGF0YSwg
dW5zaWduZWQ+KAorICAgICAgICAgICAgY2F0Y2hFbnRyeXBvaW50cywgY2F0Y2hFbnRyeXBvaW50
cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgICAgICBbXSAoY29uc3QgQ2F0Y2hFbnRy
eXBvaW50RGF0YSogaXRlbSkgeyByZXR1cm4gaXRlbS0+bV9ieXRlY29kZUluZGV4OyB9KTsKKyAg
ICB9CisKKyAgICB2b2lkIGZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygpCisgICAgeworICAg
ICAgICAvLyBPT1BTOiB2YWxpZGF0ZSB0aGlzLgorICAgICAgICBzdGQ6OnNvcnQoY2F0Y2hFbnRy
eXBvaW50cy5iZWdpbigpLCBjYXRjaEVudHJ5cG9pbnRzLmVuZCgpLCBbXSAoY29uc3QgQ2F0Y2hF
bnRyeXBvaW50RGF0YSYgYSwgY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYikgeworICAgICAg
ICAgICAgcmV0dXJuIGEubV9ieXRlY29kZUluZGV4IDwgYi5tX2J5dGVjb2RlSW5kZXg7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hFbnRyeXBvaW50KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hG
b3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hFbnRyeXBvaW50
cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2Rl
T2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBAIC0xMzIs
NiArMTUyLDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAg
ICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVu
dHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6
Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVy
eT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFy
aWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxODksOCBAQCBwdWJsaWM6CiAgICAgV3JpdGVC
YXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5
UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisKKyAgICBNYWxsb2NQdHI8SlNWYWx1
ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVt
aXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgp
CiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAg
ICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1h
bGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAg
IG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7
CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlC
dWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1f
Z3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29k
ZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NywyMyBAQCB2b2lkKiBK
SVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRD
b21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJ
VENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3Rv
cjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
YmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNC
bG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5
IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBv
aW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hl
YWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpu
b3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwg
YmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJU
KCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBu
b3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93
IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0
ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5
ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2lu
LCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1f
ZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVh
ZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90
b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNl
T1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1h
dD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
KCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBi
b29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAm
JiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVu
dHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2Fs
KCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAg
ICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAg
IGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50
ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBp
c1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1
bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50
ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vz
c0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDEzIEBAIEV4
aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhl
Y3V0aW9uOgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAg
Y2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVu
dHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxO
b3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYg
KzIwMywxNCBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7
CiB9OwogCitzdHJ1Y3QgRW50cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9Owor
CiBzdHJ1Y3QgQ2FsbFZhcmFyZ3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9
OwpAQCAtMTI3NywxNyArMTI4NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09
IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3
aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAg
fQogCisgICAgYm9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBvcCgpID09IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJvb2wgaXNUZXJtaW5hbCgpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBKdW1wOgogICAgICAg
ICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CisgICAgICAgIGNhc2UgRW50cnlT
d2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAg
ICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgQVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
U3dpdGNoRGF0YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0Y2hEYXRhKiBlbnRyeVN3aXRj
aERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlTd2l0Y2goKSk7CisgICAgICAg
IHJldHVybiBtX29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigpOworICAgIH0KICAgICAKICAg
ICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0xMzU5LDYgKzEzNzksOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAg
ICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgKyAxOworICAgICAgICBj
YXNlIEVudHJ5U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5i
bG9ja3Muc2l6ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIH0KQEAgLTEzNzIsNiArMTM5NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQor
CisgICAgICAgIGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnlT
d2l0Y2hEYXRhKCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewog
ICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTE4LDYgKzE1
NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWljc1N0b3JlOgogICAgICAgICBjYXNl
IEF0b21pY3NTdWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoKKyAgICAgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3LDEyIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7CiAg
ICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAg
ICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQogICAgIAogICAgIFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2Rl
IGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5n
IGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICov
XAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBt
YWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRp
ZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVj
a1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYgKzM4Nyw3IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFy
QXJncykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDY3IEBAIHZvaWQqIHByZXBhcmVP
U1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9p
ZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9T
UkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJ
VENvZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5q
aXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZH
OjpDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9T
UkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRj
aEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNp
cmN1bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndCBjb21waWxlIHRo
aXMKKyAgICAgICAgLy8gYWZ0ZXJfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQg
bmV2ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8v
IFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUg
Y29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0g
MDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsg
Kythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+cih2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChj
YXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBj
YXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Nl
bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZh
bHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAv
LyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBh
bGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
REZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZp
YWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
fQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVx
dWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VM
WSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhl
Yy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUu
b3Bjb2RlKSA9PSBvcF9hZnRlcl9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+
KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgp
ICsgMV0udS5wb2ludGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5m
b3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBp
ZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgp
W2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsK
KyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRh
YmxlQWRkcmVzc0F0T2Zmc2V0KGNhdGNoRW50cnlwb2ludC0+bV9tYWNoaW5lQ29kZU9mZnNldCk7
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1
ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3
MCwyMCBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0
dXJuIG9zckVudHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hFbnRy
eXBvaW50RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVk
IG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1Ig
ZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhl
IGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVj
dG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBw
b2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVj
b2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZv
aWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVy
LiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFy
ZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBD
b2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMiwxNiArMTEyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVy
ZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAg
ICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGlu
dCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKyth
cmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVz
QXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewog
ICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1
bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0g
bV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9
IGFyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVj
Tm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudF0gPSBu
b2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJh
c2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDYgKzE0MCwxMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGlu
c2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4
ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMu
c2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0gPSBuZXdSb290
OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFyKCk7CisgICAg
ICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3QsIGFyZ3VtZW50
cyk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICBtX2dy
YXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzY4LDcgKzM2OCw2IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIK
ICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICBkZmcuZW5zdXJlRG9taW5h
dG9ycygpOwogICAgICAgICBkZmcuZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIGRmZy5l
bnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2RlKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRlICJERkdC
bG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVyaW5nKEdy
YXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3JhcGgpOwot
ICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3Qu
cHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9IDA7Ci0g
ICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dpdGhPcmRl
ciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7
Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBbaXRlbS5u
b2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdvcmtsaXN0
LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nl
c3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdvcmtsaXN0
LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2l0
T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51bWJlciA9
IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNl
IEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRWRnZUtp
bmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRFZGdlOgot
ICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFja0VkZ2Ui
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBv
c3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2su
aCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAgQ3Jvc3NF
ZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7Ci0gICAg
flByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNpY0Jsb2Nr
KiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9Ci0gICAg
dW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9t
YXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBzdHJpY3Qg
YW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJlTnVt
YmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJlcihmcm9t
KSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0b3JPZihC
YXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFz
aWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RBbmNlc3Rv
ck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihCYXNp
Y0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlzIHdpbGwg
Z2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVkZ2UuIElm
IHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNoIGVkZ2Us
IHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5kKEJhc2lj
QmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlz
U3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBGb3J3YXJk
RWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20pKQotICAg
ICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIENyb3Nz
RWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcgewotICAg
ICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0TnVtYmVy
OwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQotfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVy
bmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRo
ZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBh
bHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAg
ICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
bV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcg
PSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHBy
b2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAgICAgICAg
ICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmdd
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJv
ZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6CiAgICAg
ICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAg
ICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbiht
X2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTExMSw2ICsxMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBEZWZpbmVBY2Nlc3Nv
clByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAgY2FzZSBCcmFuY2g6
CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAg
ICBjYXNlIFByb2ZpbGVUeXBlOgogICAgICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJl
IFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vz
bid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJl
IHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAg
ICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24g
d2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNv
bXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3Nh
VmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FW
YXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MSwyMiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3Nh
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1f
Z3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9n
cmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8m
IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBo
LmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVz
aXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVu
dHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVz
aGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5n
LmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5z
dGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBh
cmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAg
YXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFy
Z3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRj
aDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFp
bENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFy
cmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxv
b3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBB
bmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsOCBAQAogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNo
ZG9nLmgiCiAKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwNzksNiAr
NjA4MSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExv
Y2FsOiB7CisgICAgICAgIG1faml0LnByaW50KCJFeHRyYWN0Q2F0Y2hMb2NhbCIpOworICAgICAg
ICAvL21faml0LnByb2JlKFtdIChQcm9iZUNvbnRleHQqKSB7CisgICAgICAgIC8vICAgIGRhdGFM
b2dMbigiRXh0cmFjdENhdGNoTG9jYWwhIik7CisgICAgICAgIC8vfSk7CisKKyAgICAgICAgSlNW
YWx1ZSogcHRyID0gJm1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKVtu
b2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAg
ICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsK
KyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9v
cDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBAIC02MDg3LDYgKzYxMDQsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
I2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAg
IGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2UgVXBzaWxvbjoKQEAg
LTYxMTUsNyArNjEzNCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhhbnRvbVNwcmVhZDoK
ICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAgIERGR19DUkFTSCht
X2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc2LDYgKzE2NzYs
MTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7Cisg
ICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFw
aCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1pdE1h
dGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2Fs
bEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
OworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVz
ZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKQEAg
LTE3NzAsOCArMTc3Nyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBl
cygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdp
bihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8mIGFyZ3Vt
ZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2ppdC5n
cmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5j
b2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9
IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1
bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3Vt
ZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgog
ICAgICAgICAgICAgY29udGludWU7CkBAIC0xODU1LDEyICsxODYzLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1cnJlbnRseSB3ZSBk
b24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KLSAgICAg
ICAgLy8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1f
aml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChibG9jay0+aXNPU1JU
YXJnZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICAvLyBDdXJy
ZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0
aGVtCisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAgICAgICBtX29zckVu
dHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKQEAgLTE4NzEsMTAgKzE4NzgsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1faml0
LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCisgICAgICAg
IGlmICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2Nr
LCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAg
IGlmIChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9
IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAg
ICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAg
IFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1l
bnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7
CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7
CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
IEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmx1c2hGb3Jt
YXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRDZWxsIHx8IGZsdXNo
Rm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRKU1ZhbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChm
bHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgqYmxvY2ssIG1fb3Ny
RW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50
Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5p
c09TUlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1f
b3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgfQog
ICAgIH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRz
KCk7CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgp
KTsKICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGlt
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAg
LTk4LDYgKzk4LDggQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU3RhdGljRXhlY3V0aW9uQ291
bnRFc3RpbWF0aW9uKEdyYXBoJiBncmFwaCkKIHsKKyAgICAvLyBPT1BTLgorICAgIHJldHVybiBm
YWxzZTsKICAgICByZXR1cm4gcnVuUGhhc2U8U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9u
UGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVl
Lm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0
aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAvLyBD
dXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJn
dW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKTsKIAogICAgICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4aXRPSyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBnZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFibGUtPnBy
ZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDE4ICsx
OTUsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIShtYXlF
eGl0KG1fZ3JhcGgsIG5vZGUpID09IEV4aXRzICYmICFub2RlLT5vcmlnaW4uZXhpdE9LKSk7CiAK
ICAgICAgICAgICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgICAgICAgICBOb2RlKiBwcmV2
aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOwotICAgICAgICAgICAgICAgICAgICBWQUxJREFU
RSgKLSAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRPSwotICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8
IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwot
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgICAgIChu
b2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4
aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwg
bm9kZS0+b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9y
aWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAg
ICAgICAgICAgICAvL05vZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7CisgICAg
ICAgICAgICAgICAgICAgIC8vVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgIC8vICAgIChu
b2RlKSwKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3Jh
cGgsIHByZXZpb3VzTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgIW5vZGUtPm9y
aWdpbi5leGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBF
eGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQg
IT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAgICAgICAgICAgIC8v
VkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgIC8vICAgIChub2RlKSwKKyAgICAgICAgICAg
ICAgICAgICAgLy8gICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9LICYmIG5vZGUtPm9y
aWdpbi5leGl0T0spCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0g
RXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0
ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5o
YXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
ICAgICBtX25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29k
ZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50
cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDAp
KS0+dmFsdWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAg
ICAgICAgIG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYg
KzI3Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NvbnN0cnVjdF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2F0Y2gpCisgICAg
ICAgIERFRklORV9PUChvcF9hZnRlcl9jYXRjaCkKICAgICAgICAgREVGSU5FX09QKG9wX2NvbnN0
cnVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV90aGlzKQogICAgICAgICBERUZJTkVf
T1Aob3BfdG9fdGhpcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDc2LDYgKzQ3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3Bf
dGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2FmdGVyX2Nh
dGNoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTUsNiAr
Nzk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3QpOwog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9u
X0UpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3Bl
cmF0aW9uX0VKUywgR1BSUmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywgUmVn
aXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVnLCBV
bmlxdWVkU3RyaW5nSW1wbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNiArNTc5LDEzIEBAIEFMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50MzJfdCBhcmcxKQor
eworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOwor
ICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlv
bik7Cit9CisKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3Bl
cmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBzaXplX3Qg
YXJnMikKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cihhcmcyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1Myw2ICs4NTMsMTIg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRTdG9y
ZSh0aHJvd25WYWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0
ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKQoreworICAgIC8vIE9PUFMKKyAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1Myw2ICs1NTMsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rp
b24qIGN1cgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgLy8gT09QUzogYWRkIGEgaml0IGZhc3Qg
cGF0aCBmb3IgdGhpcy4KKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJB
dENhdGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIHNraXBPU1JFbnRyeSA9IGJyYW5j
aFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXMoKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBza2lwT1NSRW50cnkubGluayh0
aGlzKTsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNf
Y2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFd
LnUucG9pbnRlcik7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBi
dWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdU
MCk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCZwcm9maWxlLm1fcHJvZmls
ZSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE0LDYgKzE1MTQsMTkgQEAgU2xvd1BhdGhSZXR1cm5U
eXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJs
b2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwogICAgIHJldHVybiBl
bmNvZGVSZXN1bHQoMCwgMCk7CiB9CisKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgYnl0ZWNvZGVJbmRleCkK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKKworICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQg
PSBleGVjLT5jb2RlQmxvY2soKS0+cmVwbGFjZW1lbnQoKTsKKyAgICBpZiAob3B0aW1pemVkUmVw
bGFjZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpERkdKSVQpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihERkc6OnByZXBhcmVDYXRj
aE9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KSk7Cit9
CisKICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcnJheVZhbHVlLCBpbnQzMl90IGlu
ZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw2
ICszMTYsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0eXBl
ZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSos
IGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRP
cGVyYXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hh
ciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91Ymxl
LCBpbnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9u
X0VVaSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUg
KEpJVF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxM
aW5rSW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRPcGVy
YXRpb25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcqIChK
SVRfT1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsK
QEAgLTM5Niw2ICszOTcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhl
Y1N0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50MzJf
dCkgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShERkdfSklUKQogU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RG
X0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0
Y2goRXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50
MzJfdCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5m
b3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBw
cm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5j
aGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKworICAgIExM
SU5UX0VORCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJv
d19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1l
KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3B1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2No
ZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3By
b2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRv
d19jaGlja2VuX3RhaWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9h
ZnRlcl9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19z
dGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwog
I2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3Rh
Y2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk3Nyw2ICsx
OTc3LDExIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2F0
Y2hfbGVuZ3RoKQogCiAKK19sbGludF9vcF9hZnRlcl9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9hZnRlcl9jYXRjaCkKKyAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfYWZ0ZXJfY2F0Y2hfbGVuZ3RoKQorCisKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VF
eGVjdXRpb24oKQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317945</attachid>
            <date>2017-08-11 11:58:19 -0700</date>
            <delta_ts>2017-08-13 18:48:55 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>93766</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDkgKzI1MTQsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDEsNiArMjUzMiwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Js
b2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAg
ICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRj
aEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICwgY2Zh
U2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50
ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAgICAgICB3aGlsZSAo
aS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAgICAgICAgICAgIGNh
c2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAgICAgICBjYXNlIFJl
dHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIERpcmVj
dFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAgICAg
ICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFVucmVhY2hh
YmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQaGFu
dG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3IgdHdv
IG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2lsbCBu
b3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IC8v
IFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6
IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsKICAgICAKICAgICBi
b29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9pbnQ7CiAgICAgYm9vbCBj
ZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29sIGNmYUZv
dW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMwLDcg
KzExMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0
YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8g
Y2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4K
ICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAg
ICAgIAorCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxp
dCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhl
IGNhbGxzaXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAg
ICAgICAgIC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6
IHRoZXJlJ3Mgbm8gd2F5IGZvcgpAQCAtNDA3NCw3ICs0MDc0LDExIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAvLyB1cyB0byB0cmFjayBpZiBhIHVzZSBv
ZiBhbiBhcmd1bWVudCBtYXkgdXNlIHRoZSBhY3R1YWwgYXJndW1lbnQgcGFzc2VkLCBhcwogICAg
IC8vIG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAgICBpZiAo
bV9jdXJyZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkp
IHsKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOwor
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
YWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICBSRUxFQVNF
X0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4m
IGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAg
ICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisKICAgICAgICAg
Ly8gV2Ugd2lsbCBlbWl0IFNldEFyZ3VtZW50IG5vZGVzLiBUaGV5IGRvbid0IGV4aXQsIGJ1dCB3
ZSdyZSBhdCB0aGUgdG9wIG9mIGFuIG9wX2VudGVyIHNvCiAgICAgICAgIC8vIGV4aXRPSyA9IHRy
dWUuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTQwODcsNyArNDA5MSw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRJbmRleGluZ1R5cGUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJn
dW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAg
ICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0
VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE1MCw2
ICs1MTU0LDExOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgICAgICAgICBtX2dyYXBoLm1faGFzRXhjZXB0aW9u
SGFuZGxlcnMgPSB0cnVlOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworCisg
ICAgICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGRvIGFueXRoaW5nIGhlcmUg
Zm9yIGlubGluZWQgZnJhbWVzLiBXZSB3b24ndCB0cmVhdCB0aGlzIGFzIGFuIGVudHJ5cG9pbnQu
CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0aGUgRlRMLgorICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
OTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6
ZSgpKTsKKworICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51LnBvaW50ZXIpOworCisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5
cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgVmVj
dG9yPFNwZWN1bGF0ZWRUeXBlPiBsb2NhbFByZWRpY3Rpb25zOworICAgICAgICAgICAgSGFzaFNl
dDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IHNlZW5Bcmd1bWVudHM7CisKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIGJvb2wgYWxs
UHJlZGljdGlvbnNBcmVFbXB0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAg
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNwZWNOb25lOworICAg
ICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChv
cGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50KCkpIDwgYXJndW1l
bnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlbkFyZ3VtZW50
cy5hZGQob3BlcmFuZC50b0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXJn
dW1lbnRQcmVkaWN0aW9uc1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVu
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMu
Y29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBpZiAoYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmJiAoYXJndW1lbnRQcmVkaWN0aW9ucy5zaXpl
KCkgfHwgbG9jYWxQcmVkaWN0aW9ucy5zaXplKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IElmIHRoaXMgaXMgdGhlIGNhc2UsIHdlIGhhdmVuJ3QgZXhlY3V0ZWQgdGhpcyBjYXRjaCB5ZXQu
IExldCdzIG5vdCBjb21waWxlCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IGFzIGFuIGVudHJ5
cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlJ3Jl
IG5vdyBjb21taXR0ZWQgdG8gY29tcGlsaW5nIHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKworICAg
ICAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gc2VhcmNoaW5nIGZvciB3aGVyZSB0
byBPU1IgZW50ZXIsIHdlIGRvIGl0IHJlbGF0aXZlCisgICAgICAgICAgICAvLyB0byBvcF9hZnRl
cl9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9j
dXJyZW50SW5kZXg7CisKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoRW50cnlw
b2ludCA9IHRydWU7CisgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1f
Y3VycmVudEJsb2NrKTsKKworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxWaXJ0dWFsUmVn
aXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7CisgICAgICAgICAgICBsb2NhbHNUb1NldC5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyB3aWxsIHJl
c2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNhdXNl
IHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBtX2V4aXRPSyA9
IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUgc2luY2Ugd2Ugd291bGQg
bm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBpZiAo
b3BlcmFuZC5pc0FyZ3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5pc0xvY2FsKCkpOworICAgICAgICAgICAgICAgIE5v
ZGUqIHZhbHVlID0gYWRkVG9HcmFwaChFeHRyYWN0Q2F0Y2hMb2NhbCwgT3BJbmZvKG51bWJlck9m
TG9jYWxzKSwgT3BJbmZvKGxvY2FsUHJlZGljdGlvbnNbbnVtYmVyT2ZMb2NhbHNdKSk7CisgICAg
ICAgICAgICAgICAgKytudW1iZXJPZkxvY2FsczsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFuZCksIHZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBsb2NhbHNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIob3BlcmFuZCwg
dmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2Nh
bHNGb3JDYXRjaE9TUkVudHJ5ID0gc3RkOjptYXgobnVtYmVyT2ZMb2NhbHMsICptX2dyYXBoLm1f
bWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBub3cg
ZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIgT1NSIGV4aXQgc3RhdGUgdG8gcmVjb3ZlciBh
bnkgbGl2ZSBsb2NhbHMuCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IAorICAgICAgICAg
ICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBzYWZlIHRvIGV4aXQuIFRoaXMg
aGFwcGVucyBoZXJlIGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUgY2hlY2tzIHVwCisgICAgICAg
ICAgICAgICAgLy8gdG8gdGhpcyBwb2ludCBpbiB0aGUgcHJvZ3JhbSwgc28gaXQgbXVzdCBiZSBz
YWZlIHRvIGV4aXQuCisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4
PigpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRy
eSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50
cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2lu
dEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6
ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3Qo
YXJndW1lbnRQcmVkaWN0aW9uc1thcmd1bWVudF0pOworCisgICAgICAgICAgICAgICAgICAgIHZh
cmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRJbmRleGluZ1R5cGUpKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1
bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOworICAgICAg
ICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50
Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGVu
dHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBsb2NhbHNUb1NldCkKKyAgICAgICAgICAgICAgICBzZXRMb2NhbChjdXJyZW50Q29kZU9yaWdp
bigpLCBwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
b3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxs
LCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC02MTM4LDggKzYyNTQsMTAgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigp
KSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUg
Zmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlz
T1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAg
ICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAg
fQpAQCAtNjE5Niw4ICs2MzE0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAg
ICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwp
OwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0
YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2lu
Z1RhcmdldHMpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBt
X2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3JhcGgubV9wbGFuLm9z
ckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAobV92ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICBGb3VuZCBtdXN0LWhhbmRsZSBibG9jazogIiwgKmJsb2Nr
LCAiXG4iKTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAorICAgIC8vIE9PUFM6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11
bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxv
Y2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFy
Z3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwt
Y2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBl
cyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2Fz
ZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJ
UiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9w
X2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVy
X2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBF
eHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkBA
IC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAg
ICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBGb3JjZU9TUkV4
aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDgg
QEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAg
Ci0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBm
b3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3Ip
OwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgog
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFu
Y2g6CiAgICAgY2FzZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJl
dHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0x
OTYsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6
CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoK
ICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAg
ICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2Ug
VGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51
bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZs
dXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5o
IgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1i
ZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVk
ZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVE
dW1wLmgiCkBAIC00MTEsNyArNDEwLDggQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQo
KQogCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
Y2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBNb2RlIHBoaU5vZGVE
dW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnByaW50KHByZWZpeCwg
IkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNl
bWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lw
cGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsK
KyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQo
YmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLAorICAgICAgICBi
bG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0
ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA/ICIgKENh
dGNoIEVudHJ5cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2stPmV4ZWN1dGlvbkNv
dW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwg
IiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQsICJcbiIpOwogICAg
IG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTQyMiw4ICs0MjIsNiBA
QCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2Nr
LT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nv
cik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICAgICAgICAg
IG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNj
ZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91dC5wcmludCgi
IDxpbnZhbGlkPiIpOwpAQCAtNDQ2LDggKzQ0NCw2IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hl
YWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1i
ZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJc
biIpOwogICAgIGlmIChtX25hdHVyYWxMb29wcykgewogICAgICAgICBpZiAoY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CiAgICAgICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBMb29wIGhlYWRlciwgY29udGFpbnM6Iik7CkBAIC01
MDIsOCArNDk4LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMK
ICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsg
Rm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlmaWNhdGlvblN0
YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxuIik7CiAgICAg
aWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudCBmb3JtYXRz
OiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVsc2UKLSAgICAg
ICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVudHMpLCAiXG4i
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIs
IHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJcbiIpOworICAg
IH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxs
cHRyOwpAQCAtNjQwLDggKzYzOCwxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVj
dG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQogewogICAgIFZl
Y3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFwcGVuZChibG9j
aygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQt
PmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQp
OworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC04MDAsNyArODAwLDYgQEAg
dm9pZCBHcmFwaDo6aW52YWxpZGF0ZUNGRygpCiB7CiAgICAgbV9kb21pbmF0b3JzID0gbnVsbHB0
cjsKICAgICBtX25hdHVyYWxMb29wcyA9IG51bGxwdHI7Ci0gICAgbV9wcmVQb3N0TnVtYmVyaW5n
ID0gbnVsbHB0cjsKICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsK
ICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzQ0ZH
ID0gbnVsbHB0cjsKQEAgLTg1MCwxMiArODQ5LDE4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tz
SW5QcmVPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0
IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNC
bG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2go
ZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9w
KCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCiAgICAgICAgICAgICB3b3JrbGlz
dC5wdXNoKGJsb2NrLT5zdWNjZXNzb3IoaSkpOwogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9u
RW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VudHJ5cG9p
bnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9lbnRyeXBvaW50
cy5jb250YWlucyhyZXN1bHRbaV0pKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtODYzLDcgKzg2OCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQog
ewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3Jr
bGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sq
IGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5
cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkp
IHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRl
cjo6UHJlOgpAQCAtODc2LDYgKzg4MiwxMiBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9z
dE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYg
KHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2VudHJ5cG9pbnRzLmNvbnRhaW5zKHJlc3VsdFtyZXN1bHQuc2l6ZSgpIC0gaSAtIDFdKSk7Cisg
ICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3OSwxMyArMTQ5MSw2IEBAIERv
bWluYXRvcnMmIEdyYXBoOjplbnN1cmVEb21pbmF0b3JzKCkKICAgICByZXR1cm4gKm1fZG9taW5h
dG9yczsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJp
bmcoKQotewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3RO
dW1iZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAg
ICByZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKLX0KLQogTmF0dXJhbExvb3BzJiBHcmFwaDo6
ZW5zdXJlTmF0dXJhbExvb3BzKCkKIHsKICAgICBlbnN1cmVEb21pbmF0b3JzKCk7CkBAIC0xNTAz
LDYgKzE1MDgsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAK
IEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkK
IHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dh
cmRzRG9taW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3
YXJkc0RvbWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1MTYsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3Jz
JiBHcmFwaDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFw
aDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cykKICAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE1MzQsNyBAQCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJn
dW1lbnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVl
W2FyZ3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDYgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXM7CiBjbGFzcyBEb21pbmF0b3JzOwogY2xhc3MgRmxvd0luZGV4aW5nOwogY2xhc3MgTmF0
dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKIAogdGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIEZsb3dNYXA7CiAKQEAgLTkwMiw3ICs5MDEsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNEZWJ1Z2dlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsg
fQogCiAgICAgRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIFByZVBvc3ROdW1i
ZXJpbmcmIGVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKICAgICBOYXR1cmFsTG9vcHMmIGVuc3Vy
ZU5hdHVyYWxMb29wcygpOwogICAgIEJhY2t3YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7
CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwpA
QCAtOTIxLDcgKzkxOSw4IEBAIHB1YmxpYzoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwog
ICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAgIAotICAgIFZlY3RvcjwgUmVmUHRy
PEJhc2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPFJlZlB0cjxCYXNpY0Jsb2Nr
PiwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxPiBtX2VudHJ5cG9pbnRz
OwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKIAogICAgIEhhc2hNYXA8
RW5jb2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVk
SlNWYWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7CkBAIC05NTYsNyArOTU1LDcgQEAg
cHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVt
b3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAg
Ly8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hN
YXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRz
OwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlz
IGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBW
ZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwpAQCAtOTY3LDYgKzk2Niw3IEBA
IHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25l
d0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAg
IEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXRE
YXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0
YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9u
RGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtOTgzLDcgKzk4Myw2IEBAIHB1
YmxpYzoKICAgICBIYXNoTWFwPFByb3BlcnR5VHlwZUtleSwgSW5mZXJyZWRUeXBlOjpEZXNjcmlw
dG9yPiBtX2luZmVycmVkVHlwZXM7CiAgICAgVmVjdG9yPFJlZjxTbmlwcGV0Pj4gbV9kb21KSVRT
bmlwcGV0czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9taW5hdG9ycz4gbV9kb21pbmF0b3JzOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmVQb3N0TnVtYmVyaW5nPiBtX3ByZVBvc3ROdW1iZXJpbmc7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdHVyYWxMb29wcz4gbV9uYXR1cmFsTG9vcHM7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPENGRz4gbV9jZmc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJk
c0NGRz4gbV9iYWNrd2FyZHNDRkc7CkBAIC0xMDA5LDYgKzEwMDgsNyBAQCBwdWJsaWM6CiAgICAg
UmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5h
YmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Myw1NCArOTMsNTkgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8Tm9kZUFicwog
CiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAgICBCYXNpY0Js
b2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91bGRSZXZpc2l0
ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2Zh
Rm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3Rh
dGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kp
IHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0KLSAg
ICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0g
U1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dy
YXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hvdWxkUmV2aXNp
dCA9IHRydWU7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKKyAg
ICAgICAgZW50cnlwb2ludC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAgICAgICAgZW50
cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdh
dGNoZWQ7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFp
bCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewor
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7
CisKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2Fy
Z3VtZW50Rm9ybWF0c1tpXTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFT
U0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICBmb3JtYXQg
PSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGVu
dHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVu
dCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgor
ICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRU
eXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMy
T25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoK
LSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNC
b29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgot
ICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFw
aCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEpT
VmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5
dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3Ig
YXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7
ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAg
ICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgfQotICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJs
b2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChp
KS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkp
LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgIGlmIChtX2dyYXBo
Lm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAgICAgICAgICAvLyBXZSBoYW5k
bGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAgICAgICAgIGJsb2Nr
LT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFIYXNWaXNpdGVk
ID0gZmFsc2U7CkBAIC0zNjQsNiArMzY5LDEzIEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFj
dFN0YXRlOjptZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywg
ZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAg
ICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDogeworICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiB0YXJnZXRCbG9jayA6IHRlcm1pbmFsLT5l
bnRyeVN3aXRjaERhdGEoKS0+YmxvY2tzKQorICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShi
YXNpY0Jsb2NrLCB0YXJnZXRCbG9jayk7CisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIEpJVENvZGU6OnNocmlua1RvRml0KCkKICAgICBjb21t
b24uc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFbnRyeS5zaHJpbmtUb0ZpdCgpOwogICAgIG9zckV4
aXQuc2hyaW5rVG9GaXQoKTsKKyAgICBjYXRjaEVudHJ5cG9pbnRzLnNocmlua1RvRml0KCk7CiAg
ICAgc3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgpOwogICAgIG1pbmlmaWVkREZHLnBy
ZXBhcmVBbmRTaHJpbmsoKTsKICAgICB2YXJpYWJsZUV2ZW50U3RyZWFtLnNocmlua1RvRml0KCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDYgKzY5LDMyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9zckVudHJ5LCBv
c3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCiAgICAgICAgICAgICBnZXRPU1JFbnRyeURh
dGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAgICBDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRj
aE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8Q2F0Y2hFbnRyeXBvaW50RGF0YSwg
dW5zaWduZWQ+KAorICAgICAgICAgICAgY2F0Y2hFbnRyeXBvaW50cywgY2F0Y2hFbnRyeXBvaW50
cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgICAgICBbXSAoY29uc3QgQ2F0Y2hFbnRy
eXBvaW50RGF0YSogaXRlbSkgeyByZXR1cm4gaXRlbS0+bV9ieXRlY29kZUluZGV4OyB9KTsKKyAg
ICB9CisKKyAgICB2b2lkIGZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygpCisgICAgeworICAg
ICAgICBzdGQ6OnNvcnQoY2F0Y2hFbnRyeXBvaW50cy5iZWdpbigpLCBjYXRjaEVudHJ5cG9pbnRz
LmVuZCgpLCBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYSwgY29uc3QgQ2F0Y2hFbnRy
eXBvaW50RGF0YSYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEubV9ieXRlY29kZUluZGV4IDwg
Yi5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0pOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICAgICAgdW5zaWduZWQgcHJldmlvdXNJbmRleCA9IDA7CisgICAgICAgIGZvciAoY29uc3QgQ2F0
Y2hFbnRyeXBvaW50RGF0YSYgZW50cnlwb2ludCA6IGNhdGNoRW50cnlwb2ludHMpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChwcmV2aW91c0luZGV4IDwgZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXgp
OworICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4
CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hFbnRyeXBv
aW50KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBW
ZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0
Y2hFbnRyeXBvaW50cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5dGVjb2RlSW5kZXgs
IG1hY2hpbmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQog
ICAgIAogICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAg
ICB7CkBAIC0xMzIsNiArMTU4LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRh
IGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZl
Y3RvcjxDYXRjaEVudHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRl
ZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3Vs
YXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZl
bnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxOTUsOCBAQCBwdWJsaWM6
CiAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwogICAgIHVuc2ln
bmVkIG9zckVudHJ5UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisKKyAgICBNYWxs
b2NQdHI8SlNWYWx1ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBFTkFCTEUoRlRM
X0pJVCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0
YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8
SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVF
bnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZl
SklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1f
Z3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNh
dGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNW
YWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBz
ZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1Nywy
MyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYK
IAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJh
c2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtC
dWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRy
eXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5k
Q2F0Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZz
ZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJ
VENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9T
UiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkg
Y29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25P
ZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRy
eURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5i
eXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAg
ICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFz
dFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6
IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9j
a0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNp
Y0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3Rv
cjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRD
b2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNo
VmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAg
ICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAg
ICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3Jh
cGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAg
ICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRl
ciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVl
W25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxp
bmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgp
OyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAg
ICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09
IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9n
cmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAg
ICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1
bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChp
dGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFs
dWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09
IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAg
ICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJl
bnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEg
Kzc4LDEzIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBj
YXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKKyAg
ICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBEb3Vi
bGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2Ug
RXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVj
dHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAzLDYgKzIwMywxNCBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRV
c2VKdW1wVGFibGU7CiB9OwogCitzdHJ1Y3QgRW50cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3
aXRjaERhdGEoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBi
bG9ja3M7Cit9OworCiBzdHJ1Y3QgQ2FsbFZhcmFyZ3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJB
cmdPZmZzZXQ7CiB9OwpAQCAtMTI3NywxNyArMTI4NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisg
ICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBT
d2l0Y2g7CiAgICAgfQogCisgICAgYm9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvcCgpID09IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJvb2wgaXNU
ZXJtaW5hbCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBK
dW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CisgICAgICAg
IGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRh
aWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8U3dpdGNoRGF0YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0Y2hEYXRh
KiBlbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlTd2l0Y2go
KSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigpOworICAg
IH0KICAgICAKICAgICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0xMzU5LDYg
KzEzNzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgY2FzZSBT
d2l0Y2g6CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgKyAx
OworICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dp
dGNoRGF0YSgpLT5ibG9ja3Muc2l6ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNzIsNiArMTM5NCwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsK
ICAgICAgICAgfQorCisgICAgICAgIGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAgc3dpdGNo
IChpbmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBA
IC0xNTE4LDYgKzE1NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWljc1N0b3JlOgog
ICAgICAgICBjYXNlIEF0b21pY3NTdWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoKKyAgICAg
ICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3
LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5p
c1ZhbGlkKCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29u
c3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9j
YWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQogICAg
IAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyog
U3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3
ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRj
aCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0
SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
XAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAg
ICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYg
KzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKdW1w
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRW50
cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVI
YXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDY3IEBAIHZv
aWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRj
aDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBpZiAoIU9w
dGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0g
Y29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUp
OworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRD
b2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7Cisg
ICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1
bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4n
dCBjb21waWxlIHRoaXMKKyAgICAgICAgLy8gYWZ0ZXJfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBz
aW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJv
dmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3Jt
YXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+
cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAg
ICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkg
eworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYg
KCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6Cisg
ICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJl
Zm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3Vt
ZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2Rl
LT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAg
IGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJz
KClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2Rl
T2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9hZnRlcl9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRl
Y29kZU9mZnNldCgpICsgMV0udS5wb2ludGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7Cisg
ICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkg
eworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2Nh
bCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5
QnVmZmVyLmdldCgpW2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQp
LmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBqaXRD
b2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNhdGNoRW50cnlwb2ludC0+bV9tYWNoaW5l
Q29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1h
dC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgog
CkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNv
ZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1
Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4Owor
ICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hl
biBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAv
LyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxv
Y2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8v
IFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRo
dW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBp
dCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2Fu
J3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgor
dm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMiwxNiArMTEyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBj
aGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwog
ICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAg
ICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFt
ZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdl
dC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICgh
b2xkTm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhh
dmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAg
ICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAg
ICAgb2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBt
X2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBP
cEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1th
cmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAw
OyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5
LDYgKzE0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVy
KG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5z
ZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1f
ZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNb
MF0gPSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNs
ZWFyKCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jv
b3QsIGFyZ3VtZW50cyk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwog
ICAgICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY4LDcgKzM2OCw2IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpj
b21waWxlSW5UaHIKICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICBkZmcu
ZW5zdXJlRG9taW5hdG9ycygpOwogICAgICAgICBkZmcuZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0g
ICAgICAgIGRmZy5lbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7CiAgICAgfQogCiAgICAgc3dpdGNo
IChtb2RlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
UG9zdE51bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0j
aWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNp
bmNsdWRlICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0
TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmlu
Zz4oZ3JhcGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0g
ICAgd29ya2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51
bWJlciA9IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChC
bG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChp
dGVtLm9yZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAg
bV9tYXBbaXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAg
ICAgIHdvcmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAg
ICAgIHdvcmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1f
cG9zdE51bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7
IH0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNp
bmcgbmFtZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgRWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZv
cndhcmRFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2Ui
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiQmFja0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRG
R0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2Us
Ci0gICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVy
aW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdy
YXBoJik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJl
cihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVt
YmVyOyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3Qg
eyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZy
b20gYSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2Yo
QmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9z
dE51bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlz
QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0
byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNT
dHJpY3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2Nl
bmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAv
LyBUaGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBz
dWNoIGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFu
eSBzdWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVk
Z2VLaW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJl
dHVybiBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8s
IGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAg
cmV0dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1i
ZXJpbmcgewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQg
bV9wb3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwot
fTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmly
c3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlw
b2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMu
CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5u
dW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1th
cmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFy
Z3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2
YXRlOgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9O
dW1iZXI6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAgICAgICAgc2V0
UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTExMSw2ICsxMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBE
ZWZpbmVBY2Nlc3NvclByb3BlcnR5OgogICAgICAgICBjYXNlIERGRzo6SnVtcDoKICAgICAgICAg
Y2FzZSBCcmFuY2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgU3dp
dGNoOgogICAgICAgICBjYXNlIFByb2ZpbGVUeXBlOgogICAgICAgICBjYXNlIFByb2ZpbGVDb250
cm9sRmxvdzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
RGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBo
aSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRl
ciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNo
IGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNl
cnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9j
YWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpW
YXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JT
U0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MSwyMiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAg
ICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9j
ayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1h
dHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAv
LyBGSVhNRTogU3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7Cisg
ICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJn
dW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3Jt
YXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAg
ICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0
IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgor
ICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQg
bG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAg
ICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgog
ICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICsz
MjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2Fz
ZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0
T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2lu
Y2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIK
KwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkK
QEAgLTYwNzksNiArNjA4MSwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4
dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIG1faml0LnByaW50KCJFeHRyYWN0Q2F0Y2hMb2Nh
bCIpOworICAgICAgICAvL21faml0LnByb2JlKFtdIChQcm9iZUNvbnRleHQqKSB7CisgICAgICAg
IC8vICAgIGRhdGFMb2dMbigiRXh0cmFjdENhdGNoTG9jYWwhIik7CisgICAgICAgIC8vfSk7CisK
KyAgICAgICAgSlNWYWx1ZSogcHRyID0gJm1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1
ZmZlci5nZXQoKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Cisg
ICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBH
UFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIp
LCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVj
a1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBAIC02MDg3LDYg
KzYxMDQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCisKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2Ug
VXBzaWxvbjoKQEAgLTYxMTUsNyArNjEzNCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFBoYW50b21DcmVhdGVSZXN0OgogICAgIGNhc2UgUGhh
bnRvbVNwcmVhZDoKICAgICBjYXNlIFBoYW50b21OZXdBcnJheVdpdGhTcHJlYWQ6Ci0gICAgICAg
IERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiVW5leHBlY3RlZCBub2RlIik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
Njc2LDYgKzE2NzYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9j
awogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50KSB7CisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAg
bV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQu
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFi
bGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxs
RnJhbWUoKTsKQEAgLTE3NzAsOCArMTc3Nyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2lu
ID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAg
IGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAg
Tm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUq
IG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAg
Ly8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2gg
YXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODU1LDEyICsxODYzLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNP
U1JUYXJnZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRk
IHRoZW0KLSAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVh
ZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChi
bG9jay0+aXNPU1JUYXJnZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdl
IGNvdWxkIGFkZCB0aGVtCisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAg
ICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4
XSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE4NzEsMTAgKzE4NzgsMzAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxv
Y2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJn
ZXQpCisgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NS
RW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZl
cik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAg
IGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChi
bG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsK
KyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAg
ICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVj
dG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1l
bnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRD
ZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hl
Y2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgq
YmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZN
b3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc09TUlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRy
eSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsK
KyAgICAgICAgfQogICAgIH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9T
UkVudHJ5cG9pbnRzKCk7CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5
SGVhZHMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNv
dW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdo
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KQEAgLTk4LDYgKzk4LDggQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uKEdyYXBoJiBncmFwaCkKIHsKKyAgICAvLyBPT1BTLgor
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gcnVuUGhhc2U8U3RhdGljRXhlY3V0aW9uQ291
bnRFc3RpbWF0aW9uUGhhc2U+KGdyYXBoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYg
IWl0ZXItPnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25s
eSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3Vl
LgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKTsKIAogICAgICAg
ICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4aXRPSyk7CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRMb2NhbCA9IGluc2VydGlvblNl
dC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwg
dmFyaWFibGUtPnByZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk1LDE4ICsxOTUsMTggQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKChu
b2RlKSwgIShtYXlFeGl0KG1fZ3JhcGgsIG5vZGUpID09IEV4aXRzICYmICFub2RlLT5vcmlnaW4u
ZXhpdE9LKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOwotICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAgICAgICAgICAgIChub2RlKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRPSwotICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2lu
LmZvckV4aXQpOwotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIChub2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICEoIXByZXZpb3VzTm9k
ZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQotICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAg
IHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQp
OworICAgICAgICAgICAgICAgICAgICAvL05vZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChp
IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIC8vVkFMSURBVEUoCisgICAgICAgICAgICAgICAg
ICAgIC8vICAgIChub2RlKSwKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgIWNsb2JiZXJzRXhp
dFN0YXRlKG1fZ3JhcGgsIHByZXZpb3VzTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgLy8gICAg
fHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9k
ZS0+b3AoKSA9PSBFeGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3Jp
Z2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAg
ICAgICAgICAgIC8vVkFMSURBVEUoCisgICAgICAgICAgICAgICAgICAgIC8vICAgIChub2RlKSwK
KyAgICAgICAgICAgICAgICAgICAgLy8gICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9L
ICYmIG5vZGUtPm9yaWdpbi5leGl0T0spCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9y
aWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICBtX25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5v
ZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1
dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dy
YXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9j
aygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50
c1tpXTsKICAgICAgICAgICAgIG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAg
ICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjc3LDYgKzI3Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAg
ICAgREVGSU5FX09QKG9wX2NvbnN0cnVjdF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y2F0Y2gpCisgICAgICAgIERFRklORV9PUChvcF9hZnRlcl9jYXRjaCkKICAgICAgICAgREVGSU5F
X09QKG9wX2NvbnN0cnVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV90aGlzKQogICAg
ICAgICBERUZJTkVfT1Aob3BfdG9fdGhpcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDc2LDYgKzQ3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRfb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3RfdmFyYXJncyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25z
dHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7
CkBAIC03OTUsNiArNzk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3Qs
IGludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBf
SklUT3BlcmF0aW9uX0UpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFBfSklUT3BlcmF0aW9uX0VKUywgR1BSUmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3Qp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0
aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VK
SSwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNiArNTc5LDEzIEBA
IEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50
MzJfdCBhcmcxKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIoYXJnMSkpOworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBzaXplX3QgYXJnMikKIHsKICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
Myw2ICs4NTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgog
ICAgIGVtaXRTdG9yZSh0aHJvd25WYWx1ZSwgcmVnVDEsIHJlZ1QwKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKQoreworICAgIC8vIE9PUFMKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3Nl
cnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2Vy
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0
Y2goSW5zdHJ1Y3Rpb24qIGN1cgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgLy8gT09QUzogYWRk
IGEgaml0IGZhc3QgcGF0aCBmb3IgdGhpcy4KKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIHNraXBPU1JF
bnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBza2lwT1NS
RW50cnkubGluayh0aGlzKTsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkg
eworICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBw
cm9maWxlKSB7CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9v
cGVyYW5kLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCZwcm9m
aWxlLm1fcHJvZmlsZSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwogdm9pZCBKSVQ6OmVtaXRf
b3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE0LDYgKzE1MTQsMTkgQEAgU2xv
d1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIENPREVCTE9DS19MT0df
RVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwog
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CiB9CisKK2NoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgYnl0
ZWNvZGVJbmRleCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIENvZGVCbG9jayogb3B0aW1pemVk
UmVwbGFjZW1lbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVwbGFjZW1lbnQoKTsKKyAgICBpZiAo
b3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpERkdKSVQpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihERkc6
OnByZXBhcmVDYXRjaE9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29k
ZUluZGV4KSk7Cit9CisKICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcnJheVZhbHVl
LCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxNiw2ICszMTYsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJ
VE9wZXJhCiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlop
KEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJB
VElPTiAqUF9KSVRPcGVyYXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsK
IHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0
YXRlKiwgZG91YmxlLCBpbnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBf
SklUT3BlcmF0aW9uX0VVaSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0
aFJldHVyblR5cGUgKEpJVF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNT
dGF0ZSosIENhbGxMaW5rSW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElP
TiAqVF9KSVRPcGVyYXRpb25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYg
SlNTdHJpbmcqIChKSVRfT1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUq
LCBpbnQzMl90KTsKQEAgLTM5Niw2ICszOTcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVGhyb3coRXhlY1N0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0
YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShERkdfSklUKQogU2xvd1Bh
dGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwg
aW50MzJfdCkgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlP
U1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRp
Zgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJp
bmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwxOCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7Cisg
ICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkg
eworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNv
ZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9
KTsKKworICAgIExMSU5UX0VORCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1l
KiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3By
b2ZpbGVyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRv
d19jaGlja2VuX3Byb2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9hZnRlcl9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RG
X0lOVEVSTkFMOwogI2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRF
Uk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMTk3Nyw2ICsxOTc3LDExIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaChjb25z
dGV4cHIgb3BfY2F0Y2hfbGVuZ3RoKQogCiAKK19sbGludF9vcF9hZnRlcl9jYXRjaDoKKyAgICBj
YWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9hZnRlcl9jYXRjaCkKKyAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3BfYWZ0ZXJfY2F0Y2hfbGVuZ3RoKQorCisKIF9sbGludF9vcF9lbmQ6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318018</attachid>
            <date>2017-08-13 18:48:55 -0700</date>
            <delta_ts>2017-08-13 19:22:29 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>128342</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDkgKzI1MTQsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDEsNiArMjUzMiwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVi
bGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJk
c0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dh
cmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFw
aC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KGdyYXBoLnNlbGVjdENG
RzxTU0FDRkc+KCkpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygKICAgICA6IGJ5dGVjb2RlQmVnaW4o
Ynl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBpc09TUlRhcmdldChm
YWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBvaW50KGZhbHNlKQogICAgICwgY2ZhSGFzVmlzaXRl
ZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFGb3VuZENv
bnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9IHNpemUo
KTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGF0KGkp
OwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEp1
bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dpdGNoOgot
ICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsOgotICAg
ICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxW
YXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgotICAgICAg
ICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rlcm1pbmFs
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsKKyAgICAg
ICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBl
bmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5
IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFs
bCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAgICAgICAg
ICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJz
YWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3LDcgQEAg
c3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2NrSW5kZXgg
aW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0Y2hFbnRy
eXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNob3VsZFJldmlz
aXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50
aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdp
biwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBz
YW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xp
bmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBi
YXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAg
IC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3Nv
cnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRo
ZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTQwNzQsNyArNDA3NCwx
MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgLy8gdXMg
dG8gdHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0aGUgYWN0dWFsIGFyZ3Vt
ZW50IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEgdmFsdWUgd2Ugc2V0IGV4
cGxpY2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3JhcGguYmxvY2soMCkgJiYg
IWlubGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHMucmVzaXpl
KG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4Pigp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAg
ICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1
bWVudHMpOworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhl
eSBkb24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwogICAg
ICAgICAvLyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CkBAIC00MDg3
LDcgKzQwOTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZv
KHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IHNldEFyZ3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0g
PSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKICAgICAgICAg
fQogICAgIH0KQEAgLTUxNTAsNiArNTE1NCwxMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9n
cmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOiB7CisgICAgICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24n
dCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhp
cyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVy
X2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzRlRMKG1fZ3JhcGgu
bV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgY2F0Y2gg
aW4gdGhlIEZUTC4KKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0
ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKworICAgICAgICAgICAg
VmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBhcmd1bWVudFByZWRpY3Rpb25zKG1fbnVtQXJndW1lbnRz
KTsKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbG9jYWxQcmVkaWN0aW9uczsK
KyAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1lbnRz
OworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAg
ICAgICAgICAgICBib29sIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2Zp
bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmls
ZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7
CisgICAgICAgICAgICAgICAgICAgIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJj0gcHJlZGljdGlv
biA9PSBTcGVjTm9uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQocHJlZGlj
dGlvbik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQob3BlcmFuZC5pc0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9B
cmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCld
ID0gcHJlZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9udW1B
cmd1bWVudHM7ICsrYXJndW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzZWVuQXJndW1lbnRzLmNvbnRhaW5zKGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJiYgKGFyZ3Vt
ZW50UHJlZGljdGlvbnMuc2l6ZSgpIHx8IGxvY2FsUHJlZGljdGlvbnMuc2l6ZSgpKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSBoYXZlbid0IGV4ZWN1
dGVkIHRoaXMgY2F0Y2ggeWV0LiBMZXQncyBub3QgY29tcGlsZQorICAgICAgICAgICAgICAgICAg
ICAvLyBpdCBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNvbXBpbGluZyB0aGlzIGFzIGFu
IGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB3aGVuIHNl
YXJjaGluZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBpdCByZWxhdGl2ZQorICAgICAg
ICAgICAgLy8gdG8gb3BfYWZ0ZXJfY2F0Y2guCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+
Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OworCisgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVyLCBOb2RlKj4+IGxvY2Fsc1RvU2V0OworICAgICAgICAg
ICAgbG9jYWxzVG9TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8v
IE5vdGU6IFRoaXMgd2lsbCByZXNlcnZlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxvY2FscyB3
ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUgYnVmZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4KKworICAg
ICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBo
ZXJlIHNpbmNlIHdlIHdvdWxkIG5vdCBrbm93IGhvdyB0byBkbyB2YWx1ZSByZWNvdmVyeS4KKyAg
ICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZl
ci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7Cisg
ICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsK
KyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9j
YWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJl
ck9mTG9jYWxzXSkpOworICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2
YWx1ZSk7CisgICAgICAgICAgICAgICAgbG9jYWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAg
ICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9m
TG9jYWxzLCAqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAg
ICAgICAvLyBXZSBjYW4gbm93IGV4aXQgYmVjYXVzZSB3ZSd2ZSBzZXQgdXAgb3VyIE9TUiBleGl0
IHN0YXRlIHRvIHJlY292ZXIgYW55IGxpdmUgbG9jYWxzLgorICAgICAgICAgICAgbV9leGl0T0sg
PSB0cnVlOyAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIC8vIFNldCB1cCBvdXIgYXJndW1lbnRzIG5vdyB0aGF0IGl0J3Mg
c2FmZSB0byBleGl0LiBUaGlzIGhhcHBlbnMgaGVyZSBiZWNhdXNlIHdlIG1heSBob2lzdCB0eXBl
IGNoZWNrcyB1cAorICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgcG9pbnQgaW4gdGhlIHByb2dy
YW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0byBleGl0LgorICAgICAgICAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50Qmxv
Y2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4m
IGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAg
ICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50UHJlZGljdGlvbnNbYXJndW1lbnRdKTsKKworICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFp
bGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8o
dmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3Vt
ZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBwYWlyIDogbG9jYWxzVG9TZXQpCisgICAgICAgICAgICAgICAgc2V0TG9j
YWwoY3VycmVudENvZGVPcmlnaW4oKSwgcGFpci5maXJzdCwgcGFpci5zZWNvbmQpOworCisgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJl
bnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwpAQCAtNjEzOCw4ICs2MjU0
LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5r
ZWRCbG9jayhibG9jay5wdHIoKSkpOwogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdl
dC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdU
Rk1vdmUoYmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygp
OwogICAgICAgICAgICAgICAgIH0KQEAgLTYxOTYsOCArNjMxNCw4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5s
aW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAg
bGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNr
RW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKKwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVh
Y2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAh
PSBtX2dyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKG1f
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVzdC1oYW5k
bGUgYmxvY2s6ICIsICpibG9jaywgIlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDI4OCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIENGRyB7Ci0gICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ0ZHKTsKK2NsYXNzIENQU0NGRyB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ1BTQ0ZHKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICB1c2luZyBOb2RlID0gQmFzaWNCbG9jayo7CisKKyAgICAvLyBPT1BTCisgICAgdXNp
bmcgU2V0ID0gQmxvY2tTZXQ7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBjbGFz
cyBNYXAgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIC8vIE9PUFM6IGlzIHRoaXMgbmVlZGVkPworICAgICAgICAvL01hcCgpCisgICAgICAg
IC8veworICAgICAgICAvL30KKyAgICAgICAgCisgICAgICAgIE1hcChHcmFwaCYgZ3JhcGgpCisg
ICAgICAgICAgICA6IG1fY2ZnKCpncmFwaC5tX2Nwc0NGRy5nZXQoKSkKKyAgICAgICAgICAgICwg
bV9yb290KG1fY2ZnLm1fcm9vdC5wdHIoKSkKKyAgICAgICAgICAgICwgbV9tYXAoZ3JhcGgpCisg
ICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQmxvY2tJbmRleCBzaXplKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFQmIGF0SW5kZXgoQmxvY2tJbmRleCBibG9ja0lu
ZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYmxvY2tJbmRleCA9PSAwKQorICAgICAg
ICAgICAgICAgIHJldHVybiBtX3Jvb3RWYWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBtX21hcC5h
dEluZGV4KGJsb2NrSW5kZXgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBU
JiBhdEluZGV4KEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGF0SW5kZXgoYmxvY2tJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIFQmIGF0KEJsb2NrSW5kZXggYmxvY2tJbmRleCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGF0SW5kZXgoYmxvY2tJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGNvbnN0IFQmIGF0KEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGF0SW5kZXgoYmxvY2tJbmRleCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIFQmIGF0KEJhc2ljQmxvY2sqIGJsb2NrKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoYmxvY2sgPT0gbV9yb290KQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Jvb3RW
YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBtX21hcC5hdChibG9jayk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGNvbnN0IFQmIGF0KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXQoYmxvY2spOworICAgICAgICB9CisKKyAgICAg
ICAgVCYgb3BlcmF0b3JbXShCbG9ja0luZGV4IGJsb2NrSW5kZXgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBhdEluZGV4KGJsb2NrSW5kZXgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKEJsb2NrSW5kZXggYmxvY2tJbmRleCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGF0SW5kZXgoYmxvY2tJbmRleCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIFQmIG9wZXJhdG9yW10oQmFzaWNCbG9jayogYmxvY2sp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhdChibG9jayk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oQmFzaWNCbG9jayogYmxvY2spIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhdChibG9jayk7CisgICAgICAgIH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIENQU0NGRyYgbV9jZmc7CisgICAgICAgIEJhc2ljQmxv
Y2sqIG1fcm9vdDsKKyAgICAgICAgVCBtX3Jvb3RWYWx1ZTsKKyAgICAgICAgQmxvY2tNYXA8VD4g
bV9tYXA7CisgICAgfTsKKworICAgIC8vIE9PUFMuIE1ha2UgdGhpcyBpbmRleCBiYXNlZCEgSXQn
cyB0cmlja3kgYi9jIHdlIGRvbid0IHNlZSB0aGUgZmFrZSByb290IGF0IGNvbnN0cnVjdGlvbi4K
KyAgICBjbGFzcyBTZXQgeworICAgICAgICBTZXQoKSA9IGRlZmF1bHQ7CisgICAgICAgIC8vIFJl
dHVybiB0cnVlIGlmIHRoZSBibG9jayB3YXMgYWRkZWQsIGZhbHNlIGlmIGl0IHdhcyBhbHJlYWR5
IHByZXNlbnQuCisgICAgICAgIGJvb2wgYWRkKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9zZXQuYWRkKGJsb2NrKS5pc05ld0VudHJ5OworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBjb250YWlucyhCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMoYmxvY2spOworICAgICAg
ICB9CisKKyAgICAgICAgdXNpbmcgaXRlcmF0b3IgPSBIYXNoU2V0PEJhc2ljQmxvY2sqPjo6aXRl
cmF0b3I7CisKKyAgICAgICAgY2xhc3MgSXRlcmFibGUgeworICAgICAgICBwdWJsaWM6CisgICAg
ICAgICAgICBJdGVyYWJsZShHcmFwaCYsIGNvbnN0IFNldCYgc2V0KQorICAgICAgICAgICAgICAg
IDogbV9jZmcoZ3JhcGgubV9jcHNDRkcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zZXQubV9zZXQuYmVnaW4oKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zZXQubV9zZXQuZW5kKCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAg
ICAgIGNvbnN0IFNldCYgbV9zZXQ7CisgICAgICAgIH07CisgICAgcHVibGljOgorICAgIHByaXZh
dGU6CisgICAgICAgIEhhc2hTZXQ8QmFzaWNCbG9jayo+IG1fc2V0OworICAgIH07CisKKyAgICAv
L2NsYXNzIFNldCB7CisgICAgLy9wdWJsaWM6CisgICAgLy8gICAgLy8gT09QUy4KKyAgICAvLyAg
ICAvL1NldCgpIHsgfQorICAgIC8vICAgIAorICAgIC8vICAgIC8vIFJldHVybiB0cnVlIGlmIHRo
ZSBibG9jayB3YXMgYWRkZWQsIGZhbHNlIGlmIGl0IHdhcyBhbHJlYWR5IHByZXNlbnQuCisgICAg
Ly8gICAgYm9vbCBhZGQoQmFzaWNCbG9jayogYmxvY2spCisgICAgLy8gICAgeworICAgIC8vICAg
ICAgICByZXR1cm4gIW1fc2V0LnNldChibG9jay0+aW5kZXgpOworICAgIC8vICAgIH0KKyAgICAv
LyAgICAKKyAgICAvLyAgICBib29sIGNvbnRhaW5zKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAor
ICAgIC8vICAgIHsKKyAgICAvLyAgICAgICAgaWYgKCFibG9jaykKKyAgICAvLyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAvLyAgICAgICAgcmV0dXJuIG1fc2V0LmdldChibG9jay0+aW5k
ZXgpOworICAgIC8vICAgIH0KKyAgICAvLyAgICAKKyAgICAvLyAgICBjbGFzcyBpdGVyYXRvciB7
CisgICAgLy8gICAgcHVibGljOgorICAgIC8vICAgICAgICBpdGVyYXRvcigpCisgICAgLy8gICAg
ICAgICAgICA6IG1fZ3JhcGgobnVsbHB0cikKKyAgICAvLyAgICAgICAgICAgICwgbV9zZXQobnVs
bHB0cikKKyAgICAvLyAgICAgICAgICAgICwgbV9pbmRleCgwKQorICAgIC8vICAgICAgICB7Cisg
ICAgLy8gICAgICAgIH0KKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAgIGl0ZXJhdG9yJiBv
cGVyYXRvcisrKCkKKyAgICAvLyAgICAgICAgeworICAgIC8vICAgICAgICAgICAgbV9pbmRleCA9
IG1fc2V0LT5tX3NldC5maW5kQml0KG1faW5kZXggKyAxLCB0cnVlKTsKKyAgICAvLyAgICAgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICAvLyAgICAgICAgfQorICAgIC8vICAgICAgICAKKyAgICAv
LyAgICAgICAgQmFzaWNCbG9jayogb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgLy8gICAgICAgIAor
ICAgIC8vICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25z
dAorICAgIC8vICAgICAgICB7CisgICAgLy8gICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBv
dGhlci5tX2luZGV4OworICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAgIC8vICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIC8v
ICAgICAgICB7CisgICAgLy8gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Cisg
ICAgLy8gICAgICAgIH0KKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgcHJpdmF0ZToKKyAgICAv
LyAgICAgICAgZnJpZW5kIGNsYXNzIFNldDsKKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAg
IEdyYXBoKiBtX2dyYXBoOworICAgIC8vICAgICAgICBjb25zdCBTZXQqIG1fc2V0OworICAgIC8v
ICAgICAgICBzaXplX3QgbV9pbmRleDsKKyAgICAvLyAgICB9OworICAgIC8vICAgIAorICAgIC8v
ICAgIGNsYXNzIEl0ZXJhYmxlIHsKKyAgICAvLyAgICBwdWJsaWM6CisgICAgLy8gICAgICAgIEl0
ZXJhYmxlKEdyYXBoJiBncmFwaCwgY29uc3QgU2V0JiBzZXQpCisgICAgLy8gICAgICAgICAgICA6
IG1fZ3JhcGgoZ3JhcGgpCisgICAgLy8gICAgICAgICAgICAsIG1fc2V0KHNldCkKKyAgICAvLyAg
ICAgICAgeworICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAgIC8vICAgICAgICBp
dGVyYXRvciBiZWdpbigpIGNvbnN0CisgICAgLy8gICAgICAgIHsKKyAgICAvLyAgICAgICAgICAg
IGl0ZXJhdG9yIHJlc3VsdDsKKyAgICAvLyAgICAgICAgICAgIHJlc3VsdC5tX2dyYXBoID0gJm1f
Z3JhcGg7CisgICAgLy8gICAgICAgICAgICByZXN1bHQubV9zZXQgPSAmbV9zZXQ7CisgICAgLy8g
ICAgICAgICAgICByZXN1bHQubV9pbmRleCA9IG1fc2V0Lm1fc2V0LmZpbmRCaXQoMCwgdHJ1ZSk7
CisgICAgLy8gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIC8vICAgICAgICB9CisgICAg
Ly8gICAgICAgIAorICAgIC8vICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdAorICAgIC8vICAg
ICAgICB7CisgICAgLy8gICAgICAgICAgICBpdGVyYXRvciByZXN1bHQ7CisgICAgLy8gICAgICAg
ICAgICByZXN1bHQubV9ncmFwaCA9ICZtX2dyYXBoOworICAgIC8vICAgICAgICAgICAgcmVzdWx0
Lm1fc2V0ID0gJm1fc2V0OworICAgIC8vICAgICAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBtX3Nl
dC5tX3NldC5zaXplKCk7CisgICAgLy8gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIC8v
ICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAgIC8vICAgIHByaXZhdGU6CisgICAgLy8gICAg
ICAgIEdyYXBoJiBtX2dyYXBoOworICAgIC8vICAgICAgICBjb25zdCBTZXQmIG1fc2V0OworICAg
IC8vICAgIH07CisgICAgLy8gICAgCisgICAgLy8gICAgSXRlcmFibGUgaXRlcmFibGUoR3JhcGgm
IGdyYXBoKSBjb25zdAorICAgIC8vICAgIHsKKyAgICAvLyAgICAgICAgcmV0dXJuIEl0ZXJhYmxl
KGdyYXBoLCAqdGhpcyk7CisgICAgLy8gICAgfQorICAgIC8vICAgIAorICAgIC8vICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIC8vICAgIAorICAgIC8vcHJpdmF0ZToKKyAg
ICAvLyAgICBCaXRWZWN0b3IgbV9zZXQ7CisgICAgLy99OworCisgICAgdXNpbmcgTGlzdCA9IEJs
b2NrTGlzdDsKKworICAgIENQU0NGRyhHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChn
cmFwaCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRo
cmVhZGVkQ1BTIHx8IG1fZ3JhcGgubV9mb3JtID09IExvYWRTdG9yZSk7CisgICAgICAgIG1fcm9v
dCA9IGFkb3B0UmVmKG5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCBtX2dyYXBoLm1fZW50cnlwb2lu
dHNbMF0tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpLCBtX2dyYXBoLm1fZW50
cnlwb2ludHNbMF0tPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpLCAxLjApKTsKKwor
ICAgICAgICAvLyBPT1BTOiBzdG9wIGxlYWtpbmcgdGhpcworICAgICAgICBFbnRyeVN3aXRjaERh
dGEqIGRhdGEgPSBuZXcgRW50cnlTd2l0Y2hEYXRhOworICAgICAgICBkYXRhLT5ibG9ja3MucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpKTsKKyAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQor
ICAgICAgICAgICAgZGF0YS0+YmxvY2tzLnVuY2hlY2tlZEFwcGVuZChlbnRyeXBvaW50KTsKKyAg
ICAgICAgLy8gT09QUzogc2hvdWxkIHdlIHB1dCB0aGlzIGludG8gZ3JhcGgubV9ub2RlcyBvciBq
dXN0IGFsbG9jYXRlIG9uIHRoZSBzaWRlIGxpa2UgdGhpcz8KKyAgICAgICAgLy8gT09QUzogc3Rv
cCBsZWFraW5nIHRoaXMgRW50cnlTd2l0Y2ggbm9kZS4KKyAgICAgICAgbV9yb290LT5hcHBlbmQo
bmV3IE5vZGUoRW50cnlTd2l0Y2gsIE5vZGVPcmlnaW4oKSwgT3BJbmZvKGRhdGEpKSk7CisKKyAg
ICAgICAgLy8gT09QUzogbWF5YmUgdGhpcyB3aWxsIGxlYWQgdG8gYmFkbmVzcz8KKyAgICAgICAg
bV9yb290LT5pbmRleCA9PSBVSU5UX01BWDsKKyAgICB9CisKKyAgICB+Q1BTQ0ZHKCkKKyAgICB7
CisgICAgICAgIC8vIE9PUFM6IEl0J2QgYmUgbmljZSBpZiB3ZSBjb3VsZCBhc3NlcnQgZXZlbiBt
b3JlIHRoaW5ncywgbGlrZSBjZXJ0YWluIG1ldGhvZHMgbmV2ZXIgZ2V0IGNhbGxlZCBvbiBtX3Jv
b3QuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcm9vdC0+c2l6ZSgpID09IDEpOworICAgIH0K
KworICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fcm9vdDsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9
CisKKyAgICBERkc6Ok5vZGU6OlN1Y2Nlc3NvcnNJdGVyYWJsZSBzdWNjZXNzb3JzKE5vZGUgbm9k
ZSkgeyByZXR1cm4gbm9kZS0+c3VjY2Vzc29ycygpOyB9CisgICAgUHJlZGVjZXNzb3JMaXN0JiBw
cmVkZWNlc3NvcnMoTm9kZSBub2RlKSB7IHJldHVybiBub2RlLT5wcmVkZWNlc3NvcnM7IH0KKwor
ICAgIHVuc2lnbmVkIGluZGV4KE5vZGUgbm9kZSkgY29uc3QgeyByZXR1cm4gbm9kZS0+aW5kZXg7
IH0KKyAgICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGgu
YmxvY2soaW5kZXgpOyB9CisgICAgdW5zaWduZWQgbnVtTm9kZXMoKSBjb25zdCB7IHJldHVybiBt
X2dyYXBoLm51bUJsb2NrcygpOyB9CisgICAgCisgICAgUG9pbnRlckR1bXA8QmFzaWNCbG9jaz4g
ZHVtcChOb2RlIG5vZGUpIGNvbnN0IHsgcmV0dXJuIHBvaW50ZXJEdW1wKG5vZGUpOyB9CisKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIG1fZ3Jh
cGguZHVtcChvdXQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBHcmFwaCYgbV9ncmFwaDsKKyAg
ICBSZWY8QmFzaWNCbG9jaz4gbV9yb290OworfTsKKworY2xhc3MgU1NBQ0ZHIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShTU0FDRkcpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHR5cGVkZWYgQmFzaWNCbG9jayogTm9kZTsKQEAgLTQzLDExICszMjMsMTMg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IEJsb2NrTWFw
PFQ+OwogICAgIHR5cGVkZWYgQmxvY2tMaXN0IExpc3Q7CiAKLSAgICBDRkcoR3JhcGgmIGdyYXBo
KQorICAgIFNTQUNGRyhHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDogbV9ncmFwaChncmFwaCkKICAg
ICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAg
fQogCisgICAgLy8gT09QUzogd2UgbmVlZCB0byBmYWtlIGEgcm9vdCB3aGVuIHdlIGhhdmUgbXVs
dGlwbGUgZW50cnlwb2ludHMuCiAgICAgTm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9j
aygwKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJn
dW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1j
YXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVz
IC0gb25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNl
LCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElS
IG92ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRz
LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0
SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKwor
ICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAg
ICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJz
dFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1w
bGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAg
ICAgICAgIAogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAg
IG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURv
bWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nr
c0luUHJlT3JkZXIoKTsKICAgICAgICAgCkBAIC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5z
aXplKCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVy
YXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRv
bWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9j
aykpIHsKICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAg
ICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC03NzksNyArNzc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBz
dHJpY3QgZG9taW5hdGlvbiBiZWNhdXNlIHRoaXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91
ciBvd24gYmxvY2sgaWYKICAgICAgICAgICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3Np
dGlvbiBpbiB0aGUgYmxvY2suIENsZWFybHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAg
ICAgICAgICAgIC8vIGl0c2VsZiwgdGhlIHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9u
J3QgZG9taW5hdGUgdXMuCi0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0
cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9zc2FEb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsK
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgICAgICBJdCBzdHJpY3RseSBkb21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsK
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRp
ZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBt
X2Jsb2NrKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21p
bmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaC0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaC5zZXROb2RlKGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxl
dmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAg
ICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNl
IG9wX2FmdGVyX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9n
ZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAg
ICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2Fs
OgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCkBAIC00MjIsNiArNDIzLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3
aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVGhyb3c6CiAgICAgY2FzZSBG
b3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcg
QEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKEdyYXBo
JiBncmFwaCkKLSAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
KQorICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCkpCiAg
ICAgICAgICwgbV9iYWNrd2FyZHNEb21pbmF0b3JzKGdyYXBoLmVuc3VyZUJhY2t3YXJkc0RvbWlu
YXRvcnMoKSkKICAgICB7CiAgICAgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIERvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKKyAgICBTU0FEb21pbmF0
b3JzJiBtX2RvbWluYXRvcnM7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgbV9iYWNrd2FyZHNE
b21pbmF0b3JzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoK
ICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRl
cigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAgICAgIAotICAgICAgICBj
bGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAgICAgZm9yIChhdXRvJiBh
cmd1bWVudHNWZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLnZhbHVlcygp
KQorICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYXJndW1lbnRzVmVjdG9yKTsKIAogICAgICAg
ICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4
LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJs
ZXIuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAgVmVjdG9y
PERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYgogICAgIGR1bXBIZWFkZXIob3V0LCBs
aW5rQnVmZmVyKTsKICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKICAg
ICAKLSAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBtX2dyYXBoLmVuc3VyZU5h
dHVyYWxMb29wcygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIG1f
Z3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgCiAgICAgY29uc3QgY2hhciogcHJl
Zml4ID0gIiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5UHJlZml4ID0gIiAgICAg
ICAgIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2Fz
ZSBTd2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFJldHVybjoKICAgICBj
YXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTYsNiArMTk3LDcg
QEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZy
b21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBV
bnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENo
ZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
bWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
bWluYXRvcnMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyMCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIERvbWluYXRvcnMgOiBwdWJs
aWMgV1RGOjpEb21pbmF0b3JzPENGRz4gewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+Citj
bGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9taW5hdG9yczxDRkdLaW5kPiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRG9taW5hdG9ycyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9ycyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDog
V1RGOjpEb21pbmF0b3JzPENGRz4oKmdyYXBoLm1fY2ZnKQorICAgICAgICA6IFdURjo6RG9taW5h
dG9yczxDRkdLaW5kPihncmFwaC5zZWxlY3RDRkc8Q0ZHS2luZD4oKSkKICAgICB7CiAgICAgfQog
fTsKIAordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQ
U0RvbWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAg
ICAgICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zv
cm0gPT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdl
IGVkZ2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3Jz
LT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCBy
ZXN1bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5v
d25lciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRh
TG9nKAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdl
Lm5vZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVE
aXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAg
ICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAg
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAg
ICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7
CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNo
ZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNs
dWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRG
R05hdHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNs
dWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCkBAIC03Myw3
ICs3Miw3IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4o
cGxhbikKICAgICAsIG1fY29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2spCiAgICAgLCBtX3Byb2Zp
bGVkQmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX2NmZyhzdGQ6Om1h
a2VfdW5pcXVlPENGRz4oKnRoaXMpKQorICAgICwgbV9jcHNDRkcoc3RkOjptYWtlX3VuaXF1ZTxD
UFNDRkc+KCp0aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhw
b2ludFN0YXRlKEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25T
dGF0ZShIYXZlTm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtNDExLDcgKzQxMCw4IEBAIGJvb2wg
R3JhcGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVy
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ss
IFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQog
ewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4
dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5p
c1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChP
U1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIs
ICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBj
b250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lw
cGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+
aXNDYXRjaEVudHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAg
ICAgaWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAg
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4
ZWN1dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3Nv
cnM6Iik7CkBAIC00MjIsMTggKzQyMiwxNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIo
UHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAo
QmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAg
ICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0
TnVtYmVyaW5nKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1i
ZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAg
fSBlbHNlCiAgICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgi
XG4iKTsKLSAgICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMt
PmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAi
XG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAi
LCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBt
X2RvbWluYXRvcnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxv
Y2spKSwgIlxuIik7Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9kb21pbmF0b3Jz
ICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBEb21pbmF0ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxu
Iik7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWlu
YXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWlu
YW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4
LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKKyAgICAv
L30KICAgICBpZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkp
IHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTog
IiwgbV9iYWNrd2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNr
d2FyZHNEb21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2
LDI5ICs0NDUsMjggQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgog
ICAgICAgICB9CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJl
UG9zdE51bWJlcmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVt
YmVyaW5nOiAiLCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9w
cmVQb3N0TnVtYmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0
dXJhbExvb3BzKSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0
dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKLSAgICAgICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKLSAgICAgICAgICAgIFZlY3RvcjxCbG9j
a0luZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0
LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOwotICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRl
ZEJsb2NrTGlzdC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKLSAgICAg
ICAgICAgIG91dC5wcmludCgiXG4iKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmVj
dG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1f
bmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsKLSAgICAgICAgaWYgKCFjb250YWluaW5nTG9v
cHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWlu
aW5nIGxvb3AgaGVhZGVyczoiKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50
KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOwotICAgICAgICAgICAgb3V0LnBy
aW50KCJcbiIpOwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9u
YXR1cmFsTG9vcHMpIHsKKyAgICAvLyAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBt
X25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisgICAgLy8gICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKKyAgICAvLyAgICAgICAgVmVj
dG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKKyAgICAvLyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQorICAgIC8vICAgICAgICAgICAgc29y
dGVkQmxvY2tMaXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgIC8vICAgICAgICBz
dGQ6OnNvcnQoc29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7
CisgICAgLy8gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Qu
c2l6ZSgpOyArK2kpCisgICAgLy8gICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxv
Y2tMaXN0W2ldKTsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgIC8vICAgIH0K
KyAgICAvLyAgICAKKyAgICAvLyAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWlu
aW5nTG9vcHMgPQorICAgIC8vICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7
CisgICAgLy8gICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CisgICAgLy8gICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOworICAg
IC8vICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUo
KTsgKytpKQorICAgIC8vICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29w
c1tpXS0+aGVhZGVyKCkpOworICAgIC8vICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8g
ICAgfQorICAgIC8vfQogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IG91dC5wcmludChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUwMCwxMCBA
QCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50
KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9y
bSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNv
dW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0g
U1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAo
bV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgi
ICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7
CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAg
ICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5k
ZXgsICI6ICIsIGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnBy
aW50KCJcbiIpOwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4
ICs2NDAsMTAgQEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9p
ZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9j
ayosIDE2PiB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJs
b2NrKDApLT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBv
aW50IDogbV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9
IHRydWU7CisgICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAg
d2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+
bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgwMCwxMCBAQCB2b2lkIEdyYXBoOjpr
aWxsVW5yZWFjaGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsK
LSAgICBtX2RvbWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0
cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9y
cyA9IG51bGxwdHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05h
dHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwog
ICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dh
cmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpA
QCAtODUwLDEyICs4NTMsMTggQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkK
IHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0g
ICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBv
aW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsK
ICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAg
ICByZXN1bHQuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2st
Pm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2st
PnN1Y2Nlc3NvcihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZW50cnlwb2ludHMuc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKHJl
c3VsdFtpXSkpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC04NjMsNyArODcy
LDggQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tM
aXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdv
cmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6
IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAg
d2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBz
d2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC04
NzYsNiArODg2LDEyIEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVu
YWJsZWQoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyeXBvaW50
cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZW50cnlwb2ludHMu
Y29udGFpbnMocmVzdWx0W3Jlc3VsdC5zaXplKCkgLSBpIC0gMV0pKTsKKyAgICB9CisKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMwICsxNDg4LDQyIEBAIHZvaWQgR3JhcGg6Omxv
Z0Fzc2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFpbHVyZSgqdGhpcywgdG9D
U3RyaW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVtcChibG9jayksICJcblxu
IiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQogCi1Eb21pbmF0b3JzJiBH
cmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BT
RG9taW5hdG9ycygpCit7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgIG1fY3Bz
RG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAg
IHJldHVybiAqbV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5z
dXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAgICAgIG1f
ZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9kb21pbmF0b3JzOworICAgIC8vUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSk7
IC8vIE9PUFMgdGhpcyBtaWdodCBhc3NlcnQgaW4gc3NhIGNvbnZlcnNpb24sIHBlcmhhcHMgYWRk
IHNvbWUgbWV0aG9kIGZvciBoYW5kbGluZyB0aGF0LCBvciBoYXZlIHRoYXQgcGhhc2Ugc3RvcmUg
dG8gbV9mb3JtIGVhcmxpZXIuCisgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCisgICAgICAgIG1f
c3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOwor
ICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1QcmVQb3N0TnVtYmVyaW5nJiBHcmFw
aDo6ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1
cmVDUFNOYXR1cmFsTG9vcHMoKQogewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAg
ICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJp
bmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKKyAgICBSRUxFQVNF
X0FTU0VSVChtX2Zvcm0gIT0gU1NBKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAg
aWYgKCFtX2Nwc05hdHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNO
YXR1cmFsTG9vcHM7CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29w
cygpCitTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewot
ICAgIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAg
ICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7
Ci0gICAgcmV0dXJuICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0g
PT0gU1NBKTsKKyAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVy
YWxMb29wcykKKyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNT
QU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9
CiAKIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IC8vIFdlIGNvdWxkIGNoYW5nZSB0aGlzLCBidXQg
aXQncyBvbmx5IHVzZWQgaW4gU1NBIGZvciBub3csIGFuZCB3ZSBkb24ndCBuZWVkIHR3byBncmFw
aCBmaWVsZHMgeWV0IGZvciB0d28gdHlwZXMgb2YgYmFja3dhcmRzIENGRy4KICAgICBpZiAoIW1f
YmFja3dhcmRzQ0ZHKQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1
MDMsNiArMTUzMSw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygK
IAogQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMo
KQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNr
d2FyZHNEb21pbmF0b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFj
a3dhcmRzRG9taW5hdG9yczsKQEAgLTE1MTAsNiArMTUzOSw3IEBAIEJhY2t3YXJkc0RvbWluYXRv
cnMmIEdyYXBoOjplbnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdy
YXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzKQogICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9j
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTU1Nyw3IEBAIE1ldGhvZE9m
R2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5s
b2NhbCgpLnRvQXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnRO
b2RlID0gbV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBh
cmd1bWVudE5vZGUgPSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFs
dWVbYXJndW1lbnRdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAg
ICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJl
dmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsMTIgKzU0LDE0IEBAIG5hbWVzcGFjZSBERkcgewogCiBjbGFz
cyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwotY2xhc3MgQ0ZHOwor
Y2xhc3MgQ1BTQ0ZHOworY2xhc3MgU1NBQ0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOworY2xhc3MgQ1BTRG9taW5hdG9yczsKK2NsYXNzIFNT
QURvbWluYXRvcnM7CiBjbGFzcyBGbG93SW5kZXhpbmc7Ci1jbGFzcyBOYXR1cmFsTG9vcHM7Ci1j
bGFzcyBQcmVQb3N0TnVtYmVyaW5nOworY2xhc3MgU1NBTmF0dXJhbExvb3BzOworY2xhc3MgQ1BT
TmF0dXJhbExvb3BzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAt
OTAxLDkgKzkwMywxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3Jz
JiBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9z
dE51bWJlcmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7Cisg
ICAgQ1BTRG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRv
cnMmIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQ
U05hdHVyYWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExv
b3BzKCk7CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNr
d2FyZHNEb21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7
CkBAIC05MjEsNyArOTI0LDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7
CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQ
dHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxv
Y2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2lu
dHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1h
cDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29k
ZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1Niw3ICs5NjAsNyBA
QCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFuZCB3ZSBy
ZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNpZGUKICAg
ICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7CisgICAgSGFz
aE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHM7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRo
aXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgogICAg
IFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7CkBAIC05NjcsNiArOTcxLDcg
QEAgcHVibGljOgogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+IG1f
bmV3QXJyYXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7CiAg
ICAgQmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RW50
cnlTd2l0Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9mZnNl
dERhdGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZzZXRE
YXRhPiBtX211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhPiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkBAIC05ODIsMTAgKzk4NywxMiBA
QCBwdWJsaWM6CiAgICAgSGFzaFNldDxzdGQ6OnBhaXI8SlNPYmplY3QqLCBQcm9wZXJ0eU9mZnNl
dD4+IG1fc2FmZVRvTG9hZDsKICAgICBIYXNoTWFwPFByb3BlcnR5VHlwZUtleSwgSW5mZXJyZWRU
eXBlOjpEZXNjcmlwdG9yPiBtX2luZmVycmVkVHlwZXM7CiAgICAgVmVjdG9yPFJlZjxTbmlwcGV0
Pj4gbV9kb21KSVRTbmlwcGV0czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9taW5hdG9ycz4gbV9k
b21pbmF0b3JzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmVQb3N0TnVtYmVyaW5nPiBtX3ByZVBv
c3ROdW1iZXJpbmc7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE5hdHVyYWxMb29wcz4gbV9uYXR1cmFs
TG9vcHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENGRz4gbV9jZmc7CisgICAgc3RkOjp1bmlxdWVf
cHRyPENQU0RvbWluYXRvcnM+IG1fY3BzRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1NBRG9taW5hdG9ycz4gbV9zc2FEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNO
YXR1cmFsTG9vcHM+IG1fY3BzTmF0dXJhbExvb3BzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FO
YXR1cmFsTG9vcHM+IG1fc3NhTmF0dXJhbExvb3BzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFND
Rkc+IG1fY3BzQ0ZHOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FDRkc+IG1fc3NhQ0ZHOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dhcmRzQ0ZHOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0b3JzPiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPiBtX2NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTAwOSw2ICsxMDE2LDcgQEAgcHVibGljOgogICAgIFJl
ZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJs
ZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMs
NTQgKzkzLDU5IEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAog
dm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9
IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZv
dW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRl
QXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xv
YmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7
Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAg
ICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNT
QSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVu
dHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0g
Rmx1c2hlZEpTVmFsdWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFw
aC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQg
PSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5
cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRj
aGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwg
PSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAg
ICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwor
CisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFw
aC5tX2Zvcm0gPT0gU1NBKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHNbaV07CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0g
bm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRy
eXBvaW50KS0+dmFsdWVbaV07CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAg
ICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQp
OworICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNl
IEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQu
YXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShtX2dyYXBoLCBTcGVjQ2VsbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1f
Z3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9u
bHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0g
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9v
bGVhbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAg
ICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgs
IFNwZWNDZWxsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1Zh
bHVlOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRl
Y29kZVRvcCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFy
Z3VtZW50Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyAr
K2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAg
ICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9j
a3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMo
KTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSku
Y2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5j
bGVhcigpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6
IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5t
X2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxl
ZCB0aGUgZW50cnlwb2ludHMgYWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCiAgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+
Y2ZhU2hvdWxkUmV2aXNpdCA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9
IGZhbHNlOwpAQCAtMzY0LDYgKzM2OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRh
dGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAg
IH0KKworICAgIGNhc2UgRW50cnlTd2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50
cnlTd2l0Y2hEYXRhKCktPmJsb2NrcykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFz
aWNCbG9jaywgdGFyZ2V0QmxvY2spOworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAg
ICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9u
LnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0
LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAg
IHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVw
YXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3Ny
RW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRh
Qnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hP
U1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVu
c2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMu
c2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlw
b2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAg
fQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAgICAg
ICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5l
bmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlw
b2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIu
bV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENhdGNo
RW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAg
ICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsK
KyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleAor
ICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhdGNoRW50cnlwb2lu
dCh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNo
RW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlwb2ludERhdGEgeyBieXRlY29kZUluZGV4LCBt
YWNoaW5lQ29kZU9mZnNldCwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAg
ICAKICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAg
ewpAQCAtMTMyLDYgKzE1OCw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBj
b21tb247CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0
b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRyeXBvaW50czsKICAgICBTZWdtZW50ZWRW
ZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0
aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50
U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07CkBAIC0xNjgsNiArMTk1LDggQEAgcHVibGljOgog
ICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25l
ZCBvc3JFbnRyeVJldHJ5OwogICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgTWFsbG9j
UHRyPEpTVmFsdWU+IGNhdGNoT1NSRW50cnlCdWZmZXI7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9K
SVQpCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0
aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvCiAKIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGUoKQogeworICAgIGlmIChtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRy
eSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyID0gTWFsbG9jUHRyPEpT
VmFsdWU+OjptYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICogKCptX2dyYXBoLm1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50
cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJ
VD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQyOSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUo
KQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogeworICAgIGlmIChtX2dy
YXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRj
aE9TUkVudHJ5QnVmZmVyID0gTWFsbG9jUHRyPEpTVmFsdWU+OjptYWxsb2Moc2l6ZW9mKEpTVmFs
dWUpICogKCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0
U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMg
QEAgdm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAK
K3ZvaWQgSklUQ29tcGlsZXI6Om5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiBiYXNp
Y0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKGJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlw
b2ludCBpcyBieSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENh
dGNoRW50cnlwb2ludChiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0
T2YoYmxvY2tIZWFkKSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30KKwogdm9pZCBKSVRD
b21waWxlcjo6bm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGls
ZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBSRUxF
QVNFX0FTU0VSVCghYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisKICAgICAvLyBPU1Ig
ZW50cnkgaXMgbm90IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNv
bnRyb2wgZmxvdyBhbmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZD
RkFIYXNWaXNpdGVkKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlE
YXRhKiBlbnRyeSA9IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0
ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAg
IGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RW
YWx1ZXNBdEhlYWQ7CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBp
biBvdXIgcHJvdG9jb2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2
b2lkIG5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tI
ZWFkLCBMaW5rQnVmZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNC
bG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImLCBWZWN0b3I8
Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQdHI8SklUQ29k
ZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFt
ZXNwYWNlIHsKIAordXNpbmcgTmF0dXJhbExvb3AgPSBTU0FOYXR1cmFsTG9vcDsKKwogc3RydWN0
IExvb3BEYXRhIHsKICAgICBMb29wRGF0YSgpCiAgICAgICAgIDogcHJlSGVhZGVyKG51bGxwdHIp
CkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCi0gICAgICAg
IG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVy
YWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAg
ICAgbV9ncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgbV9ncmFwaC5lbnN1
cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCiAgICAgICAgIGlmICh2ZXJib3NlKSB7
CkBAIC04Myw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9uYXR1
cmFsTG9vcHMtPm51bUxvb3BzKCkpOworICAgICAgICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOwogICAgICAgICAKICAgICAgICAgLy8gRmlndXJl
IG91dCB0aGUgc2V0IG9mIHRoaW5ncyBlYWNoIGxvb3Agd3JpdGVzIHRvLCBub3QgaW5jbHVkaW5n
IGJsb2NrcyB0aGF0CiAgICAgICAgIC8vIGJlbG9uZyB0byBpbm5lciBsb29wcy4gV2UgZml4IHRo
aXMgbGF0ZXIuCkBAIC05OCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJs
b2NrLT5jZmFIYXNWaXNpdGVkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1
cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1
cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BP
ZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLT5pbmRleCgpXTsK
QEAgLTExNiwxNCArMTE4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRm9yIGVhY2ggbG9vcDoK
ICAgICAgICAgLy8gLSBJZGVudGlmeSBpdHMgcHJlLWhlYWRlci4KICAgICAgICAgLy8gLSBNYWtl
IHN1cmUgaXRzIG91dGVyIGxvb3BzIGtub3cgd2hhdCBpdCBjbG9iYmVycy4KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygp
OyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0g
bV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7
IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBt
X2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CiAgICAgICAgICAgICBM
b29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLmluZGV4KCldOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKAotICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7Cisg
ICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKICAgICAgICAgICAgICAg
ICBvdXRlckxvb3A7Ci0gICAgICAgICAgICAgICAgb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxvb3ApKQorICAgICAgICAgICAgICAg
IG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9v
cCgqb3V0ZXJMb29wKSkKICAgICAgICAgICAgICAgICBtX2RhdGFbb3V0ZXJMb29wLT5pbmRleCgp
XS53cml0ZXMuYWRkQWxsKGRhdGEud3JpdGVzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
QmFzaWNCbG9jayogaGVhZGVyID0gbG9vcC5oZWFkZXIoKTsKQEAgLTEzNyw3ICsxMzksNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGhlYWRl
ci0+cHJlZGVjZXNzb3JzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIHByZWRlY2Vzc29yID0gaGVhZGVyLT5wcmVkZWNlc3NvcnNbaV07Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3Nv
cikpCisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0
ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgICAgICAgICAgcHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xOTEsNyArMTkz
LDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBsb29wU3Rh
Y2s7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpIHsKLSAgICAgICAgICAgIGNv
bnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0
TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9n
cmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKICAgICAgICAg
ICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIApA
QCAtMTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoCiAgICAgICAgICAg
ICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGN1cnJlbnQgPSBsb29wOwogICAgICAgICAgICAgICAg
IGN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkpCisgICAgICAgICAgICAgICAgY3VycmVu
dCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVu
dCkpCiAgICAgICAgICAgICAgICAgbG9vcFN0YWNrLmFwcGVuZChjdXJyZW50KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gUmVtZW1iZXI6IHRoZSBsb29wIHN0YWNrIGhhcyB0aGUgaW5u
ZXItbW9zdCBsb29wIGF0IGluZGV4IDAsIHNvIGlmIHdlIHdhbnQKQEAgLTMxOCw3ICszMjAsNyBA
QCBwcml2YXRlOgogICAgICAgICAvLyBiZWNhdXNlIG1vc3QgbG9vcHMgYXJlIHNtYWxsIGFuZCBt
b3N0IGJsb2NrcyBiZWxvbmcgdG8gZmV3IGxvb3BzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJv
ZHlJbmRleCA9IGxvb3AtPnNpemUoKTsgYm9keUluZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWJCbG9jayA9IGxvb3AtPmF0KGJvZHlJbmRleCk7Ci0gICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmhlYWRlck9m
KHN1YkJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9n
cmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2spOwogICAgICAgICAgICAg
aWYgKCFzdWJMb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgQmFz
aWNCbG9jayogc3ViUHJlSGVhZGVyID0gbV9kYXRhW3N1Ykxvb3AtPmluZGV4KCldLnByZUhlYWRl
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQ
cmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxv
Y2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQg
PSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
ICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQo
KV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUt
PmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5k
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5v
ZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNh
bGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29w
UHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQ
cmVIZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0luc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBC
YXNpY0Jsb2NrKiBibG9jaykKIHsKKyAgICAvLyBPT1BTOiBtYXliZSB1c2UgaGFzaHNldCBmb3Ig
dGhpcyBhc3NlcnQuCisgICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1fZW50cnlwb2ludHMuY29u
dGFpbnMoYmxvY2spKTsgLy8gQW4gZW50cnlwb2ludCBzaG91bGQgbm90IGJlIGluIGEgbG9vcCEK
KwogICAgIC8vIEZJWE1FOiBJZiB3ZSBydW4gdGhpcyB1dGlsaXR5IG9uIFNTQSBJUiwgdGhlbiB3
ZSBtYXkgZW5kIHVwIHdpdGggYSBiaXphcnJlIGFycmFuZ2VtZW50IG9mCiAgICAgLy8gVXBzaWxv
bnMgYW5kIFBoaXMsIGxpa2U6CiAgICAgLy8KQEAgLTY5LDcgKzcyLDcgQEAgQmFzaWNCbG9jayog
Y3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIC8vIEluc3RlYWQsIHdlIHVzZSB0aGUg
bWF4IG9mIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgbG9vcCBib2R5J3Mgbm9uLWxvb3AgcHJlZGVj
ZXNzb3JzLgogICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBw
cmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgaWYgKGdyYXBoLm1f
ZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIGlmIChn
cmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZyZXF1ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5j
eSwgcHJlZGVjZXNzb3ItPmV4ZWN1dGlvbkNvdW50KTsKICAgICB9CkBAIC0xMDMsNyArMTA2LDcg
QEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIAogICAgIGZv
ciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IDA7IHByZWRlY2Vzc29ySW5kZXggPCBibG9j
ay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleCsrKSB7CiAgICAgICAgIEJh
c2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3Nvcklu
ZGV4XTsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBw
cmVkZWNlc3NvcikpCisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRl
cyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGJs
b2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleC0tXSA9IGJsb2NrLT5wcmVkZWNlc3Nv
cnMubGFzdCgpOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAg
LTEzMCwxNiArMTMzLDE2IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewot
ICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1
cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7
CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51
bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3Am
IGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7Ci0gICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IDA7CisgICAgICAgIGZvciAodW5z
aWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsg
bG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25zdCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9
IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJv
b2wgbmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
cHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHBy
ZWRlY2Vzc29ySW5kZXgtLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhl
YWRlcigpLCBwcmVkZWNlc3NvcikpCisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9jcHNE
b21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3IpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUHJl
SGVhZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUHJlSGVhZGVyID0gcHJlZGVj
ZXNzb3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaElu
c2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykg
ewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAg
ICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1f
YXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBi
b29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0g
bV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2Rl
LT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2Nr
QWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMg
QEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291
bnRFeGVjdXRpb246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2Ug
RW50cnlTd2l0Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoK
ICAgICBjYXNlIEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0
T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9n
aWNhbE5vdDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29w
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8Q0ZHPiBOYXR1cmFs
TG9vcDsKK3VzaW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+Owor
dXNpbmcgQ1BTTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CiAKLWNsYXNz
IE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0
dXJhbExvb3BzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9v
cHMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxM
b29wcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3Jh
cGgubV9jZmcsIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkK
KyAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihncmFwaC5zZWxlY3RDRkc8Q0ZH
S2luZD4oKSwgZ3JhcGguZW5zdXJlRG9taW5hdG9yc0ZvckNGRzxDRkdLaW5kPigpLCB2YWxpZGF0
aW9uRW5hYmxlZCgpKQogICAgIHsKKyAgICAgICAgLy8gT09QUzogYWRkIHNvbWUgdmFsaWRhdGlv
biB0aGF0IGdyYXBoJ3MgZW50cnlwb2ludHMgYXJlIG5vdCBpbiBhbnkgbG9vcC4KICAgICB9CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIwMyw2ICsyMDMsMTQgQEAgc3RydWN0IFN3aXRjaERhdGEgewogICAgIGJvb2wgZGlkVXNl
SnVtcFRhYmxlOwogfTsKIAorc3RydWN0IEVudHJ5U3dpdGNoRGF0YSB7CisgICAgRW50cnlTd2l0
Y2hEYXRhKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gYmxv
Y2tzOworfTsKKwogc3RydWN0IENhbGxWYXJhcmdzRGF0YSB7CiAgICAgaW50IGZpcnN0VmFyQXJn
T2Zmc2V0OwogfTsKQEAgLTEyNzcsMTcgKzEyODUsMjMgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTd2l0Y2goKQorICAg
IGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gU3dp
dGNoOwogICAgIH0KIAorICAgIGJvb2wgaXNFbnRyeVN3aXRjaCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gb3AoKSA9PSBFbnRyeVN3aXRjaDsKKyAgICB9CisKICAgICBib29sIGlzVGVy
bWluYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgSnVt
cDoKICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgIGNhc2UgU3dpdGNoOgorICAgICAgICBj
YXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTEzNDksNiArMTM2MywxMiBA
QCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChpc1N3aXRjaCgpKTsKICAgICAgICAgcmV0dXJuIG1f
b3BJbmZvLmFzPFN3aXRjaERhdGEqPigpOwogICAgIH0KKworICAgIEVudHJ5U3dpdGNoRGF0YSog
ZW50cnlTd2l0Y2hEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0VudHJ5U3dpdGNoKCkp
OworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8RW50cnlTd2l0Y2hEYXRhKj4oKTsKKyAgICB9
CiAgICAgCiAgICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpCiAgICAgewpAQCAtMTM1OSw2ICsx
Mzc5LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgIGNhc2UgU3dp
dGNoOgogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpICsgMTsK
KyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3aXRj
aERhdGEoKS0+YmxvY2tzLnNpemUoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICB9CkBAIC0xMzcyLDYgKzEzOTQsMTAgQEAgcHVibGljOgogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkp
OwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAg
ICAgICAgIH0KKworICAgICAgICBpZiAoaXNFbnRyeVN3aXRjaCgpKQorICAgICAgICAgICAgcmV0
dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3NbaW5kZXhdOworCiAgICAgICAgIHN3aXRjaCAo
aW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAt
MTUxOCw2ICsxNTQ0LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEF0b21pY3NTdG9yZToKICAg
ICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0b21pY3NYb3I6CisgICAgICAg
IGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MzAsNiArMTk1Nywx
MiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNW
YWxpZCgpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNvbnN0
CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2Fs
KTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KICAgICAK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFNw
ZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQgd2Un
cmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0Y2gg
YnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAgIFwK
ICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAgICAg
bWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM4Niw2ICsz
ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oSnVtcCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEJyYW5jaCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKFN3aXRjaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEVudHJ5
U3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oVGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFz
VmFyQXJncykgXAogICAgIG1hY3JvKERpcmVjdFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUhhc1ZhckFyZ3MpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM2LDYgKzMzNiw2NyBAQCB2b2lk
KiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0Y2g7
CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFPcHRp
b25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5
cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9IGNv
ZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2RlKTsK
KworICAgIERGRzo6Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50ID0gaml0Q29k
ZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAg
IGlmICghY2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwgdW5k
ZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3ZSBkaWRuJ3Qg
Y29tcGlsZSB0aGlzCisgICAgICAgIC8vIGFmdGVyX2NhdGNoIGFzIGFuIGVudHJ5cG9pbnQgc2lu
Y2UgaXQgaGFkIG5ldmVyIGV4ZWN1dGVkLgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKKyAgICAvLyBXZSdyZSBvbmx5IGFsbG93ZWQgdG8gT1NSIGVudGVyIGlmIHdlJ3ZlIHByb3Zl
biB3ZSBoYXZlIGNvbXBhdGlibGUgYXJndW1lbnQgdHlwZXMuCisgICAgZm9yICh1bnNpZ25lZCBh
cmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgY2F0Y2hFbnRyeXBvaW50LT5tX2FyZ3VtZW50Rm9ybWF0
cy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAg
IHN3aXRjaCAoY2F0Y2hFbnRyeXBvaW50LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1bWVudF0pIHsK
KyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlmICghdmFsdWUu
aXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6RGVhZEZsdXNoOgorICAg
ICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZlLiBUaGVyZWZv
cmUsIGl0J3MgYWxsb3dlZCB0byBiZSBhbnkgdHlwZS4KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIERGRzo6Rmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAvLyBBbiBhcmd1bWVu
dCBpcyB0cml2aWFsbHkgYSBKU1ZhbHVlLgorICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+
Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKKyAgICBp
ZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJlZ2lzdGVycygp
W3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZzZXQoKV0pKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQoSW50ZXJwcmV0ZXI6OmdldE9w
Y29kZUlEKGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9m
ZnNldCgpXS51Lm9wY29kZSkgPT0gb3BfYWZ0ZXJfY2F0Y2gpOworICAgIFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXIqPihleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNv
ZGVPZmZzZXQoKSArIDFdLnUucG9pbnRlcik7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAg
IGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsK
KyAgICAgICAgaWYgKCFWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLmlzTG9jYWwo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1
ZmZlci5nZXQoKVtpbmRleF0gPSBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5q
c1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICByZXR1cm4gaml0Q29k
ZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5cG9pbnQtPm1fbWFjaGluZUNv
ZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1c2hGb3JtYXQu
aCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIApA
QCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2Rl
SQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0KIAorc3RydWN0
IENhdGNoRW50cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAg
ICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8vIFdlIHVzZSB0aGlzIHdoZW4g
ZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUgYXJndW1lbnRzCisgICAgLy8g
YXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmluZyBhdCBhIGNhdGNoIGJsb2Nr
LgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Cit9OworCiAvLyBS
ZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQgdGhlIE9TUiBlbnRyeSB0aHVu
ayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlzIHJldHVybnMgbnVsbCwgaXQg
bWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMgcmV0dXJuZWQsIHdlIGNhbid0
IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUgUEMgdG8ganVtcCB0by4KK3Zv
aWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhl
Y1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
Ynl0ZWNvZGVJbmRleCAhPSBVSU5UX01BWCk7CiAgICAgICAgIAogICAgICAgICAvLyBOZWVkZWQg
YnkgY3JlYXRlUHJlSGVhZGVyKCkuCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAg
ICAgIENvZGVCbG9jayogYmFzZWxpbmUgPSBtX2dyYXBoLm1fcHJvZmlsZWRCbG9jazsKICAgICAg
ICAgCkBAIC0xMTIsMTYgKzExMiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tz
IHRvIGhlcmUuCiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAg
ICAgCisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4gYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAg
Zm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJz
KCk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZh
cmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5v
ZGUpIHsKICAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEg
U2V0QXJndW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xk
Tm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgIG9s
ZE5vZGUgPSBhcmd1bWVudHNbYXJndW1lbnRdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFw
aCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJbmZv
KG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1f
YXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBhcmd1bWVudHNbYXJndW1l
bnRdID0gbm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9j
YWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKQEAgLTEzOSw2ICsx
NDAsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dy
YXBoLCBpbnNlcnRpb25TZXQsIHRhcmdldCkpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlv
blNldC5leGVjdXRlKCk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0g
bmV3Um9vdDsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigp
OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBh
cmd1bWVudHMpOworCiAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAg
ICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw3ICs3MjcsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgbV9ncmFwaC5jb21wdXRlUmVmQ291bnRzKCk7CiAgICAgICAgIG1fZ3JhcGguaW5pdGlh
bGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICBwZXJmb3JtTGl2
ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAgcGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFu
YWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBtX2NvbWJpbmVkTGl2ZW5lc3MgPSBDb21iaW5lZExp
dmVuZXNzKG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsOSArMzY2LDggQEAgUGxhbjo6Q29tcGlsYXRpb25Q
YXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIC8vIElmIHdlJ3JlIGRvaW5nIHZhbGlkYXRpb24s
IHRoZW4gcnVuIHNvbWUgYW5hbHlzZXMsIHRvIGdpdmUgdGhlbSBhbiBvcHBvcnR1bml0eQogICAg
IC8vIHRvIHNlbGYtdmFsaWRhdGUuIE5vdyBpcyBhcyBnb29kIGEgdGltZSBhcyBhbnkgdG8gZG8g
dGhpcy4KICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBkZmcuZW5zdXJl
RG9taW5hdG9ycygpOwotICAgICAgICBkZmcuZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAg
IGRmZy5lbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNEb21p
bmF0b3JzKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICB9CiAK
ICAgICBzd2l0Y2ggKG1vZGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVy
aW5nLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5s
aW5lcy5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrV29ya2xpc3QuaCIKLSNpbmNsdWRlICJERkdHcmFw
aC5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLVByZVBvc3ROdW1iZXJp
bmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBoKQotewotICAgIG1fbWFwID0gQmxvY2tN
YXA8TnVtYmVyaW5nPihncmFwaCk7Ci0gICAgCi0gICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3
b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGdyYXBoLmJsb2NrKDApKTsKLSAgICB1bnNpZ25l
ZCBuZXh0UHJlTnVtYmVyID0gMDsKLSAgICB1bnNpZ25lZCBuZXh0UG9zdE51bWJlciA9IDA7Ci0g
ICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewotICAgICAg
ICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6Ci0g
ICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcHJlTnVtYmVyID0gbmV4dFByZU51bWJlcisr
OwotICAgICAgICAgICAgd29ya2xpc3QucHVzaFBvc3QoaXRlbS5ub2RlKTsKLSAgICAgICAgICAg
IGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogaXRlbS5ub2RlLT5zdWNjZXNzb3JzKCkpCi0g
ICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzdWNjZXNzb3IpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UG9zdDoKLSAgICAgICAgICAgIG1fbWFwW2l0
ZW0ubm9kZV0ubV9wb3N0TnVtYmVyID0gbmV4dFBvc3ROdW1iZXIrKzsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1QcmVQb3N0TnVtYmVyaW5nOjp+UHJlUG9zdE51
bWJlcmluZygpIHsgfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBX
VEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBFZGdlS2luZCBraW5kKQotewotICAgIHN3aXRjaCAoa2luZCkgewot
ICAgIGNhc2UgRm9yd2FyZEVkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiRm9yd2FyZEVkZ2UiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3Jvc3NFZGdlOgotICAgICAgICBvdXQucHJpbnQo
IkNyb3NzRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCYWNrRWRnZToKLSAgICAg
ICAgb3V0LnByaW50KCJCYWNrRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCShyZXZpc2lvbiAyMjA0NzMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0j
aW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrTWFwLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1lbnVtIEVkZ2VLaW5kIHsKLSAgICBG
b3J3YXJkRWRnZSwKLSAgICBDcm9zc0VkZ2UsCi0gICAgQmFja0VkZ2UKLX07Ci0KLWNsYXNzIFBy
ZVBvc3ROdW1iZXJpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZVBvc3ROdW1iZXJp
bmcpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFByZVBvc3RO
dW1iZXJpbmcoR3JhcGgmKTsKLSAgICB+UHJlUG9zdE51bWJlcmluZygpOwotCi0gICAgdW5zaWdu
ZWQgcHJlTnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9j
a10ubV9wcmVOdW1iZXI7IH0KLSAgICB1bnNpZ25lZCBwb3N0TnVtYmVyKEJhc2ljQmxvY2sqIGJs
b2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wb3N0TnVtYmVyOyB9Ci0gICAgCi0g
ICAgLy8gSXMgZnJvbSBhIHN0cmljdCBhbmNlc3RvciBvZiB0bz8KLSAgICBib29sIGlzU3RyaWN0
QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBwcmVOdW1iZXIoZnJvbSkgPCBwcmVOdW1iZXIodG8pCi0gICAgICAg
ICAgICAmJiBwb3N0TnVtYmVyKGZyb20pID4gcG9zdE51bWJlcih0byk7Ci0gICAgfQotICAgIAot
ICAgIGJvb2wgaXNBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyb20gPT0gdG8gfHwgaXNTdHJpY3RBbmNlc3Rv
ck9mKGZyb20sIHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1N0cmljdERlc2NlbmRhbnRP
ZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBpc1N0cmljdEFuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICBi
b29sIGlzRGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQot
ICAgIAotICAgIC8vIFRoaXMgd2lsbCBnaXZlIGEgYm9ndXMgYW5zd2VyIGlmIHRoZXJlIGlzIGFj
dHVhbGx5IG5vIHN1Y2ggZWRnZS4gSWYgeW91IHdhbnQgdG8gZGV0ZXJtaW5lCi0gICAgLy8gaWYg
dGhlcmUgaXMgYW55IHN1Y2ggZWRnZSwgeW91IGhhdmUgdG8gZG8gaXQgeW91cnNlbGYuCi0gICAg
RWRnZUtpbmQgZWRnZUtpbmQoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpY3REZXNjZW5kYW50T2YodG8sIGZyb20pKQotICAg
ICAgICAgICAgcmV0dXJuIEZvcndhcmRFZGdlOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzQW5j
ZXN0b3JPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gQmFja0VkZ2U7Ci0gICAgICAg
IAotICAgICAgICByZXR1cm4gQ3Jvc3NFZGdlOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAg
c3RydWN0IE51bWJlcmluZyB7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJlTnVtYmVyOwotICAgICAg
ICB1bnNpZ25lZCBtX3Bvc3ROdW1iZXI7Ci0gICAgfTsKLQotICAgIEJsb2NrTWFwPE51bWJlcmlu
Zz4gbV9tYXA7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBX
VEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkRGRzo6RWRnZUtp
bmQpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MSwxMiArNTEsMTYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2soKS0+bV9sb2NrKTsKICAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gV2Ugb25seSBkbyB0aGlzIGZvciB0aGUgYXJndW1lbnRz
IGF0IHRoZSBmaXJzdCBibG9jay4gVGhlIGFyZ3VtZW50cyBmcm9tCisgICAgICAgICAgICAvLyBv
dGhlciBlbnRyeXBvaW50cyBoYXZlIGFscmVhZHkgYmVlbiBwb3B1bGF0ZWQgd2l0aCB0aGVpciBw
cmVkaWN0aW9ucy4KKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisKICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7ICsrYXJnKSB7CiAgICAgICAgICAgICAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gcHJvZmlsZWRCbG9jaygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1
bWVudChhcmcpOwogICAgICAgICAgICAgICAgIGlmICghcHJvZmlsZSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1f
YXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorCisgICAgICAg
ICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAog
ICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIwLDYgKzcy
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAg
ICAgY2FzZSBUb051bWJlcjoKICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOiB7CiAgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmdldEhlYXBQcmVkaWN0aW9uKCkp
OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTExLDYgKzExMTIsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgICAgIGNhc2UgREZHOjpKdW1w
OgogICAgICAgICBjYXNlIEJyYW5jaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAg
ICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAgICAgICAgIGNhc2Ug
UHJvZmlsZUNvbnRyb2xGbG93OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3Jh
cGguZHVtcCgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3Jz
KCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAg
ICAgICAgU1NBQ2FsY3VsYXRvciBzc2FDYWxjdWxhdG9yKG1fZ3JhcGgpOwogICAgICAgICBJbnNl
cnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NSwxMiArOTUsMTIgQEAgU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9y
OjpuZXdEZQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5vbkxvY2FsUmVh
Y2hpbmdEZWYoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICBy
ZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2sp
LCB2YXJpYWJsZSk7CisgICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9zc2FE
b21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOwogfQogCiBTU0FDYWxjdWxhdG9yOjpE
ZWYqIFNTQUNhbGN1bGF0b3I6OnJlYWNoaW5nRGVmQXRUYWlsKEJhc2ljQmxvY2sqIGJsb2NrLCBW
YXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgeworICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBt
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKICAgICAgICAgaWYgKERlZiog
ZGVmID0gbV9kYXRhW2Jsb2NrXS5tX2RlZnMuZ2V0KHZhcmlhYmxlKSkKICAgICAgICAgICAgIHJl
dHVybiBkZWY7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FD
YWxjdWxhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDYWxjdWxhdG9yLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwx
MCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUGhpSW5zZXJ0aW9uRnVuY3Rvcj4K
ICAgICB2b2lkIGNvbXB1dGVQaGlzKGNvbnN0IFBoaUluc2VydGlvbkZ1bmN0b3ImIGZ1bmN0b3Ip
CiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9k
b21pbmF0b3JzKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBo
Lm1fc3NhRG9taW5hdG9ycyk7CiAgICAgICAgIAogICAgICAgICBmb3IgKFZhcmlhYmxlJiB2YXJp
YWJsZSA6IG1fdmFyaWFibGVzKSB7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy0+
Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCisgICAgICAg
ICAgICBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRl
ZERvbWluYW5jZUZyb250aWVyT2YoCiAgICAgICAgICAgICAgICAgdmFyaWFibGUubV9ibG9ja3NX
aXRoRGVmcywKICAgICAgICAgICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBib29s
IHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IGZ1bmN0b3IoJnZhcmlhYmxl
LCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDggQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1f
Zm9ybSA9PSBUaHJlYWRlZENQUyk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFyUmVw
bGFjZW1lbnRzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAg
ICBtX2dyYXBoLm1fc3NhQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KG1fZ3JhcGgpOwor
ICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAg
IGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRy
YW5zZm9ybWF0aW9uOlxuIik7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0
ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAg
ICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVz
ZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBs
YXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRl
bGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAg
ICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayog
YmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAg
LTM4MSwxOCArMzgyLDIyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhl
YWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
c2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXpl
KCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUo
KTsgaS0tOykgeworCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9p
bnRzIGluIERGRyBTU0E6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVu
dHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChh
cmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChu
b2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3Jt
YXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNb
aV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsg
Ly8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVm
aXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAv
LyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZp
dCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5tX2Zvcm0gPSBTU0E7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBKdW1w
OgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVj
dFRhaWxDYWxsOgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNo
YWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGll
clVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAi
VHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyUHJpbnRlci5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjA3OSw2ICs2MDgxLDIxIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgbV9qaXQu
cHJpbnQoIkV4dHJhY3RDYXRjaExvY2FsIik7CisgICAgICAgIC8vbV9qaXQucHJvYmUoW10gKFBy
b2JlQ29udGV4dCopIHsKKyAgICAgICAgLy8gICAgZGF0YUxvZ0xuKCJFeHRyYWN0Q2F0Y2hMb2Nh
bCEiKTsKKyAgICAgICAgLy99KTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmbV9qaXQuaml0
Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW25vZGUtPmNhdGNoT1NSRW50cnlJbmRl
eCgpXTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ2NChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3ModGVtcEdQUiksIHRlbXBHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHRlbXBHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
RlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBBdFJldHVybjoKQEAgLTYwODcsNiArNjEwNCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9K
SVQpCiAKKworICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAg
ICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpAQCAtNjExNSw3ICs2MTM0LDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbUNy
ZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgogICAgIGNhc2UgUGhhbnRvbU5ld0Fy
cmF5V2l0aFNwcmVhZDoKLSAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJV
bmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzYsNiArMTY3NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVD
YWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lz
dGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29k
ZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJl
YW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2pp
dC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTc3MCw4ICsxNzc3LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJy
ZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVP
cmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1
ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0
ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3Vt
ZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYg
KCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3Qg
ZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTE4NTUsMTIgKzE4NjMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50
cmllcygpCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhi
bG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRy
YW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUu
Ci0gICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2Nr
SW5kZXhdKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXNDYXRj
aEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9T
UiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8vIGhl
cmUgaWYgbmVlZCBiZS4KKyAgICAgICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQu
YmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTg3
MSwxMCArMTg3OCwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5r
CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0lu
ZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJn
ZXQgJiYgIWJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JF
bnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50
cnlwb2ludCkgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50
c1ZlY3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBh
cmd1bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9k
ZSogc2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3Jt
YXQgPSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwg
Zmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xl
YW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hl
Y2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQu
bm90aWNlQ2F0Y2hFbnRyeXBvaW50KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5k
ZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzT1NSVGFyZ2V0KTsKKyAgICAgICAg
ICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5
SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICB9CiAgICAgfQorCisgICAgbV9qaXQuaml0
Q29kZSgpLT5maW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKTsKKwogICAgIEFTU0VSVChvc3JF
bnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIAogICAgIGlmICh2ZXJi
b3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQog
ICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9n
cmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEVzdGlt
YXRlIGJhc2ljIGJsb2NrIGV4ZWN1dGlvbiBjb3VudHMgYmFzZWQgb24gbG9vcCBkZXB0aC4KICAg
ICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBi
bG9ja0luZGV4LS07KSB7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGJsb2Nr
LT5leGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcERl
cHRoKGJsb2NrKSk7CisgICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAs
IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBicmFuY2ggd2VpZ2h0cyBiYXNlZCBvbiBl
eGVjdXRpb24gY291bnRzLiBUaGlzIGlzbid0IHF1aXRlIGNvcnJlY3QuIEl0J2xsCkBAIC04MCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxs
VGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC05OCw2ICs5OCw4IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9y
bVN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvbihHcmFwaCYgZ3JhcGgpCiB7CisgICAgLy8g
T09QUy4KKyAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0
dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9v
cDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBw
dWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04
MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29w
cyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3Jh
cGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVp
bGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4
Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BU
b0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhp
bnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9v
cEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdl
IHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCks
IEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBo
LCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0g
YmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJl
cnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9k
ZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhp
dCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91
c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9L
KQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgbV9ub2Rl
ID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCks
IENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBp
LS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsK
KyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgICAgICBtX291
dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1
Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVf
T1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAg
ICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3Ro
aXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0
NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29u
c3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNo
KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMs
IEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJl
Z2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNf
SklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmlu
Z0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0K
IAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVU
b3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklU
OjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFs
dWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKElu
c3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMs
NiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
OwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRo
aXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9i
eXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFpl
cm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAg
anVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIp
OworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCwgcmVnVDApOworICAgICAg
ICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAg
ICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5
T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0
KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRD
YXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29k
ZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5q
aXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShl
eGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYK
IAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAg
dHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAo
SklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBp
bnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VR
WikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BF
UkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7
Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNT
dGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFU
SU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsK
IHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3Mp
KEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElP
TiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CkBAIC0zOTYsNiAr
Mzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
K2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0
ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBF
bmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJ
ZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9u
cywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0g
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3By
b2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJv
ZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsK
K30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3Zl
cmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNl
cHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90
YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gp
OwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZs
b3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxF
KEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0
X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBf
bGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkK
IAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVy
X2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkK
ICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318019</attachid>
            <date>2017-08-13 19:22:29 -0700</date>
            <delta_ts>2017-08-13 21:44:35 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>130506</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDkgKzI1MTQsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDEsNiArMjUzMiwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVi
bGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJk
c0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dh
cmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFw
aC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FD
Rkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihi
eXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZh
bHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVk
KGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29u
c3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFz
aWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgp
OwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVt
cDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0g
ICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAg
ICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVu
ZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkg
b25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxs
IG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAg
ICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNh
bCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBp
bmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5
cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNp
dDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMwLDcgKzExMzAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBQb3RlbnRp
YWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2lu
LCBhbmQKICAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNh
bWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlu
a2luZ1RhcmdldHM7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJh
c2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3bywgdGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAg
Ly8gdGhlIGhlYWQgb2YgdGhlIGNhbGxzaXRlIGJsb2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29y
cyBsaW5rZWQgdG8gdGhlCiAgICAgICAgIC8vIG1fdW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhl
IG90aGVyIHdheSBhcm91bmQ6IHRoZXJlJ3Mgbm8gd2F5IGZvcgpAQCAtNDA3NCw3ICs0MDc0LDEx
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAvLyB1cyB0
byB0cmFjayBpZiBhIHVzZSBvZiBhbiBhcmd1bWVudCBtYXkgdXNlIHRoZSBhY3R1YWwgYXJndW1l
bnQgcGFzc2VkLCBhcwogICAgIC8vIG9wcG9zZWQgdG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhw
bGljaXRseS4KICAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAh
aW5saW5lQ2FsbEZyYW1lKCkpIHsKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50cy5yZXNpemUo
bV9udW1Bcmd1bWVudHMpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkp
OworICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAg
IFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3Vt
ZW50cyk7CisKICAgICAgICAgLy8gV2Ugd2lsbCBlbWl0IFNldEFyZ3VtZW50IG5vZGVzLiBUaGV5
IGRvbid0IGV4aXQsIGJ1dCB3ZSdyZSBhdCB0aGUgdG9wIG9mIGFuIG9wX2VudGVyIHNvCiAgICAg
ICAgIC8vIGV4aXRPSyA9IHRydWUuCiAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTQwODcs
NyArNDA5MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8o
dmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0g
c2V0QXJndW1lbnQ7CisgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9
IHNldEFyZ3VtZW50OwogICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFp
bC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9
CiAgICAgfQpAQCAtNTE1MCw2ICs1MTU0LDExOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgICAgICAgICBtX2dy
YXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMgPSB0cnVlOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfY2F0Y2gpOworCisgICAgICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0
IGRvIGFueXRoaW5nIGhlcmUgZm9yIGlubGluZWQgZnJhbWVzLiBXZSB3b24ndCB0cmVhdCB0aGlz
IGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJf
Y2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5t
X3BsYW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBp
biB0aGUgRlRMLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRl
cl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKworICAgICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworCisgICAgICAgICAgICBW
ZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGFyZ3VtZW50UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMp
OworICAgICAgICAgICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBsb2NhbFByZWRpY3Rpb25zOwor
ICAgICAgICAgICAgSGFzaFNldDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IHNlZW5Bcmd1bWVudHM7
CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAg
ICAgICAgICAgIGJvb2wgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgeworICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxl
Lm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsK
KyAgICAgICAgICAgICAgICAgICAgYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9u
ID09IFNwZWNOb25lOworICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0Fy
Z3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VlbkFyZ3VtZW50cy5hZGQob3BlcmFuZC50b0FyZ3VtZW50KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXJndW1lbnRQcmVkaWN0aW9uc1tvcGVyYW5kLnRvQXJndW1lbnQoKV0g
PSBwcmVkaWN0aW9uOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFy
Z3VtZW50czsgKythcmd1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoYWxsUHJlZGljdGlvbnNBcmVFbXB0eSAmJiAoYXJndW1l
bnRQcmVkaWN0aW9ucy5zaXplKCkgfHwgbG9jYWxQcmVkaWN0aW9ucy5zaXplKCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGNhc2UsIHdlIGhhdmVuJ3QgZXhlY3V0
ZWQgdGhpcyBjYXRjaCB5ZXQuIExldCdzIG5vdCBjb21waWxlCisgICAgICAgICAgICAgICAgICAg
IC8vIGl0IGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY29tcGlsaW5nIHRoaXMgYXMgYW4g
ZW50cnlwb2ludC4KKworICAgICAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gc2Vh
cmNoaW5nIGZvciB3aGVyZSB0byBPU1IgZW50ZXIsIHdlIGRvIGl0IHJlbGF0aXZlCisgICAgICAg
ICAgICAvLyB0byBvcF9hZnRlcl9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5i
eXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CisKKyAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrLT5pc0NhdGNoRW50cnlwb2ludCA9IHRydWU7CisgICAgICAgICAgICBtX2dyYXBoLm1fZW50
cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICAgICAgVmVjdG9yPHN0
ZDo6cGFpcjxWaXJ0dWFsUmVnaXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7CisgICAgICAgICAg
ICBsb2NhbHNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8g
Tm90ZTogVGhpcyB3aWxsIHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdl
IHNlZSBiZWxvdyBiZWNhdXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAg
ICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhl
cmUgc2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAg
ICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgYnVmZmVy
LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0FyZ3VtZW50KCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5pc0xvY2FsKCkpOwor
ICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gYWRkVG9HcmFwaChFeHRyYWN0Q2F0Y2hMb2Nh
bCwgT3BJbmZvKG51bWJlck9mTG9jYWxzKSwgT3BJbmZvKGxvY2FsUHJlZGljdGlvbnNbbnVtYmVy
T2ZMb2NhbHNdKSk7CisgICAgICAgICAgICAgICAgKytudW1iZXJPZkxvY2FsczsKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFuZCksIHZh
bHVlKTsKKyAgICAgICAgICAgICAgICBsb2NhbHNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3RkOjpt
YWtlX3BhaXIob3BlcmFuZCwgdmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBpZiAoIW1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAg
IG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gc3RkOjptYXgobnVtYmVyT2ZM
b2NhbHMsICptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSk7CisKKyAgICAgICAg
ICAgIC8vIFdlIGNhbiBub3cgZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIgT1NSIGV4aXQg
c3RhdGUgdG8gcmVjb3ZlciBhbnkgbGl2ZSBsb2NhbHMuCisgICAgICAgICAgICBtX2V4aXRPSyA9
IHRydWU7IAorICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgLy8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBz
YWZlIHRvIGV4aXQuIFRoaXMgaGFwcGVucyBoZXJlIGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUg
Y2hlY2tzIHVwCisgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyBwb2ludCBpbiB0aGUgcHJvZ3Jh
bSwgc28gaXQgbXVzdCBiZSBzYWZlIHRvIGV4aXQuCisgICAgICAgICAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9j
aywgVmVjdG9yPE5vZGUqLCA4PigpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYg
ZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAg
ICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3Vt
ZW50UHJlZGljdGlvbnMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPnByZWRpY3QoYXJndW1lbnRQcmVkaWN0aW9uc1thcmd1bWVudF0pOworCisgICAg
ICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWls
ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAgICAgICAgICAg
ICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKKworICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2
YXJpYWJsZSkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVz
QXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CisgICAg
ICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1l
bnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhaXIgOiBsb2NhbHNUb1NldCkKKyAgICAgICAgICAgICAgICBzZXRMb2Nh
bChjdXJyZW50Q29kZU9yaWdpbigpLCBwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CisKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVu
dEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CkBAIC02MTM4LDggKzYyNTQs
MTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtl
ZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAg
ICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0
LgotICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAg
ICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RG
TW92ZShibG9jaykpOwogICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7
CiAgICAgICAgICAgICAgICAgfQpAQCAtNjE5Niw4ICs2MzE0LDggQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2UoKQogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxp
bmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBs
aW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tF
bnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFj
aGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9
IG1fZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAobV92
ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICBGb3VuZCBtdXN0LWhhbmRs
ZSBibG9jazogIiwgKmJsb2NrLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsMjk1IEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQ0ZHIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDRkcpOworY2xhc3MgQ1BTQ0ZHIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShDUFNDRkcpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHVzaW5nIE5vZGUgPSBCYXNpY0Jsb2NrKjsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgIGNsYXNzIE1hcCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgLy8gT09QUzogaXMgdGhpcyBuZWVkZWQ/CisgICAgICAgIC8v
TWFwKCkKKyAgICAgICAgLy97CisgICAgICAgIC8vfQorCisgICAgICAgIAorICAgICAgICBNYXAo
R3JhcGgmIGdyYXBoKQorICAgICAgICAgICAgOiBtX2NmZygqZ3JhcGgubV9jcHNDRkcuZ2V0KCkp
CisgICAgICAgICAgICAsIG1fcm9vdChtX2NmZy5tX3Jvb3QucHRyKCkpCisgICAgICAgICAgICAs
IG1fbWFwKGdyYXBoKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBNYXAoTWFwJiYg
b3RoZXIpCisgICAgICAgICAgICA6IG1fY2ZnKG90aGVyLm1fY2ZnKQorICAgICAgICAgICAgLCBt
X3Jvb3Qob3RoZXIubV9yb290KQorICAgICAgICAgICAgLCBtX3Jvb3RWYWx1ZShXVEZNb3ZlKG90
aGVyLm1fcm9vdFZhbHVlKSkKKyAgICAgICAgICAgICwgbV9tYXAoV1RGTW92ZShvdGhlci5tX21h
cCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG90aGVyLm1fcm9vdCA9IG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIEJsb2NrSW5kZXggc2l6ZSgpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBtX21hcC5zaXplKCkgKyAxOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBUJiBhdEluZGV4KEJsb2NrSW5kZXggYmxvY2tJbmRleCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGJsb2NrSW5kZXggPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbV9yb290VmFsdWU7CisgICAgICAgICAgICByZXR1cm4gbV9tYXAuYXRJbmRleChibG9ja0lu
ZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29uc3QgVCYgYXRJbmRleChCbG9j
a0luZGV4IGJsb2NrSW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBh
dEluZGV4KGJsb2NrSW5kZXgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBUJiBhdChC
bG9ja0luZGV4IGJsb2NrSW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhdElu
ZGV4KGJsb2NrSW5kZXgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjb25zdCBUJiBh
dChCbG9ja0luZGV4IGJsb2NrSW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhdEluZGV4KGJsb2NrSW5kZXgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBU
JiBhdChCYXNpY0Jsb2NrKiBibG9jaykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGJsb2Nr
ID09IG1fcm9vdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9yb290VmFsdWU7CisgICAgICAg
ICAgICByZXR1cm4gbV9tYXAuYXQoYmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBjb25zdCBUJiBhdChCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGF0KGJsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAgIFQmIG9wZXJhdG9y
W10oQmxvY2tJbmRleCBibG9ja0luZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
YXRJbmRleChibG9ja0luZGV4KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29uc3Qg
VCYgb3BlcmF0b3JbXShCbG9ja0luZGV4IGJsb2NrSW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBhdEluZGV4KGJsb2NrSW5kZXgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBUJiBvcGVyYXRvcltdKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gYXQoYmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBjb25zdCBUJiBvcGVyYXRvcltdKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYXQoYmxvY2spOworICAgICAgICB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICBDUFNDRkcmIG1fY2ZnOworICAgICAgICBCYXNpY0Jsb2NrKiBtX3Jvb3Q7Cisg
ICAgICAgIFQgbV9yb290VmFsdWU7CisgICAgICAgIEJsb2NrTWFwPFQ+IG1fbWFwOworICAgIH07
CisKKyAgICAvLyBPT1BTLiBNYWtlIHRoaXMgaW5kZXggYmFzZWQhIEl0J3MgdHJpY2t5IGIvYyB3
ZSBkb24ndCBzZWUgdGhlIGZha2Ugcm9vdCBhdCBjb25zdHJ1Y3Rpb24uCisgICAgY2xhc3MgU2V0
IHsKKyAgICAgICAgU2V0KCkgPSBkZWZhdWx0OworICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0
aGUgYmxvY2sgd2FzIGFkZGVkLCBmYWxzZSBpZiBpdCB3YXMgYWxyZWFkeSBwcmVzZW50LgorICAg
ICAgICBib29sIGFkZChCYXNpY0Jsb2NrKiBibG9jaykKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fc2V0LmFkZChibG9jaykuaXNOZXdFbnRyeTsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgY29udGFpbnMoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgcmV0dXJuIG1fc2V0LmNvbnRhaW5zKGJsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAg
IHVzaW5nIGl0ZXJhdG9yID0gSGFzaFNldDxCYXNpY0Jsb2NrKj46Oml0ZXJhdG9yOworCisgICAg
ICAgIGNsYXNzIEl0ZXJhYmxlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgSXRlcmFi
bGUoR3JhcGgmLCBjb25zdCBTZXQmIHNldCkKKyAgICAgICAgICAgICAgICA6IG1fc2V0KHNldCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aXRlcmF0b3IgYmVnaW4oKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBtX3NldC5tX3NldC5iZWdpbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBtX3NldC5tX3NldC5lbmQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIAorICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgY29uc3QgU2V0JiBtX3NldDsKKyAg
ICAgICAgfTsKKyAgICBwdWJsaWM6CisgICAgcHJpdmF0ZToKKyAgICAgICAgSGFzaFNldDxCYXNp
Y0Jsb2NrKj4gbV9zZXQ7CisgICAgfTsKKworICAgIC8vY2xhc3MgU2V0IHsKKyAgICAvL3B1Ymxp
YzoKKyAgICAvLyAgICAvLyBPT1BTLgorICAgIC8vICAgIC8vU2V0KCkgeyB9CisgICAgLy8gICAg
CisgICAgLy8gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGJsb2NrIHdhcyBhZGRlZCwgZmFsc2Ug
aWYgaXQgd2FzIGFscmVhZHkgcHJlc2VudC4KKyAgICAvLyAgICBib29sIGFkZChCYXNpY0Jsb2Nr
KiBibG9jaykKKyAgICAvLyAgICB7CisgICAgLy8gICAgICAgIHJldHVybiAhbV9zZXQuc2V0KGJs
b2NrLT5pbmRleCk7CisgICAgLy8gICAgfQorICAgIC8vICAgIAorICAgIC8vICAgIGJvb2wgY29u
dGFpbnMoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0CisgICAgLy8gICAgeworICAgIC8vICAgICAg
ICBpZiAoIWJsb2NrKQorICAgIC8vICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vICAg
ICAgICByZXR1cm4gbV9zZXQuZ2V0KGJsb2NrLT5pbmRleCk7CisgICAgLy8gICAgfQorICAgIC8v
ICAgIAorICAgIC8vICAgIGNsYXNzIGl0ZXJhdG9yIHsKKyAgICAvLyAgICBwdWJsaWM6CisgICAg
Ly8gICAgICAgIGl0ZXJhdG9yKCkKKyAgICAvLyAgICAgICAgICAgIDogbV9ncmFwaChudWxscHRy
KQorICAgIC8vICAgICAgICAgICAgLCBtX3NldChudWxscHRyKQorICAgIC8vICAgICAgICAgICAg
LCBtX2luZGV4KDApCisgICAgLy8gICAgICAgIHsKKyAgICAvLyAgICAgICAgfQorICAgIC8vICAg
ICAgICAKKyAgICAvLyAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgIC8vICAgICAg
ICB7CisgICAgLy8gICAgICAgICAgICBtX2luZGV4ID0gbV9zZXQtPm1fc2V0LmZpbmRCaXQobV9p
bmRleCArIDEsIHRydWUpOworICAgIC8vICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgIC8v
ICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAgIC8vICAgICAgICBCYXNpY0Jsb2NrKiBvcGVy
YXRvciooKSBjb25zdDsKKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgLy8gICAgICAgIHsKKyAgICAv
LyAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CisgICAgLy8gICAg
ICAgIH0KKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgLy8gICAgICAgIHsKKyAgICAvLyAgICAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICAvLyAgICAgICAgfQorICAgIC8vICAg
ICAgICAKKyAgICAvLyAgICBwcml2YXRlOgorICAgIC8vICAgICAgICBmcmllbmQgY2xhc3MgU2V0
OworICAgIC8vICAgICAgICAKKyAgICAvLyAgICAgICAgR3JhcGgqIG1fZ3JhcGg7CisgICAgLy8g
ICAgICAgIGNvbnN0IFNldCogbV9zZXQ7CisgICAgLy8gICAgICAgIHNpemVfdCBtX2luZGV4Owor
ICAgIC8vICAgIH07CisgICAgLy8gICAgCisgICAgLy8gICAgY2xhc3MgSXRlcmFibGUgeworICAg
IC8vICAgIHB1YmxpYzoKKyAgICAvLyAgICAgICAgSXRlcmFibGUoR3JhcGgmIGdyYXBoLCBjb25z
dCBTZXQmIHNldCkKKyAgICAvLyAgICAgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICAvLyAg
ICAgICAgICAgICwgbV9zZXQoc2V0KQorICAgIC8vICAgICAgICB7CisgICAgLy8gICAgICAgIH0K
KyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKKyAg
ICAvLyAgICAgICAgeworICAgIC8vICAgICAgICAgICAgaXRlcmF0b3IgcmVzdWx0OworICAgIC8v
ICAgICAgICAgICAgcmVzdWx0Lm1fZ3JhcGggPSAmbV9ncmFwaDsKKyAgICAvLyAgICAgICAgICAg
IHJlc3VsdC5tX3NldCA9ICZtX3NldDsKKyAgICAvLyAgICAgICAgICAgIHJlc3VsdC5tX2luZGV4
ID0gbV9zZXQubV9zZXQuZmluZEJpdCgwLCB0cnVlKTsKKyAgICAvLyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgLy8gICAgICAgIH0KKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAg
IGl0ZXJhdG9yIGVuZCgpIGNvbnN0CisgICAgLy8gICAgICAgIHsKKyAgICAvLyAgICAgICAgICAg
IGl0ZXJhdG9yIHJlc3VsdDsKKyAgICAvLyAgICAgICAgICAgIHJlc3VsdC5tX2dyYXBoID0gJm1f
Z3JhcGg7CisgICAgLy8gICAgICAgICAgICByZXN1bHQubV9zZXQgPSAmbV9zZXQ7CisgICAgLy8g
ICAgICAgICAgICByZXN1bHQubV9pbmRleCA9IG1fc2V0Lm1fc2V0LnNpemUoKTsKKyAgICAvLyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gICAgICAgIH0KKyAgICAvLyAgICAgICAg
CisgICAgLy8gICAgcHJpdmF0ZToKKyAgICAvLyAgICAgICAgR3JhcGgmIG1fZ3JhcGg7CisgICAg
Ly8gICAgICAgIGNvbnN0IFNldCYgbV9zZXQ7CisgICAgLy8gICAgfTsKKyAgICAvLyAgICAKKyAg
ICAvLyAgICBJdGVyYWJsZSBpdGVyYWJsZShHcmFwaCYgZ3JhcGgpIGNvbnN0CisgICAgLy8gICAg
eworICAgIC8vICAgICAgICByZXR1cm4gSXRlcmFibGUoZ3JhcGgsICp0aGlzKTsKKyAgICAvLyAg
ICB9CisgICAgLy8gICAgCisgICAgLy8gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CisgICAgLy8gICAgCisgICAgLy9wcml2YXRlOgorICAgIC8vICAgIEJpdFZlY3RvciBtX3NldDsK
KyAgICAvL307CisKKyAgICB1c2luZyBMaXN0ID0gQmxvY2tMaXN0OworCisgICAgQ1BTQ0ZHKEdy
YXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgICAgICAsIG1fcm9vdChh
ZG9wdFJlZigqbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIG1fZ3JhcGgubV9lbnRyeXBvaW50c1sw
XS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCksIG1fZ3JhcGgubV9lbnRyeXBv
aW50c1swXS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCksIDEuMCkpKQorICAgIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMgfHwg
bV9ncmFwaC5tX2Zvcm0gPT0gTG9hZFN0b3JlKTsKKworICAgICAgICAvLyBPT1BTOiBzdG9wIGxl
YWtpbmcgdGhpcworICAgICAgICBFbnRyeVN3aXRjaERhdGEqIGRhdGEgPSBuZXcgRW50cnlTd2l0
Y2hEYXRhOworICAgICAgICBkYXRhLT5ibG9ja3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2dy
YXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRy
eXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAgICAgICAgICAgZGF0YS0+YmxvY2tz
LnVuY2hlY2tlZEFwcGVuZChlbnRyeXBvaW50KTsKKyAgICAgICAgLy8gT09QUzogc2hvdWxkIHdl
IHB1dCB0aGlzIGludG8gZ3JhcGgubV9ub2RlcyBvciBqdXN0IGFsbG9jYXRlIG9uIHRoZSBzaWRl
IGxpa2UgdGhpcz8KKyAgICAgICAgLy8gT09QUzogc3RvcCBsZWFraW5nIHRoaXMgRW50cnlTd2l0
Y2ggbm9kZS4KKyAgICAgICAgbV9yb290LT5hcHBlbmQobmV3IERGRzo6Tm9kZShFbnRyeVN3aXRj
aCwgTm9kZU9yaWdpbigpLCBPcEluZm8oZGF0YSkpKTsKKworICAgICAgICAvLyBPT1BTOiBtYXli
ZSB0aGlzIHdpbGwgbGVhZCB0byBiYWRuZXNzPworICAgICAgICBtX3Jvb3QtPmluZGV4ID0gVUlO
VF9NQVg7CisgICAgfQorCisgICAgfkNQU0NGRygpCisgICAgeworICAgICAgICAvLyBPT1BTOiBJ
dCdkIGJlIG5pY2UgaWYgd2UgY291bGQgYXNzZXJ0IGV2ZW4gbW9yZSB0aGluZ3MsIGxpa2UgY2Vy
dGFpbiBtZXRob2RzIG5ldmVyIGdldCBjYWxsZWQgb24gbV9yb290LgorICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX3Jvb3QtPnNpemUoKSA9PSAxKTsKKyAgICB9CisKKyAgICBOb2RlIHJvb3QoKSB7
IHJldHVybiBtX3Jvb3QucHRyKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
TWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIE1hcDxUPihtX2dyYXBoKTsgfQorCisgICAgREZHOjpO
b2RlOjpTdWNjZXNzb3JzSXRlcmFibGUgc3VjY2Vzc29ycyhOb2RlIG5vZGUpIHsgcmV0dXJuIG5v
ZGUtPnN1Y2Nlc3NvcnMoKTsgfQorICAgIFByZWRlY2Vzc29yTGlzdCYgcHJlZGVjZXNzb3JzKE5v
ZGUgbm9kZSkgeyByZXR1cm4gbm9kZS0+cHJlZGVjZXNzb3JzOyB9CisKKyAgICB1bnNpZ25lZCBp
bmRleChOb2RlIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG5vZGUtPmluZGV4OyB9CisgICAgTm9kZSBu
b2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2dyYXBoLmJsb2NrKGluZGV4KTsg
fQorICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaC5udW1CbG9j
a3MoKTsgfQorICAgIAorICAgIFBvaW50ZXJEdW1wPEJhc2ljQmxvY2s+IGR1bXAoTm9kZSBub2Rl
KSBjb25zdCB7IHJldHVybiBwb2ludGVyRHVtcChub2RlKTsgfQorCisgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBtX2dyYXBoLmR1bXAob3V0KTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGgmIG1fZ3JhcGg7CisgICAgUmVmPEJhc2ljQmxv
Y2s+IG1fcm9vdDsKK307CisKK2NsYXNzIFNTQUNGRyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU1NBQ0ZHKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEJhc2ljQmxvY2sqIE5vZGU7CkBAIC00MywxMSArMzMwLDEzIEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBCbG9ja01hcDxUPjsKICAgICB0eXBl
ZGVmIEJsb2NrTGlzdCBMaXN0OwogCi0gICAgQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICBTU0FDRkco
R3JhcGgmIGdyYXBoKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgIH0KIAorICAgIC8vIE9P
UFM6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGVudHJ5cG9p
bnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03MSw2ICszNjAsMjAgQEAgcHJpdmF0ZToKICAgICBH
cmFwaCYgbV9ncmFwaDsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1ZT46OnR5
cGU+CitDUFNDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoZ3JhcGgubV9jcHNDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9jcHNDRkc7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FDRkcmIHNlbGVjdENGRyhH
cmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9zc2FDRkcpOworICAg
IHJldHVybiAqZ3JhcGgubV9zc2FDRkc7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAg
IC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMg
dG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBX
ZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUg
Zm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBh
bm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3Zlcmtp
bGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgp
OyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNl
dEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAg
IGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpIHsKKyAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAgICAgICAg
IGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAg
ICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShp
LCBhcmd1bWVudHNbaV0pOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9w
ZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4LDcgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAg
CiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFw
aC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9y
cygpOwogICAgICAgICAKICAgICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVP
cmRlcigpOwogICAgICAgICAKQEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsg
aS0tOykgewogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZVtpXTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVz
KGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5t
X3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewog
ICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTc3
OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0cmljdCBk
b21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3VyIG93biBi
bG9jayBpZgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGlu
IHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAg
ICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21p
bmF0ZSB1cy4KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3RyaWN0bHlE
b21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3Nz
YURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewogICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAg
ICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2sp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMt
PmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoLnNldE5vZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bj
b2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNhc2Ug
b3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAgIGNhc2Ugb3BfYWZ0
ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0
X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAg
Y2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
QEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgor
ICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZvcmNlT1NS
RXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJl
dmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFz
cyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBo
KQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVEb21pbmF0b3JzKCkpCisgICAg
ICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKSkKICAgICAgICAg
LCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygp
KQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOworICAgIFNTQURvbWluYXRvcnMmIG1f
ZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRv
cnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAg
ICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFy
aWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50
c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAg
ICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1
c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNz
ZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCBWZWN0b3I8RGlzYXNz
ZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAgZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZm
ZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIAotICAg
IG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExv
b3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgbV9ncmFwaC5l
bnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAi
ICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAiOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRj
aDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFp
bENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5Niw2ICsxOTcsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFw
QnVja2V0OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hh
YmxlOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50
cnlMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9y
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9y
cy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
bWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6
OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIERv
bWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6OkRv
bWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENG
R0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CiAKK3Vz
aW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNEb21pbmF0
b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFs
dWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYg
Z3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRvcnMmIGVu
c3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
MSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAgICAgICwg
bV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0gPT0gU1NB
KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVkZ2UpCiAg
ICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0
ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBt
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9i
bG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKAogICAg
ICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5vZGUoKS0+
b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1
bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAg
ICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAgIGNhc2Ug
RGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2Ug
RXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAg
ICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2Fz
ZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hG
b3JtYXQuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZs
dXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwK
ICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJERkdK
SVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR05hdHVyYWxM
b29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNsdWRlICJERkdW
YXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCkBAIC03Myw3ICs3Miw3IEBA
IEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAg
ICAsIG1fY29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2so
bV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVl
PENGRz4oKnRoaXMpKQorICAgICwgbV9jcHNDRkcoc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KCp0
aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRl
KEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZl
Tm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtNDExLDcgKzQxMCw4IEBAIGJvb2wgR3JhcGg6OnRl
cm1pbmFsc0FyZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVE
dW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91
dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+
YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJs
ZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0
KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywg
IiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwg
Iik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJs
b2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJs
b2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91
dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNv
dW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBA
IC00MjIsMTggKzQyMiwxNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJl
YW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5n
KQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVk
Z2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAg
ICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsKLSAg
ICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRv
cnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKLSAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWlu
YXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRv
cnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxu
Iik7Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9kb21pbmF0b3JzICYmIHRlcm1p
bmFsc0FyZVZhbGlkKCkpIHsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
Ly8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJs
b2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZp
eCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250
aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVy
YXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKKyAgICAvL30KICAgICBp
ZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwgbV9iYWNr
d2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2FyZHNEb21p
bmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5ICs0NDUs
MjggQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9
CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJl
cmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAi
LCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0TnVt
YmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJhbExvb3Bz
KSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3Bz
LT5oZWFkZXJPZihibG9jaykpIHsKLSAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExv
b3AgaGVhZGVyLCBjb250YWluczoiKTsKLSAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBz
b3J0ZWRCbG9ja0xpc3Q7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9v
cC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChs
b29wLT5hdChpKS0+aW5kZXgpOwotICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKLSAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKLSAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3Ag
aGVhZGVyczoiKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWlu
aW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNv
bnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOwotICAgICAgICAgICAgb3V0LnByaW50KCJcbiIp
OwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9uYXR1cmFsTG9v
cHMpIHsKKyAgICAvLyAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxM
b29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisgICAgLy8gICAgICAgIG91dC5wcmludChwcmVmaXgs
ICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKKyAgICAvLyAgICAgICAgVmVjdG9yPEJsb2Nr
SW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQorICAgIC8vICAgICAgICAgICAgc29ydGVkQmxvY2tM
aXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgIC8vICAgICAgICBzdGQ6OnNvcnQo
c29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7CisgICAgLy8g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyAr
K2kpCisgICAgLy8gICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ld
KTsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgIC8vICAgIH0KKyAgICAvLyAg
ICAKKyAgICAvLyAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5nTG9vcHMg
PQorICAgIC8vICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgLy8g
ICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CisgICAgLy8gICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOworICAgIC8vICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytpKQor
ICAgIC8vICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVh
ZGVyKCkpOworICAgIC8vICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8gICAgfQorICAg
IC8vfQogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUwMCwxMCBAQCB2b2lkIEdy
YXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBv
aW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5p
ZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRl
OiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAg
ICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAg
IGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBv
dXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIs
IGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NDAsMTAg
QEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6
ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3
b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5p
c1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7Cisg
ICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3
b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlz
dC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vz
c29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgwMCwxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFj
aGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2Rv
bWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBt
X3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxw
dHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29w
cyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5h
dG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEy
ICs4NTMsMTggQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBC
bG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xp
c3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGls
ZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQu
YXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nl
c3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3Nv
cihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKHJlc3VsdFtpXSkp
OworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC04NjMsNyArODcyLDggQEAgQmxv
Y2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3Vs
dDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1
c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlw
b2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJs
b2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0
ZW0ub3JkZXIpIHsKICAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC04NzYsNiArODg2
LDEyIEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyeXBvaW50cy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZW50cnlwb2ludHMuY29udGFpbnMo
cmVzdWx0W3Jlc3VsdC5zaXplKCkgLSBpIC0gMV0pKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0xNDcyLDMwICsxNDg4LDQyIEBAIHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlv
bkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFpbHVyZSgqdGhpcywgdG9DU3RyaW5nKCJX
aGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVtcChibG9jayksICJcblxuIiksIGZpbGUs
IGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQogCi1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5z
dXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9y
cygpCit7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9y
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAq
bV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9t
aW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9y
cyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9k
b21pbmF0b3JzOworICAgIC8vUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSk7IC8vIE9PUFMg
dGhpcyBtaWdodCBhc3NlcnQgaW4gc3NhIGNvbnZlcnNpb24sIHBlcmhhcHMgYWRkIHNvbWUgbWV0
aG9kIGZvciBoYW5kbGluZyB0aGF0LCBvciBoYXZlIHRoYXQgcGhhc2Ugc3RvcmUgdG8gbV9mb3Jt
IGVhcmxpZXIuCisgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5h
dG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVy
biAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1QcmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJl
UHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1
cmFsTG9vcHMoKQogewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3By
ZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlz
KTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVCht
X2Zvcm0gIT0gU1NBKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX2Nw
c05hdHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9v
cHM7CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCitTU0FO
YXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewotICAgIGVuc3Vy
ZURvbWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVy
YWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0gICAgcmV0
dXJuICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsK
KyAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykK
KyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxM
b29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3
YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgUkVMRUFTRV9BU1NF
UlQobV9mb3JtID09IFNTQSk7IC8vIFdlIGNvdWxkIGNoYW5nZSB0aGlzLCBidXQgaXQncyBvbmx5
IHVzZWQgaW4gU1NBIGZvciBub3csIGFuZCB3ZSBkb24ndCBuZWVkIHR3byBncmFwaCBmaWVsZHMg
eWV0IGZvciB0d28gdHlwZXMgb2YgYmFja3dhcmRzIENGRy4KICAgICBpZiAoIW1fYmFja3dhcmRz
Q0ZHKQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRz
Q0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1MDMsNiArMTUz
MSw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygKIAogQmFja3dh
cmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogeworICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNEb21p
bmF0b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9t
aW5hdG9yczsKQEAgLTE1MTAsNiArMTUzOSw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBo
OjplbnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1
cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9m
b3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQogICAg
ICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTU1Nyw3IEBAIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5s
b2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgpLnRv
QXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9h
cmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5v
ZGUgPSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJndW1l
bnRdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBj
b3B5KQpAQCAtNTQsMTIgKzU0LDE3IEBAIG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBCYWNrd2Fy
ZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwotY2xhc3MgQ0ZHOworY2xhc3MgQ1BT
Q0ZHOworY2xhc3MgU1NBQ0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1j
bGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0lu
ZGV4aW5nOwotY2xhc3MgTmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKwor
dXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWlu
YXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1
cmFsTG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxT
U0FDRkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAtOTAxLDkg
KzkwNiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9zdE51bWJl
cmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgQ1BT
RG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRvcnMmIGVu
c3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVy
YWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7
CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNrd2FyZHNE
b21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05
MjEsNyArOTI3LDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAg
Q29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFz
aWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4
PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7CiAg
ICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNv
ZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1Zh
bHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxNyArOTYzLDE4IEBAIHB1
YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92
ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8v
IGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBIYXNoTWFw
PEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50czsK
ICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhpcyBp
cyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVj
dG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKLSAgICAKKwogICAgIFNlZ21lbnRl
ZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9u
czsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKICAgICBTZWdtZW50ZWRWZWN0
b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8
QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERh
dGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4gbV9lbnRyeVN3aXRjaERh
dGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRpR2V0QnlPZmZzZXREYXRh
OwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsK
ICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRp
b25EYXRhOwpAQCAtOTgyLDEwICs5OTAsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3RkOjpw
YWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1h
cDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5
cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxD
Rkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0RvbWlu
YXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5hdG9y
czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxMb29w
czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxMb29w
czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZH
PiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9y
cz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEwMDks
NiArMTAxOSw3IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsK
ICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25I
YW5kbGVycyB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2Nh
bHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1f
aW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVl
Pj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIw
NDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw1OSBAQCBzdGF0aWMgdm9pZCBzZXRM
aXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6Omlu
aXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwot
ICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0
ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJv
b3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVk
OwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNB
cmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFk
Lm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwu
YXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAg
ICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQgPSBtX2dy
YXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFub2Rl
KQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgIGZvciAoQmFz
aWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBl
bnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+
Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0
YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3Rh
dGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2Zh
U3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVt
YmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNB
dFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9y
bWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKKyAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwogICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQp
OwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5m
bHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAgICAgICAg
ICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpT
VmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2gg
KGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMy
T25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRC
b29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVj
b2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZv
cm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAg
ICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQu
YXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxw
dHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1
ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0
SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwo
aSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsg
YmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAg
ICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAg
IGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+
dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBv
aW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVy
KCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykp
IHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlz
UmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAg
ICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw2ICszNjksMTMgQEAg
aW5saW5lIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwog
ICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9CisKKyAgICBjYXNlIEVudHJ5U3dpdGNoOiB7
CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHRhcmdldEJsb2NrIDogdGVybWluYWwtPmVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3MpCisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIHRhcmdldEJsb2NrKTsKKyAgICAg
ICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAg
ICBjYXNlIFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHZvaWQgSklUQ29k
ZTo6c2hyaW5rVG9GaXQoKQogICAgIGNvbW1vbi5zaHJpbmtUb0ZpdCgpOwogICAgIG9zckVudHJ5
LnNocmlua1RvRml0KCk7CiAgICAgb3NyRXhpdC5zaHJpbmtUb0ZpdCgpOworICAgIGNhdGNoRW50
cnlwb2ludHMuc2hyaW5rVG9GaXQoKTsKICAgICBzcGVjdWxhdGlvblJlY292ZXJ5LnNocmlua1Rv
Rml0KCk7CiAgICAgbWluaWZpZWRERkcucHJlcGFyZUFuZFNocmluaygpOwogICAgIHZhcmlhYmxl
RXZlbnRTdHJlYW0uc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMzIgQEAgcHVibGlj
OgogICAgICAgICAgICAgb3NyRW50cnksIG9zckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwK
ICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXgpOwogICAgIH0KKworICAg
IENhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1
bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNl
YXJjaDxDYXRjaEVudHJ5cG9pbnREYXRhLCB1bnNpZ25lZD4oCisgICAgICAgICAgICBjYXRjaEVu
dHJ5cG9pbnRzLCBjYXRjaEVudHJ5cG9pbnRzLnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKKyAgICAg
ICAgICAgIFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhKiBpdGVtKSB7IHJldHVybiBpdGVt
LT5tX2J5dGVjb2RlSW5kZXg7IH0pOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemVDYXRjaE9T
UkVudHJ5cG9pbnRzKCkKKyAgICB7CisgICAgICAgIHN0ZDo6c29ydChjYXRjaEVudHJ5cG9pbnRz
LmJlZ2luKCksIGNhdGNoRW50cnlwb2ludHMuZW5kKCksIFtdIChjb25zdCBDYXRjaEVudHJ5cG9p
bnREYXRhJiBhLCBjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBiKSB7CisgICAgICAgICAgICBy
ZXR1cm4gYS5tX2J5dGVjb2RlSW5kZXggPCBiLm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfSk7
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0luZGV4ID0g
MDsKKyAgICAgICAgZm9yIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBlbnRyeXBvaW50IDog
Y2F0Y2hFbnRyeXBvaW50cykgeworICAgICAgICAgICAgQVNTRVJUKHByZXZpb3VzSW5kZXggPCBl
bnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBwcmV2aW91c0luZGV4ID0g
ZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXgKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5z
aWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZv
cm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5
cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJn
dW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhp
dChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiw2ICsxNTgsNyBAQCBwcml2YXRl
OgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVu
dHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9yPENhdGNoRW50cnlwb2ludERhdGE+IGNhdGNo
RW50cnlwb2ludHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhp
dDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292
ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpA
QCAtMTY4LDYgKzE5NSw4IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBt
X29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAgICBib29sIGFi
YW5kb25PU1JFbnRyeTsKKworICAgIE1hbGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9TUkVudHJ5QnVm
ZmVyOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjcsNiArMzY3LDkgQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVj
ayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBpZiAobV9ncmFw
aC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hP
U1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVl
KSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0
YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxK
U1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVu
dHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNz
T2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRj
aEVudHJ5cG9pbnQoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJs
b2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFy
Z3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hF
bnRyeXBvaW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9m
Q0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFi
bGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRl
Y29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1l
bnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2lj
QmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRj
aEVudHJ5cG9pbnQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxv
Y2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYg
KCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVu
ZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0
T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJh
c2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAv
LyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFi
bGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2Nr
JiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQg
bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxv
Y2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0
cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENv
ZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxMb29w
ID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQog
ICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3Jt
ID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsK
LSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExv
b3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMo
KTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
bV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAgICAg
ICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFjaCBs
b29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBiZWxv
bmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxv
Y2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFs
b29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9vcERhdGEmIGRh
dGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRzIHBy
ZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93IHdo
YXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFw
aC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3Ao
bG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAg
IGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bG9v
cChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5p
bmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRl
ckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAgICAgICAgICAg
IG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgq
b3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAgICAg
ICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRlcyk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3AuaGVh
ZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJl
ZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+
ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHByZUhlYWRlciA9
IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9y
PGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5Q
cmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVy
TW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBjdXJy
ZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAgICAgICAgIGN1
cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJl
bnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3Bz
LT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAgIGxvb3BTdGFj
ay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJlbWVtYmVy
OiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBzbyBp
ZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVjYXVz
ZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBsb29w
cy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJvZHlJ
bmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5hdChi
b2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dy
YXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhlYWRl
ck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1fZGF0
YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBi
b29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAm
JiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVu
dHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2Fs
KCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAg
ICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
b29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxvY2tJ
bnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7CisgICAgLy8g
T09QUzogbWF5YmUgdXNlIGhhc2hzZXQgZm9yIHRoaXMgYXNzZXJ0LgorICAgIFJFTEVBU0VfQVNT
RVJUKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7IC8vIEFuIGVudHJ5cG9p
bnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AhCisKICAgICAvLyBGSVhNRTogSWYgd2UgcnVuIHRo
aXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3aXRoIGEgYml6YXJyZSBh
cnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBsaWtlOgogICAgIC8vCkBA
IC02OSw3ICs3Miw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgK
ICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJlcXVlbmNpZXMgb2YgdGhl
IGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBmbG9hdCBmcmVxdWVuY3kg
PSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNz
b3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywg
cHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0
ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBm
cmVxdWVuY3kgPSBzdGQ6Om1heChmcmVxdWVuY3ksIHByZWRlY2Vzc29yLT5leGVjdXRpb25Db3Vu
dCk7CiAgICAgfQpAQCAtMTAzLDcgKzEwNiw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRl
cihHcmFwaCYgZ3JhcGgKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXgg
PSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRl
Y2Vzc29ySW5kZXgrKykgewogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2Nr
LT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgIGlmIChncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3Jh
cGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29y
SW5kZXgtLV0gPSBibG9jay0+cHJlZGVjZXNzb3JzLmxhc3QoKTsKICAgICAgICAgYmxvY2stPnBy
ZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0
b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1f
Z3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05h
dHVyYWxMb29wcygpOwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXgg
PSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29w
cy0+bG9vcChsb29wSW5kZXgpOwotICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVI
ZWFkZXIgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9j
cHNOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAg
Y29uc3QgQ1BTTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5s
b29wKGxvb3BJbmRleCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRl
ciA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG5lZWRzTmV3UHJlSGVhZGVyID0gZmFsc2U7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRl
cigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7CiAgICAgICAg
ICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLT5wcmVkZWNl
c3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9k
b21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3IpKQorICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgewogICAgICAgICAgICAgICAgICAg
ICBleGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2
NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1
bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYm
IG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
aXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVu
dCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExv
Y2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1
bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBu
b2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZs
dXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDEzIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBo
JiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBjYXNl
IFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0
ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTUg
KzM0LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdHlwZWRlZiBX
VEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Cit1c2luZyBTU0FOYXR1cmFsTG9vcCA9
IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxMb29wID0gV1RGOjpO
YXR1cmFsTG9vcDxDUFNDRkc+OwogCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpO
YXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIE5h
dHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6
IFdURjo6TmF0dXJhbExvb3BzPENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVEb21pbmF0
b3JzKCksIHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8
Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9yc0ZvckNG
RzxDRkdLaW5kPihncmFwaCksIHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgeworICAgICAgICAv
LyBPT1BTOiBhZGQgc29tZSB2YWxpZGF0aW9uIHRoYXQgZ3JhcGgncyBlbnRyeXBvaW50cyBhcmUg
bm90IGluIGFueSBsb29wLgogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxNCBAQCBzdHJ1Y3QgU3dp
dGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7CiB9OwogCitzdHJ1Y3QgRW50cnlT
d2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9OworCiBzdHJ1Y3QgQ2FsbFZhcmFyZ3NE
YXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9OwpAQCAtMTI3NywxNyArMTI4NSwy
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQogCisgICAgYm9vbCBpc0VudHJ5
U3dpdGNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEVudHJ5U3dpdGNo
OworICAgIH0KKwogICAgIGJvb2wgaXNUZXJtaW5hbCgpCiAgICAgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAg
ICAgY2FzZSBTd2l0Y2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2Ug
UmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxD
YWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzU3dp
dGNoKCkpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3dpdGNoRGF0YSo+KCk7CiAgICAg
fQorCisgICAgRW50cnlTd2l0Y2hEYXRhKiBlbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzRW50cnlTd2l0Y2goKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxF
bnRyeVN3aXRjaERhdGEqPigpOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBudW1TdWNjZXNz
b3JzKCkKICAgICB7CkBAIC0xMzU5LDYgKzEzNzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gMjsKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNo
RGF0YSgpLT5jYXNlcy5zaXplKCkgKyAxOworICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Muc2l6ZSgpOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNzIsNiAr
MTM5NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBz
d2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0
YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCisgICAgICAgIGlmIChpc0VudHJ5
U3dpdGNoKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrc1tp
bmRleF07CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAg
ICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTE4LDYgKzE1NDQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgQXRvbWljc1N0b3JlOgogICAgICAgICBjYXNlIEF0b21pY3NTdWI6CiAgICAgICAg
IGNhc2UgQXRvbWljc1hvcjoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7CiAgICAgfQorCisgICAgdWludDMyX3Qg
Y2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
dWludDMyX3Q+KCk7CisgICAgfQogICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0
aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyog
dmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RP
U1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhl
IERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11
c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
QnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFp
bENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzYsNiArMzM2LDY3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4
ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50
cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVB
U0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAg
REZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAg
IFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRh
KiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAg
ICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0
IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndCBjb21waWxlIHRoaXMKKyAgICAgICAgLy8gYWZ0ZXJf
Y2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0
byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0
eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVu
dHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1
bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJn
dW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMy
OgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNo
ZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6
Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1
bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBl
LgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToK
KyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAg
ICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJh
bWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9y
RXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBh
Y2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVT
aXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9hZnRlcl9j
YXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2ludGVyKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihw
cm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW2luZGV4XSA9IGV4ZWMtPnVuY2hl
Y2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAg
ICB9KTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNh
dGNoRW50cnlwb2ludC0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIK
KyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5j
bHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWdu
ZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9i
eXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAgdW5z
aWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7
CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHBy
b3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3Jl
IGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2Fy
Z3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZm
ZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2Uu
IElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYg
bnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBp
dCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0
YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5l
IHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkg
eyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVChieXRlY29kZUluZGV4ICE9IFVJTlRfTUFYKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIE5lZWRlZCBieSBjcmVhdGVQcmVIZWFkZXIoKS4KLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9t
aW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZSA9IG1fZ3Jh
cGgubV9wcm9maWxlZEJsb2NrOwogICAgICAgICAKQEAgLTExMiwxNiArMTEyLDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFy
Z2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBh
cmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5i
bG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50
IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAg
Tm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50
KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3Qg
Zm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5l
ZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1
bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9k
ZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdp
biwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkp
KTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAg
ICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAg
ICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2Fs
czsgKytsb2NhbCkgewpAQCAtMTM5LDYgKzE0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBP
cEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwog
ICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBt
X2dyYXBoLm1fZW50cnlwb2ludHNbMF0gPSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmNsZWFyKCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50
VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3QsIGFyZ3VtZW50cyk7CisKICAgICAgICAgbV9ncmFwaC5y
ZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2Nr
cygpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDcgKzcy
Nyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMo
KTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dy
YXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0
b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAg
ICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29t
YmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICsz
NjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8g
SWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2
ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFz
IGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1
cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsK
KyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQ
U05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3RO
dW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQot
Ci0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tXb3Jr
bGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3Jh
cGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAg
ICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goZ3Jh
cGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAgIHVuc2ln
bmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9
IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAg
ICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9w
cmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9z
dChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBp
dGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHN1
Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQ
b3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9z
dE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVBy
ZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRG
RzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQp
Ci17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAgICAgICAg
b3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcm9z
c0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVy
aW5nLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5j
bHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRnZSwKLSAg
ICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0
TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayogYmxvY2sp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVuc2lnbmVk
IHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2Nr
XS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9y
IG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJh
c2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJlcihmcm9t
KSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0
TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJv
bSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAgICAKLSAg
ICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sq
IHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JPZih0bywg
ZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBbmNl
c3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBi
b2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2Fu
dCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2
ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBm
cm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmljdERl
c2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAg
IHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0g
ICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAgICAgdW5z
aWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsKLSAgICB9
OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0j
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Jbmpl
Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmls
ZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSBvbmx5
IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1l
bnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBi
ZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAgICAgICAgYXV0byYg
YXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGgu
YmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJn
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKyth
cmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZEJs
b2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBM
b2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNl
IEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBj
YXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50
Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMTEs
NiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0
eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAg
ICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAgY2FzZSBQ
cm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNl
LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBTU0FDYWxjdWxhdG9yIHNzYUNhbGN1bGF0
b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5j
cHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEyICs5NSwxMiBAQCBTU0FDYWxj
dWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0RlCiAKIFNTQUNhbGN1bGF0b3I6OkRlZiog
U1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZihCYXNpY0Jsb2NrKiBibG9jaywgVmFy
aWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBo
Lm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKKyAgICByZXR1cm4gcmVhY2hp
bmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJs
ZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZB
dFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICBmb3Ig
KDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7Cisg
ICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5pZG9tKGJs
b2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBtX2RhdGFbYmxvY2tdLm1fZGVmcy5nZXQo
dmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRlZjsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkocmV2aXNpb24gMjIwNDcz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZvaWQgY29tcHV0ZVBoaXMoY29uc3QgUGhp
SW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRvcnMpOworICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzKTsKICAgICAgICAgCiAg
ICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDogbV92YXJpYWJsZXMpIHsKLSAgICAgICAg
ICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9t
aW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5m
b3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAg
ICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZzLAogICAgICAgICAgICAgICAgIFsmXSAo
QmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBw
aGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsKICAgICAgICAg
CiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVudHMoKTsKLSAgICAgICAgbV9ncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBudWxscHRyOwor
ICAgICAgICBtX2dyYXBoLm1fc3NhQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KG1fZ3Jh
cGgpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsgLy8gT09QUzogYWxs
b3cgdXMgdG8gYXNzZXJ0IGluIGVuc3VyZVNTQURvbWluYXRvcnMgdGhhdCB3ZSdyZSBpbiBTU0Eg
Zm9ybS4KICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRh
TG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRyYW5zZm9ybWF0aW9uOlxuIik7CkBAIC0xMTAsNyArMTEy
LDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBEZWNpZGUgd2hl
cmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3MgYnV0IGRv
ZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hl
cmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBicm8uCisg
ICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBiYXNlZCBv
biB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1bGF0b3Iu
Y29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxlKiBz
c2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAgICAgICAg
ICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUluZGV4W3Nz
YVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgzLDIyIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT5z
c2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUo
bV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisgICAgICAgIC8vIEZJWE1FOiBT
dXBwb3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6CisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0
byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3Jh
cGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5y
ZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3Vt
ZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZs
dXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBp
bmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9
IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUt
PnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
Z3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhl
IGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAg
ICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUg
YXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwNyw2ICszMDcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dp
dGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBU
YWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVk
QXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxv
Y2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcElu
TG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0
Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIgorCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjA3OSw2
ICs2MDgxLDIxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6IHsKKyAgICAgICAgbV9qaXQucHJpbnQoIkV4dHJhY3RDYXRjaExvY2FsIik7CisgICAg
ICAgIC8vbV9qaXQucHJvYmUoW10gKFByb2JlQ29udGV4dCopIHsKKyAgICAgICAgLy8gICAgZGF0
YUxvZ0xuKCJFeHRyYWN0Q2F0Y2hMb2NhbCEiKTsKKyAgICAgICAgLy99KTsKKworICAgICAgICBK
U1ZhbHVlKiBwdHIgPSAmbV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgp
W25vZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgbV9q
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAg
ICAgIG1faml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiksIHRlbXBHUFIp
OworICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIsIG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CiAjZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5M
b29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKQEAgLTYwODcsNiArNjEwNCw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7
CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCiAKKworICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAg
ICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpA
QCAtNjExNSw3ICs2MTM0LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFk
OgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoKLSAgICAgICAgREZHX0NSQVNI
KG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzYsNiArMTY3
NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsK
KyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0Lmdy
YXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
KyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0
TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50Ojpy
ZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpA
QCAtMTc3MCw4ICsxNzc3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5
cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3Jp
Z2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJn
dW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0
LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0
LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2Rl
ID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFy
Z3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJn
dW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMu
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NTUsMTIgKzE4NjMsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdl
IGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQotICAg
ICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQo
bV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc09T
UlRhcmdldCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRk
IHRoZW0KKyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KKyAgICAgICAgICAgIG1fb3Ny
RW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIApAQCAtMTg3MSwxMCArMTg3OCwzMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9q
aXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKKyAgICAg
ICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxv
Y2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgYXV0byBpdGVy
ID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAg
ICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAg
ICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1
bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3Ip
IHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmbHVzaEZv
cm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1
c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFs
dWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5k
KGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hFbnRyeXBvaW50KCpibG9jaywgbV9v
c3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1l
bnRGb3JtYXRzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2st
PmlzT1NSVGFyZ2V0KTsKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywg
bV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICB9
CiAgICAgfQorCisgICAgbV9qaXQuaml0Q29kZSgpLT5maW5hbGl6ZUNhdGNoT1NSRW50cnlwb2lu
dHMoKTsKKwogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXpl
KCkpOwogICAgIAogICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0
aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1
cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJhc2ljIGJsb2NrIGV4ZWN1dGlvbiBjb3VudHMg
YmFzZWQgb24gbG9vcCBkZXB0aC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFw
aC5tX25hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7CisgICAgICAgICAgICBibG9jay0+
ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3BE
ZXB0aChibG9jaykpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBi
cmFuY2ggd2VpZ2h0cyBiYXNlZCBvbiBleGVjdXRpb24gY291bnRzLiBUaGlzIGlzbid0IHF1aXRl
IGNvcnJlY3QuIEl0J2xsCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC05OCw2ICs5OCw4IEBA
IHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvbihH
cmFwaCYgZ3JhcGgpCiB7CisgICAgLy8gT09QUy4KKyAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0
dXJuIHJ1blBoYXNlPFN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFwaCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3Qm
IGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0
dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9vcDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6
Q2FuQ29tcGlsZTsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3Bz
KCk7Ci0gICAgICAgIE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1
cmFsTG9vcHM7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAg
ICAgIENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFs
TG9vcHM7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0
dXJhbExvb3BUb0xvb3BIaW50ID0gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJh
bExvb3BzKTsKIAogICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+
IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5z
aWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYg
bmF0dXJhbExvb3BzKQorICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4g
YnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1
cmFsTG9vcHMpCiAgICAgewogICAgICAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5z
aWduZWQ+IG5hdHVyYWxMb29wc1RvTG9vcEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYm
ICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9u
bHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1
ZS4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3Rp
bmcgZm9yIFNldEFyZ3VtZW50cyBhdCBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEs
IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksICEobWF5RXhpdChtX2dyYXBoLCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2lu
LmV4aXRPSykpOwogCiAgICAgICAgICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2Rl
KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAg
ICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdp
bi5mb3JFeGl0KTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05v
ZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAg
ICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0
KTsKKyAgICAgICAgICAgICAgICAgICAgLy9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQo
aSAtIDEpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAg
ICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4
aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAg
IHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9y
aWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAg
ICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSks
CisgICAgICAgICAgICAgICAgICAgIC8vICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRP
SyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBu
b2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5v
cmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5v
ZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBO
b2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBh
dXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9n
cmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxv
Y2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0g
bV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVu
dHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwog
ICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAy
MjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAg
ICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9w
X2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklO
RV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAg
ICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29u
c3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiop
OwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90
LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJh
dGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9F
SkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwxMyBA
QCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWlu
dDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5k
Q2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcg
YXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIK
ICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3Nl
cnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9j
YXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6IGFk
ZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lwT1NS
RW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tpcE9T
UkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYg
cHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1f
b3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJv
ZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBAIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9H
X0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsK
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5
dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXpl
ZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYg
KG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZH
OjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNv
ZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1
ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9K
SVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpa
KShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVS
QVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7
CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNT
dGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQ
X0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1Bh
dGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVj
U3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJ
T04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVm
IEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRl
KiwgaW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNT
dGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQ
YXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSos
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5k
aWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3Ry
aW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRp
Y19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOwor
ICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUp
IHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5j
b2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAg
fSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFt
ZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1l
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9w
cm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFk
b3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
bGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdU
Rl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5U
RVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkK
QEAgLTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAg
Y2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlz
cGF0Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3BfZW5k
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQpJbmRleDogU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL1dURi93
dGYvRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoK
ICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAg
IGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRl
bXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3
ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3du
d2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRo
aXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQg
Zm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318023</attachid>
            <date>2017-08-13 21:44:35 -0700</date>
            <delta_ts>2017-08-13 22:39:32 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>132048</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDkgKzI1MTQsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDEsNiArMjUzMiwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVi
bGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJk
c0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dh
cmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFw
aC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FD
Rkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihi
eXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZh
bHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVk
KGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29u
c3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFz
aWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgp
OwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVt
cDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0g
ICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAg
ICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVu
ZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkg
b25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxs
IG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAg
ICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNh
bCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBp
bmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5
cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNp
dDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAs
NyArMTEzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5n
IHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAv
LyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2lu
LgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNw
bGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0
aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUK
ICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3Vu
ZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNl
IG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAg
ICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlm
IChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUo
KSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4
PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAg
ICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0
IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0g
dHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRB
cmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAg
ICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUw
LDYgKzUxNTUsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRp
b25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisK
KyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVy
ZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2lu
dC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5z
aXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVk
VHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBW
ZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNo
U2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBh
bGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9w
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAg
ICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFs
aWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1l
bnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3Vt
ZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50
cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNp
emUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHll
dC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50
cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Un
cmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisg
ICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJl
IHRvIE9TUiBlbnRlciwgd2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2Fm
dGVyX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBt
X2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQo
bV9jdXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxS
ZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwg
cmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1
c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3Vs
ZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZkxvY2FscyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzQXJndW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVy
T2ZMb2NhbHMpLCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAg
ICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGxvY2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5k
LCB2YWx1ZSkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5v
dyBleGl0IGJlY2F1c2Ugd2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVy
IGFueSBsaXZlIGxvY2Fscy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhp
cyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAg
ICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJl
IHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSos
IDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1l
bnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5z
aXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGlj
dChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFy
Z3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1l
bnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3Jp
Z2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENh
bGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAg
IG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgCkBAIC02MjE0LDYgKzYzMzMs
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgbV9ncmFwaC5tX2xvY2FsVmFy
cyA9IG1fbnVtTG9jYWxzOwogICAgIG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1l
dGVyU2xvdHM7CiAKKyAgICBtX2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFND
Rkc+KG1fZ3JhcGgpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5v
c3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKG1fdmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVzdC1oYW5kbGUgYmxvY2s6ICIsICpibG9j
aywgIlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDI0MiBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIENGRyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0ZHKTsKK2NsYXNzIENQU0NGRyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ1BTQ0ZH
KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB1c2luZyBOb2Rl
ID0gQmFzaWNCbG9jayo7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBjbGFzcyBN
YXAgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAg
ICAgIE1hcChHcmFwaCYgZ3JhcGgpCisgICAgICAgICAgICA6IG1fY2ZnKCpncmFwaC5tX2Nwc0NG
Ry5nZXQoKSkKKyAgICAgICAgICAgICwgbV9yb290KG1fY2ZnLm1fcm9vdC5wdHIoKSkKKyAgICAg
ICAgICAgICwgbV9tYXAoZ3JhcGgpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIE1h
cChNYXAmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9jZmcob3RoZXIubV9jZmcpCisgICAgICAg
ICAgICAsIG1fcm9vdChvdGhlci5tX3Jvb3QpCisgICAgICAgICAgICAsIG1fcm9vdFZhbHVlKFdU
Rk1vdmUob3RoZXIubV9yb290VmFsdWUpKQorICAgICAgICAgICAgLCBtX21hcChXVEZNb3ZlKG90
aGVyLm1fbWFwKSkKKyAgICAgICAgeworICAgICAgICAgICAgb3RoZXIubV9yb290ID0gbnVsbHB0
cjsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrSW5kZXggc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2ZnLm51bU5vZGVzKCk7IH0KKyAgICAgICAgVCYgYXRJbmRleChCbG9ja0luZGV4IGJsb2Nr
SW5kZXgpIHsgcmV0dXJuICFibG9ja0luZGV4ID8gbV9yb290VmFsdWUgOiBtX21hcC5hdEluZGV4
KGJsb2NrSW5kZXggLSAxKTsgfQorICAgICAgICBjb25zdCBUJiBhdEluZGV4KEJsb2NrSW5kZXgg
YmxvY2tJbmRleCkgY29uc3QgeyByZXR1cm4gIWJsb2NrSW5kZXggPyBtX3Jvb3RWYWx1ZSA6IG1f
bWFwLmF0SW5kZXgoYmxvY2tJbmRleCAtIDEpOyB9CisgICAgICAgIFQmIGF0KEJsb2NrSW5kZXgg
YmxvY2tJbmRleCkgeyByZXR1cm4gYXRJbmRleChibG9ja0luZGV4KTsgfQorICAgICAgICBjb25z
dCBUJiBhdChCbG9ja0luZGV4IGJsb2NrSW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0SW5kZXgoYmxv
Y2tJbmRleCk7IH0KKyAgICAgICAgVCYgYXQoQmFzaWNCbG9jayogYmxvY2spIHsgcmV0dXJuIGJs
b2NrID09IG1fcm9vdCA/IG1fcm9vdFZhbHVlIDogbV9tYXAuYXQoYmxvY2spOyB9CisgICAgICAg
IGNvbnN0IFQmIGF0KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBibG9jayA9PSBt
X3Jvb3QgPyBtX3Jvb3RWYWx1ZSA6IG1fbWFwLmF0KGJsb2NrKTsgfQorICAgICAgICBUJiBvcGVy
YXRvcltdKEJsb2NrSW5kZXggYmxvY2tJbmRleCkgeyByZXR1cm4gYXRJbmRleChibG9ja0luZGV4
KTsgfQorICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKEJsb2NrSW5kZXggYmxvY2tJbmRleCkg
Y29uc3QgeyByZXR1cm4gYXRJbmRleChibG9ja0luZGV4KTsgfQorICAgICAgICBUJiBvcGVyYXRv
cltdKEJhc2ljQmxvY2sqIGJsb2NrKSB7IHJldHVybiBhdChibG9jayk7IH0KKyAgICAgICAgY29u
c3QgVCYgb3BlcmF0b3JbXShCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gYXQoYmxv
Y2spOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBDUFNDRkcmIG1fY2ZnOworICAgICAgICBC
YXNpY0Jsb2NrKiBtX3Jvb3Q7CisgICAgICAgIFQgbV9yb290VmFsdWU7CisgICAgICAgIEJsb2Nr
TWFwPFQ+IG1fbWFwOworICAgIH07CisKKyAgICAvLyBPT1BTLiBNYWtlIHRoaXMgaW5kZXggYmFz
ZWQhIEl0J3MgdHJpY2t5IGIvYyB3ZSBkb24ndCBzZWUgdGhlIGZha2Ugcm9vdCBhdCBjb25zdHJ1
Y3Rpb24uCisgICAgY2xhc3MgU2V0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNldCgpID0gZGVm
YXVsdDsKKyAgICAgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGJsb2NrIHdhcyBhZGRlZCwgZmFs
c2UgaWYgaXQgd2FzIGFscmVhZHkgcHJlc2VudC4KKyAgICAgICAgYm9vbCBhZGQoQmFzaWNCbG9j
ayogYmxvY2spCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQoYmxvY2sp
LmlzTmV3RW50cnk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNvbnRhaW5zKEJhc2ljQmxv
Y2sqIGJsb2NrKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBtX3NldC5jb250
YWlucyhibG9jayk7CisgICAgICAgIH0KKworICAgICAgICB1c2luZyBpdGVyYXRvciA9IEhhc2hT
ZXQ8QmFzaWNCbG9jayo+OjppdGVyYXRvcjsKKworICAgICAgICBjbGFzcyBJdGVyYWJsZSB7Cisg
ICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEl0ZXJhYmxlKEdyYXBoJiwgY29uc3QgU2V0JiBz
ZXQpCisgICAgICAgICAgICAgICAgOiBtX3NldChzZXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zZXQubV9zZXQuYmVnaW4o
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaXRlcmF0b3IgZW5k
KCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zZXQubV9z
ZXQuZW5kKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgcHJpdmF0ZToK
KyAgICAgICAgICAgIGNvbnN0IFNldCYgbV9zZXQ7CisgICAgICAgIH07CisgICAgcHJpdmF0ZToK
KyAgICAgICAgSGFzaFNldDxCYXNpY0Jsb2NrKj4gbV9zZXQ7CisgICAgfTsKKworICAgIC8vY2xh
c3MgU2V0IHsKKyAgICAvL3B1YmxpYzoKKyAgICAvLyAgICAvLyBPT1BTLgorICAgIC8vICAgIC8v
U2V0KCkgeyB9CisgICAgLy8gICAgCisgICAgLy8gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIGJs
b2NrIHdhcyBhZGRlZCwgZmFsc2UgaWYgaXQgd2FzIGFscmVhZHkgcHJlc2VudC4KKyAgICAvLyAg
ICBib29sIGFkZChCYXNpY0Jsb2NrKiBibG9jaykKKyAgICAvLyAgICB7CisgICAgLy8gICAgICAg
IHJldHVybiAhbV9zZXQuc2V0KGJsb2NrLT5pbmRleCk7CisgICAgLy8gICAgfQorICAgIC8vICAg
IAorICAgIC8vICAgIGJvb2wgY29udGFpbnMoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0CisgICAg
Ly8gICAgeworICAgIC8vICAgICAgICBpZiAoIWJsb2NrKQorICAgIC8vICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIC8vICAgICAgICByZXR1cm4gbV9zZXQuZ2V0KGJsb2NrLT5pbmRleCk7
CisgICAgLy8gICAgfQorICAgIC8vICAgIAorICAgIC8vICAgIGNsYXNzIGl0ZXJhdG9yIHsKKyAg
ICAvLyAgICBwdWJsaWM6CisgICAgLy8gICAgICAgIGl0ZXJhdG9yKCkKKyAgICAvLyAgICAgICAg
ICAgIDogbV9ncmFwaChudWxscHRyKQorICAgIC8vICAgICAgICAgICAgLCBtX3NldChudWxscHRy
KQorICAgIC8vICAgICAgICAgICAgLCBtX2luZGV4KDApCisgICAgLy8gICAgICAgIHsKKyAgICAv
LyAgICAgICAgfQorICAgIC8vICAgICAgICAKKyAgICAvLyAgICAgICAgaXRlcmF0b3ImIG9wZXJh
dG9yKysoKQorICAgIC8vICAgICAgICB7CisgICAgLy8gICAgICAgICAgICBtX2luZGV4ID0gbV9z
ZXQtPm1fc2V0LmZpbmRCaXQobV9pbmRleCArIDEsIHRydWUpOworICAgIC8vICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAgIC8vICAg
ICAgICBCYXNpY0Jsb2NrKiBvcGVyYXRvciooKSBjb25zdDsKKyAgICAvLyAgICAgICAgCisgICAg
Ly8gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Cisg
ICAgLy8gICAgICAgIHsKKyAgICAvLyAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVy
Lm1faW5kZXg7CisgICAgLy8gICAgICAgIH0KKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgLy8gICAg
ICAgIHsKKyAgICAvLyAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICAv
LyAgICAgICAgfQorICAgIC8vICAgICAgICAKKyAgICAvLyAgICBwcml2YXRlOgorICAgIC8vICAg
ICAgICBmcmllbmQgY2xhc3MgU2V0OworICAgIC8vICAgICAgICAKKyAgICAvLyAgICAgICAgR3Jh
cGgqIG1fZ3JhcGg7CisgICAgLy8gICAgICAgIGNvbnN0IFNldCogbV9zZXQ7CisgICAgLy8gICAg
ICAgIHNpemVfdCBtX2luZGV4OworICAgIC8vICAgIH07CisgICAgLy8gICAgCisgICAgLy8gICAg
Y2xhc3MgSXRlcmFibGUgeworICAgIC8vICAgIHB1YmxpYzoKKyAgICAvLyAgICAgICAgSXRlcmFi
bGUoR3JhcGgmIGdyYXBoLCBjb25zdCBTZXQmIHNldCkKKyAgICAvLyAgICAgICAgICAgIDogbV9n
cmFwaChncmFwaCkKKyAgICAvLyAgICAgICAgICAgICwgbV9zZXQoc2V0KQorICAgIC8vICAgICAg
ICB7CisgICAgLy8gICAgICAgIH0KKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAgIGl0ZXJh
dG9yIGJlZ2luKCkgY29uc3QKKyAgICAvLyAgICAgICAgeworICAgIC8vICAgICAgICAgICAgaXRl
cmF0b3IgcmVzdWx0OworICAgIC8vICAgICAgICAgICAgcmVzdWx0Lm1fZ3JhcGggPSAmbV9ncmFw
aDsKKyAgICAvLyAgICAgICAgICAgIHJlc3VsdC5tX3NldCA9ICZtX3NldDsKKyAgICAvLyAgICAg
ICAgICAgIHJlc3VsdC5tX2luZGV4ID0gbV9zZXQubV9zZXQuZmluZEJpdCgwLCB0cnVlKTsKKyAg
ICAvLyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gICAgICAgIH0KKyAgICAvLyAg
ICAgICAgCisgICAgLy8gICAgICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0CisgICAgLy8gICAgICAg
IHsKKyAgICAvLyAgICAgICAgICAgIGl0ZXJhdG9yIHJlc3VsdDsKKyAgICAvLyAgICAgICAgICAg
IHJlc3VsdC5tX2dyYXBoID0gJm1fZ3JhcGg7CisgICAgLy8gICAgICAgICAgICByZXN1bHQubV9z
ZXQgPSAmbV9zZXQ7CisgICAgLy8gICAgICAgICAgICByZXN1bHQubV9pbmRleCA9IG1fc2V0Lm1f
c2V0LnNpemUoKTsKKyAgICAvLyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgLy8gICAg
ICAgIH0KKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgcHJpdmF0ZToKKyAgICAvLyAgICAgICAg
R3JhcGgmIG1fZ3JhcGg7CisgICAgLy8gICAgICAgIGNvbnN0IFNldCYgbV9zZXQ7CisgICAgLy8g
ICAgfTsKKyAgICAvLyAgICAKKyAgICAvLyAgICBJdGVyYWJsZSBpdGVyYWJsZShHcmFwaCYgZ3Jh
cGgpIGNvbnN0CisgICAgLy8gICAgeworICAgIC8vICAgICAgICByZXR1cm4gSXRlcmFibGUoZ3Jh
cGgsICp0aGlzKTsKKyAgICAvLyAgICB9CisgICAgLy8gICAgCisgICAgLy8gICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgLy8gICAgCisgICAgLy9wcml2YXRlOgorICAgIC8v
ICAgIEJpdFZlY3RvciBtX3NldDsKKyAgICAvL307CisKKyAgICB1c2luZyBMaXN0ID0gQmxvY2tM
aXN0OworCisgICAgQ1BTQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBo
KQorICAgICAgICAsIG1fcm9vdChhZG9wdFJlZigqbmV3IEJhc2ljQmxvY2soVUlOVF9NQVgsIDAs
IDAsIDEuMCkpKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0g
PT0gVGhyZWFkZWRDUFMgfHwgbV9ncmFwaC5tX2Zvcm0gPT0gTG9hZFN0b3JlKTsKKworICAgICAg
ICAvLyBPT1BTOiBzdG9wIGxlYWtpbmcgdGhpcworICAgICAgICBFbnRyeVN3aXRjaERhdGEqIGRh
dGEgPSBuZXcgRW50cnlTd2l0Y2hEYXRhOworICAgICAgICBkYXRhLT5ibG9ja3MucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpKTsKKyAgICAgICAgZm9y
IChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAgICAg
ICAgICAgZGF0YS0+YmxvY2tzLnVuY2hlY2tlZEFwcGVuZChlbnRyeXBvaW50KTsKKyAgICAgICAg
Ly8gT09QUzogc2hvdWxkIHdlIHB1dCB0aGlzIGludG8gZ3JhcGgubV9ub2RlcyBvciBqdXN0IGFs
bG9jYXRlIG9uIHRoZSBzaWRlIGxpa2UgdGhpcz8KKyAgICAgICAgLy8gT09QUzogc3RvcCBsZWFr
aW5nIHRoaXMgRW50cnlTd2l0Y2ggbm9kZS4KKyAgICAgICAgbV9yb290LT5hcHBlbmQobmV3IERG
Rzo6Tm9kZShFbnRyeVN3aXRjaCwgTm9kZU9yaWdpbigpLCBPcEluZm8oZGF0YSkpKTsKKworICAg
ICAgICAvLyBPT1BTOiBtYXliZSB0aGlzIHdpbGwgbGVhZCB0byBiYWRuZXNzPworICAgICAgICBt
X3Jvb3QtPmluZGV4ID0gVUlOVF9NQVg7CisgICAgfQorCisgICAgfkNQU0NGRygpCisgICAgewor
ICAgICAgICAvLyBPT1BTOiBJdCdkIGJlIG5pY2UgaWYgd2UgY291bGQgYXNzZXJ0IGV2ZW4gbW9y
ZSB0aGluZ3MsIGxpa2UgY2VydGFpbiBtZXRob2RzIG5ldmVyIGdldCBjYWxsZWQgb24gbV9yb290
LgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Jvb3QtPnNpemUoKSA9PSAxKTsKKyAgICB9CisK
KyAgICBOb2RlIHJvb3QoKSB7IHJldHVybiBtX3Jvb3QucHRyKCk7IH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIE1hcDxUPihtX2dyYXBo
KTsgfQorCisgICAgREZHOjpOb2RlOjpTdWNjZXNzb3JzSXRlcmFibGUgc3VjY2Vzc29ycyhOb2Rl
IG5vZGUpIHsgcmV0dXJuIG5vZGUtPnN1Y2Nlc3NvcnMoKTsgfQorICAgIFByZWRlY2Vzc29yTGlz
dCYgcHJlZGVjZXNzb3JzKE5vZGUgbm9kZSkgeyByZXR1cm4gbm9kZS0+cHJlZGVjZXNzb3JzOyB9
CisKKyAgICB1bnNpZ25lZCBpbmRleChOb2RlIG5vZGUpIGNvbnN0IHsgcmV0dXJuIG5vZGUgPT0g
bV9yb290LnB0cigpID8gMCA6IG5vZGUtPmluZGV4ICsgMTsgfQorICAgIE5vZGUgbm9kZSh1bnNp
Z25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gIWluZGV4ID8gbV9yb290LnB0cigpIDogbV9ncmFw
aC5ibG9jayhpbmRleCAtIDEpOyB9CisgICAgdW5zaWduZWQgbnVtTm9kZXMoKSBjb25zdCB7IHJl
dHVybiBtX2dyYXBoLm51bUJsb2NrcygpICsgMTsgfQorICAgIAorICAgIFBvaW50ZXJEdW1wPEJh
c2ljQmxvY2s+IGR1bXAoTm9kZSBub2RlKSBjb25zdCB7IHJldHVybiBwb2ludGVyRHVtcChub2Rl
KTsgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAg
ICAgICBtX2dyYXBoLmR1bXAob3V0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGgmIG1f
Z3JhcGg7CisgICAgUmVmPEJhc2ljQmxvY2s+IG1fcm9vdDsKK307CisKK2NsYXNzIFNTQUNGRyB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1NBQ0ZHKTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEJhc2ljQmxvY2sqIE5vZGU7CkBAIC00Mywx
MSArMjc3LDEzIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2luZyBNYXAg
PSBCbG9ja01hcDxUPjsKICAgICB0eXBlZGVmIEJsb2NrTGlzdCBMaXN0OwogCi0gICAgQ0ZHKEdy
YXBoJiBncmFwaCkKKyAgICBTU0FDRkcoR3JhcGgmIGdyYXBoKQogICAgICAgICA6IG1fZ3JhcGgo
Z3JhcGgpCiAgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBT
U0EpOwogICAgIH0KIAorICAgIC8vIE9PUFM6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3
ZSBoYXZlIG11bHRpcGxlIGVudHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1f
Z3JhcGguYmxvY2soMCk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03MSw2ICsz
MDcsMjAgQEAgcHJpdmF0ZToKICAgICBHcmFwaCYgbV9ncmFwaDsKIH07CiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2Ft
ZTxULCBDUFNDRkc+Ojp2YWx1ZT46OnR5cGU+CitDUFNDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3Jh
cGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9jcHNDRkcpOworICAgIHJldHVybiAq
Z3JhcGgubV9jcHNDRkc7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5
cGU+CitTU0FDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQoZ3JhcGgubV9zc2FDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9zc2FDRkc7Cit9CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5n
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5
LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBm
b3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAg
ICAgICAvLyBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlm
ZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQg
dGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRo
aXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1f
Z3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9j
aygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9h
cmd1bWVudHNbaV0pOworCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQg
PSBwYWlyLmtleTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50
cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMu
c2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVh
ZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9CiAgICAg
fQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OTgsNyArNTk4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9ncmFwaC5t
X2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVP
d25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1f
Z3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgbV9wcmVPcmRl
ciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpOwogICAgICAgICAKQEAgLTY5MCw3ICs2OTAs
NyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogY2FuZGlk
YXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7Cisg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRh
dGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdp
dGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAvLyBXZSByZXF1aXJlIHN0cmljdCBkb21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3b3VsZCBvbmx5
IHNlZSB0aGluZ3MgaW4gb3VyIG93biBibG9jayBpZgogICAgICAgICAgICAgLy8gdGhleSBjYW1l
ICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJs
b2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBi
bG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KLSAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fZG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJs
b2NrLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwog
ICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0
KTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNh
bmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Js
b2NrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnNldE5vZGUoY2FuZGlkYXRlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJ
KHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlM
ZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9w
X2NhdGNoOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVz
dDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3df
Y2hpY2tlbl9wcm9sb2d1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAg
ICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJh
bmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBU
aHJvdzoKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5z
dXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3Jz
OworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0
b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFw
aC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAg
ICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNW
ZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFu
LXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAg
ZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJl
dmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAg
IG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21p
bmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAg
ICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1i
bHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNl
IEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNh
c2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoK
QEAgLTE5Niw2ICsxOTcsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1
Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5M
b29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTYgKzM1LDMyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3Mg
RG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3Jz
PENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBn
cmFwaCkKLSAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAg
ICAgIDogV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkp
CiAgICAgewogICAgIH0KIH07CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNT
QUNGRz47Cit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6
OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJl
RG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3Vy
ZUNQU0RvbWluYXRvcnMoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6
dHlwZT4KK1NTQURvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBo
KQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1f
YmxvY2soYmxvY2spCiAgICAgICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFT
U0VSVChncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRv
cigpKE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3Jh
cGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsK
KyAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVz
KGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAg
ICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdl
LCAiIGluICIsICplZGdlLm5vZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
NzAsNiArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAg
ICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2Ug
VGFpbENhbGw6CiAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51
bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZs
dXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5o
IgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1i
ZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVk
ZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVE
dW1wLmgiCkBAIC03Myw3ICs3Miw2IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4p
CiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1fY29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2sp
CiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAg
LCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGlu
ZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCiAgICAgLCBt
X3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVnaXN0ZXJpbmcpCkBA
IC00MTEsNyArNDA5LDggQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogCiB2b2lk
IEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJl
Zml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBNb2RlIHBoaU5vZGVEdW1wTW9kZSwg
RHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIs
ICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBj
b250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJs
b2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKKyAgICBvdXQu
cHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0
KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLAorICAgICAgICBibG9jay0+aXNS
ZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NS
IHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA/ICIgKENhdGNoIEVudHJ5
cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2stPmV4ZWN1dGlvbkNvdW50ID09IGJs
b2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRXhlY3V0
aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQsICJcbiIpOwogICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTQyMiwxOCArNDIxLDE3IEBAIHZvaWQg
R3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICBpZiAoYmxvY2stPnRlcm1p
bmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3Vj
Y2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqc3VjY2Vzc29yKTsKLSAg
ICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+ZWRnZUtpbmQoYmxvY2ssIHN1Y2Nlc3Nvciks
ICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgb3V0LnByaW50KCIgPGludmFs
aWQ+Iik7CiAgICAgb3V0LnByaW50KCJcbiIpOwotICAgIGlmIChtX2RvbWluYXRvcnMgJiYgdGVy
bWluYWxzQXJlVmFsaWQoKSkgewotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7Ci0gICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgbV9kb21pbmF0b3JzLT5ibG9j
a3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hbmNlRnJvbnRpZXJP
ZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBE
b21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFuY2VGcm9u
dGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKLSAgICB9CisgICAgLy8gT09QUy4K
KyAgICAvL2lmIChtX2RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgeworICAgIC8v
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21pbmF0b3JzLT5k
b21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAi
XG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6
ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOworICAg
IC8vICAgIG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjog
IiwgbV9kb21pbmF0b3JzLT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoQmxvY2tMaXN0KDEs
IGJsb2NrKSksICJcbiIpOworICAgIC8vfQogICAgIGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMg
JiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBC
YWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRv
cnNPZihibG9jayksICJcbiIpOwogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2Fy
ZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5
KGJsb2NrKSwgIlxuIik7CkBAIC00NDYsMjkgKzQ0NCwyOCBAQCB2b2lkIEdyYXBoOjpkdW1wQmxv
Y2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBvdXQucHJpbnQo
cHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJl
TnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2sp
LCAiXG4iKTsKLSAgICBpZiAobV9uYXR1cmFsTG9vcHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5h
dHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgewotICAg
ICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5zOiIpOwot
ICAgICAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAgICAgICAg
ICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7Ci0gICAg
ICAgICAgICBzdGQ6OnNvcnQoc29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlz
dC5lbmQoKSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc29ydGVkQmxv
Y2tMaXN0LnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBzb3J0
ZWRCbG9ja0xpc3RbaV0pOwotICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5n
TG9vcHMgPQotICAgICAgICAgICAgbV9uYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwotICAg
ICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIo
KSk7Ci0gICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAgIH0KLSAgICB9CisgICAg
Ly8gT09QUy4KKyAgICAvL2lmIChtX25hdHVyYWxMb29wcykgeworICAgIC8vICAgIGlmIChjb25z
dCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsK
KyAgICAvLyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5z
OiIpOworICAgIC8vICAgICAgICBWZWN0b3I8QmxvY2tJbmRleD4gc29ydGVkQmxvY2tMaXN0Owor
ICAgIC8vICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kp
CisgICAgLy8gICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5p
bmRleCk7CisgICAgLy8gICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9ja0xpc3QuYmVnaW4oKSwg
c29ydGVkQmxvY2tMaXN0LmVuZCgpKTsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKKyAgICAvLyAgICAgICAgICAgIG91
dC5wcmludCgiICMiLCBzb3J0ZWRCbG9ja0xpc3RbaV0pOworICAgIC8vICAgICAgICBvdXQucHJp
bnQoIlxuIik7CisgICAgLy8gICAgfQorICAgIC8vICAgIAorICAgIC8vICAgIFZlY3Rvcjxjb25z
dCBOYXR1cmFsTG9vcCo+IGNvbnRhaW5pbmdMb29wcyA9CisgICAgLy8gICAgICAgIG1fbmF0dXJh
bExvb3BzLT5sb29wc09mKGJsb2NrKTsKKyAgICAvLyAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5p
c0VtcHR5KCkpIHsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmlu
ZyBsb29wIGhlYWRlcnM6Iik7CisgICAgLy8gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyArK2kpCisgICAgLy8gICAgICAgICAgICBvdXQucHJp
bnQoIiAiLCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7CisgICAgLy8gICAgICAgIG91
dC5wcmludCgiXG4iKTsKKyAgICAvLyAgICB9CisgICAgLy99CiAgICAgaWYgKCFibG9jay0+cGhp
cy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5vZGVzOiIp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytp
KSB7CkBAIC01MDIsOCArNDk5LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRT
dGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlm
aWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxu
Iik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVs
c2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9y
IGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJc
biIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5v
ZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzYzOSwxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNj
ZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQog
ewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFw
cGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVu
dHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03OTgsOSAr
Nzk5LDEwIEBAIHZvaWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZvaWQgR3Jh
cGg6OmludmFsaWRhdGVDRkcoKQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7Ci0gICAg
bV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9IG51bGxw
dHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWluYXRvcnMg
PSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBtX3NzYU5h
dHVyYWxMb29wcyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9
IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAgICBtX2Jh
Y2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg1MiwxOCBAQCBCbG9ja0xpc3QgR3Jh
cGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3Jr
bGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdv
cmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAgICAgICAg
ICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAgICBpZiAo
dmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9lbnRyeXBvaW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
ZW50cnlwb2ludHMuY29udGFpbnMocmVzdWx0W2ldKSk7CisgICAgfQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTg2Myw3ICs4NzEsOCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9z
dE9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJsb2NrV29y
a2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChC
YXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3Qu
cHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmts
aXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNl
IFZpc2l0T3JkZXI6OlByZToKQEAgLTg3Niw2ICs4ODUsMTIgQEAgQmxvY2tMaXN0IEdyYXBoOjpi
bG9ja3NJblBvc3RPcmRlcigpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
KworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2VudHJ5cG9pbnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9lbnRyeXBvaW50cy5jb250YWlucyhyZXN1bHRbcmVzdWx0LnNpemUoKSAtIGkg
LSAxXSkpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE0NzIsMzAgKzE0
ODcsNDIgQEAgdm9pZCBHcmFwaDo6bG9nQXNzZXJ0aW9uRmFpbHVyZSgKICAgICBsb2dERkdBc3Nl
cnRpb25GYWlsdXJlKCp0aGlzLCB0b0NTdHJpbmcoIldoaWxlIGhhbmRsaW5nIGJsb2NrICIsIHBv
aW50ZXJEdW1wKGJsb2NrKSwgIlxuXG4iKSwgZmlsZSwgbGluZSwgZnVuY3Rpb24sIGFzc2VydGlv
bik7CiB9CiAKLURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVEb21pbmF0b3JzKCkKK0NQU0RvbWlu
YXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKK3sKKyAgICBpZiAoIW1fY3BzRG9t
aW5hdG9ycykKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNE
b21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7Cit9CisKK1NT
QURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKCkKIHsKLSAgICBpZiAoIW1f
ZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21p
bmF0b3JzPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX2RvbWluYXRvcnM7CisgICAgLy9SRUxFQVNF
X0FTU0VSVChtX2Zvcm0gIT0gU1NBKTsgLy8gT09QUyB0aGlzIG1pZ2h0IGFzc2VydCBpbiBzc2Eg
Y29udmVyc2lvbiwgcGVyaGFwcyBhZGQgc29tZSBtZXRob2QgZm9yIGhhbmRsaW5nIHRoYXQsIG9y
IGhhdmUgdGhhdCBwaGFzZSBzdG9yZSB0byBtX2Zvcm0gZWFybGllci4KKyAgICBpZiAoIW1fc3Nh
RG9taW5hdG9ycykKKyAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxT
U0FEb21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAK
LVByZVBvc3ROdW1iZXJpbmcmIEdyYXBoOjplbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCkKK0NQU05h
dHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiB7Ci0gICAgaWYgKCFt
X3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG1fcHJlUG9zdE51bWJlcmluZyA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHJlUG9zdE51bWJlcmluZz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9wcmVQb3N0
TnVtYmVyaW5nOworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EpOworICAgIGVuc3Vy
ZUNQU0RvbWluYXRvcnMoKTsKKyAgICBpZiAoIW1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBt
X2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhp
cyk7CisgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29wczsKIH0KIAotTmF0dXJhbExvb3BzJiBH
cmFwaDo6ZW5zdXJlTmF0dXJhbExvb3BzKCkKK1NTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3Vy
ZVNTQU5hdHVyYWxMb29wcygpCiB7Ci0gICAgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIGlmICgh
bV9uYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1
ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOworICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOworICAgIGVuc3VyZVNTQURvbWluYXRvcnMo
KTsKKyAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBtX3NzYU5hdHVyYWxMb29w
cyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0dXJu
ICptX3NzYU5hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFj
a3dhcmRzQ0ZHKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgLy8gV2Ug
Y291bGQgY2hhbmdlIHRoaXMsIGJ1dCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EgZm9yIG5vdywgYW5k
IHdlIGRvbid0IG5lZWQgdHdvIGdyYXBoIGZpZWxkcyB5ZXQgZm9yIHR3byB0eXBlcyBvZiBiYWNr
d2FyZHMgQ0ZHLgogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRz
Q0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fYmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2ICsxNTMwLDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFw
aDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5z
dXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dh
cmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRo
aXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTM4
LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1f
Y29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigq
dGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUy
Nyw3ICsxNTU2LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAog
ICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAg
IGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAg
IGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAh
PSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMiArNTQsMTcgQEAg
bmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEJhY2t3YXJkc0NGRzsKIGNsYXNzIEJhY2t3YXJkc0Rv
bWluYXRvcnM7Ci1jbGFzcyBDRkc7CitjbGFzcyBDUFNDRkc7CitjbGFzcyBTU0FDRkc7CiBjbGFz
cyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKLWNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBGbG93SW5kZXhpbmc7Ci1jbGFzcyBOYXR1cmFsTG9v
cHM7Ci1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9t
aW5hdG9yczxDUFNDRkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZH
PjsKK3VzaW5nIENQU05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcg
U1NBTmF0dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVu
YW1lPiBjbGFzcyBGbG93TWFwOwogCkBAIC05MDEsOSArOTA2LDEwIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzRGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVu
YWJsZWQ7IH0KIAotICAgIERvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQ
b3N0TnVtYmVyaW5nJiBlbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3Bz
JiBlbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21p
bmF0b3JzKCk7CisgICAgU1NBRG9taW5hdG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAg
IENQU05hdHVyYWxMb29wcyYgZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJh
bExvb3BzJiBlbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3Vy
ZUJhY2t3YXJkc0NGRygpOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJk
c0RvbWluYXRvcnMoKTsKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKQEAgLTkyMSw3ICs5MjcsOCBAQCBwdWJsaWM6CiAg
ICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9j
azsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOwor
ICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxC
YXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFy
QXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSos
IEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZh
bHVlTWFwOwpAQCAtOTU2LDE3ICs5NjMsMTggQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYg
d2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhl
biB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9k
ZSosIDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2Rl
KiwgOD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhp
cyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlv
biB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1l
bnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0
YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVu
dFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9uPiBt
X3RyYW5zaXRpb25zOwogICAgIFNlZ21lbnRlZFZlY3RvcjxOZXdBcnJheUJ1ZmZlckRhdGEsIDQ+
IG1fbmV3QXJyYXlCdWZmZXJEYXRhOwogICAgIEJhZzxCcmFuY2hEYXRhPiBtX2JyYW5jaERhdGE7
CiAgICAgQmFnPFN3aXRjaERhdGE+IG1fc3dpdGNoRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnlTd2l0Y2hEYXRhPiBtX2VudHJ5U3dpdGNoRGF0YTsKICAgICBCYWc8TXVsdGlHZXRCeU9m
ZnNldERhdGE+IG1fbXVsdGlHZXRCeU9mZnNldERhdGE7CiAgICAgQmFnPE11bHRpUHV0QnlPZmZz
ZXREYXRhPiBtX211bHRpUHV0QnlPZmZzZXREYXRhOwogICAgIEJhZzxPYmplY3RNYXRlcmlhbGl6
YXRpb25EYXRhPiBtX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGE7CkBAIC05ODIsMTAgKzk5MCwx
MiBAQCBwdWJsaWM6CiAgICAgSGFzaFNldDxzdGQ6OnBhaXI8SlNPYmplY3QqLCBQcm9wZXJ0eU9m
ZnNldD4+IG1fc2FmZVRvTG9hZDsKICAgICBIYXNoTWFwPFByb3BlcnR5VHlwZUtleSwgSW5mZXJy
ZWRUeXBlOjpEZXNjcmlwdG9yPiBtX2luZmVycmVkVHlwZXM7CiAgICAgVmVjdG9yPFJlZjxTbmlw
cGV0Pj4gbV9kb21KSVRTbmlwcGV0czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9taW5hdG9ycz4g
bV9kb21pbmF0b3JzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmVQb3N0TnVtYmVyaW5nPiBtX3By
ZVBvc3ROdW1iZXJpbmc7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE5hdHVyYWxMb29wcz4gbV9uYXR1
cmFsTG9vcHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENGRz4gbV9jZmc7CisgICAgc3RkOjp1bmlx
dWVfcHRyPENQU0RvbWluYXRvcnM+IG1fY3BzRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8U1NBRG9taW5hdG9ycz4gbV9zc2FEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
UFNOYXR1cmFsTG9vcHM+IG1fY3BzTmF0dXJhbExvb3BzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
U0FOYXR1cmFsTG9vcHM+IG1fc3NhTmF0dXJhbExvb3BzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
UFNDRkc+IG1fY3BzQ0ZHOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FDRkc+IG1fc3NhQ0ZHOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dhcmRzQ0ZHOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0b3JzPiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPiBtX2NvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTAwOSw2ICsxMDE5LDcgQEAgcHVibGljOgogICAg
IFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVu
YWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMK
IAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNp
dCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNm
YUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0
YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJl
Q2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytp
KSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0g
ICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09
IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1
bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0
ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9n
cmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlz
aXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Cisg
ICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVX
YXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRh
aWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsK
KyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigp
OworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2Zvcm0gPT0gU1NBKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9h
cmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChl
bnRyeXBvaW50KS0+dmFsdWVbaV07CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAg
ICAgICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBj
YXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4p
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoK
KyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNI
KG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAg
ICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQz
Mk9ubHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46
Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVj
Qm9vbGVhbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoK
LSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3Jh
cGgsIFNwZWNDZWxsKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRK
U1ZhbHVlOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VC
eXRlY29kZVRvcCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9y
IGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2Fscygp
OyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0g
ICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1C
bG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9n
cmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwo
aSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChp
KS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFw
aC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFu
ZGxlZCB0aGUgZW50cnlwb2ludHMgYWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCiAgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9j
ay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRl
ZCA9IGZhbHNlOwpAQCAtMzY0LDYgKzM2OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ss
IGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwog
ICAgIH0KKworICAgIGNhc2UgRW50cnlTd2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0g
ZmFsc2U7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+
ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2NrcykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2Uo
YmFzaWNCbG9jaywgdGFyZ2V0QmxvY2spOworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29t
bW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JF
eGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwog
ICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5w
cmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIy
MDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwg
b3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlE
YXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0
Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisg
ICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEs
IHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2lu
dHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50
cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7Cisg
ICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAg
ICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50
cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50
cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8
IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENh
dGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAg
ICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4
KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRl
eDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5
cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQs
IFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBj
YXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRl
eCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9
CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQog
ICAgIHsKQEAgLTEzMiw2ICsxNTgsNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRh
dGEgY29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAg
VmVjdG9yPENhdGNoRW50cnlwb2ludERhdGE+IGNhdGNoRW50cnlwb2ludHM7CiAgICAgU2VnbWVu
dGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVj
dWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVF
dmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpAQCAtMTY4LDYgKzE5NSw4IEBAIHB1Ymxp
YzoKICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAgdW5z
aWduZWQgb3NyRW50cnlSZXRyeTsKICAgICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAgIE1h
bGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9TUkVudHJ5QnVmZmVyOwogI2VuZGlmIC8vIEVOQUJMRShG
VExfSklUKQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDkgQEAg
c3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0
cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGls
ZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRp
dmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAgICBpZiAo
bV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+
Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihK
U1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAg
IHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3
LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRp
ZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9jayYg
YmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlu
a0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBS
RUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKyAgICBSRUxFQVNF
X0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVu
dHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBl
bmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9m
ZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQg
SklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENv
bXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAg
UkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworCiAgICAgLy8g
T1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBi
eSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlv
bk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVu
dHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2Nr
LmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisK
ICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQ
YXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVl
czogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVk
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZp
c2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJs
b2NrSGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJh
c2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJ
VENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
IG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0
cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxs
cHRyKQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAg
ICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVO
YXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGgu
ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9z
ZSkgewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZp
Z3VyZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1
ZGluZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZp
eCB0aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYg
KCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3Qg
TmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RM
b29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgo
KV07CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxv
b3A6CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0g
TWFrZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAg
IGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9v
cHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9v
cCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29w
cygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29w
ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAg
ICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgZm9yICgKLSAgICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0
ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3Ap
OworICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAg
ICAgICAgb3V0ZXJMb29wOwotICAgICAgICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9u
YXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAg
ICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRl
ckxvb3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5k
ZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBo
ZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVj
ZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgICAgIHByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcg
KzE5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9v
cFN0YWNrOwogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVy
TW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9
IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAg
ICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAg
ICAgICBjdXJyZW50OwotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJh
bExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1
cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1
cnJlbnQpKQogICAgICAgICAgICAgICAgIGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhl
IGlubmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBh
bmQgbW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25l
ZCBib2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAg
QmFzaWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAg
Y29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFk
ZXJPZihzdWJCbG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9
IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAg
ICAgIGlmICghc3ViTG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVI
ZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlh
YmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEs
MTIgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3Vt
ZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3Vt
ZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBu
b2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0
ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAg
ICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQg
PSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5Jbmxp
bmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3Jl
YXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNl
dCwgQmFzaWNCbG9jayogYmxvY2spCiB7CisgICAgLy8gT09QUzogbWF5YmUgdXNlIGhhc2hzZXQg
Zm9yIHRoaXMgYXNzZXJ0LgorICAgIFJFTEVBU0VfQVNTRVJUKCFncmFwaC5tX2VudHJ5cG9pbnRz
LmNvbnRhaW5zKGJsb2NrKSk7IC8vIEFuIGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxv
b3AhCisKICAgICAvLyBGSVhNRTogSWYgd2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRo
ZW4gd2UgbWF5IGVuZCB1cCB3aXRoIGEgYml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVw
c2lsb25zIGFuZCBQaGlzLCBsaWtlOgogICAgIC8vCkBAIC02OSw3ICs3Miw3IEBAIEJhc2ljQmxv
Y2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2Ug
dGhlIG1heCBvZiB0aGUgZnJlcXVlbmNpZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHBy
ZWRlY2Vzc29ycy4KICAgICBmbG9hdCBmcmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9j
ayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFw
aC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBp
ZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1heChmcmVx
dWVuY3ksIHByZWRlY2Vzc29yLT5leGVjdXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAzLDcgKzEw
Niw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAKICAg
ICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4IDwg
YmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAgICAg
ICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNz
b3JJbmRleF07Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9j
aywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21p
bmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+cHJlZGVj
ZXNzb3JzLmxhc3QoKTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7
CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAg
IHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGgu
ZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9y
cygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3Bz
LT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwotICAg
ICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51bUxvb3Bz
KCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExvb3AmIGxv
b3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBib29sIG5lZWRzTmV3UHJlSGVhZGVyID0gZmFsc2U7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgp
OyBwcmVkZWNlc3NvckluZGV4LS07KSB7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJl
ZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07
Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobG9v
cC5oZWFkZXIoKSwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
Y3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHByZWRlY2Vzc29yKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGlu
Z1ByZUhlYWRlcikgewogICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1ByZUhlYWRlciA9IHBy
ZWRlY2Vzc29yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAg
IHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAg
ICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFw
aC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAg
ICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVu
dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVy
ICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVb
bm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRC
bG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4
LDEzIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNl
IENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKKyAgICBj
YXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBEb3VibGVS
ZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVy
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFs
TG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTUgKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0
dXJhbExvb3A7Cit1c2luZyBTU0FOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZH
PjsKK3VzaW5nIENQU05hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxDUFNDRkc+OwogCi1j
bGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6
Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmF0dXJh
bExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXR1
cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGRz4o
KmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVEb21pbmF0b3JzKCksIHZhbGlkYXRpb25FbmFibGVk
KCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tp
bmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9yc0ZvckNGRzxDRkdLaW5kPihncmFwaCksIHZhbGlk
YXRpb25FbmFibGVkKCkpCiAgICAgeworICAgICAgICAvLyBPT1BTOiBhZGQgc29tZSB2YWxpZGF0
aW9uIHRoYXQgZ3JhcGgncyBlbnRyeXBvaW50cyBhcmUgbm90IGluIGFueSBsb29wLgogICAgIH0K
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAzLDYgKzIwMywxNCBAQCBzdHJ1Y3QgU3dpdGNoRGF0YSB7CiAgICAgYm9vbCBkaWRV
c2VKdW1wVGFibGU7CiB9OwogCitzdHJ1Y3QgRW50cnlTd2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3
aXRjaERhdGEoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBi
bG9ja3M7Cit9OworCiBzdHJ1Y3QgQ2FsbFZhcmFyZ3NEYXRhIHsKICAgICBpbnQgZmlyc3RWYXJB
cmdPZmZzZXQ7CiB9OwpAQCAtMTI3NywxNyArMTI4NSwyMyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisg
ICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBT
d2l0Y2g7CiAgICAgfQogCisgICAgYm9vbCBpc0VudHJ5U3dpdGNoKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvcCgpID09IEVudHJ5U3dpdGNoOworICAgIH0KKwogICAgIGJvb2wgaXNU
ZXJtaW5hbCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKICAgICAgICAgY2FzZSBK
dW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CisgICAgICAg
IGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBjYXNlIFRh
aWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzU3dpdGNoKCkpOwogICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8U3dpdGNoRGF0YSo+KCk7CiAgICAgfQorCisgICAgRW50cnlTd2l0Y2hEYXRh
KiBlbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzRW50cnlTd2l0Y2go
KSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxFbnRyeVN3aXRjaERhdGEqPigpOworICAg
IH0KICAgICAKICAgICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkKICAgICB7CkBAIC0xMzU5LDYg
KzEzNzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gMjsKICAgICAgICAgY2FzZSBT
d2l0Y2g6CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgKyAx
OworICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAgICAgICAgICAgcmV0dXJuIGVudHJ5U3dp
dGNoRGF0YSgpLT5ibG9ja3Muc2l6ZSgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNzIsNiArMTM5NCwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUo
KSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsK
ICAgICAgICAgfQorCisgICAgICAgIGlmIChpc0VudHJ5U3dpdGNoKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrc1tpbmRleF07CisKICAgICAgICAgc3dpdGNo
IChpbmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBA
IC0xNTE4LDYgKzE1NDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXRvbWljc1N0b3JlOgog
ICAgICAgICBjYXNlIEF0b21pY3NTdWI6CiAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoKKyAgICAg
ICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3
LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5p
c1ZhbGlkKCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29u
c3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9j
YWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQogICAg
IAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyog
U3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3
ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRj
aCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0
SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
XAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAg
ICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYg
KzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhKdW1w
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRW50
cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVI
YXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNiArMzM2LDY3IEBAIHZv
aWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRj
aDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBpZiAoIU9w
dGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0
VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0g
Y29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUp
OworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRD
b2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7Cisg
ICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1
bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4n
dCBjb21waWxlIHRoaXMKKyAgICAgICAgLy8gYWZ0ZXJfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBz
aW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJv
dmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVk
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3Jt
YXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+
cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAg
ICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkg
eworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYg
KCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6Cisg
ICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJl
Zm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3Vt
ZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2Rl
LT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAg
IGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJz
KClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2Rl
T2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9hZnRlcl9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRl
Y29kZU9mZnNldCgpICsgMV0udS5wb2ludGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7Cisg
ICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkg
eworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2Nh
bCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5
QnVmZmVyLmdldCgpW2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQp
LmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBqaXRD
b2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNhdGNoRW50cnlwb2ludC0+bV9tYWNoaW5l
Q29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1h
dC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgog
CkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNv
ZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1
Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4Owor
ICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hl
biBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAv
LyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxv
Y2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8v
IFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRo
dW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBp
dCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2Fu
J3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgor
dm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VS
VChieXRlY29kZUluZGV4ICE9IFVJTlRfTUFYKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5lZWRl
ZCBieSBjcmVhdGVQcmVIZWFkZXIoKS4KLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3Jz
KCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOwogICAgICAgICAKICAg
ICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZSA9IG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrOwogICAg
ICAgICAKQEAgLTExMiwxNiArMTEyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVj
a3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAg
ICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAg
ICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRl
cnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xk
Tm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUg
YSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBv
bGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
b2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcElu
Zm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1
bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBs
b2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDYg
KzE0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50
cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0g
PSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFy
KCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3Qs
IGFyZ3VtZW50cyk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAg
ICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDcgKzcyNyw3IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9ncmFwaC5pbml0
aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsK
KyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIHBlcmZvcm1M
aXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5
QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVk
TGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpDb21waWxhdGlv
blBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcgdmFsaWRhdGlv
biwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAg
ICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBk
byB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAg
ICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU0Rv
bWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIH0K
IAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1i
ZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dy
YXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJl
cmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9j
a01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0
IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2ln
bmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsK
LSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAg
ICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToK
LSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVy
Kys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkK
LSAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBb
aXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0
TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNl
IFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7
Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAg
ICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0K
LSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtpbmQgewotICAg
IEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsKLQotY2xhc3Mg
UHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlUG9zdE51bWJl
cmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9z
dE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNp
Z25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Js
b2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNCbG9jayog
YmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAK
LSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJvb2wgaXNTdHJp
Y3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0bykKLSAgICAg
ICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAg
Ci0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8p
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0cmljdEFuY2Vz
dG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0RGVzY2VuZGFu
dE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9
Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMg
YWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAgICAvLyBp
ZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAg
ICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29u
c3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRPZih0bywgZnJvbSkpCi0g
ICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNB
bmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBCYWNrRWRnZTsKLSAgICAg
ICAgCi0gICAgICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAg
ICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tNYXA8TnVtYmVy
aW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNl
IFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpFZGdl
S2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVu
dHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8v
IG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWly
IHByZWRpY3Rpb25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAg
ICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
b2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFy
Z3VtZW50KGFyZyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAg
ICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Qo
CiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihs
b2NrZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiAr
NzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAg
ICAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBj
YXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24o
KSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1
bXA6CiAgICAgICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAg
ICAgICBjYXNlIFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2Fz
ZSBQcm9maWxlQ29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9n
cmFwaC5kdW1wKCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRv
cnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAog
ICAgICAgICBTU0FDYWxjdWxhdG9yIHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIElu
c2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDEyICs5NSwxMiBAQCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0
b3I6Om5ld0RlCiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxS
ZWFjaGluZ0RlZihCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAg
IHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9j
ayksIHZhcmlhYmxlKTsKKyAgICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3Nz
YURvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6
OkRlZiogU1NBQ2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ss
IFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFw
aC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9
IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVm
KiBkZWYgPSBtX2RhdGFbYmxvY2tdLm1fZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAg
cmV0dXJuIGRlZjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NT
QUNhbGN1bGF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNhbGN1bGF0b3IuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1
LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9y
PgogICAgIHZvaWQgY29tcHV0ZVBoaXMoY29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3Rv
cikKICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5t
X2RvbWluYXRvcnMpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3Jh
cGgubV9zc2FEb21pbmF0b3JzKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZh
cmlhYmxlIDogbV92YXJpYWJsZXMpIHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3Jz
LT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAg
ICAgICAgIG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJh
dGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nr
c1dpdGhEZWZzLAogICAgICAgICAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJv
b2wgewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFi
bGUsIGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNyArNTQsOSBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgu
bV9mb3JtID09IFRocmVhZGVkQ1BTKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJS
ZXBsYWNlbWVudHMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAg
ICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBudWxscHRyOworICAgICAgICBtX2dyYXBoLm1fc3NhQ0ZH
ID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KG1fZ3JhcGgpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKTsgLy8gT09QUzogYWxsb3cgdXMgdG8gYXNzZXJ0IGluIGVuc3Vy
ZVNTQURvbWluYXRvcnMgdGhhdCB3ZSdyZSBpbiBTU0EgZm9ybS4KICAgICAgICAgCiAgICAgICAg
IGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRy
YW5zZm9ybWF0aW9uOlxuIik7CkBAIC0xMTAsNyArMTEyLDcgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0
ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAg
ICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVz
ZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBs
YXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRl
bGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAg
ICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayog
YmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAg
LTM4MSwxOCArMzgzLDIyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhl
YWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
c2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXpl
KCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUo
KTsgaS0tOykgeworCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9p
bnRzIGluIERGRyBTU0E6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVu
dHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChh
cmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChu
b2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3Jt
YXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNb
aV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsg
Ly8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVm
aXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAv
LyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZp
dCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5tX2Zvcm0gPSBTU0E7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsNyBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBKdW1w
OgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVj
dFRhaWxDYWxsOgpAQCAtMzIzLDYgKzMyNCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNo
YWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGll
clVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAi
VHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyUHJpbnRlci5oIgorCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjA3OSw2ICs2MDgxLDIxIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgbV9qaXQu
cHJpbnQoIkV4dHJhY3RDYXRjaExvY2FsIik7CisgICAgICAgIC8vbV9qaXQucHJvYmUoW10gKFBy
b2JlQ29udGV4dCopIHsKKyAgICAgICAgLy8gICAgZGF0YUxvZ0xuKCJFeHRyYWN0Q2F0Y2hMb2Nh
bCEiKTsKKyAgICAgICAgLy99KTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmbV9qaXQuaml0
Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW25vZGUtPmNhdGNoT1NSRW50cnlJbmRl
eCgpXTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ2NChDQ2FsbEhl
bHBlcnM6OkFkZHJlc3ModGVtcEdQUiksIHRlbXBHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHRlbXBHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAjZWxzZSAvLyBFTkFCTEUo
RlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBBdFJldHVybjoKQEAgLTYwODcsNiArNjEwNCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9K
SVQpCiAKKworICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAg
ICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpAQCAtNjExNSw3ICs2MTM0LDYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbUNy
ZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFudG9tU3ByZWFkOgogICAgIGNhc2UgUGhhbnRvbU5ld0Fy
cmF5V2l0aFNwcmVhZDoKLSAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJV
bmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NzYsNiArMTY3NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0
KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2Fs
bEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVD
YWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lz
dGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29k
ZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJl
YW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2pp
dC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTc3MCw4ICsxNzc3LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJy
ZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVP
cmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1
ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0
ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3Vt
ZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYg
KCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3Qg
ZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTE4NTUsMTIgKzE4NjMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50
cmllcygpCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhi
bG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRy
YW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUu
Ci0gICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2Nr
SW5kZXhdKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXNDYXRj
aEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9T
UiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8vIGhl
cmUgaWYgbmVlZCBiZS4KKyAgICAgICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQu
YmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTg3
MSwxMCArMTg3OCwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5r
CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0lu
ZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJn
ZXQgJiYgIWJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JF
bnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50
cnlwb2ludCkgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50
c1ZlY3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBh
cmd1bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9k
ZSogc2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3Jt
YXQgPSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwg
Zmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xl
YW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hl
Y2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQu
bm90aWNlQ2F0Y2hFbnRyeXBvaW50KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5k
ZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzT1NSVGFyZ2V0KTsKKyAgICAgICAg
ICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5
SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICB9CiAgICAgfQorCisgICAgbV9qaXQuaml0
Q29kZSgpLT5maW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKTsKKwogICAgIEFTU0VSVChvc3JF
bnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIAogICAgIGlmICh2ZXJi
b3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQog
ICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9n
cmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEVzdGlt
YXRlIGJhc2ljIGJsb2NrIGV4ZWN1dGlvbiBjb3VudHMgYmFzZWQgb24gbG9vcCBkZXB0aC4KICAg
ICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBi
bG9ja0luZGV4LS07KSB7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGJsb2Nr
LT5leGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcERl
cHRoKGJsb2NrKSk7CisgICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAs
IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBicmFuY2ggd2VpZ2h0cyBiYXNlZCBvbiBl
eGVjdXRpb24gY291bnRzLiBUaGlzIGlzbid0IHF1aXRlIGNvcnJlY3QuIEl0J2xsCkBAIC04MCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxs
VGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC05OCw2ICs5OCw4IEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9y
bVN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvbihHcmFwaCYgZ3JhcGgpCiB7CisgICAgLy8g
T09QUy4KKyAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJ1blBoYXNlPFN0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlPihncmFwaCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0
dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9v
cDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBw
dWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04
MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29w
cyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3Jh
cGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVp
bGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4
Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BU
b0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhp
bnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9v
cEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdl
IHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCks
IEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBo
LCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0g
YmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJl
cnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9k
ZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhp
dCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91
c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9L
KQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAgdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygp
LAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBD
b2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3Ry
dWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwg
IjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAg
ICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmlu
Zy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBt
X25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdp
bigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFs
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRz
W2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAg
IG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0
Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJn
ZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdl
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFp
bCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFs
c2U7CkBAIC0xNDM5OSw3ICsxNDQwMCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2so
KSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhp
cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQz
Ml90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQz
Ml90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwx
MyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwg
dWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBj
dXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9h
c3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29w
X2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRl
cl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6
IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lw
T1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tp
cE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxl
Lm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgm
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAg
aWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4o
REZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0
ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlW
YWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAq
UF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJf
dCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4
ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9O
ICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xv
d1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShF
eGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVS
QVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBl
ZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4
ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAj
ZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIp
OworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2Zp
bGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7Cisg
ICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZy
YW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlm
eV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSop
IFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6Cisg
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3Bf
ZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQpJbmRleDogU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL1dU
Ri93dGYvRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAg
ICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBo
LnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVy
ZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBk
b3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVy
IHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVz
ZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318025</attachid>
            <date>2017-08-13 22:39:32 -0700</date>
            <delta_ts>2017-08-14 15:54:08 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>133467</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg4LDcgKzM4OCw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg0LDkgKzI1MTQsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDEsNiArMjUzMiwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVi
bGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJk
c0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dh
cmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFw
aC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FD
Rkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihi
eXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZh
bHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVk
KGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29u
c3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFz
aWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgp
OwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVt
cDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0g
ICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAg
ICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVu
ZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkg
b25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxs
IG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAg
ICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNh
bCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBp
bmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5
cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNp
dDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAs
NyArMTEzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5n
IHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAv
LyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2lu
LgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNw
bGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0
aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUK
ICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3Vu
ZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNl
IG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAg
ICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlm
IChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUo
KSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4
PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAg
ICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0
IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0g
dHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRB
cmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAg
ICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUw
LDYgKzUxNTUsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRp
b25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisK
KyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVy
ZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2lu
dC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5z
aXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVk
VHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBW
ZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNo
U2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBh
bGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9w
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAg
ICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFs
aWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1l
bnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3Vt
ZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50
cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNp
emUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHll
dC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50
cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Un
cmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisg
ICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJl
IHRvIE9TUiBlbnRlciwgd2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2Fm
dGVyX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBt
X2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQo
bV9jdXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxS
ZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwg
cmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1
c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3Vs
ZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZkxvY2FscyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzQXJndW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVy
T2ZMb2NhbHMpLCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAg
ICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGxvY2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5k
LCB2YWx1ZSkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5v
dyBleGl0IGJlY2F1c2Ugd2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVy
IGFueSBsaXZlIGxvY2Fscy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhp
cyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAg
ICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJl
IHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSos
IDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1l
bnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5z
aXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGlj
dChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFy
Z3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1l
bnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3Jp
Z2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENh
bGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAg
IG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgCkBAIC02MjE0LDYgKzYzMzMs
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgbV9ncmFwaC5tX2xvY2FsVmFy
cyA9IG1fbnVtTG9jYWxzOwogICAgIG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1l
dGVyU2xvdHM7CiAKKyAgICBtX2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFND
Rkc+KG1fZ3JhcGgpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5v
c3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKG1fdmVyYm9zZSkKICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVzdC1oYW5kbGUgYmxvY2s6ICIsICpibG9j
aywgIlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDI0NiBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIENGRyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0ZHKTsKKy8vIE9PUFM6IEkgdGhpbmsgZG9taW5hdG9ycyBtaWdodCBqdXN0IHdvcmsgd2l0
aCBtdWx0aXBsZSByb290cywgYnV0IEkgbmVlZCB0byByZWFkIG1vcmUgY29kZSB0byBzZWUuCitj
bGFzcyBDUFNDRkcgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENQU0NGRyk7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgTm9kZSA9IEJhc2ljQmxv
Y2sqOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgY2xhc3MgTWFwIHsKKyAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBNYXAoR3Jh
cGgmIGdyYXBoKQorICAgICAgICAgICAgOiBtX2NmZygqZ3JhcGgubV9jcHNDRkcuZ2V0KCkpCisg
ICAgICAgICAgICAsIG1fcm9vdChtX2NmZy5tX3Jvb3QucHRyKCkpCisgICAgICAgICAgICAsIG1f
bWFwKGdyYXBoKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBNYXAoTWFwJiYgb3Ro
ZXIpCisgICAgICAgICAgICA6IG1fY2ZnKG90aGVyLm1fY2ZnKQorICAgICAgICAgICAgLCBtX3Jv
b3Qob3RoZXIubV9yb290KQorICAgICAgICAgICAgLCBtX3Jvb3RWYWx1ZShXVEZNb3ZlKG90aGVy
Lm1fcm9vdFZhbHVlKSkKKyAgICAgICAgICAgICwgbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG90aGVyLm1fcm9vdCA9IG51bGxwdHI7CisgICAgICAg
IH0KKworICAgICAgICBCbG9ja0luZGV4IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2NmZy5udW1O
b2RlcygpOyB9CisgICAgICAgIFQmIGF0SW5kZXgoQmxvY2tJbmRleCBibG9ja0luZGV4KSB7IHJl
dHVybiAhYmxvY2tJbmRleCA/IG1fcm9vdFZhbHVlIDogbV9tYXAuYXRJbmRleChibG9ja0luZGV4
IC0gMSk7IH0KKyAgICAgICAgY29uc3QgVCYgYXRJbmRleChCbG9ja0luZGV4IGJsb2NrSW5kZXgp
IGNvbnN0IHsgcmV0dXJuICFibG9ja0luZGV4ID8gbV9yb290VmFsdWUgOiBtX21hcC5hdEluZGV4
KGJsb2NrSW5kZXggLSAxKTsgfQorICAgICAgICBUJiBhdChCbG9ja0luZGV4IGJsb2NrSW5kZXgp
IHsgcmV0dXJuIGF0SW5kZXgoYmxvY2tJbmRleCk7IH0KKyAgICAgICAgY29uc3QgVCYgYXQoQmxv
Y2tJbmRleCBibG9ja0luZGV4KSBjb25zdCB7IHJldHVybiBhdEluZGV4KGJsb2NrSW5kZXgpOyB9
CisgICAgICAgIFQmIGF0KEJhc2ljQmxvY2sqIGJsb2NrKSB7IHJldHVybiBibG9jayA9PSBtX3Jv
b3QgPyBtX3Jvb3RWYWx1ZSA6IG1fbWFwLmF0KGJsb2NrKTsgfQorICAgICAgICBjb25zdCBUJiBh
dChCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gYmxvY2sgPT0gbV9yb290ID8gbV9y
b290VmFsdWUgOiBtX21hcC5hdChibG9jayk7IH0KKyAgICAgICAgVCYgb3BlcmF0b3JbXShCbG9j
a0luZGV4IGJsb2NrSW5kZXgpIHsgcmV0dXJuIGF0SW5kZXgoYmxvY2tJbmRleCk7IH0KKyAgICAg
ICAgY29uc3QgVCYgb3BlcmF0b3JbXShCbG9ja0luZGV4IGJsb2NrSW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGF0SW5kZXgoYmxvY2tJbmRleCk7IH0KKyAgICAgICAgVCYgb3BlcmF0b3JbXShCYXNpY0Js
b2NrKiBibG9jaykgeyByZXR1cm4gYXQoYmxvY2spOyB9CisgICAgICAgIGNvbnN0IFQmIG9wZXJh
dG9yW10oQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGF0KGJsb2NrKTsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgQ1BTQ0ZHJiBtX2NmZzsKKyAgICAgICAgQmFzaWNCbG9jayog
bV9yb290OworICAgICAgICBUIG1fcm9vdFZhbHVlOworICAgICAgICBCbG9ja01hcDxUPiBtX21h
cDsKKyAgICB9OworCisgICAgLy8gT09QUy4gTWFrZSB0aGlzIGluZGV4IGJhc2VkISBJdCdzIHRy
aWNreSBiL2Mgd2UgZG9uJ3Qgc2VlIHRoZSBmYWtlIHJvb3QgYXQgY29uc3RydWN0aW9uLgorICAg
IGNsYXNzIFNldCB7CisgICAgcHVibGljOgorICAgICAgICBTZXQoKSA9IGRlZmF1bHQ7CisgICAg
ICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBibG9jayB3YXMgYWRkZWQsIGZhbHNlIGlmIGl0IHdh
cyBhbHJlYWR5IHByZXNlbnQuCisgICAgICAgIGJvb2wgYWRkKEJhc2ljQmxvY2sqIGJsb2NrKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9zZXQuYWRkKGJsb2NrKS5pc05ld0VudHJ5
OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjb250YWlucyhCYXNpY0Jsb2NrKiBibG9jaykg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMoYmxvY2sp
OworICAgICAgICB9CisKKyAgICAgICAgdXNpbmcgaXRlcmF0b3IgPSBIYXNoU2V0PEJhc2ljQmxv
Y2sqPjo6aXRlcmF0b3I7CisKKyAgICAgICAgY2xhc3MgSXRlcmFibGUgeworICAgICAgICBwdWJs
aWM6CisgICAgICAgICAgICBJdGVyYWJsZShHcmFwaCYsIGNvbnN0IFNldCYgc2V0KQorICAgICAg
ICAgICAgICAgIDogbV9zZXQoc2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0CisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2V0Lm1fc2V0LmJlZ2luKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0Cisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2V0Lm1fc2V0LmVuZCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAg
ICBjb25zdCBTZXQmIG1fc2V0OworICAgICAgICB9OworICAgIHByaXZhdGU6CisgICAgICAgIEhh
c2hTZXQ8QmFzaWNCbG9jayo+IG1fc2V0OworICAgIH07CisKKyAgICAvL2NsYXNzIFNldCB7Cisg
ICAgLy9wdWJsaWM6CisgICAgLy8gICAgLy8gT09QUy4KKyAgICAvLyAgICAvL1NldCgpIHsgfQor
ICAgIC8vICAgIAorICAgIC8vICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBibG9jayB3YXMgYWRk
ZWQsIGZhbHNlIGlmIGl0IHdhcyBhbHJlYWR5IHByZXNlbnQuCisgICAgLy8gICAgYm9vbCBhZGQo
QmFzaWNCbG9jayogYmxvY2spCisgICAgLy8gICAgeworICAgIC8vICAgICAgICByZXR1cm4gIW1f
c2V0LnNldChibG9jay0+aW5kZXgpOworICAgIC8vICAgIH0KKyAgICAvLyAgICAKKyAgICAvLyAg
ICBib29sIGNvbnRhaW5zKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdAorICAgIC8vICAgIHsKKyAg
ICAvLyAgICAgICAgaWYgKCFibG9jaykKKyAgICAvLyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAvLyAgICAgICAgcmV0dXJuIG1fc2V0LmdldChibG9jay0+aW5kZXgpOworICAgIC8vICAg
IH0KKyAgICAvLyAgICAKKyAgICAvLyAgICBjbGFzcyBpdGVyYXRvciB7CisgICAgLy8gICAgcHVi
bGljOgorICAgIC8vICAgICAgICBpdGVyYXRvcigpCisgICAgLy8gICAgICAgICAgICA6IG1fZ3Jh
cGgobnVsbHB0cikKKyAgICAvLyAgICAgICAgICAgICwgbV9zZXQobnVsbHB0cikKKyAgICAvLyAg
ICAgICAgICAgICwgbV9pbmRleCgwKQorICAgIC8vICAgICAgICB7CisgICAgLy8gICAgICAgIH0K
KyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKKyAg
ICAvLyAgICAgICAgeworICAgIC8vICAgICAgICAgICAgbV9pbmRleCA9IG1fc2V0LT5tX3NldC5m
aW5kQml0KG1faW5kZXggKyAxLCB0cnVlKTsKKyAgICAvLyAgICAgICAgICAgIHJldHVybiAqdGhp
czsKKyAgICAvLyAgICAgICAgfQorICAgIC8vICAgICAgICAKKyAgICAvLyAgICAgICAgQmFzaWNC
bG9jayogb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgLy8gICAgICAgIAorICAgIC8vICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIC8vICAgICAg
ICB7CisgICAgLy8gICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4Owor
ICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAgIC8vICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIC8vICAgICAgICB7CisgICAg
Ly8gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgLy8gICAgICAgIH0K
KyAgICAvLyAgICAgICAgCisgICAgLy8gICAgcHJpdmF0ZToKKyAgICAvLyAgICAgICAgZnJpZW5k
IGNsYXNzIFNldDsKKyAgICAvLyAgICAgICAgCisgICAgLy8gICAgICAgIEdyYXBoKiBtX2dyYXBo
OworICAgIC8vICAgICAgICBjb25zdCBTZXQqIG1fc2V0OworICAgIC8vICAgICAgICBzaXplX3Qg
bV9pbmRleDsKKyAgICAvLyAgICB9OworICAgIC8vICAgIAorICAgIC8vICAgIGNsYXNzIEl0ZXJh
YmxlIHsKKyAgICAvLyAgICBwdWJsaWM6CisgICAgLy8gICAgICAgIEl0ZXJhYmxlKEdyYXBoJiBn
cmFwaCwgY29uc3QgU2V0JiBzZXQpCisgICAgLy8gICAgICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgp
CisgICAgLy8gICAgICAgICAgICAsIG1fc2V0KHNldCkKKyAgICAvLyAgICAgICAgeworICAgIC8v
ICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAgIC8vICAgICAgICBpdGVyYXRvciBiZWdpbigp
IGNvbnN0CisgICAgLy8gICAgICAgIHsKKyAgICAvLyAgICAgICAgICAgIGl0ZXJhdG9yIHJlc3Vs
dDsKKyAgICAvLyAgICAgICAgICAgIHJlc3VsdC5tX2dyYXBoID0gJm1fZ3JhcGg7CisgICAgLy8g
ICAgICAgICAgICByZXN1bHQubV9zZXQgPSAmbV9zZXQ7CisgICAgLy8gICAgICAgICAgICByZXN1
bHQubV9pbmRleCA9IG1fc2V0Lm1fc2V0LmZpbmRCaXQoMCwgdHJ1ZSk7CisgICAgLy8gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIAorICAg
IC8vICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdAorICAgIC8vICAgICAgICB7CisgICAgLy8g
ICAgICAgICAgICBpdGVyYXRvciByZXN1bHQ7CisgICAgLy8gICAgICAgICAgICByZXN1bHQubV9n
cmFwaCA9ICZtX2dyYXBoOworICAgIC8vICAgICAgICAgICAgcmVzdWx0Lm1fc2V0ID0gJm1fc2V0
OworICAgIC8vICAgICAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBtX3NldC5tX3NldC5zaXplKCk7
CisgICAgLy8gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIC8vICAgICAgICB9CisgICAg
Ly8gICAgICAgIAorICAgIC8vICAgIHByaXZhdGU6CisgICAgLy8gICAgICAgIEdyYXBoJiBtX2dy
YXBoOworICAgIC8vICAgICAgICBjb25zdCBTZXQmIG1fc2V0OworICAgIC8vICAgIH07CisgICAg
Ly8gICAgCisgICAgLy8gICAgSXRlcmFibGUgaXRlcmFibGUoR3JhcGgmIGdyYXBoKSBjb25zdAor
ICAgIC8vICAgIHsKKyAgICAvLyAgICAgICAgcmV0dXJuIEl0ZXJhYmxlKGdyYXBoLCAqdGhpcyk7
CisgICAgLy8gICAgfQorICAgIC8vICAgIAorICAgIC8vICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworICAgIC8vICAgIAorICAgIC8vcHJpdmF0ZToKKyAgICAvLyAgICBCaXRWZWN0
b3IgbV9zZXQ7CisgICAgLy99OworCisgICAgdXNpbmcgTGlzdCA9IEJsb2NrTGlzdDsKKworICAg
IENQU0NGRyhHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICAgICAg
LCBtX3Jvb3QoYWRvcHRSZWYoKm5ldyBCYXNpY0Jsb2NrKFVJTlRfTUFYLCAwLCAwLCAxLjApKSkK
KyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVk
Q1BTIHx8IG1fZ3JhcGgubV9mb3JtID09IExvYWRTdG9yZSk7CisKKyAgICAgICAgLy8gT09QUzog
c3RvcCBsZWFraW5nIHRoaXMKKyAgICAgICAgRW50cnlTd2l0Y2hEYXRhKiBkYXRhID0gbmV3IEVu
dHJ5U3dpdGNoRGF0YTsKKyAgICAgICAgZGF0YS0+YmxvY2tzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykKKyAgICAgICAgICAgIGRhdGEt
PmJsb2Nrcy51bmNoZWNrZWRBcHBlbmQoZW50cnlwb2ludCk7CisgICAgICAgIC8vIE9PUFM6IHNo
b3VsZCB3ZSBwdXQgdGhpcyBpbnRvIGdyYXBoLm1fbm9kZXMgb3IganVzdCBhbGxvY2F0ZSBvbiB0
aGUgc2lkZSBsaWtlIHRoaXM/CisgICAgICAgIC8vIE9PUFM6IHN0b3AgbGVha2luZyB0aGlzIEVu
dHJ5U3dpdGNoIG5vZGUuCisgICAgICAgIG1fcm9vdC0+YXBwZW5kKG5ldyBERkc6Ok5vZGUoRW50
cnlTd2l0Y2gsIE5vZGVPcmlnaW4oKSwgT3BJbmZvKGRhdGEpKSk7CisKKyAgICAgICAgLy8gT09Q
UzogbWF5YmUgdGhpcyB3aWxsIGxlYWQgdG8gYmFkbmVzcz8KKyAgICAgICAgbV9yb290LT5pbmRl
eCA9IFVJTlRfTUFYOworCisgICAgICAgIG1fZW50cnlwb2ludFByZWRlY2Vzc29yTGlzdC5hcHBl
bmQobV9yb290LnB0cigpKTsKKyAgICB9CisKKyAgICB+Q1BTQ0ZHKCkKKyAgICB7CisgICAgICAg
IC8vIE9PUFM6IEl0J2QgYmUgbmljZSBpZiB3ZSBjb3VsZCBhc3NlcnQgZXZlbiBtb3JlIHRoaW5n
cywgbGlrZSBjZXJ0YWluIG1ldGhvZHMgbmV2ZXIgZ2V0IGNhbGxlZCBvbiBtX3Jvb3QuCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fcm9vdC0+c2l6ZSgpID09IDEpOworICAgIH0KKworICAgIE5v
ZGUgcm9vdCgpIHsgcmV0dXJuIG1fcm9vdC5wdHIoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisK
KyAgICBERkc6Ok5vZGU6OlN1Y2Nlc3NvcnNJdGVyYWJsZSBzdWNjZXNzb3JzKE5vZGUgbm9kZSkg
eyByZXR1cm4gbm9kZS0+c3VjY2Vzc29ycygpOyB9CisgICAgUHJlZGVjZXNzb3JMaXN0JiBwcmVk
ZWNlc3NvcnMoTm9kZSBub2RlKSB7IHJldHVybiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmNvbnRhaW5zKG5vZGUpID8gbV9lbnRyeXBvaW50UHJlZGVjZXNzb3JMaXN0IDogbm9kZS0+
cHJlZGVjZXNzb3JzOyB9CisKKyAgICB1bnNpZ25lZCBpbmRleChOb2RlIG5vZGUpIGNvbnN0IHsg
cmV0dXJuIG5vZGUgPT0gbV9yb290LnB0cigpID8gMCA6IG5vZGUtPmluZGV4ICsgMTsgfQorICAg
IE5vZGUgbm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gIWluZGV4ID8gbV9yb290
LnB0cigpIDogbV9ncmFwaC5ibG9jayhpbmRleCAtIDEpOyB9CisgICAgdW5zaWduZWQgbnVtTm9k
ZXMoKSBjb25zdCB7IHJldHVybiBtX2dyYXBoLm51bUJsb2NrcygpICsgMTsgfQorICAgIAorICAg
IFBvaW50ZXJEdW1wPEJhc2ljQmxvY2s+IGR1bXAoTm9kZSBub2RlKSBjb25zdCB7IHJldHVybiBw
b2ludGVyRHVtcChub2RlKTsgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CisgICAgeworICAgICAgICBtX2dyYXBoLmR1bXAob3V0KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgR3JhcGgmIG1fZ3JhcGg7CisgICAgUmVmPEJhc2ljQmxvY2s+IG1fcm9vdDsKKyAgICBQ
cmVkZWNlc3Nvckxpc3QgbV9lbnRyeXBvaW50UHJlZGVjZXNzb3JMaXN0OworfTsKKworY2xhc3Mg
U1NBQ0ZHIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTU0FDRkcpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHR5cGVkZWYgQmFzaWNCbG9jayogTm9kZTsK
QEAgLTQzLDExICsyODEsMTMgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVz
aW5nIE1hcCA9IEJsb2NrTWFwPFQ+OwogICAgIHR5cGVkZWYgQmxvY2tMaXN0IExpc3Q7CiAKLSAg
ICBDRkcoR3JhcGgmIGdyYXBoKQorICAgIFNTQUNGRyhHcmFwaCYgZ3JhcGgpCiAgICAgICAgIDog
bV9ncmFwaChncmFwaCkKICAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9m
b3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOwogICAgIH0KIAorICAg
IC8vIE9PUFM6IHdlIG5lZWQgdG8gZmFrZSBhIHJvb3Qgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIGVu
dHJ5cG9pbnRzLgogICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03MSw2ICszMTEsMjAgQEAgcHJpdmF0ZToK
ICAgICBHcmFwaCYgbV9ncmFwaDsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1
ZT46OnR5cGU+CitDUFNDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoZ3JhcGgubV9jcHNDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9jcHNDRkc7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FDRkcmIHNlbGVj
dENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9zc2FDRkcp
OworICAgIHJldHVybiAqZ3JhcGgubV9zc2FDRkc7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1
bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNh
c2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMg
LSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2Us
IGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIg
b3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMu
c2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRI
ZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMp
IHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0
VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tz
SW5QcmVPcmRlcigpOwogICAgICAgICAKQEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2Nr
KSkgewogICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAg
ICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0
cmljdCBkb21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3Vy
IG93biBibG9jayBpZgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0
aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAg
ICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24n
dCBkb21pbmF0ZSB1cy4KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3Ry
aWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFw
aC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewog
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlk
YXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1f
YmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWlu
YXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoLnNldE5vZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAg
IGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAgIGNhc2Ug
b3BfYWZ0ZXJfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dl
dF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKQEAgLTQyMiw2ICs0MjMsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dp
dGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIEZv
cmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoR3JhcGgm
IGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVEb21pbmF0b3JzKCkp
CisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKSkKICAg
ICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5zdXJlQmFja3dhcmRzRG9taW5h
dG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOworICAgIFNTQURvbWluYXRv
cnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBtX2JhY2t3YXJkc0Rv
bWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgog
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVy
KCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNs
ZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFy
Z3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkp
CisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAg
IC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3Ig
KEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgt
LTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxl
ci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCBWZWN0b3I8
RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAgZHVtcEhlYWRlcihvdXQsIGxp
bmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAg
IAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgIG1fZ3JhcGguZW5zdXJlTmF0
dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgbV9n
cmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAgICBjb25zdCBjaGFyKiBwcmVm
aXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1ibHlQcmVmaXggPSAiICAgICAg
ICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNl
IFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNh
c2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5Niw2ICsxOTcsNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJv
bUpTTWFwQnVja2V0OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVu
cmVhY2hhYmxlOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0
T1NSRW50cnlMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9t
aW5hdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9t
aW5hdG9ycy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6IHB1Ymxp
YyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2Ns
YXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBX
VEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0
b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAgIH0KIH07
CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNE
b21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZH
Pjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhH
cmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRv
cnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBn
cmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAg
ICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0g
PT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVk
Z2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25l
ciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5v
ZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NzAsNiArMTk3MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgSXNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKKyAgICAgICAgY2FzZSBFbnRyeVN3aXRj
aDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAgICAg
IGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xOTgzLDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7Citl
bnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJ
bnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR05h
dHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2
ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCkBAIC03Myw3ICs3
Miw2IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxh
bikKICAgICAsIG1fY29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVk
QmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX2NmZyhzdGQ6Om1ha2Vf
dW5pcXVlPENGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBt
X2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJh
dGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVnaXN0ZXJpbmcpCkBAIC00MTEsNyArNDA5LDggQEAg
Ym9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tI
ZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBi
bG9jaywgUGhpTm9kZUR1bXBNb2RlIHBoaU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRl
eHQpCiB7Ci0gICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5D
b250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxv
Y2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/
ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKKyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxv
Y2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50
aWMsIGNvbnRleHQpLCAiKToiLAorICAgICAgICBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIg
KHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJs
b2NrLT5pc0NhdGNoRW50cnlwb2ludCA/ICIgKENhdGNoIEVudHJ5cG9pbnQpIiA6ICIiLCAiXG4i
KTsKICAgICBpZiAoYmxvY2stPmV4ZWN1dGlvbkNvdW50ID09IGJsb2NrLT5leGVjdXRpb25Db3Vu
dCkKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9j
ay0+ZXhlY3V0aW9uQ291bnQsICJcbiIpOwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRl
Y2Vzc29yczoiKTsKQEAgLTQyMiwxOCArNDIxLDE3IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hl
YWRlcihQcmludFN0cmVhbSYKICAgICBpZiAoYmxvY2stPnRlcm1pbmFsKCkpIHsKICAgICAgICAg
Zm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAg
ICAgICAgICBvdXQucHJpbnQoIiAiLCAqc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGlmIChtX3By
ZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKCIsIG1fcHJlUG9z
dE51bWJlcmluZy0+ZWRnZUtpbmQoYmxvY2ssIHN1Y2Nlc3NvciksICIpIik7CiAgICAgICAgIH0K
ICAgICB9IGVsc2UKICAgICAgICAgb3V0LnByaW50KCIgPGludmFsaWQ+Iik7CiAgICAgb3V0LnBy
aW50KCJcbiIpOwotICAgIGlmIChtX2RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkg
ewotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIG1fZG9taW5h
dG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIERvbWluYXRlczogIiwgbV9kb21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9j
ayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRp
ZXI6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOwot
ICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6
ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKEJsb2NrTGlzdCgx
LCBibG9jaykpLCAiXG4iKTsKLSAgICB9CisgICAgLy8gT09QUy4KKyAgICAvL2lmIChtX2RvbWlu
YXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgeworICAgIC8vICAgIG91dC5wcmludChwcmVm
aXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2sp
LCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1f
ZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBv
dXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+
ZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOworICAgIC8vICAgIG91dC5wcmludChw
cmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5p
dGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoQmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIpOwor
ICAgIC8vfQogICAgIGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFs
aWQoKSkgewogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVz
IGJ5OiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIp
OwogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzOiAiLCBt
X2JhY2t3YXJkc0RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CkBA
IC00NDYsMjkgKzQ0NCwyOCBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJl
YW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KLSAgICBpZiAo
bV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmUvUG9z
dCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJlTnVtYmVyKGJsb2NrKSwgIi8i
LCBtX3ByZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2spLCAiXG4iKTsKLSAgICBpZiAo
bV9uYXR1cmFsTG9vcHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0g
bV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgewotICAgICAgICAgICAgb3V0LnByaW50
KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5zOiIpOwotICAgICAgICAgICAgVmVjdG9y
PEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBzb3J0ZWRCbG9j
a0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7Ci0gICAgICAgICAgICBzdGQ6OnNvcnQo
c29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7Ci0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc29ydGVkQmxvY2tMaXN0LnNpemUoKTsgKytp
KQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBzb3J0ZWRCbG9ja0xpc3RbaV0pOwot
ICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5nTG9vcHMgPQotICAgICAgICAg
ICAgbV9uYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwotICAgICAgICBpZiAoIWNvbnRhaW5p
bmdMb29wcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIENv
bnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNvbnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIiAiLCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7Ci0gICAgICAgICAgICBv
dXQucHJpbnQoIlxuIik7Ci0gICAgICAgIH0KLSAgICB9CisgICAgLy8gT09QUy4KKyAgICAvL2lm
IChtX25hdHVyYWxMb29wcykgeworICAgIC8vICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9v
cCA9IG1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKKyAgICAvLyAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5zOiIpOworICAgIC8vICAgICAg
ICBWZWN0b3I8QmxvY2tJbmRleD4gc29ydGVkQmxvY2tMaXN0OworICAgIC8vICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kpCisgICAgLy8gICAgICAgICAg
ICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7CisgICAgLy8gICAg
ICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9ja0xpc3QuYmVnaW4oKSwgc29ydGVkQmxvY2tMaXN0LmVu
ZCgpKTsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2Nr
TGlzdC5zaXplKCk7ICsraSkKKyAgICAvLyAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBzb3J0
ZWRCbG9ja0xpc3RbaV0pOworICAgIC8vICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8g
ICAgfQorICAgIC8vICAgIAorICAgIC8vICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGNv
bnRhaW5pbmdMb29wcyA9CisgICAgLy8gICAgICAgIG1fbmF0dXJhbExvb3BzLT5sb29wc09mKGJs
b2NrKTsKKyAgICAvLyAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5pc0VtcHR5KCkpIHsKKyAgICAv
LyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7
CisgICAgLy8gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWluaW5nTG9vcHMu
c2l6ZSgpOyArK2kpCisgICAgLy8gICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqY29udGFpbmlu
Z0xvb3BzW2ldLT5oZWFkZXIoKSk7CisgICAgLy8gICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAg
ICAvLyAgICB9CisgICAgLy99CiAgICAgaWYgKCFibG9jay0+cGhpcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5vZGVzOiIpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKSB7CkBAIC01MDIsOCArNDk5
LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICBvdXQu
cHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwg
bV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlmaWNhdGlvblN0YXRlLCAiOyBS
ZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9y
bSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0
RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVsc2UKLSAgICAgICAgb3V0LnBy
aW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVudHMpLCAiXG4iKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykK
KyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5
LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJcbiIpOworICAgIH0KICAgICBv
dXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAt
NjQwLDggKzYzOSwxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2lj
CiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQogewogICAgIFZlY3RvcjxCYXNp
Y0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFwcGVuZChibG9jaygwKSk7Ci0g
ICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVu
dHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hh
YmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQpOworICAgIH0K
ICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJs
b2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03OTgsOSArNzk5LDEwIEBAIHZvaWQgR3Jh
cGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZvaWQgR3JhcGg6OmludmFsaWRhdGVDRkco
KQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBu
dWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21p
bmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1f
Y3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG51bGxw
dHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG51bGxwdHI7CiAgICAgbV9i
YWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxw
dHI7CkBAIC04NTAsMTIgKzg1MiwzNSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUHJlT3Jk
ZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlz
dDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVu
dHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9p
bnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAgICAgICAgICAgd29ya2xpc3QucHVzaChi
bG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkgeworICAgICAgICBhdXRvIHZhbGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9y
cykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAg
ICAgICAgICAgICAgaWYgKCFhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7
CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAg
ICAgICAgICAgICAgIGlmICghYiB8fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEs
IGIpKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA8IGopOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
bV9mb3JtID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRh
dGVSZXN1bHRzKGVuc3VyZVNTQURvbWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC04NjMsNyArODg4LDggQEAgQmxvY2tMaXN0IEdyYXBoOjpi
bG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3Jk
ZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOwor
ICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAg
IHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0
ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAg
ICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC04NzYsNiArOTAyLDEyIEBAIEJsb2NrTGlz
dCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyeXBvaW50cy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZW50cnlwb2ludHMuY29udGFpbnMocmVzdWx0W3Jlc3VsdC5z
aXplKCkgLSBpIC0gMV0pKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0x
NDcyLDMwICsxNTA0LDQzIEBAIHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlvbkZhaWx1cmUoCiAgICAg
bG9nREZHQXNzZXJ0aW9uRmFpbHVyZSgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGluZyBi
bG9jayAiLCBwb2ludGVyRHVtcChibG9jayksICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9u
LCBhc3NlcnRpb24pOwogfQogCi1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygp
CitDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAg
aWYgKCFtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNEb21pbmF0
b3JzOworfQorCitTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7
Ci0gICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9kb21pbmF0b3JzOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7
CisgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0
ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FE
b21pbmF0b3JzOwogfQogCi1QcmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJlUHJlUG9zdE51
bWJlcmluZygpCitDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMo
KQogewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1i
ZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICBy
ZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0g
U1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7
CisgICAgaWYgKCFtX2Nwc05hdHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAq
bV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVy
YWxMb29wcygpCitTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMo
KQogewotICAgIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQot
ICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigq
dGhpcyk7Ci0gICAgcmV0dXJuICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVCht
X2Zvcm0gPT0gU1NBKTsKKyAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3Nz
YU5hdHVyYWxMb29wcykKKyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9v
cHM7CiB9CiAKIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IC8vIFdlIGNvdWxkIGNoYW5nZSB0aGlz
LCBidXQgaXQncyBvbmx5IHVzZWQgaW4gU1NBIGZvciBub3csIGFuZCB3ZSBkb24ndCBuZWVkIHR3
byBncmFwaCBmaWVsZHMgeWV0IGZvciB0d28gdHlwZXMgb2YgYmFja3dhcmRzIENGRy4KICAgICBp
ZiAoIW1fYmFja3dhcmRzQ0ZHKQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFja3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsK
QEAgLTE1MDMsNiArMTU0OCw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJk
c0NGRygKIAogQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWlu
YXRvcnMoKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICgh
bV9iYWNrd2FyZHNEb21pbmF0b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4g
Km1fYmFja3dhcmRzRG9taW5hdG9yczsKQEAgLTE1MTAsNiArMTU1Niw3IEBAIEJhY2t3YXJkc0Rv
bWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMmIEdyYXBoOjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzKQogICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVy
biAqbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTU3NCw3IEBAIE1l
dGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJn
dW1lbnROb2RlID0gbV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBO
b2RlKiBhcmd1bWVudE5vZGUgPSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDAp
KS0+dmFsdWVbYXJndW1lbnRdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9k
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTIgKzU0LDE3IEBAIG5hbWVzcGFjZSBERkcgewog
CiBjbGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwotY2xhc3Mg
Q0ZHOworY2xhc3MgQ1BTQ0ZHOworY2xhc3MgU1NBQ0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3Bz
OwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9z
dE51bWJlcmluZzsKKwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsK
K3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1
cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9
IE5hdHVyYWxMb29wczxTU0FDRkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01h
cDsKIApAQCAtOTAxLDkgKzkwNiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2Vy
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBE
b21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5z
dXJlUHJlUG9zdE51bWJlcmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExv
b3BzKCk7CisgICAgQ1BTRG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNT
QURvbWluYXRvcnMmIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMm
IGVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsK
ICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAg
ICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzKCk7CkBAIC05MjEsNyArOTI3LDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVj
dG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRy
PEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1f
ZW50cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAg
ICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhh
c2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1Niwx
NyArOTYzLDE4IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhB
ZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0
aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50
czsKKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9p
bnRUb0FyZ3VtZW50czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3Mu
IEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2Nr
ZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKLSAgICAK
KwogICAgIFNlZ21lbnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxl
QWNjZXNzRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9h
cmd1bWVudFBvc2l0aW9uczsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVy
RGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJhZzxTd2l0Y2hE
YXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dpdGNoRGF0YT4g
bV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRhPiBtX211bHRp
R2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4gbV9tdWx0aVB1
dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YT4gbV9vYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtOTgyLDEwICs5OTAsMTIgQEAgcHVibGljOgogICAg
IEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xv
YWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRv
cj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25p
cHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0
b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+
IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBt
X2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBt
X3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFj
a3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpczsKQEAgLTEwMDksNiArMTAxOSw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1f
cmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wg
bV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252
ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9p
bmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+
PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2b2lkIHNldExp
dmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5p
dGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0g
ICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRl
ZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9v
dC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7
Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0Fy
ZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQu
bnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5h
cmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAg
ICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3Jh
cGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUp
Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgZm9yIChCYXNp
Y0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5j
ZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3Rh
bnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0
ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFT
dHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1i
ZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0
VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3Jt
YXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7
Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZs
dXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07CisgICAgICAgICAg
ICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVkSlNW
YWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQg
PSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAo
Zm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJP
bmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEJv
b2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50
KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgorICAgICAg
ICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNv
ZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9y
bWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAg
ICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQu
YXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0
ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5sb2NhbChp
KS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDEgOyBi
bG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAg
IEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAg
aWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBv
aW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorCisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIo
KSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSkg
eworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMgYWJvdmUuCiAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVChibG9jay0+aXNS
ZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZhbHNlOwogICAg
ICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYgKzM2OSwxMyBAQCBp
bmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAg
ICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50cnlTd2l0Y2g6IHsK
KyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayog
dGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2NrcykKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0QmxvY2spOworICAgICAg
ICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgogICAg
IGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2Rl
OjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnku
c2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRy
eXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9G
aXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVF
dmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAog
ICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAg
Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2Vh
cmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50
cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAg
ICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0t
Pm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NS
RW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMu
YmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2lu
dERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJl
dHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAw
OworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBj
YXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVu
dHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBl
bnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5z
aWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZv
cm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5
cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJn
dW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhp
dChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiw2ICsxNTgsNyBAQCBwcml2YXRl
OgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVu
dHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9yPENhdGNoRW50cnlwb2ludERhdGE+IGNhdGNo
RW50cnlwb2ludHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhp
dDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292
ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpA
QCAtMTY4LDYgKzE5NSw4IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBt
X29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAgICBib29sIGFi
YW5kb25PU1JFbnRyeTsKKworICAgIE1hbGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9TUkVudHJ5QnVm
ZmVyOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNjcsNiArMzY3LDkgQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVj
ayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBpZiAobV9ncmFw
aC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hP
U1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVl
KSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0
YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxK
U1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVu
dHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNz
T2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRj
aEVudHJ5cG9pbnQoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJs
b2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFy
Z3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hF
bnRyeXBvaW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9m
Q0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFi
bGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRl
Y29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1l
bnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2lj
QmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRj
aEVudHJ5cG9pbnQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxv
Y2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYg
KCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVu
ZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0
T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJh
c2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAv
LyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFi
bGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2Nr
JiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQg
bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxv
Y2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0
cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENv
ZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxMb29w
ID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQog
ICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3Jt
ID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsK
LSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExv
b3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMo
KTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
bV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAgICAg
ICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFjaCBs
b29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBiZWxv
bmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxv
Y2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFs
b29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9vcERhdGEmIGRh
dGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRzIHBy
ZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93IHdo
YXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFw
aC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3Ao
bG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAg
IGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bG9v
cChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5p
bmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRl
ckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAgICAgICAgICAg
IG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgq
b3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAgICAg
ICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRlcyk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3AuaGVh
ZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJl
ZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+
ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHByZUhlYWRlciA9
IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9y
PGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5Q
cmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVy
TW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBjdXJy
ZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAgICAgICAgIGN1
cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJl
bnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3Bz
LT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAgIGxvb3BTdGFj
ay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJlbWVtYmVy
OiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBzbyBp
ZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVjYXVz
ZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBsb29w
cy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJvZHlJ
bmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5hdChi
b2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dy
YXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhlYWRl
ck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1fZGF0
YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBi
b29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAm
JiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVu
dHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQ
cmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2Fs
KCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAg
ICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
b29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxvY2tJ
bnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7CisgICAgLy8g
T09QUzogbWF5YmUgdXNlIGhhc2hzZXQgZm9yIHRoaXMgYXNzZXJ0LgorICAgIFJFTEVBU0VfQVNT
RVJUKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7IC8vIEFuIGVudHJ5cG9p
bnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AhCisKICAgICAvLyBGSVhNRTogSWYgd2UgcnVuIHRo
aXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3aXRoIGEgYml6YXJyZSBh
cnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBsaWtlOgogICAgIC8vCkBA
IC02OSw3ICs3Miw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgK
ICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJlcXVlbmNpZXMgb2YgdGhl
IGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBmbG9hdCBmcmVxdWVuY3kg
PSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNz
b3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywg
cHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0
ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBm
cmVxdWVuY3kgPSBzdGQ6Om1heChmcmVxdWVuY3ksIHByZWRlY2Vzc29yLT5leGVjdXRpb25Db3Vu
dCk7CiAgICAgfQpAQCAtMTAzLDcgKzEwNiw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRl
cihHcmFwaCYgZ3JhcGgKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXgg
PSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRl
Y2Vzc29ySW5kZXgrKykgewogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2Nr
LT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgIGlmIChncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3Jh
cGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29y
SW5kZXgtLV0gPSBibG9jay0+cHJlZGVjZXNzb3JzLmxhc3QoKTsKICAgICAgICAgYmxvY2stPnBy
ZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0
b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1f
Z3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05h
dHVyYWxMb29wcygpOwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXgg
PSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29w
cy0+bG9vcChsb29wSW5kZXgpOwotICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVI
ZWFkZXIgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9j
cHNOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAg
Y29uc3QgQ1BTTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5s
b29wKGxvb3BJbmRleCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRl
ciA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG5lZWRzTmV3UHJlSGVhZGVyID0gZmFsc2U7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRl
cigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7CiAgICAgICAg
ICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLT5wcmVkZWNl
c3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9k
b21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3IpKQorICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgewogICAgICAgICAgICAgICAgICAg
ICBleGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2
NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1
bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYm
IG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
aXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVu
dCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAg
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExv
Y2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1
bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBu
b2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZs
dXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzgsMTEgKzc4LDEzIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBo
JiBncmFwaCwgTm9kZSoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgY2FzZSBEb3VibGVSZXA6CiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBjYXNl
IFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0
ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTUg
KzM0LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdHlwZWRlZiBX
VEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Cit1c2luZyBTU0FOYXR1cmFsTG9vcCA9
IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxMb29wID0gV1RGOjpO
YXR1cmFsTG9vcDxDUFNDRkc+OwogCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpO
YXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIE5h
dHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6
IFdURjo6TmF0dXJhbExvb3BzPENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVEb21pbmF0
b3JzKCksIHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8
Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9yc0ZvckNG
RzxDRkdLaW5kPihncmFwaCksIHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgeworICAgICAgICAv
LyBPT1BTOiBhZGQgc29tZSB2YWxpZGF0aW9uIHRoYXQgZ3JhcGgncyBlbnRyeXBvaW50cyBhcmUg
bm90IGluIGFueSBsb29wLgogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDYgKzIwMywxNCBAQCBzdHJ1Y3QgU3dp
dGNoRGF0YSB7CiAgICAgYm9vbCBkaWRVc2VKdW1wVGFibGU7CiB9OwogCitzdHJ1Y3QgRW50cnlT
d2l0Y2hEYXRhIHsKKyAgICBFbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBibG9ja3M7Cit9OworCiBzdHJ1Y3QgQ2FsbFZhcmFyZ3NE
YXRhIHsKICAgICBpbnQgZmlyc3RWYXJBcmdPZmZzZXQ7CiB9OwpAQCAtMTI3NywxNyArMTI4NSwy
MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQogCisgICAgYm9vbCBpc0VudHJ5
U3dpdGNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEVudHJ5U3dpdGNo
OworICAgIH0KKwogICAgIGJvb2wgaXNUZXJtaW5hbCgpCiAgICAgewogICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKICAgICAgICAgY2FzZSBKdW1wOgogICAgICAgICBjYXNlIEJyYW5jaDoKICAgICAg
ICAgY2FzZSBTd2l0Y2g6CisgICAgICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgICAgIGNhc2Ug
UmV0dXJuOgogICAgICAgICBjYXNlIFRhaWxDYWxsOgogICAgICAgICBjYXNlIERpcmVjdFRhaWxD
YWxsOgpAQCAtMTM0OSw2ICsxMzYzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGlzU3dp
dGNoKCkpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3dpdGNoRGF0YSo+KCk7CiAgICAg
fQorCisgICAgRW50cnlTd2l0Y2hEYXRhKiBlbnRyeVN3aXRjaERhdGEoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzRW50cnlTd2l0Y2goKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxF
bnRyeVN3aXRjaERhdGEqPigpOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBudW1TdWNjZXNz
b3JzKCkKICAgICB7CkBAIC0xMzU5LDYgKzEzNzksOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gMjsKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNo
RGF0YSgpLT5jYXNlcy5zaXplKCkgKyAxOworICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgorICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5U3dpdGNoRGF0YSgpLT5ibG9ja3Muc2l6ZSgpOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTEzNzIsNiAr
MTM5NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBz
d2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0
YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCisgICAgICAgIGlmIChpc0VudHJ5
U3dpdGNoKCkpCisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nrc1tp
bmRleF07CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAg
ICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTE4LDYgKzE1NDQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGNhc2UgQXRvbWljc1N0b3JlOgogICAgICAgICBjYXNlIEF0b21pY3NTdWI6CiAgICAgICAg
IGNhc2UgQXRvbWljc1hvcjoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTkzMCw2ICsxOTU3LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7CiAgICAgfQorCisgICAgdWludDMyX3Qg
Y2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
dWludDMyX3Q+KCk7CisgICAgfQogICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0
aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyog
dmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RP
U1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhl
IERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11
c3RHZW5lcmF0ZSkgXApAQCAtMzg2LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhKdW1wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
QnJhbmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgbWFjcm8oRW50cnlTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhSZXR1cm4sIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUYWlsQ2FsbCwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oRGlyZWN0VGFp
bENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZH
SklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklu
bGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVk1JbmxpbmVzLmgiCkBAIC0zMzYsNiArMzM3LDY3IEBAIHZvaWQqIHByZXBhcmVPU1JF
bnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCog
cHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVu
dHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVj
LT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENv
ZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRD
b2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpD
YXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVu
dHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVu
dHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1
bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndCBjb21waWxlIHRoaXMK
KyAgICAgICAgLy8gYWZ0ZXJfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2
ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdl
J3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29t
cGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsg
YXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKyth
cmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+cih2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRj
aEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNl
IERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVl
LmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBU
aGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxv
d2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZH
OjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxs
eSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQor
CisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWly
ZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSgh
dm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bj
b2RlKSA9PSBvcF9hZnRlcl9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4
ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsg
MV0udS5wb2ludGVyKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAo
IVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW2lu
ZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAg
ICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxl
QWRkcmVzc0F0T2Zmc2V0KGNhdGNoRW50cnlwb2ludC0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24g
MjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRG
R0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUg
Ik9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwy
MCBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJu
IG9zckVudHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hFbnRyeXBv
aW50RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1f
bWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50
cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4
cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9y
PEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2lu
dGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2du
aXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQq
IHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJ
ZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNh
dGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2Rl
QmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiREZHQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRl
ICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgi
CiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChieXRlY29kZUluZGV4ICE9IFVJTlRfTUFYKTsKICAgICAgICAgCiAg
ICAgICAgIC8vIE5lZWRlZCBieSBjcmVhdGVQcmVIZWFkZXIoKS4KLSAgICAgICAgbV9ncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygp
OwogICAgICAgICAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZSA9IG1fZ3JhcGgubV9wcm9m
aWxlZEJsb2NrOwogICAgICAgICAKQEAgLTExMiwxNiArMTEzLDE3IEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgw
KS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudHMg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSkt
PnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxp
bmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xk
Tm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAg
ICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0
eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAg
ICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07Cisg
ICAgICAgICAgICAgICAgb2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAg
ICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAg
ICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAg
IGFyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChp
bnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2Nh
bCkgewpAQCAtMTM5LDggKzE0MSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3Jl
YXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAK
ICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VS
VChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1f
ZW50cnlwb2ludHNbMF0gPSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmNsZWFyKCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuYWRkKG5ld1Jvb3QsIGFyZ3VtZW50cyk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNo
YWJpbGl0eSgpOwogICAgICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCisg
ICAgICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4obV9ncmFw
aCk7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzI3LDcgKzcyNyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1
dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwot
ICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1
cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3Jh
cGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAg
ICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDQ3MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUlu
VGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFs
eXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0
ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxp
ZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAg
ICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3RO
dW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAg
ZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJM
RShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
REZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmlu
ZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBo
KTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmts
aXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAw
OwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRo
T3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRl
cikgewotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0
ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3Jr
bGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3Jr
bGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBW
aXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1i
ZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVz
cGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVk
Z2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRn
ZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tF
ZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Js
b2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENy
b3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwot
ICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNC
bG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQot
ICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJu
IG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3Ry
aWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxv
Y2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBy
ZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIo
ZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9y
T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAg
IH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20s
IEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5j
ZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2Yo
QmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3
aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdl
LiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBl
ZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChC
YXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
IChpc1N0cmljdERlc2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9y
d2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkK
LSAgICAgICAgICAgIHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBD
cm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsK
LSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51
bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJ
bnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwx
NiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2Nr
LiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhh
dmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAg
ICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5m
aW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
YXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1l
dGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNb
YXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAg
IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNlIFRvTnVtYmVyOgog
ICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2Fs
OgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rp
b24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAgICAgIGNhc2UgQnJh
bmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKICAg
ICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAg
IH0KIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFw
aC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBTU0FDYWxjdWxhdG9y
IHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25T
ZXQobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1
bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q2FsY3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEyICs5NSwx
MiBAQCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0RlCiAKIFNTQUNhbGN1
bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZihCYXNpY0Jsb2Nr
KiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiByZWFjaGluZ0RlZkF0
VGFpbChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKKyAgICBy
ZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxv
Y2spLCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6
cmVhY2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkK
IHsKLSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20o
YmxvY2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9zc2FEb21pbmF0
b3JzLT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBtX2RhdGFbYmxvY2td
Lm1fZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRlZjsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZvaWQgY29tcHV0ZVBo
aXMoY29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRvcnMpOworICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzKTsK
ICAgICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDogbV92YXJpYWJsZXMp
IHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5l
ZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1fZ3JhcGgubV9zc2FE
b21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJP
ZigKICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZzLAogICAgICAgICAg
ICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2NrKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOSBAQCBwdWJs
aWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BT
KTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVudHMoKTsKLSAgICAg
ICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGgubV9jcHNDRkcg
PSBudWxscHRyOworICAgICAgICBtX2dyYXBoLm1fc3NhQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxT
U0FDRkc+KG1fZ3JhcGgpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsg
Ly8gT09QUzogYWxsb3cgdXMgdG8gYXNzZXJ0IGluIGVuc3VyZVNTQURvbWluYXRvcnMgdGhhdCB3
ZSdyZSBpbiBTU0EgZm9ybS4KICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAg
ICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRyYW5zZm9ybWF0aW9uOlxuIik7CkBA
IC0xMTAsNyArMTEyLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0aGUg
UGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxh
dGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlzIHN1
Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGlu
c2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAgICAgICBt
X2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6
OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAg
ICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJpYWJsZUZv
clNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgzLDIyIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAg
ICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJs
b2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9y
bWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6CisgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsK
KyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0
IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9h
cmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAgICAgICAg
Tm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAgICAgIGZv
cm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRo
YXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcu
CisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhh
dCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4K
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkBAIC00
MTYsNyArNDIyLDExIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVNTQUNvbnZlcnNpb24oR3Jh
cGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdy
YXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7Cisg
ICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IHRydWU7CisgICAgYm9vbCByZXN1bHQgPSBy
dW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBncmFwaC5tX2lzSW5TU0FD
b252ZXJzaW9uID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDcgQEAg
Ym9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgSnVtcDoK
ICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5U3dpdGNo
OgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RU
YWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFi
bGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgIlR5
cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwNzksNiArNjA4MSwxNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsK
ICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpTVmFsdWUq
IHB0ciA9ICZtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbbm9kZS0+
Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAg
ICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAg
ICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4Nyw2ICs2MDk5LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICNlbmRp
ZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNl
IExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBAIC02MTE1
LDcgKzYxMjksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAgICAg
Y2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0gobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2LDEzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAg
ICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgoKS5z
dGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAg
ICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRNYXRlcmlh
bGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAg
ICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkp
OwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBAIC0xNzcw
LDggKzE3NzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAg
ICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29k
ZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1bWVudHMg
PSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQuZ3JhcGgo
KS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJs
b2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2pp
dC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnRz
W2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudCBp
cyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTg1NSwxMiArMTg2MywxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQotICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3Qg
aGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAgICAgIC8v
IGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZChtX2ppdC5i
bG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NSVGFyZ2V0
IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3VycmVudGx5
IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQor
ICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JFbnRyeUhl
YWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICB9CiAg
ICAgfQogfQogCkBAIC0xODcxLDEwICsxODc4LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Omxp
bmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2ppdC5ncmFw
aCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAgICBpZiAo
IWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9v
c3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBpZiAo
YmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2pp
dC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAg
ICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICBWZWN0
b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50Rm9y
bWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOworICAg
ICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3RvcikgeworICAg
ICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBGbHVz
aEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9ybWF0ID09
IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1h
dCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hG
b3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1
bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29zckVudHJ5
SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVudEZvcm1h
dHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNPU1JU
YXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVu
dHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0KICAgICB9
CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygpOwor
CiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7CiAg
ICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNF
eGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29w
cygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAK
ICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBiYXNlZCBv
biBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3Jh
cGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fbmF0
dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5leGVjdXRp
b25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJs
b2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJyYW5jaCB3
ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUgY29ycmVj
dC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFwcGx5
Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBA
QCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0dXJuIGZ0
bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9vcDsKKwog
Y2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6
CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04MSw4ICs4
Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvRlRMKCkp
CiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0gICAgICAg
IG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3JhcGguZW5z
dXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExv
b3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8Y29uc3Qg
TmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVpbGROYXR1
cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNoTWFwPHVu
c2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4Miw3ICsx
ODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBIYXNo
TWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BI
aW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hNYXA8Y29u
c3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAo
Y29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAgICBIYXNo
TWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9vcEhpbnQ7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAo
IWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlzVmFs
aWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgICAg
ICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3Ig
U2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3Vs
ZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBhbiBlbnRy
eXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRz
LmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmln
aW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9y
aWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdldExv
Y2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBoLCBub2Rl
KSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAgICAgICAg
aWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2st
PmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJlcnNFeGl0
U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwg
IW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9w
KCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9y
RXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3Jp
Z2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhp
dE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBw
cmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9Ob2Rl
KiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAgICAgICAv
L1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAg
ICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05vZGUp
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAgICAgICAg
ICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+
b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAg
ICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICEo
IXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQorICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAgICAg
ICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUt
Pm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwg
ISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDggQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLAogICAg
ICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxv
Y2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3RydWN0aW9u
IGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIp
KTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAg
Z3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgICAg
IAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNp
b24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAg
ICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmluZy5cbiIp
OwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBtX25vZGUg
PSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwg
Q29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGkt
LTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwor
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAgIG1fb3V0
LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0g
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0Myw3ICs0
NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJnZXQgPSBt
X2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRv
cnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdldCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFpbCBhbHNv
LlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBA
IC0xNDM5OSw3ICsxNDQwMCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIXZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgubV9kb21p
bmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAgICAgICBp
ZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9o
aWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMjA0
NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAgICAg
IERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9wX2Nh
dGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklORV9P
UChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAg
ICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3Ry
dWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiopOwpA
QCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90LCBp
bnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90KTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkks
IEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwxMyBAQCBB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWludDMy
X3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
KGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJ
VDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTMs
NiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAg
ICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNo
KEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRj
aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6IGFkZCBh
IGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRy
eU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lwT1NSRW50
cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9y
ZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tpcE9TUkVu
dHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsK
KyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJv
ZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3Bl
cmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmls
ZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
YXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBAIFNsb3dQ
YXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VW
RU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVj
b2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJl
cGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKG9w
dGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpw
cmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJ
bmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwg
aW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDQ3MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRP
cGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShF
eGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJ
T04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0
eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0
ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJ
VE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhS
ZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3Rh
dGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04g
KlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpT
U3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwg
aW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRo
UmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5n
SW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyMjA0NzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19j
YXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAg
IGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsK
KyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7
CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
bGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSog
cHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDIyMDQ3MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9m
aWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3df
Y2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9J
TlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBl
IGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJO
QUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2Fs
bE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3BfZW5kOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQpJ
bmRleDogU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIwNDczKQorKysgU291cmNlL1dURi93dGYv
RG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKICAg
ICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAgIGxl
bmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBs
YXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3
YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3dud2Fy
ZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMg
dHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9y
IGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318078</attachid>
            <date>2017-08-14 15:54:08 -0700</date>
            <delta_ts>2017-08-14 16:48:59 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>136872</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg2LDkgKzI1MTYsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjUzNCwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVi
bGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJk
c0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dh
cmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFw
aC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FD
Rkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihi
eXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZh
bHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVk
KGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29u
c3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFz
aWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgp
OwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVt
cDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0g
ICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAg
ICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVu
ZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkg
b25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxs
IG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAg
ICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNh
bCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBp
bmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5
cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNp
dDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAs
NyArMTEzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5n
IHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAv
LyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2lu
LgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNw
bGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0
aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUK
ICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3Vu
ZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNl
IG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAg
ICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlm
IChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUo
KSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4
PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAg
ICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0
IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0g
dHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRB
cmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAg
ICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUw
LDYgKzUxNTUsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRp
b25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisK
KyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVy
ZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2lu
dC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5z
aXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVk
VHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBW
ZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNo
U2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBh
bGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9w
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAg
ICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFs
aWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1l
bnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3Vt
ZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50
cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNp
emUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHll
dC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50
cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Un
cmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisg
ICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJl
IHRvIE9TUiBlbnRlciwgd2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2Fm
dGVyX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBt
X2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQo
bV9jdXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxS
ZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwg
cmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1
c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3Vs
ZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZkxvY2FscyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzQXJndW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVy
T2ZMb2NhbHMpLCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAg
ICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGxvY2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5k
LCB2YWx1ZSkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5v
dyBleGl0IGJlY2F1c2Ugd2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVy
IGFueSBsaXZlIGxvY2Fscy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhp
cyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAg
ICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJl
IHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSos
IDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1l
bnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5z
aXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGlj
dChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFy
Z3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1l
bnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3Jp
Z2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENh
bGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAg
IG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4u
b3NyRW50cnlCeXRlY29kZUluZGV4KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxv
Y2ssICJcbiIpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxv
Y2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdH
cmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAg
ICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgLy8gT09QUzogbWF5YmUgbWFrZSB0aGlzIHJl
bGVhc2U/CisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EgfHwgbV9ncmFwaC5t
X2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7Cisg
ICAgfQorCisgICAgTGlzdCByb290cygpCisgICAgeworICAgICAgICBMaXN0IHJlc3VsdDsKKyAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiByb290IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChyb290KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJl
dHVybiBCbG9ja01hcDxUPihtX2dyYXBoKTsgfQpAQCAtNzEsNiArODUsMzAgQEAgcHJpdmF0ZToK
ICAgICBHcmFwaCYgbV9ncmFwaDsKIH07CiAKK2NsYXNzIENQU0NGRyA6IHB1YmxpYyBTaW5nbGVS
b290R3JhcGg8Q0ZHPiB7CitwdWJsaWM6CisgICAgQ1BTQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICAg
ICAgOiBTaW5nbGVSb290R3JhcGg8Q0ZHPigqZ3JhcGgubV9zc2FDRkcpCisgICAgeworICAgIH0K
K307CisKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZh
bHVlPjo6dHlwZT4KK0NQU0NGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChncmFwaC5tX2Nwc0NGRyk7CisgICAgcmV0dXJuICpncmFwaC5tX2Nwc0NGRzsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQUNGRyYgc2Vs
ZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX3NzYUNG
Ryk7CisgICAgcmV0dXJuICpncmFwaC5tX3NzYUNGRzsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFy
Z3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwt
Y2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBl
cyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2Fz
ZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJ
UiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OCw3ICs1
OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwog
ICAgICAgICAKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBtX3ByZU9yZGVyID0gbV9ncmFwaC5ibG9j
a3NJblByZU9yZGVyKCk7CiAgICAgICAgIApAQCAtNjkwLDcgKzY5MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxv
Y2spKSB7CiAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwog
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzc5LDcgKzc3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUg
c3RyaWN0IGRvbWluYXRpb24gYmVjYXVzZSB0aGlzIHdvdWxkIG9ubHkgc2VlIHRoaW5ncyBpbiBv
dXIgb3duIGJsb2NrIGlmCiAgICAgICAgICAgICAvLyB0aGV5IGNhbWUgKmFmdGVyKiBvdXIgcG9z
aXRpb24gaW4gdGhlIGJsb2NrLiBDbGVhcmx5LCB3aGlsZSBvdXIgYmxvY2sgZG9taW5hdGVzCiAg
ICAgICAgICAgICAvLyBpdHNlbGYsIHRoZSB0aGluZ3MgaW4gdGhlIGJsb2NrIGFmdGVyIHVzIGRv
bid0IGRvbWluYXRlIHVzLgotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5z
dHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEuZGlkVmlzaXQpOwpAQCAtODU2LDcgKzg1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7
CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5k
aWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwg
bV9ibG9jaykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2guc2V0Tm9kZShjYW5kaWRhdGUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjIwNzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAg
ICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgog
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2Nh
bDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAg
ICAgICAgIApAQCAtNDIyLDYgKzQyMyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBT
d2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFRocm93OgogICAgIGNhc2Ug
Rm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyhHcmFw
aCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZURvbWluYXRvcnMo
KSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpKQog
ICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1cmVCYWNrd2FyZHNEb21p
bmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CisgICAgU1NBRG9taW5h
dG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIG1fYmFja3dhcmRz
RG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3Jk
ZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAgICAKLSAgICAgICAg
Y2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAgIGZvciAoYXV0byYg
YXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy52YWx1ZXMo
KSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rvcik7CiAKICAgICAg
ICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAuCiAgICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1i
bGVyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSw4IEBAIFZlY3Rv
cjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBkdW1wSGVhZGVyKG91dCwg
bGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAg
ICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgbV9ncmFwaC5lbnN1cmVO
YXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBt
X2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAgIGNvbnN0IGNoYXIqIHBy
ZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVByZWZpeCA9ICIgICAg
ICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAg
Y2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk2LDYgKzE5Nyw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRG
cm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2Ug
VW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMzIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVi
bGljIFdURjo6RG9taW5hdG9yczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgor
Y2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6
IFdURjo6RG9taW5hdG9yczxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWlu
YXRvcnM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQog
fTsKIAordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQ
U0RvbWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFND
Rkc+Ojp2YWx1ZT46OnR5cGU+CitDUFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZH
KEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5h
dG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJu
IGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDExICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAg
ICAgICAgLCBtX3Jlc3VsdCh0cnVlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9y
bSA9PSBTU0EpOwogICAgIH0KICAgICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2Ug
ZWRnZSkKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMt
PmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJl
c3VsdCA9IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93
bmVyLCBtX2Jsb2NrKTsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFM
b2coCiAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uu
bm9kZSgpLT5vd25lciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURp
cmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBKdW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAg
ICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAg
ICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAg
ICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsK
K2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hl
ZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZH
TmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVM
aXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcg
KzcyLDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihw
bGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmls
ZWRCbG9jayhtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFr
ZV91bmlxdWU8Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNT
QUNGRz4oKnRoaXMpKQorICAgICwgbV9jcHNDRkcoc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KCp0
aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRl
KEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZl
Tm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtNDExLDcgKzQxMSw4IEBAIGJvb2wgR3JhcGg6OnRl
cm1pbmFsc0FyZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVE
dW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91
dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+
YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJs
ZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0
KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywg
IiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwg
Iik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJs
b2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJs
b2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91
dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNv
dW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBA
IC00MjIsMTggKzQyMywxNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJl
YW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5n
KQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVk
Z2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAg
ICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsKLSAg
ICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRv
cnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKLSAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWlu
YXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRv
cnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxu
Iik7Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9kb21pbmF0b3JzICYmIHRlcm1p
bmFsc0FyZVZhbGlkKCkpIHsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
Ly8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJs
b2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZp
eCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250
aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVy
YXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKKyAgICAvL30KICAgICBp
ZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwgbV9iYWNr
d2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2FyZHNEb21p
bmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5ICs0NDYs
MjggQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9
CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJl
cmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAi
LCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0TnVt
YmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJhbExvb3Bz
KSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3Bz
LT5oZWFkZXJPZihibG9jaykpIHsKLSAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExv
b3AgaGVhZGVyLCBjb250YWluczoiKTsKLSAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBz
b3J0ZWRCbG9ja0xpc3Q7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9v
cC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChs
b29wLT5hdChpKS0+aW5kZXgpOwotICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKLSAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKLSAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3Ag
aGVhZGVyczoiKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWlu
aW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNv
bnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOwotICAgICAgICAgICAgb3V0LnByaW50KCJcbiIp
OwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9uYXR1cmFsTG9v
cHMpIHsKKyAgICAvLyAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxM
b29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisgICAgLy8gICAgICAgIG91dC5wcmludChwcmVmaXgs
ICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKKyAgICAvLyAgICAgICAgVmVjdG9yPEJsb2Nr
SW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQorICAgIC8vICAgICAgICAgICAgc29ydGVkQmxvY2tM
aXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgIC8vICAgICAgICBzdGQ6OnNvcnQo
c29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7CisgICAgLy8g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyAr
K2kpCisgICAgLy8gICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ld
KTsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgIC8vICAgIH0KKyAgICAvLyAg
ICAKKyAgICAvLyAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5nTG9vcHMg
PQorICAgIC8vICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgLy8g
ICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CisgICAgLy8gICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOworICAgIC8vICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytpKQor
ICAgIC8vICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVh
ZGVyKCkpOworICAgIC8vICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8gICAgfQorICAg
IC8vfQogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUwMSwxMCBAQCB2b2lkIEdy
YXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBv
aW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5p
ZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRl
OiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAg
ICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAg
IGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBv
dXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIs
IGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NDEsMTAg
QEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6
ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3
b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5p
c1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7Cisg
ICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3
b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlz
dC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vz
c29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgwMSwxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFj
aGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2Rv
bWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBt
X3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxw
dHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29w
cyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5h
dG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEy
ICs4NTQsMzUgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBC
bG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xp
c3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGls
ZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQu
YXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nl
c3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3Nv
cihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAg
YXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlm
ICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0Eg
fHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1
cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJl
c3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtODYzLDcgKzg5MCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3Jk
ZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlz
dCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNo
KGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3Qu
cG9wKCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlz
aXRPcmRlcjo6UHJlOgpAQCAtODc2LDYgKzkwNCwxMiBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nr
c0luUG9zdE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKHJlc3VsdFtyZXN1bHQuc2l6ZSgpIC0gaSAtIDFd
KSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTUwNiw0
MyBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlv
bkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsK
IH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NB
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9z
c2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0K
IAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BT
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAo
IW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBv
c3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0lu
U1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9j
cHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NB
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7
CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMp
CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNr
d2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EpOyAvLyBXZSBjb3VsZCBjaGFuZ2UgdGhpcywgYnV0IGl0J3Mgb25s
eSB1c2VkIGluIFNTQSBmb3Igbm93LCBhbmQgd2UgZG9uJ3QgbmVlZCB0d28gZ3JhcGggZmllbGRz
IHlldCBmb3IgdHdvIHR5cGVzIG9mIGJhY2t3YXJkcyBDRkcuCiAgICAgaWYgKCFtX2JhY2t3YXJk
c0NGRykKICAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CkBAIC0xNTAzLDYgKzE1
NTAsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAKIEJhY2t3
YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9t
aW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0Rv
bWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1NTgsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5z
dXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKICAg
ICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE1NzYsNyBAQCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1f
YXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnRO
b2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVlW2FyZ3Vt
ZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDIxICs0NSwzMyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEV4ZWNTdGF0ZTsKIAorCiBuYW1lc3BhY2UgREZHIHsK
IAogY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xhc3MgQmFja3dhcmRzRG9taW5hdG9yczsKIGNsYXNz
IENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwotY2xhc3MgRG9taW5hdG9y
czsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIEZsb3dJbmRleGluZzsKLWNsYXNz
IE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBvc3ROdW1iZXJpbmc7CisKK2NsYXNzIENQU0NGRzsK
K3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8
Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2lu
ZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVy
YWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FDRkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgRmxvd01hcDsKIApAQCAtOTAxLDkgKzkxMywxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9
CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJl
cmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJl
TmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworICAgIFNTQURvbWluYXRvcnMmIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1
cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYg
ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2Fy
ZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0
b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05MjEsNyArOTM0LDggQEAgcHVibGljOgogICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAg
Ci0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0
b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9j
ayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxk
cmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVk
SlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsK
QEAgLTk1NiwxNyArOTcwLDE4IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0
aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3
b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBt
X2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVh
bmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3
ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0
czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBt
X3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlv
biwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0
aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0Fy
cmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJh
ZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dp
dGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRh
PiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4g
bV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVi
bGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBt
X3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6
RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1f
ZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5h
dG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVt
YmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3Bz
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
UFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURv
bWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJh
bExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJh
bExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBt
X3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3Vu
dFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwog
ICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lz
SW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBt
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRl
eGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3Ry
YWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2
b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxv
Y2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2Zh
SGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7
Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0Fy
ZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3Ry
dWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1
ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVl
c0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1h
dDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1h
dCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBp
ZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7Cisg
ICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRy
eXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZv
dW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNs
b2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBv
aW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hl
ZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZv
cm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07Cisg
ICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBG
bHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShT
cGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVl
OgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5t
YWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQg
Zmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkg
ewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJv
b3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFp
bC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRl
eCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7
Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsK
LSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgICAg
IGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1
cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5z
KGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMgYWJv
dmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVChi
bG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZh
bHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYgKzM2
OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5i
bG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50cnlT
d2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nr
cykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0QmxvY2sp
OworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0
dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9p
ZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAg
b3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAg
Y2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnku
c2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAg
dmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29k
ZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAg
fQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29k
ZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5
QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAg
IGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4
LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6
ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50
cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNo
RW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAg
ICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAg
ICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3Vz
SW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5
cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJ
bmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3Vz
SW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBh
cmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChD
YXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdU
Rk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBw
ZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiw2ICsxNTgsNyBA
QCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxE
Rkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9yPENhdGNoRW50cnlwb2ludERh
dGE+IGNhdGNoRW50cnlwb2ludHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwg
OD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxh
dGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50
U3RyZWFtOwpAQCAtMTY4LDYgKzE5NSw4IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29k
ZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAg
ICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAgIE1hbGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9T
UkVudHJ5QnVmZmVyOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDkgQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3Zl
cmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBp
ZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29k
ZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVv
ZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwog
ICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxh
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2
ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1h
bGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVy
OjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpu
b3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6
OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9y
bWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2Nr
LmlzQ2F0Y2hFbnRyeXBvaW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVy
c2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlv
biByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNC
bG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1v
dmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVu
dHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQs
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxv
Y2suaXNDYXRjaEVudHJ5cG9pbnQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2Vk
IGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMu
CiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENv
ZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZm
ZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZh
bHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAg
ICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRl
YWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShC
YXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOwor
ICAgIHZvaWQgbm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6
TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3Vt
ZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVy
biBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5h
dHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9v
cERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3Jh
cGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygp
KTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1M
b29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGlu
Z3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAg
ICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RM
b29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAg
ICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9v
cERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRp
ZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29w
cyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4
ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0g
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBt
X2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2Rh
dGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAg
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5l
ck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAg
ICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91
dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAg
ICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRh
LndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9
IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhl
YWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNz
b3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHBy
ZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9v
cCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAg
ICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxv
b3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAg
IGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRl
eCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRv
IGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXpl
KCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBs
b29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRl
ciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgu
bV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAg
IGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAh
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVD
YWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFw
aCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7
CisgICAgLy8gT09QUzogbWF5YmUgdXNlIGhhc2hzZXQgZm9yIHRoaXMgYXNzZXJ0LgorICAgIFJF
TEVBU0VfQVNTRVJUKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7IC8vIEFu
IGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AhCisKICAgICAvLyBGSVhNRTogSWYg
d2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3aXRoIGEg
Yml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBsaWtlOgog
ICAgIC8vCkBAIC02OSw3ICs3Miw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFw
aCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJlcXVlbmNp
ZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBmbG9hdCBm
cmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+
cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRl
cyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3Jz
LT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1heChmcmVxdWVuY3ksIHByZWRlY2Vzc29yLT5leGVj
dXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAzLDcgKzEwNiw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0
ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vz
c29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXpl
KCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nv
ciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgIGlmIChn
cmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAg
ICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzW3By
ZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+cHJlZGVjZXNzb3JzLmxhc3QoKTsKICAgICAgICAg
YmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBs
b29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgt
LTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25h
dHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwotICAgICAgICAgICAgQmFzaWNCbG9jayogZXhp
c3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1f
Z3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAg
ICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJh
bExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGlu
Z1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG5lZWRzTmV3UHJlSGVhZGVy
ID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBs
b29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7
Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigp
LT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3Ip
KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFk
ZXIoKS5ub2RlKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsK
KyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCku
bm9kZSgpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07CisgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKS5ub2Rl
KCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgewogICAgICAgICAgICAgICAgICAgICBl
eGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTY1LDE0ICsxNjgsMTQgQEAgcHVi
bGljOgogICAgICAgICAgICAgLy8gQSBwcmUtaGVhZGVyIGlzIG1vc3QgdXNlZnVsIGlmIGl0J3Mg
cG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0ZXJtaW5hbC4gSGVuY2UKICAgICAgICAgICAgIC8v
IGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhpc3RpbmcgcHJlLWhlYWRlciBkb2Vzbid0IGFsbG93
IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAgICAgICAgICAgICAvLyBvcmlnaW4gb2YgdGhlIGxv
b3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyBwcmUtaGVhZGVyLgot
ICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLT5hdCgw
KS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBs
b29wLmhlYWRlcigpLm5vZGUoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKICAgICAgICAgICAgICAg
ICAmJiAhZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9yaWdpbi5leGl0T0spCiAgICAg
ICAgICAgICAgICAgbmVlZHNOZXdQcmVIZWFkZXIgPSB0cnVlOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9p
bnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkpOworICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVy
KG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpLm5vZGUoKSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5leGVjdXRlKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRz
W25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
IWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291bnRFeGVjdXRp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNl
IEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCShyZXZpc2lvbiAyMjA3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8Q0ZHPiBOYXR1cmFsTG9vcDsKK3Vz
aW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+OwordXNpbmcgQ1BT
TmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CiAKLWNsYXNzIE5hdHVyYWxM
b29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3Bz
PENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9vcHMpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxMb29wcyhHcmFw
aCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3JhcGgubV9jZmcs
IGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAg
OiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpLCBl
bnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlvbkVuYWJsZWQo
KSkKICAgICB7CisgICAgICAgIC8vIE9PUFM6IGFkZCBzb21lIHZhbGlkYXRpb24gdGhhdCBncmFw
aCdzIGVudHJ5cG9pbnRzIGFyZSBub3QgaW4gYW55IGxvb3AuCiAgICAgfQogfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiAr
MjAzLDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsK
IH07CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisK
IHN0cnVjdCBDYWxsVmFyYXJnc0RhdGEgewogICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07
CkBAIC0xMjc3LDE3ICsxMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
QnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dp
dGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9
CiAKKyAgICBib29sIGlzRW50cnlTd2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gRW50cnlTd2l0Y2g7CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAg
IGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAg
ICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxT
d2l0Y2hEYXRhKj4oKTsKICAgICB9CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNo
RGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAg
ICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNh
c2UgRW50cnlTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2Nrcy5zaXplKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQpAQCAtMTM3Miw2ICsxMzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisK
KyAgICAgICAgaWYgKGlzRW50cnlTd2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3
aXRjaERhdGEoKS0+YmxvY2tzW2luZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAg
ICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1MTgsNiArMTU0
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAgICAgIGNhc2Ug
QXRvbWljc1N1YjoKICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAg
ICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAg
IHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUg
Zm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcg
YSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9c
CiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1h
Y3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGll
ci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNr
VGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3aXRjaCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTMzNiw2ICszMzcsNjcg
QEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBz
Y3JhdGNoOwogfQogCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIGlm
ICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2Nr
LT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENv
ZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0
Q29kZSk7CisKKyAgICBERkc6OkNhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoRW50cnlwb2ludCA9
IGppdENvZGUtPmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KTsKKyAgICBpZiAoIWNhdGNoRW50cnlwb2ludCkgeworICAgICAgICAvLyBUaGlzIGNhbiBiZSBu
dWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy4gVGhlIG1vc3QgY29tbW9uIGlzIHRoYXQgd2Ug
ZGlkbid0IGNvbXBpbGUgdGhpcworICAgICAgICAvLyBhZnRlcl9jYXRjaCBhcyBhbiBlbnRyeXBv
aW50IHNpbmNlIGl0IGhhZCBuZXZlciBleGVjdXRlZC4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgLy8gV2UncmUgb25seSBhbGxvd2VkIHRvIE9TUiBlbnRlciBpZiB3ZSd2
ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRpYmxlIGFyZ3VtZW50IHR5cGVzLgorICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVu
dEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOwor
ICAgICAgICBzd2l0Y2ggKGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1l
bnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAo
IXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAg
ICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVz
aDoKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4g
VGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQgdG8gYmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4g
YXJndW1lbnQgaXMgdHJpdmlhbGx5IGEgSlNWYWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGpp
dENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7
CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdp
c3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0
KCldKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0
ZWNvZGVPZmZzZXQoKV0udS5vcGNvZGUpID09IG9wX2FmdGVyX2NhdGNoKTsKKyAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMt
PmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5p
c0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIuZ2V0KClbaW5kZXhdID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3Bl
cmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4OworICAgIH0pOworCisgICAgcmV0dXJu
IGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21h
Y2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNo
Rm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9y
Lmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFC
eXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAK
K3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5k
ZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhp
cyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cwor
ICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRj
aCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsK
KwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50
cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51
bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3
ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAg
dG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9j
a0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUg
IkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhl
YWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlO
VF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigp
LgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMs
MTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBv
cmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8
Tm9kZSosIDg+IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0g
MDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAg
ICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1l
bnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYg
aXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICBvbGROb2RlID0gYXJndW1lbnRzW2Fy
Z3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290
LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1
bWVudCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0g
PSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVt
Q2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzksOCArMTQxLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0
YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7
CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9vdCwgYXJndW1lbnRzKTsKKwogICAgICAg
ICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVh
Y2hhYmxlQmxvY2tzKCk7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzI3LDcgKzcyNyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBt
X2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9k
ZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0Fu
YWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMo
bV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3Mo
bV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxh
bjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBy
dW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8g
c2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgog
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0
b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVu
c3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMo
KTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3
aXRjaCAobW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIK
LQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJl
UG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1i
ZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0
OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQ
cmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGls
ZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRj
aCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAg
ICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAg
ICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAg
ICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2Rl
XS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5n
KCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2Fz
ZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NF
ZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQu
cHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRl
ICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRF
ZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51
bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmlu
ZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVO
dW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3By
ZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNv
bnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJ
cyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rv
ck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYm
IHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJv
bSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2lj
QmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkg
bm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBp
cyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2lu
ZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAg
ICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9m
KHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qg
TnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2ln
bmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21h
cDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhl
IGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVu
dHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rp
b25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2so
KS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFy
Zyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAg
ICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNl
IFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAg
IHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAg
ICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNl
IFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxl
Q29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1w
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBT
U0FDYWxjdWxhdG9yIHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNl
dCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNhbGN1bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDEyICs5NSwxMiBAQCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0Rl
CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0Rl
ZihCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiBy
ZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlh
YmxlKTsKKyAgICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRv
cnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NB
Q2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxl
KiB2YXJpYWJsZSkKIHsKLSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmlkb20oYmxvY2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgu
bV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBt
X2RhdGFbYmxvY2tdLm1fZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRl
ZjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1
bGF0b3IuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDYWxjdWxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZv
aWQgY29tcHV0ZVBoaXMoY29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7
Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRv
cnMpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FE
b21pbmF0b3JzKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDog
bV92YXJpYWJsZXMpIHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxC
bG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1f
Z3JhcGgubV9zc2FEb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZz
LAogICAgICAgICAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2Nr
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09
IFRocmVhZGVkQ1BTKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVu
dHMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3Jh
cGgubV9jcHNDRkcgPSBudWxscHRyOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRv
cnMoKTsgLy8gT09QUzogYWxsb3cgdXMgdG8gYXNzZXJ0IGluIGVuc3VyZVNTQURvbWluYXRvcnMg
dGhhdCB3ZSdyZSBpbiBTU0EgZm9ybS4KICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7
CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRyYW5zZm9ybWF0aW9uOlxu
Iik7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRl
cyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3
aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9y
IGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJl
IHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAg
ICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1
bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUq
IHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJp
YWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgyLDIy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAg
ICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURh
dGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisg
ICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
OTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNo
Rm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAg
ICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0g
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBs
b2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9m
aWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxv
YWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2Zp
bGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7
CkBAIC00MTYsNyArNDIxLDExIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVNTQUNvbnZlcnNp
b24oR3JhcGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhh
c2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9pc0luU1NBQ29udmVyc2lv
bik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IHRydWU7CisgICAgYm9vbCByZXN1
bHQgPSBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBncmFwaC5tX2lz
SW5TU0FDb252ZXJzaW9uID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2Ug
SnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBE
aXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1
ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwODAsNiArNjA4MiwxNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpT
VmFsdWUqIHB0ciA9ICZtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClb
bm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2pp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7
CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxv
b3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4OCw2ICs2MTAwLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAg
ICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBA
IC02MTE2LDcgKzYxMzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6
CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3Jh
cGgoKS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRN
YXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKKyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJl
c2V0KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBA
IC0xNzcwLDggKzE3NzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlw
ZXMoCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmln
aW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQu
Z3JhcGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQu
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUg
PSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJn
dW1lbnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1
bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4K
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg1NSwxMiArMTg2MywxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2Ug
ZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAg
ICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZCht
X2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NS
VGFyZ2V0IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQg
dGhlbQorICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JF
bnRyeUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAg
ICB9CiAgICAgfQogfQogCkBAIC0xODcxLDEwICsxODc4LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAg
ICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9j
aywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAg
ICBpZiAoYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAg
ICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAg
ICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkp
OworICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3Rvcikg
eworICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAg
ICBGbHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9y
bWF0ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVz
aEZvcm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQo
Zmx1c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29z
ckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVu
dEZvcm1hdHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+
aXNPU1JUYXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBt
X29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0K
ICAgICB9CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50
cygpOworCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUo
KSk7CiAgICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVy
YWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAg
ICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBi
YXNlZCBvbiBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBo
Lm1fbmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5l
eGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERl
cHRoKGJsb2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJy
YW5jaCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUg
Y29ycmVjdC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0
dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9v
cDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBw
dWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04
MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29w
cyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3Jh
cGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVp
bGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4
Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BU
b0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhp
bnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9v
cEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdl
IHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCks
IEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBo
LCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0g
YmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJl
cnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9k
ZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhp
dCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91
c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9L
KQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygp
LAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBD
b2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3Ry
dWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwg
IjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAg
ICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmlu
Zy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBt
X25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdp
bigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFs
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRz
W2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAg
IG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0
Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJn
ZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdl
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFp
bCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFs
c2U7CkBAIC0xNDQxNCw3ICsxNDQxNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2so
KSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhp
cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQz
Ml90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQz
Ml90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwx
MyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwg
dWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBj
dXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9h
c3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29w
X2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRl
cl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6
IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lw
T1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tp
cE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxl
Lm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgm
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAg
aWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4o
REZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0
ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlW
YWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAq
UF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJf
dCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4
ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9O
ICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xv
d1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShF
eGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVS
QVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBl
ZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4
ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAj
ZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIp
OworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2Zp
bGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7Cisg
ICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZy
YW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlm
eV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSop
IFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6Cisg
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3Bf
ZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDcgQEAKIAkJNzBFQ0E2MEIxQjAyNDI2ODAw
NDQ5NzM5IC8qIFN5bWJvbEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEVDQTYwQzFCMDI0
MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5pcXVlZFN0cmluZ0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzkzNkQ2QTkxQzk5RjhBRTAwMEQxQUVEIC8qIFNtYWxsUHRyU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYWxsUHRyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2xlUm9vdEdyYXBoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkFFMUVCMjJBQzYwMERBREUzNiAvKiBV
VUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVVSUQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVVJRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmlnYW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyaWdhbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzOCw2ICs5MzksNyBAQAogCQkJCTE0Njk0MTk0MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkxNDY5NDE5ODE2RUFCMDQxMDAy
NEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwICovLAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0
RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCisJCQkJNzk1MjEyMDIxRjQyNTg4ODAwQkQ2
NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5
QiAvKiBTY29wZS5oICovLAogCQkJCTBGRUM4NEIwMUJEQUNEMzkwMDgwRkY3NCAvKiBTY29wZWRM
YW1iZGEuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAg
Ki8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RG
L3d0Zi9Eb21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGlj
OgogICAgICAgICBMZW5nYXVlclRhcmphbiBsZW5nYXVlclRhcmphbihtX2dyYXBoKTsKICAgICAg
ICAgbGVuZ2F1ZXJUYXJqYW4uY29tcHV0ZSgpOwogCi0gICAgICAgIG1fZGF0YSA9IG1fZ3JhcGgu
dGVtcGxhdGUgbmV3TWFwPEJsb2NrRGF0YT4oKTsKLSAgICAKICAgICAgICAgLy8gRnJvbSBoZXJl
IHdlIHdhbnQgdG8gYnVpbGQgYSBzcGFubmluZyB0cmVlIHdpdGggYm90aCB1cHdhcmQgYW5kIGRv
d253YXJkIGxpbmtzIGFuZCB3ZSB3YW50CiAgICAgICAgIC8vIHRvIGRvIGEgc2VhcmNoIG92ZXIg
dGhpcyB0cmVlIHRvIGNvbXB1dGUgcHJlIGFuZCBwb3N0IG51bWJlcnMgdGhhdCBjYW4gYmUgdXNl
ZCBmb3IgZG9taW5hbmNlCiAgICAgICAgIC8vIHRlc3RzLgpJbmRleDogU291cmNlL1dURi93dGYv
U2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9v
dEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gK
KyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBo
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVm
ZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KKyAgICBzdGF0aWMgY29u
c3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI3Jvb3QiOyB9OworCisgICAgY2xhc3MgTm9k
ZSB7CisgICAgcHVibGljOgorICAgICAgICBOb2RlKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUg
PSB0eXBlbmFtZSBHcmFwaDo6Tm9kZSgpKQorICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIE5vZGUgcm9vdCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIE5vZGUgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0Lm1fbm9kZSA9
IDA7CisgICAgICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBO
b2RlJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbm9kZSA9
PSBvdGhlci5tX25vZGUKKyAgICAgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lz
Um9vdDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb2RlJiBv
dGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICp0aGlzICE9IE5vZGUoKTsgfQorCisgICAgICAgIGJvb2wgaXNSb290KCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgICAgICB9CisK
KyAgICAgICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghbV9pc1Jvb3QpOworICAgICAgICAgICAgcmV0dXJuIG1fbm9kZTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUg
bV9ub2RlOworICAgICAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKKyAgICB9OworCisgICAg
Y2xhc3MgU2V0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNldCgpID0gZGVmYXVsdDsKKyAgICAg
ICAgCisgICAgICAgIGJvb2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBjaGVja0Fu
ZFNldChtX2hhc1Jvb3QsIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2Rl
Lm5vZGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBib29sIHJlbW92ZShjb25zdCBOb2RlJiBu
b2RlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1faGFzUm9vdDsKKyAg
ICAgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKG1faGFzUm9vdCkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQocm9v
dE5hbWUoKSwgIiAiKTsKKyAgICAgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3Nl
dDsKKyAgICAgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9OworICAgIH07CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIGNsYXNzIE1hcCB7CisgICAgcHVibGljOgorICAgICAgICBN
YXAoR3JhcGgmIGdyYXBoKQorICAgICAgICAgICAgOiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdN
YXA8VD4oKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgTWFwKE1hcCYmIG90aGVy
KQorICAgICAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgICAg
ICwgbV9yb290KFdURk1vdmUob3RoZXIubV9yb290KSkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBjbGVhcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbWFwLmNsZWFy
KCk7CisgICAgICAgICAgICBtX3Jvb3QgPSBUKCk7CisgICAgICAgIH0KKworICAgICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgICAgICBU
JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9yb290OworICAgICAgICAgICAgcmV0dXJu
IG1fbWFwW2luZGV4IC0gMV07CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBUJiBvcGVyYXRv
cltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICgq
Y29uc3RfY2FzdDxNYXAqPih0aGlzKSlbaW5kZXhdOworICAgICAgICB9CisKKyAgICAgICAgVCYg
b3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9yb290OworICAgICAgICAg
ICAgcmV0dXJuIG1fbWFwW25vZGUubm9kZSgpXTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0
IFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxNYXAqPih0aGlzKSlbbm9kZV07CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRl
IE1hcDxUPiBtX21hcDsKKyAgICAgICAgVCBtX3Jvb3Q7CisgICAgfTsKKworICAgIHVzaW5nIExp
c3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBo
KQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1l
IEdyYXBoOjpOb2RlIHJlYWxSb290IDogZ3JhcGgucm9vdHMoKSkgeworICAgICAgICAgICAgQVNT
RVJUKG1fZ3JhcGgucHJlZGVjZXNzb3JzKHJlYWxSb290KS5pc0VtcHR5KCkpOyAvLyBPT1BTOiBk
byB3ZSB3YW50IHRoaXMgYXNzZXJ0aW9uPworICAgICAgICAgICAgbV9yb290U3VjY2Vzc29yTGlz
dC5hcHBlbmQocmVhbFJvb3QpOworICAgICAgICAgICAgbV9yb290U3VjY2Vzc29yU2V0LmFkZChy
ZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOb2RlIHJvb3QoKSBjb25zdCB7IHJl
dHVybiBOb2RlOjpyb290KCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgTWFw
PFQ+IG5ld01hcCgpIHsgcmV0dXJuIE1hcDxUPihtX2dyYXBoKTsgfQorCisgICAgTGlzdCBzdWNj
ZXNzb3JzKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3RTdWNjZXNzb3JMaXN0OworICAgICAg
ICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDog
bV9ncmFwaC5zdWNjZXNzb3JzKG5vZGUubm9kZSgpKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQobm9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgTGlzdCBwcmVk
ZWNlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChub2Rl
LmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIExpc3QgeyB9OworCisgICAgICAgIGlmICht
X3Jvb3RTdWNjZXNzb3JTZXQuY29udGFpbnMobm9kZS5ub2RlKCkpKSB7CisgICAgICAgICAgICBB
U1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpLmlzRW1wdHkoKSk7CisgICAg
ICAgICAgICByZXR1cm4gTGlzdCB7IHJvb3QoKSB9OworICAgICAgICB9CisKKyAgICAgICAgTGlz
dCByZXN1bHQ7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1fZ3Jh
cGgucHJlZGVjZXNzb3JzKG5vZGUubm9kZSgpKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
bm9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdW5zaWduZWQgaW5k
ZXgoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9v
dCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmluZGV4
KG5vZGUubm9kZSgpKSArIDE7CisgICAgfQorCisgICAgTm9kZSBub2RlKHVuc2lnbmVkIGluZGV4
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBy
b290KCk7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm5vZGUoaW5kZXggLSAxKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBudW1Ob2RlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9n
cmFwaC5udW1Ob2RlcygpICsgMTsKKyAgICB9CisKKyAgICBDU3RyaW5nIGR1bXAoTm9kZSBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgICAgICBp
ZiAoIW5vZGUpCisgICAgICAgICAgICBvdXQucHJpbnQoIjxudWxsPiIpOworICAgICAgICBlbHNl
IGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQobV9ncmFwaC5kdW1wKG5vZGUubm9k
ZSgpKSk7CisgICAgICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CisgICAgfQorCisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtTm9kZXMoKTsgKytpKSB7CisgICAgICAgICAgICBOb2RlIG5vZGUg
PSB0aGlzLT5ub2RlKGkpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgb3V0LnByaW50KGR1bXAobm9kZSksICI6XG4iKTsKKyAg
ICAgICAgICAgIG91dC5wcmludCgiICAgIFByZWRzOiAiKTsKKyAgICAgICAgICAgIENvbW1hUHJp
bnRlciBjb21tYTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBwcmVkZWNlc3NvciA6IHByZWRlY2Vz
c29ycyhub2RlKSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGR1bXAocHJlZGVj
ZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgICAgIG91dC5w
cmludCgiICAgIFN1Y2NzOiAiKTsKKyAgICAgICAgICAgIGNvbW1hID0gQ29tbWFQcmludGVyKCk7
CisgICAgICAgICAgICBmb3IgKE5vZGUgc3VjY2Vzc29yIDogc3VjY2Vzc29ycyhub2RlKSkKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGR1bXAoc3VjY2Vzc29yKSk7CisgICAgICAg
ICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAg
R3JhcGgmIG1fZ3JhcGg7CisgICAgTGlzdCBtX3Jvb3RTdWNjZXNzb3JMaXN0OworICAgIHR5cGVu
YW1lIEdyYXBoOjpTZXQgbV9yb290U3VjY2Vzc29yU2V0OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKK3VzaW5nIFdURjo6U2luZ2xlUm9vdEdyYXBoOworCisjZW5kaWYgLy8gV1RGX1Npbmds
ZVJvb3RHcmFwaF9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318084</attachid>
            <date>2017-08-14 16:48:59 -0700</date>
            <delta_ts>2017-08-14 16:52:25 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>140959</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg2LDkgKzI1MTYsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjUzNCwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVi
bGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJk
c0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dh
cmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFw
aC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FD
Rkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihi
eXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZh
bHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVk
KGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29u
c3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFz
aWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgp
OwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVt
cDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0g
ICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAg
ICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVu
ZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkg
b25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxs
IG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAg
ICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNh
bCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBp
bmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5
cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNp
dDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAs
NyArMTEzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5n
IHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAv
LyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2lu
LgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNw
bGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0
aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUK
ICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3Vu
ZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNl
IG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAg
ICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlm
IChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUo
KSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4
PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAg
ICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0
IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0g
dHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRB
cmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAg
ICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUw
LDYgKzUxNTUsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRp
b25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisK
KyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVy
ZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2lu
dC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5z
aXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVk
VHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBW
ZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNo
U2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBh
bGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9w
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAg
ICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFs
aWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1l
bnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3Vt
ZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50
cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNp
emUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHll
dC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50
cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Un
cmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisg
ICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJl
IHRvIE9TUiBlbnRlciwgd2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2Fm
dGVyX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBt
X2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQo
bV9jdXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxS
ZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwg
cmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1
c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3Vs
ZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZkxvY2FscyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzQXJndW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVy
T2ZMb2NhbHMpLCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAg
ICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGxvY2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5k
LCB2YWx1ZSkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5v
dyBleGl0IGJlY2F1c2Ugd2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVy
IGFueSBsaXZlIGxvY2Fscy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhp
cyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAg
ICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJl
IHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSos
IDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1l
bnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5z
aXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGlj
dChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFy
Z3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1l
bnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3Jp
Z2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENh
bGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAg
IG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4u
b3NyRW50cnlCeXRlY29kZUluZGV4KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxv
Y2ssICJcbiIpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxv
Y2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdH
cmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAg
ICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgLy8gT09QUzogbWF5YmUgbWFrZSB0aGlzIHJl
bGVhc2U/CisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EgfHwgbV9ncmFwaC5t
X2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7Cisg
ICAgfQorCisgICAgTGlzdCByb290cygpCisgICAgeworICAgICAgICBMaXN0IHJlc3VsdDsKKyAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiByb290IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChyb290KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJl
dHVybiBCbG9ja01hcDxUPihtX2dyYXBoKTsgfQpAQCAtNzEsNiArODUsMzAgQEAgcHJpdmF0ZToK
ICAgICBHcmFwaCYgbV9ncmFwaDsKIH07CiAKK2NsYXNzIENQU0NGRyA6IHB1YmxpYyBTaW5nbGVS
b290R3JhcGg8Q0ZHPiB7CitwdWJsaWM6CisgICAgQ1BTQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICAg
ICAgOiBTaW5nbGVSb290R3JhcGg8Q0ZHPigqZ3JhcGgubV9zc2FDRkcpCisgICAgeworICAgIH0K
K307CisKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZh
bHVlPjo6dHlwZT4KK0NQU0NGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChncmFwaC5tX2Nwc0NGRyk7CisgICAgcmV0dXJuICpncmFwaC5tX2Nwc0NGRzsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQUNGRyYgc2Vs
ZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX3NzYUNG
Ryk7CisgICAgcmV0dXJuICpncmFwaC5tX3NzYUNGRzsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFy
Z3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwt
Y2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBl
cyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2Fz
ZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJ
UiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OCw3ICs1
OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwog
ICAgICAgICAKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBtX3ByZU9yZGVyID0gbV9ncmFwaC5ibG9j
a3NJblByZU9yZGVyKCk7CiAgICAgICAgIApAQCAtNjkwLDcgKzY5MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxv
Y2spKSB7CiAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwog
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzc5LDcgKzc3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUg
c3RyaWN0IGRvbWluYXRpb24gYmVjYXVzZSB0aGlzIHdvdWxkIG9ubHkgc2VlIHRoaW5ncyBpbiBv
dXIgb3duIGJsb2NrIGlmCiAgICAgICAgICAgICAvLyB0aGV5IGNhbWUgKmFmdGVyKiBvdXIgcG9z
aXRpb24gaW4gdGhlIGJsb2NrLiBDbGVhcmx5LCB3aGlsZSBvdXIgYmxvY2sgZG9taW5hdGVzCiAg
ICAgICAgICAgICAvLyBpdHNlbGYsIHRoZSB0aGluZ3MgaW4gdGhlIGJsb2NrIGFmdGVyIHVzIGRv
bid0IGRvbWluYXRlIHVzLgotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5z
dHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEuZGlkVmlzaXQpOwpAQCAtODU2LDcgKzg1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7
CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5k
aWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwg
bV9ibG9jaykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2guc2V0Tm9kZShjYW5kaWRhdGUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjIwNzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAg
ICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgog
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2Nh
bDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAg
ICAgICAgIApAQCAtNDIyLDYgKzQyMyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBT
d2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFRocm93OgogICAgIGNhc2Ug
Rm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyhHcmFw
aCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZURvbWluYXRvcnMo
KSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpKQog
ICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1cmVCYWNrd2FyZHNEb21p
bmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CisgICAgU1NBRG9taW5h
dG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIG1fYmFja3dhcmRz
RG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3Jk
ZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAgICAKLSAgICAgICAg
Y2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAgIGZvciAoYXV0byYg
YXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy52YWx1ZXMo
KSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rvcik7CiAKICAgICAg
ICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAuCiAgICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1i
bGVyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSw4IEBAIFZlY3Rv
cjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBkdW1wSGVhZGVyKG91dCwg
bGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAg
ICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgbV9ncmFwaC5lbnN1cmVO
YXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBt
X2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAgIGNvbnN0IGNoYXIqIHBy
ZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVByZWZpeCA9ICIgICAg
ICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAg
Y2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk2LDYgKzE5Nyw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRG
cm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2Ug
VW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMzIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVi
bGljIFdURjo6RG9taW5hdG9yczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgor
Y2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6
IFdURjo6RG9taW5hdG9yczxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWlu
YXRvcnM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQog
fTsKIAordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQ
U0RvbWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFND
Rkc+Ojp2YWx1ZT46OnR5cGU+CitDUFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZH
KEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5h
dG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJu
IGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDExICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAg
ICAgICAgLCBtX3Jlc3VsdCh0cnVlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9y
bSA9PSBTU0EpOwogICAgIH0KICAgICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2Ug
ZWRnZSkKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMt
PmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJl
c3VsdCA9IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93
bmVyLCBtX2Jsb2NrKTsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFM
b2coCiAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uu
bm9kZSgpLT5vd25lciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURp
cmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBKdW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAg
ICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAg
ICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAg
ICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsK
K2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hl
ZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZH
TmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVM
aXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcg
KzcyLDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihw
bGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmls
ZWRCbG9jayhtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFr
ZV91bmlxdWU8Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNT
QUNGRz4oKnRoaXMpKQorICAgICwgbV9jcHNDRkcoc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KCp0
aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRl
KEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZl
Tm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtNDExLDcgKzQxMSw4IEBAIGJvb2wgR3JhcGg6OnRl
cm1pbmFsc0FyZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVE
dW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91
dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+
YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJs
ZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0
KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywg
IiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwg
Iik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJs
b2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJs
b2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91
dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNv
dW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBA
IC00MjIsMTggKzQyMywxNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJl
YW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5n
KQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVk
Z2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAg
ICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsKLSAg
ICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRv
cnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKLSAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWlu
YXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRv
cnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxu
Iik7Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9kb21pbmF0b3JzICYmIHRlcm1p
bmFsc0FyZVZhbGlkKCkpIHsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
Ly8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJs
b2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZp
eCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250
aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVy
YXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKKyAgICAvL30KICAgICBp
ZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwgbV9iYWNr
d2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2FyZHNEb21p
bmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5ICs0NDYs
MjggQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9
CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJl
cmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAi
LCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0TnVt
YmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJhbExvb3Bz
KSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3Bz
LT5oZWFkZXJPZihibG9jaykpIHsKLSAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExv
b3AgaGVhZGVyLCBjb250YWluczoiKTsKLSAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBz
b3J0ZWRCbG9ja0xpc3Q7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9v
cC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChs
b29wLT5hdChpKS0+aW5kZXgpOwotICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKLSAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKLSAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3Ag
aGVhZGVyczoiKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWlu
aW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNv
bnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOwotICAgICAgICAgICAgb3V0LnByaW50KCJcbiIp
OwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9uYXR1cmFsTG9v
cHMpIHsKKyAgICAvLyAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxM
b29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisgICAgLy8gICAgICAgIG91dC5wcmludChwcmVmaXgs
ICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKKyAgICAvLyAgICAgICAgVmVjdG9yPEJsb2Nr
SW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQorICAgIC8vICAgICAgICAgICAgc29ydGVkQmxvY2tM
aXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgIC8vICAgICAgICBzdGQ6OnNvcnQo
c29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7CisgICAgLy8g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyAr
K2kpCisgICAgLy8gICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ld
KTsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgIC8vICAgIH0KKyAgICAvLyAg
ICAKKyAgICAvLyAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5nTG9vcHMg
PQorICAgIC8vICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgLy8g
ICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CisgICAgLy8gICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOworICAgIC8vICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytpKQor
ICAgIC8vICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVh
ZGVyKCkpOworICAgIC8vICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8gICAgfQorICAg
IC8vfQogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUwMSwxMCBAQCB2b2lkIEdy
YXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBv
aW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5p
ZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRl
OiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAg
ICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAg
IGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBv
dXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIs
IGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NDEsMTAg
QEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6
ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3
b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5p
c1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7Cisg
ICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3
b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlz
dC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vz
c29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgwMSwxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFj
aGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2Rv
bWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBt
X3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxw
dHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29w
cyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5h
dG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEy
ICs4NTQsMzUgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBC
bG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xp
c3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGls
ZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQu
YXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nl
c3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3Nv
cihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAg
YXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlm
ICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0Eg
fHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1
cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJl
c3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtODYzLDcgKzg5MCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3Jk
ZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlz
dCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNo
KGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3Qu
cG9wKCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlz
aXRPcmRlcjo6UHJlOgpAQCAtODc2LDYgKzkwNCwxMiBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nr
c0luUG9zdE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKHJlc3VsdFtyZXN1bHQuc2l6ZSgpIC0gaSAtIDFd
KSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTUwNiw0
MyBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlv
bkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsK
IH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NB
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9z
c2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0K
IAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BT
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAo
IW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBv
c3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0lu
U1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9j
cHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NB
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7
CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMp
CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNr
d2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EpOyAvLyBXZSBjb3VsZCBjaGFuZ2UgdGhpcywgYnV0IGl0J3Mgb25s
eSB1c2VkIGluIFNTQSBmb3Igbm93LCBhbmQgd2UgZG9uJ3QgbmVlZCB0d28gZ3JhcGggZmllbGRz
IHlldCBmb3IgdHdvIHR5cGVzIG9mIGJhY2t3YXJkcyBDRkcuCiAgICAgaWYgKCFtX2JhY2t3YXJk
c0NGRykKICAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CkBAIC0xNTAzLDYgKzE1
NTAsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAKIEJhY2t3
YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9t
aW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0Rv
bWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1NTgsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5z
dXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKICAg
ICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE1NzYsNyBAQCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1f
YXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnRO
b2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVlW2FyZ3Vt
ZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDIxICs0NSwzMyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEV4ZWNTdGF0ZTsKIAorCiBuYW1lc3BhY2UgREZHIHsK
IAogY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xhc3MgQmFja3dhcmRzRG9taW5hdG9yczsKIGNsYXNz
IENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwotY2xhc3MgRG9taW5hdG9y
czsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIEZsb3dJbmRleGluZzsKLWNsYXNz
IE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBvc3ROdW1iZXJpbmc7CisKK2NsYXNzIENQU0NGRzsK
K3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8
Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2lu
ZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVy
YWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FDRkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgRmxvd01hcDsKIApAQCAtOTAxLDkgKzkxMywxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9
CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJl
cmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJl
TmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworICAgIFNTQURvbWluYXRvcnMmIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1
cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYg
ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2Fy
ZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0
b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05MjEsNyArOTM0LDggQEAgcHVibGljOgogICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAg
Ci0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0
b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9j
ayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxk
cmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVk
SlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsK
QEAgLTk1NiwxNyArOTcwLDE4IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0
aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3
b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBt
X2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVh
bmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3
ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0
czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBt
X3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlv
biwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0
aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0Fy
cmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJh
ZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dp
dGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRh
PiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4g
bV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVi
bGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBt
X3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6
RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1f
ZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5h
dG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVt
YmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3Bz
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
UFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURv
bWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJh
bExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJh
bExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBt
X3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3Vu
dFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwog
ICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lz
SW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBt
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRl
eGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3Ry
YWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2
b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxv
Y2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2Zh
SGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7
Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0Fy
ZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3Ry
dWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1
ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVl
c0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1h
dDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1h
dCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBp
ZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7Cisg
ICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRy
eXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZv
dW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNs
b2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBv
aW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hl
ZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZv
cm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07Cisg
ICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBG
bHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShT
cGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVl
OgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5t
YWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQg
Zmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkg
ewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJv
b3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFp
bC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRl
eCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7
Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsK
LSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgICAg
IGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1
cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5z
KGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMgYWJv
dmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVChi
bG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZh
bHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYgKzM2
OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5i
bG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50cnlT
d2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nr
cykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0QmxvY2sp
OworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0
dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9p
ZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAg
b3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAg
Y2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnku
c2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAg
dmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29k
ZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAg
fQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29k
ZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5
QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAg
IGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4
LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6
ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50
cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNo
RW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAg
ICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAg
ICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3Vz
SW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5
cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJ
bmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3Vz
SW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBh
cmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChD
YXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdU
Rk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBw
ZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiw2ICsxNTgsNyBA
QCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxE
Rkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9yPENhdGNoRW50cnlwb2ludERh
dGE+IGNhdGNoRW50cnlwb2ludHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwg
OD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxh
dGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50
U3RyZWFtOwpAQCAtMTY4LDYgKzE5NSw4IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29k
ZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAg
ICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAgIE1hbGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9T
UkVudHJ5QnVmZmVyOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDkgQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3Zl
cmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBp
ZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29k
ZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVv
ZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwog
ICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxh
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2
ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1h
bGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVy
OjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpu
b3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6
OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9y
bWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2Nr
LmlzQ2F0Y2hFbnRyeXBvaW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVy
c2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlv
biByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNC
bG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1v
dmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVu
dHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQs
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxv
Y2suaXNDYXRjaEVudHJ5cG9pbnQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2Vk
IGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMu
CiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENv
ZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZm
ZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZh
bHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAg
ICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRl
YWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShC
YXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOwor
ICAgIHZvaWQgbm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6
TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3Vt
ZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVy
biBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5h
dHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9v
cERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3Jh
cGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygp
KTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1M
b29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGlu
Z3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAg
ICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RM
b29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAg
ICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9v
cERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRp
ZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29w
cyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4
ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0g
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBt
X2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2Rh
dGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAg
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5l
ck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAg
ICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91
dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAg
ICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRh
LndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9
IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhl
YWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNz
b3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHBy
ZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9v
cCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAg
ICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxv
b3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAg
IGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRl
eCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRv
IGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXpl
KCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBs
b29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRl
ciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgu
bV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAg
IGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAh
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVD
YWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFw
aCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7
CisgICAgLy8gT09QUzogbWF5YmUgdXNlIGhhc2hzZXQgZm9yIHRoaXMgYXNzZXJ0LgorICAgIFJF
TEVBU0VfQVNTRVJUKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7IC8vIEFu
IGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AhCisKICAgICAvLyBGSVhNRTogSWYg
d2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3aXRoIGEg
Yml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBsaWtlOgog
ICAgIC8vCkBAIC02OSw3ICs3Miw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFw
aCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJlcXVlbmNp
ZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBmbG9hdCBm
cmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+
cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRl
cyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3Jz
LT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1heChmcmVxdWVuY3ksIHByZWRlY2Vzc29yLT5leGVj
dXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAzLDcgKzEwNiw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0
ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vz
c29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXpl
KCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nv
ciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgIGlmIChn
cmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAg
ICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzW3By
ZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+cHJlZGVjZXNzb3JzLmxhc3QoKTsKICAgICAgICAg
YmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBs
b29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgt
LTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25h
dHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwotICAgICAgICAgICAgQmFzaWNCbG9jayogZXhp
c3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1f
Z3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAg
ICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJh
bExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGlu
Z1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG5lZWRzTmV3UHJlSGVhZGVy
ID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBs
b29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7
Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigp
LT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3Ip
KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFk
ZXIoKS5ub2RlKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsK
KyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCku
bm9kZSgpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07CisgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKS5ub2Rl
KCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgewogICAgICAgICAgICAgICAgICAgICBl
eGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTY1LDE0ICsxNjgsMTQgQEAgcHVi
bGljOgogICAgICAgICAgICAgLy8gQSBwcmUtaGVhZGVyIGlzIG1vc3QgdXNlZnVsIGlmIGl0J3Mg
cG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0ZXJtaW5hbC4gSGVuY2UKICAgICAgICAgICAgIC8v
IGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhpc3RpbmcgcHJlLWhlYWRlciBkb2Vzbid0IGFsbG93
IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAgICAgICAgICAgICAvLyBvcmlnaW4gb2YgdGhlIGxv
b3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyBwcmUtaGVhZGVyLgot
ICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLT5hdCgw
KS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBs
b29wLmhlYWRlcigpLm5vZGUoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKICAgICAgICAgICAgICAg
ICAmJiAhZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9yaWdpbi5leGl0T0spCiAgICAg
ICAgICAgICAgICAgbmVlZHNOZXdQcmVIZWFkZXIgPSB0cnVlOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9p
bnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkpOworICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVy
KG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpLm5vZGUoKSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5leGVjdXRlKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRz
W25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
IWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291bnRFeGVjdXRp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNl
IEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCShyZXZpc2lvbiAyMjA3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8Q0ZHPiBOYXR1cmFsTG9vcDsKK3Vz
aW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+OwordXNpbmcgQ1BT
TmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CiAKLWNsYXNzIE5hdHVyYWxM
b29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3Bz
PENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9vcHMpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxMb29wcyhHcmFw
aCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3JhcGgubV9jZmcs
IGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAg
OiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpLCBl
bnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlvbkVuYWJsZWQo
KSkKICAgICB7CisgICAgICAgIC8vIE9PUFM6IGFkZCBzb21lIHZhbGlkYXRpb24gdGhhdCBncmFw
aCdzIGVudHJ5cG9pbnRzIGFyZSBub3QgaW4gYW55IGxvb3AuCiAgICAgfQogfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiAr
MjAzLDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsK
IH07CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisK
IHN0cnVjdCBDYWxsVmFyYXJnc0RhdGEgewogICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07
CkBAIC0xMjc3LDE3ICsxMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
QnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dp
dGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9
CiAKKyAgICBib29sIGlzRW50cnlTd2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gRW50cnlTd2l0Y2g7CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAg
IGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAg
ICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxT
d2l0Y2hEYXRhKj4oKTsKICAgICB9CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNo
RGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAg
ICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNh
c2UgRW50cnlTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2Nrcy5zaXplKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQpAQCAtMTM3Miw2ICsxMzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisK
KyAgICAgICAgaWYgKGlzRW50cnlTd2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3
aXRjaERhdGEoKS0+YmxvY2tzW2luZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAg
ICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1MTgsNiArMTU0
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAgICAgIGNhc2Ug
QXRvbWljc1N1YjoKICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAg
ICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAg
IHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUg
Zm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcg
YSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9c
CiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1h
Y3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGll
ci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNr
VGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3aXRjaCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTMzNiw2ICszMzcsNjcg
QEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBz
Y3JhdGNoOwogfQogCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIGlm
ICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2Nr
LT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENv
ZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0
Q29kZSk7CisKKyAgICBERkc6OkNhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoRW50cnlwb2ludCA9
IGppdENvZGUtPmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KTsKKyAgICBpZiAoIWNhdGNoRW50cnlwb2ludCkgeworICAgICAgICAvLyBUaGlzIGNhbiBiZSBu
dWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy4gVGhlIG1vc3QgY29tbW9uIGlzIHRoYXQgd2Ug
ZGlkbid0IGNvbXBpbGUgdGhpcworICAgICAgICAvLyBhZnRlcl9jYXRjaCBhcyBhbiBlbnRyeXBv
aW50IHNpbmNlIGl0IGhhZCBuZXZlciBleGVjdXRlZC4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgLy8gV2UncmUgb25seSBhbGxvd2VkIHRvIE9TUiBlbnRlciBpZiB3ZSd2
ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRpYmxlIGFyZ3VtZW50IHR5cGVzLgorICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVu
dEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOwor
ICAgICAgICBzd2l0Y2ggKGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1l
bnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAo
IXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAg
ICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVz
aDoKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4g
VGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQgdG8gYmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4g
YXJndW1lbnQgaXMgdHJpdmlhbGx5IGEgSlNWYWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGpp
dENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7
CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdp
c3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0
KCldKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0
ZWNvZGVPZmZzZXQoKV0udS5vcGNvZGUpID09IG9wX2FmdGVyX2NhdGNoKTsKKyAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMt
PmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5p
c0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIuZ2V0KClbaW5kZXhdID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3Bl
cmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4OworICAgIH0pOworCisgICAgcmV0dXJu
IGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21h
Y2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNo
Rm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9y
Lmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFC
eXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAK
K3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5k
ZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhp
cyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cwor
ICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRj
aCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsK
KwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50
cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51
bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3
ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAg
dG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9j
a0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUg
IkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhl
YWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlO
VF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigp
LgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMs
MTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBv
cmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8
Tm9kZSosIDg+IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0g
MDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAg
ICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1l
bnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYg
aXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICBvbGROb2RlID0gYXJndW1lbnRzW2Fy
Z3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290
LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1
bWVudCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0g
PSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVt
Q2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzksOCArMTQxLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0
YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7
CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9vdCwgYXJndW1lbnRzKTsKKwogICAgICAg
ICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVh
Y2hhYmxlQmxvY2tzKCk7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzI3LDcgKzcyNyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBt
X2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9k
ZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0Fu
YWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMo
bV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3Mo
bV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxh
bjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBy
dW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8g
c2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgog
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0
b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVu
c3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMo
KTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3
aXRjaCAobW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIK
LQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJl
UG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1i
ZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0
OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQ
cmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGls
ZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRj
aCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAg
ICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAg
ICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAg
ICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2Rl
XS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5n
KCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2Fz
ZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NF
ZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQu
cHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRl
ICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRF
ZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51
bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmlu
ZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVO
dW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3By
ZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNv
bnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJ
cyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rv
ck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYm
IHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJv
bSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2lj
QmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkg
bm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBp
cyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2lu
ZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAg
ICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9m
KHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qg
TnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2ln
bmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21h
cDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhl
IGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVu
dHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rp
b25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2so
KS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFy
Zyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAg
ICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNl
IFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAg
IHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAg
ICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNl
IFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxl
Q29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1w
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBT
U0FDYWxjdWxhdG9yIHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNl
dCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNhbGN1bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDEyICs5NSwxMiBAQCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0Rl
CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0Rl
ZihCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiBy
ZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlh
YmxlKTsKKyAgICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRv
cnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NB
Q2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxl
KiB2YXJpYWJsZSkKIHsKLSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmlkb20oYmxvY2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgu
bV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBt
X2RhdGFbYmxvY2tdLm1fZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRl
ZjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1
bGF0b3IuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDYWxjdWxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZv
aWQgY29tcHV0ZVBoaXMoY29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7
Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRv
cnMpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FE
b21pbmF0b3JzKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDog
bV92YXJpYWJsZXMpIHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxC
bG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1f
Z3JhcGgubV9zc2FEb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZz
LAogICAgICAgICAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2Nr
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09
IFRocmVhZGVkQ1BTKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVu
dHMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3Jh
cGgubV9jcHNDRkcgPSBudWxscHRyOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRv
cnMoKTsgLy8gT09QUzogYWxsb3cgdXMgdG8gYXNzZXJ0IGluIGVuc3VyZVNTQURvbWluYXRvcnMg
dGhhdCB3ZSdyZSBpbiBTU0EgZm9ybS4KICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7
CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRyYW5zZm9ybWF0aW9uOlxu
Iik7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRl
cyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3
aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9y
IGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJl
IHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAg
ICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1
bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUq
IHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJp
YWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgyLDIy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAg
ICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURh
dGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisg
ICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
OTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNo
Rm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAg
ICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0g
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBs
b2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9m
aWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxv
YWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2Zp
bGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7
CkBAIC00MTYsNyArNDIxLDExIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVNTQUNvbnZlcnNp
b24oR3JhcGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhh
c2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9pc0luU1NBQ29udmVyc2lv
bik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IHRydWU7CisgICAgYm9vbCByZXN1
bHQgPSBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBncmFwaC5tX2lz
SW5TU0FDb252ZXJzaW9uID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2Ug
SnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBE
aXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1
ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwODAsNiArNjA4MiwxNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpT
VmFsdWUqIHB0ciA9ICZtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClb
bm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2pp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7
CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxv
b3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4OCw2ICs2MTAwLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAg
ICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBA
IC02MTE2LDcgKzYxMzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6
CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3Jh
cGgoKS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRN
YXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKKyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJl
c2V0KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBA
IC0xNzcwLDggKzE3NzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlw
ZXMoCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmln
aW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQu
Z3JhcGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQu
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUg
PSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJn
dW1lbnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1
bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4K
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg1NSwxMiArMTg2MywxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2Ug
ZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAg
ICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZCht
X2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NS
VGFyZ2V0IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQg
dGhlbQorICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JF
bnRyeUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAg
ICB9CiAgICAgfQogfQogCkBAIC0xODcxLDEwICsxODc4LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAg
ICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9j
aywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAg
ICBpZiAoYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAg
ICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAg
ICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkp
OworICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3Rvcikg
eworICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAg
ICBGbHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9y
bWF0ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVz
aEZvcm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQo
Zmx1c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29z
ckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVu
dEZvcm1hdHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+
aXNPU1JUYXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBt
X29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0K
ICAgICB9CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50
cygpOworCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUo
KSk7CiAgICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVy
YWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAg
ICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBi
YXNlZCBvbiBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBo
Lm1fbmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5l
eGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERl
cHRoKGJsb2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJy
YW5jaCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUg
Y29ycmVjdC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0
dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9v
cDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBw
dWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04
MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29w
cyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3Jh
cGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVp
bGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4
Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BU
b0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhp
bnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9v
cEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdl
IHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCks
IEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBo
LCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0g
YmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJl
cnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9k
ZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhp
dCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91
c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9L
KQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygp
LAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBD
b2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3Ry
dWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwg
IjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAg
ICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmlu
Zy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBt
X25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdp
bigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFs
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRz
W2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAg
IG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0
Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJn
ZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdl
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFp
bCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFs
c2U7CkBAIC0xNDQxNCw3ICsxNDQxNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2so
KSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhp
cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQz
Ml90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQz
Ml90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwx
MyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwg
dWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBj
dXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9h
c3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29w
X2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRl
cl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6
IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lw
T1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tp
cE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxl
Lm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgm
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAg
aWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4o
REZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0
ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlW
YWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAq
UF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJf
dCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4
ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9O
ICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xv
d1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShF
eGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVS
QVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBl
ZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4
ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAj
ZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIp
OworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2Zp
bGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7Cisg
ICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZy
YW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlm
eV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSop
IFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6Cisg
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3Bf
ZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDcgQEAKIAkJNzBFQ0E2MEIxQjAyNDI2ODAw
NDQ5NzM5IC8qIFN5bWJvbEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEVDQTYwQzFCMDI0
MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5pcXVlZFN0cmluZ0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzkzNkQ2QTkxQzk5RjhBRTAwMEQxQUVEIC8qIFNtYWxsUHRyU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYWxsUHRyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2xlUm9vdEdyYXBoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkFFMUVCMjJBQzYwMERBREUzNiAvKiBV
VUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVVSUQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVVJRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmlnYW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyaWdhbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzOCw2ICs5MzksNyBAQAogCQkJCTE0Njk0MTk0MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkxNDY5NDE5ODE2RUFCMDQxMDAy
NEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwICovLAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0
RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCisJCQkJNzk1MjEyMDIxRjQyNTg4ODAwQkQ2
NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5
QiAvKiBTY29wZS5oICovLAogCQkJCTBGRUM4NEIwMUJEQUNEMzkwMDgwRkY3NCAvKiBTY29wZWRM
YW1iZGEuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAg
Ki8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNv
dXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5v
ZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9TaW5nbGVSb290R3JhcGguaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMzgsMTMzICszOSw5IEBAIGNsYXNzIEJhY2t3YXJkc0dyYXBoIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNHcmFwaCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gV2UgdXNlICIjZW5kIiB0byByZWZlciB0
byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjZW5kIjsgfTsKLQotICAgIGNsYXNzIE5vZGUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgTm9kZSh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlID0gdHlw
ZW5hbWUgR3JhcGg6Ok5vZGUoKSkKLSAgICAgICAgICAgIDogbV9ub2RlKG5vZGUpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBOb2RlIHJvb3QoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBOb2RlIHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOwot
ICAgICAgICAgICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZSYg
b3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3Ro
ZXIubV9ub2RlCi0gICAgICAgICAgICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9kZSYgb3RoZXIp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAqdGhpcyAhPSBOb2RlKCk7IH0KLQotICAgICAgICBib29sIGlzUm9vdCgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2lzUm9vdDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0K
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKLSAg
ICAgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIGNsYXNzIFNldCB7
Ci0gICAgcHVibGljOgotICAgICAgICBTZXQoKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGJvb2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja0Fu
ZFNldChtX2hhc1Jvb3QsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2Rl
Lm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHJlbW92ZShjb25zdCBOb2RlJiBu
b2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBmYWxzZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1faGFzUm9vdDsKLSAg
ICAgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1faGFzUm9vdCkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQocm9v
dE5hbWUoKSwgIiAiKTsKLSAgICAgICAgICAgIG91dC5wcmludChtX3NldCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3Nl
dDsKLSAgICAgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIGNsYXNzIE1hcCB7Ci0gICAgcHVibGljOgotICAgICAgICBN
YXAoR3JhcGgmIGdyYXBoKQotICAgICAgICAgICAgOiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdN
YXA8VD4oKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1fbWFwLmNsZWFyKCk7Ci0gICAgICAgICAgICBtX3Jvb3Qg
PSBUKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLnNpemUoKSArIDE7IH0KLQotICAgICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRl
eCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFpbmRleCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFwW2luZGV4IC0gMV07Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxNYXAqPih0aGlzKSlb
aW5kZXhdOwotICAgICAgICB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBu
b2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFwW25vZGUubm9k
ZSgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oY29uc3QgTm9k
ZSYgbm9kZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3RfY2Fz
dDxNYXAqPih0aGlzKSlbbm9kZV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKLSAgICAgICAg
VCBtX3Jvb3Q7Ci0gICAgfTsKLQorICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2Rl
PEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3JhcGhTZXQ8R3JhcGg+OworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5nbGVSb290TWFwPFQsIEdyYXBo
PjsKICAgICB0eXBlZGVmIFZlY3RvcjxOb2RlLCA0PiBMaXN0OwogCiAgICAgQmFja3dhcmRzR3Jh
cGgoR3JhcGgmIGdyYXBoKQpAQCAtMjU1LDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFub2RlKQogICAgICAgICAgICAgb3V0LnByaW50KCI8bnVsbD4iKTsKICAgICAgICAgZWxzZSBp
ZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgIG91dC5wcmludChyb290TmFtZSgpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOwogICAgICAgICBy
ZXR1cm4gb3V0LnRvQ1N0cmluZygpOwpJbmRleDogU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIw
NzEzKQorKysgU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJq
YW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAg
ICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAg
ICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRo
IGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0
byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1i
ZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYv
d3RmL1NpbmdsZVJvb3RHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RG
X1NpbmdsZVJvb3RHcmFwaF9oCisjZGVmaW5lIFdURl9TaW5nbGVSb290R3JhcGhfaAorCisjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3Qu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgR3JhcGg+Citj
bGFzcyBTaW5nbGVSb290R3JhcGhOb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBXZSB1c2UgIiNyb290
IiB0byByZWZlciB0byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjcm9vdCI7IH07CisKKyAgICBT
aW5nbGVSb290R3JhcGhOb2RlKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBlbmFtZSBH
cmFwaDo6Tm9kZSgpKQorICAgICAgICA6IG1fbm9kZShub2RlKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU2luZ2xlUm9vdEdyYXBoTm9kZSByb290KCkKKyAgICB7CisgICAgICAgIFNpbmds
ZVJvb3RHcmFwaE5vZGUgcmVzdWx0OworICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKKyAgICAg
ICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQorICAg
ICAgICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7CisgICAgfQorCisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBTaW5nbGVSb290R3Jh
cGhOb2RlKCk7IH0KKworICAgIGJvb2wgaXNSb290KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2lzUm9vdDsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9pc1Jvb3QpOworICAgICAgICByZXR1cm4g
bV9ub2RlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25v
ZGU7CisgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGhTZXQgeworICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290R3JhcGhT
ZXQoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgYm9vbCBhZGQoY29uc3QgTm9kZSYgbm9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNr
QW5kU2V0KG1faGFzUm9vdCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5u
b2RlKCkpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUpCisgICAg
eworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBjaGVja0Fu
ZFNldChtX2hhc1Jvb3QsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2Rl
Lm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlJiBub2RlKQor
ICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9o
YXNSb290OworICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOworICAg
IH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKG1faGFzUm9vdCkKKyAgICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgp
LCAiICIpOworICAgICAgICBvdXQucHJpbnQobV9zZXQpOworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3NldDsKKyAgICBib29sIG1faGFzUm9vdCB7IGZh
bHNlIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBHcmFwaD4KK2NsYXNz
IFNpbmdsZVJvb3RNYXAgeworICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdy
YXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290TWFwKEdyYXBoJiBncmFwaCkKKyAgICAgICAg
OiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdNYXA8VD4oKSkKKyAgICB7CisgICAgfQorCisgICAg
U2luZ2xlUm9vdE1hcChTaW5nbGVSb290TWFwJiYgb3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RG
TW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9yb290KFdURk1vdmUob3RoZXIubV9yb290
KSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX21h
cC5jbGVhcigpOworICAgICAgICBtX3Jvb3QgPSBUKCk7CisgICAgfQorCisgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9CisKKyAgICBUJiBvcGVyYXRv
cltdKHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAg
ICByZXR1cm4gbV9yb290OworICAgICAgICByZXR1cm4gbV9tYXBbaW5kZXggLSAxXTsKKyAgICB9
CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtpbmRleF07
CisgICAgfQorCisgICAgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAg
ICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9yb290OworICAg
ICAgICByZXR1cm4gbV9tYXBbbm9kZS5ub2RlKCldOworICAgIH0KKworICAgIGNvbnN0IFQmIG9w
ZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAo
KmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtub2RlXTsKKyAgICB9CisgICAgCitw
cml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7CisgICAg
VCBtX3Jvb3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJv
b3RHcmFwaCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2luZ2xlUm9vdEdyYXBoKTsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKworICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3Jh
cGhTZXQ8R3JhcGg+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5n
bGVSb290TWFwPFQsIEdyYXBoPjsKKyAgICB1c2luZyBMaXN0ID0gVmVjdG9yPE5vZGUsIDQ+Owor
CisgICAgU2luZ2xlUm9vdEdyYXBoKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdy
YXBoKQorICAgIHsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSByZWFsUm9vdCA6
IGdyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29y
cyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsgLy8gT09QUzogZG8gd2Ugd2FudCB0aGlzIGFzc2VydGlv
bj8KKyAgICAgICAgICAgIG1fcm9vdFN1Y2Nlc3Nvckxpc3QuYXBwZW5kKHJlYWxSb290KTsKKyAg
ICAgICAgICAgIG1fcm9vdFN1Y2Nlc3NvclNldC5hZGQocmVhbFJvb3QpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgTm9kZSByb290KCkgY29uc3QgeyByZXR1cm4gTm9kZTo6cm9vdCgpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBN
YXA8VD4obV9ncmFwaCk7IH0KKworICAgIExpc3Qgc3VjY2Vzc29ycyhjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAg
IGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1fZ3JhcGguc3VjY2Vzc29ycyhub2Rl
Lm5vZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIExpc3QgcHJlZGVjZXNzb3JzKGNvbnN0IE5vZGUmIG5v
ZGUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IHJldHVybiBMaXN0IHsgfTsKKworICAgICAgICBpZiAobV9yb290U3VjY2Vzc29yU2V0LmNvbnRh
aW5zKG5vZGUubm9kZSgpKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgucHJlZGVjZXNz
b3JzKG5vZGUubm9kZSgpKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIExpc3QgeyBy
b290KCkgfTsKKyAgICAgICAgfQorCisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3Ig
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5v
ZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KGNvbnN0IE5vZGUmIG5vZGUpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbV9ncmFwaC5pbmRleChub2RlLm5vZGUoKSkgKyAxOworICAg
IH0KKworICAgIE5vZGUgbm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gcm9vdCgpOworICAgICAgICByZXR1cm4g
bV9ncmFwaC5ub2RlKGluZGV4IC0gMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtTm9kZXMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubnVtTm9kZXMoKSArIDE7Cisg
ICAgfQorCisgICAgQ1N0cmluZyBkdW1wKE5vZGUgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAg
IFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
b3V0LnByaW50KCI8bnVsbD4iKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS5pc1Jvb3QoKSkKKyAg
ICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOworICAgICAgICBy
ZXR1cm4gb3V0LnRvQ1N0cmluZygpOworICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bU5vZGVzKCk7ICsraSkgeworICAgICAgICAgICAgTm9kZSBub2RlID0gdGhpcy0+bm9kZShpKTsK
KyAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIG91dC5wcmludChkdW1wKG5vZGUpLCAiOlxuIik7CisgICAgICAgICAgICBvdXQucHJp
bnQoIiAgICBQcmVkczogIik7CisgICAgICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAg
ICAgICAgICBmb3IgKE5vZGUgcHJlZGVjZXNzb3IgOiBwcmVkZWNlc3NvcnMobm9kZSkpCisgICAg
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBkdW1wKHByZWRlY2Vzc29yKSk7CisgICAgICAg
ICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICBTdWNjczog
Iik7CisgICAgICAgICAgICBjb21tYSA9IENvbW1hUHJpbnRlcigpOworICAgICAgICAgICAgZm9y
IChOb2RlIHN1Y2Nlc3NvciA6IHN1Y2Nlc3NvcnMobm9kZSkpCisgICAgICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBkdW1wKHN1Y2Nlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJc
biIpOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoJiBtX2dyYXBoOwor
ICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1f
cm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6
OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318087</attachid>
            <date>2017-08-14 16:52:25 -0700</date>
            <delta_ts>2017-08-14 19:10:14 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>140959</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMyw2ICs4NDEsMjggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7
CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5z
aXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNl
cy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxp
dmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVy
Q2F0Y2hJbmRleCA6IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVMb2NhbHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYWZ0ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVn
aXN0ZXI+IGxpdmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2Nh
bCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUGFyYW1ldGVycygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVu
ZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGF1dG8gcHJv
ZmlsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+KGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvZmlsZXMt
Pm1fc2l6ZSA9PSBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBwcm9maWxlcy0+bV9zaXplOyArK2kpCisgICAgICAgICAgICAgICAgcHJv
ZmlsZXMtPm1fYnVmZmVyLmdldCgpW2ldLm1fb3BlcmFuZCA9IGxpdmVPcGVyYW5kc1tpXS5vZmZz
ZXQoKTsKKyAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW2FmdGVyQ2F0Y2hJbmRleCArIDFdLnUu
cG9pbnRlciA9IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkBAIC0yNDg2LDkgKzI1MTYsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29k
ZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25z
QW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVBy
b2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmls
ZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tl
dHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJl
IGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZy
b21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJv
ZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjUzNCwxMiBAQCB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9m
aWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAg
ICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwog
ICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2Nh
dGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9y
YXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9m
aWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBt
X2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQs
OCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1
Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tl
dHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQor
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJh
cmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAg
IFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVj
dCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgewor
ICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVl
ZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAgICAgICAvLyB0
byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0
cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVvZihWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Np
emU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CisgICAgdm9pZCBm
b3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0
KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNo
KFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9wY29kZShvcF9h
ZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNhbFNjb3BlSW5k
ZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAg
ICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTgzOCw2ICsxODM5LDkgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1Zh
bGlkKGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
Q0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVi
bGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJk
c0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dh
cmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFw
aC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FD
Rkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihi
eXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZh
bHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVk
KGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29u
c3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Js
b2NrLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFz
aWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgp
OwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7
Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVt
cDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0g
ICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAg
ICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVu
ZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkg
b25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxs
IG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAg
ICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNh
bCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBz
dHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBp
bmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5
cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNp
dDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisj
aW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAs
NyArMTEzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5n
IHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAv
LyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2lu
LgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNw
bGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0
aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUK
ICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3Vu
ZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNl
IG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAg
ICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlm
IChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUo
KSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7
CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4
PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAg
ICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0
IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0g
dHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRB
cmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAg
ICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUw
LDYgKzUxNTUsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRp
b25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisK
KyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVy
ZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2lu
dC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgewor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5z
aXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVk
VHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBW
ZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNo
U2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBh
bGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9w
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAg
ICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1
bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFs
aWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1l
bnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3Vt
ZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50
cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNp
emUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHll
dC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50
cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Un
cmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisg
ICAgICAgICAgICAvLyBXZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJl
IHRvIE9TUiBlbnRlciwgd2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2Fm
dGVyX2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBt
X2N1cnJlbnRJbmRleDsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQo
bV9jdXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxS
ZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwg
cmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1
c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9L
ID0gZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3Vs
ZCBub3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25l
ZCBudW1iZXJPZkxvY2FscyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzQXJndW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVy
T2ZMb2NhbHMpLCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAg
ICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGxvY2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5k
LCB2YWx1ZSkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5t
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgu
bV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5v
dyBleGl0IGJlY2F1c2Ugd2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVy
IGFueSBsaXZlIGxvY2Fscy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAg
ICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhp
cyBoYXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAg
ICAgICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJl
IHNhZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSos
IDg+KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1l
bnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5z
aXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JB
cmd1bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGlj
dChhcmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5tZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFy
Z3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1l
bnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFp
ciA6IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3Jp
Z2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENh
bGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRy
KCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtp
bmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRo
ZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAg
ICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC02MTk2LDggKzYzMTUsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAg
IG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4u
b3NyRW50cnlCeXRlY29kZUluZGV4KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxv
Y2ssICJcbiIpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxv
Y2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdH
cmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAg
ICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgLy8gT09QUzogbWF5YmUgbWFrZSB0aGlzIHJl
bGVhc2U/CisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EgfHwgbV9ncmFwaC5t
X2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7Cisg
ICAgfQorCisgICAgTGlzdCByb290cygpCisgICAgeworICAgICAgICBMaXN0IHJlc3VsdDsKKyAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiByb290IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChyb290KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJl
dHVybiBCbG9ja01hcDxUPihtX2dyYXBoKTsgfQpAQCAtNzEsNiArODUsMzAgQEAgcHJpdmF0ZToK
ICAgICBHcmFwaCYgbV9ncmFwaDsKIH07CiAKK2NsYXNzIENQU0NGRyA6IHB1YmxpYyBTaW5nbGVS
b290R3JhcGg8Q0ZHPiB7CitwdWJsaWM6CisgICAgQ1BTQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICAg
ICAgOiBTaW5nbGVSb290R3JhcGg8Q0ZHPigqZ3JhcGgubV9zc2FDRkcpCisgICAgeworICAgIH0K
K307CisKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZh
bHVlPjo6dHlwZT4KK0NQU0NGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChncmFwaC5tX2Nwc0NGRyk7CisgICAgcmV0dXJuICpncmFwaC5tX2Nwc0NGRzsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQUNGRyYgc2Vs
ZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX3NzYUNG
Ryk7CisgICAgcmV0dXJuICpncmFwaC5tX3NzYUNGRzsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFy
Z3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwt
Y2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBl
cyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2Fz
ZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJ
UiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNB
dEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisK
KyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVt
cGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OCw3ICs1
OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwog
ICAgICAgICAKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBtX3ByZU9yZGVyID0gbV9ncmFwaC5ibG9j
a3NJblByZU9yZGVyKCk7CiAgICAgICAgIApAQCAtNjkwLDcgKzY5MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUu
c2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxv
Y2spKSB7CiAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwog
ICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzc5LDcgKzc3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUg
c3RyaWN0IGRvbWluYXRpb24gYmVjYXVzZSB0aGlzIHdvdWxkIG9ubHkgc2VlIHRoaW5ncyBpbiBv
dXIgb3duIGJsb2NrIGlmCiAgICAgICAgICAgICAvLyB0aGV5IGNhbWUgKmFmdGVyKiBvdXIgcG9z
aXRpb24gaW4gdGhlIGJsb2NrLiBDbGVhcmx5LCB3aGlsZSBvdXIgYmxvY2sgZG9taW5hdGVzCiAg
ICAgICAgICAgICAvLyBpdHNlbGYsIHRoZSB0aGluZ3MgaW4gdGhlIGJsb2NrIGFmdGVyIHVzIGRv
bid0IGRvbWluYXRlIHVzLgotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5z
dHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAg
REZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEuZGlkVmlzaXQpOwpAQCAtODU2LDcgKzg1
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7
CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5k
aWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwg
bV9ibG9jaykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2guc2V0Tm9kZShjYW5kaWRhdGUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjIwNzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlM
ZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAg
ICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgog
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2Nh
bDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAg
ICAgICAgIApAQCAtNDIyLDYgKzQyMyw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUKICAgICBjYXNlIEp1bXA6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBT
d2l0Y2g6CisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAgICBjYXNlIFRocm93OgogICAgIGNhc2Ug
Rm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyhHcmFw
aCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZURvbWluYXRvcnMo
KSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpKQog
ICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1cmVCYWNrd2FyZHNEb21p
bmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CisgICAgU1NBRG9taW5h
dG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIG1fYmFja3dhcmRz
RG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3Jk
ZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAgICAKLSAgICAgICAg
Y2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAgIGZvciAoYXV0byYg
YXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy52YWx1ZXMo
KSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rvcik7CiAKICAgICAg
ICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAuCiAgICAgICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRl
eC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1i
bGVyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSw4IEBAIFZlY3Rv
cjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBkdW1wSGVhZGVyKG91dCwg
bGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdpbik7CiAg
ICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgbV9ncmFwaC5lbnN1cmVO
YXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBt
X2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAgIGNvbnN0IGNoYXIqIHBy
ZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVByZWZpeCA9ICIgICAg
ICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgogICAgIGNh
c2UgU3dpdGNoOgorICAgIGNhc2UgRW50cnlTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46CiAgICAg
Y2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpAQCAtMTk2LDYgKzE5Nyw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRG
cm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2Ug
VW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMzIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVi
bGljIFdURjo6RG9taW5hdG9yczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgor
Y2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6
IFdURjo6RG9taW5hdG9yczxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWlu
YXRvcnM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQog
fTsKIAordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQ
U0RvbWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFND
Rkc+Ojp2YWx1ZT46OnR5cGU+CitDUFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZH
KEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5h
dG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJu
IGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDExICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAg
ICAgICAgLCBtX3Jlc3VsdCh0cnVlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9y
bSA9PSBTU0EpOwogICAgIH0KICAgICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2Ug
ZWRnZSkKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMt
PmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJl
c3VsdCA9IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93
bmVyLCBtX2Jsb2NrKTsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFM
b2coCiAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uu
bm9kZSgpLT5vd25lciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3MCw2ICsxOTcwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJc0Z1bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURp
cmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBKdW1wOgorICAgICAgICBjYXNlIEVudHJ5U3dp
dGNoOgogICAgICAgICBjYXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICAg
ICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKQEAgLTE5ODMsNiArMTk4NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAg
ICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAg
ICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsK
K2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hl
ZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZH
TmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVM
aXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcg
KzcyLDggQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihw
bGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmls
ZWRCbG9jayhtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFr
ZV91bmlxdWU8Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNT
QUNGRz4oKnRoaXMpKQorICAgICwgbV9jcHNDRkcoc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KCp0
aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRl
KEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZl
Tm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtNDExLDcgKzQxMSw4IEBAIGJvb2wgR3JhcGg6OnRl
cm1pbmFsc0FyZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVE
dW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91
dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+
YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJs
ZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0
KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywg
IiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwg
Iik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJs
b2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJs
b2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91
dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNv
dW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBA
IC00MjIsMTggKzQyMywxNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJl
YW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5n
KQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVk
Z2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAg
ICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsKLSAg
ICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRv
cnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKLSAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWlu
YXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRv
cnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxu
Iik7Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9kb21pbmF0b3JzICYmIHRlcm1p
bmFsc0FyZVZhbGlkKCkpIHsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
Ly8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJs
b2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZp
eCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250
aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVy
YXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKKyAgICAvL30KICAgICBp
ZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwgbV9iYWNr
d2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2FyZHNEb21p
bmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5ICs0NDYs
MjggQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9
CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJl
cmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAi
LCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0TnVt
YmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJhbExvb3Bz
KSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3Bz
LT5oZWFkZXJPZihibG9jaykpIHsKLSAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExv
b3AgaGVhZGVyLCBjb250YWluczoiKTsKLSAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBz
b3J0ZWRCbG9ja0xpc3Q7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9v
cC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChs
b29wLT5hdChpKS0+aW5kZXgpOwotICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKLSAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKLSAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3Ag
aGVhZGVyczoiKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWlu
aW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNv
bnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOwotICAgICAgICAgICAgb3V0LnByaW50KCJcbiIp
OwotICAgICAgICB9Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9uYXR1cmFsTG9v
cHMpIHsKKyAgICAvLyAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxM
b29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisgICAgLy8gICAgICAgIG91dC5wcmludChwcmVmaXgs
ICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKKyAgICAvLyAgICAgICAgVmVjdG9yPEJsb2Nr
SW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQorICAgIC8vICAgICAgICAgICAgc29ydGVkQmxvY2tM
aXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgIC8vICAgICAgICBzdGQ6OnNvcnQo
c29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7CisgICAgLy8g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyAr
K2kpCisgICAgLy8gICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ld
KTsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgIC8vICAgIH0KKyAgICAvLyAg
ICAKKyAgICAvLyAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5nTG9vcHMg
PQorICAgIC8vICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgLy8g
ICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CisgICAgLy8gICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOworICAgIC8vICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytpKQor
ICAgIC8vICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVh
ZGVyKCkpOworICAgIC8vICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8gICAgfQorICAg
IC8vfQogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUwMSwxMCBAQCB2b2lkIEdy
YXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBv
aW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5p
ZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRl
OiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAg
ICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVu
dEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAg
IGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBv
dXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIs
IGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NDEsMTAg
QEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6
ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3
b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5p
c1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7Cisg
ICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3
b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlz
dC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vz
c29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgwMSwxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFj
aGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2Rv
bWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBt
X3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxw
dHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29w
cyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5h
dG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEy
ICs4NTQsMzUgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBC
bG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xp
c3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9l
bnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGls
ZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQu
YXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nl
c3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3Nv
cihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAg
YXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlm
ICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0Eg
fHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1
cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJl
c3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtODYzLDcgKzg5MCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3Jk
ZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlz
dCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNo
KGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3Qu
cG9wKCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlz
aXRPcmRlcjo6UHJlOgpAQCAtODc2LDYgKzkwNCwxMiBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nr
c0luUG9zdE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fZW50cnlwb2ludHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKHJlc3VsdFtyZXN1bHQuc2l6ZSgpIC0gaSAtIDFd
KSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTUwNiw0
MyBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlv
bkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsK
IH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NB
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9z
c2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0K
IAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BT
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAo
IW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBv
c3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0lu
U1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9j
cHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NB
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7
CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMp
CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNr
d2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EpOyAvLyBXZSBjb3VsZCBjaGFuZ2UgdGhpcywgYnV0IGl0J3Mgb25s
eSB1c2VkIGluIFNTQSBmb3Igbm93LCBhbmQgd2UgZG9uJ3QgbmVlZCB0d28gZ3JhcGggZmllbGRz
IHlldCBmb3IgdHdvIHR5cGVzIG9mIGJhY2t3YXJkcyBDRkcuCiAgICAgaWYgKCFtX2JhY2t3YXJk
c0NGRykKICAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CkBAIC0xNTAzLDYgKzE1
NTAsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAKIEJhY2t3
YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9t
aW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0Rv
bWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1NTgsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5z
dXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKICAg
ICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE1NzYsNyBAQCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1f
YXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnRO
b2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVlW2FyZ3Vt
ZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDIxICs0NSwzMyBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAK
IGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEV4ZWNTdGF0ZTsKIAorCiBuYW1lc3BhY2UgREZHIHsK
IAogY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xhc3MgQmFja3dhcmRzRG9taW5hdG9yczsKIGNsYXNz
IENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwotY2xhc3MgRG9taW5hdG9y
czsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIEZsb3dJbmRleGluZzsKLWNsYXNz
IE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBvc3ROdW1iZXJpbmc7CisKK2NsYXNzIENQU0NGRzsK
K3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8
Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2lu
ZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVy
YWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FDRkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xh
c3MgRmxvd01hcDsKIApAQCAtOTAxLDkgKzkxMywxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9
CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJl
cmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJl
TmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworICAgIFNTQURvbWluYXRvcnMmIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1
cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYg
ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2Fy
ZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0
b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05MjEsNyArOTM0LDggQEAgcHVibGljOgogICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAg
Ci0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0
b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9j
ayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxk
cmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVk
SlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsK
QEAgLTk1NiwxNyArOTcwLDE4IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0
aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3
b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBt
X2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVh
bmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3
ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0
czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBt
X3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlv
biwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0
aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0Fy
cmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwogICAgIEJh
ZzxTd2l0Y2hEYXRhPiBtX3N3aXRjaERhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5U3dp
dGNoRGF0YT4gbV9lbnRyeVN3aXRjaERhdGE7CiAgICAgQmFnPE11bHRpR2V0QnlPZmZzZXREYXRh
PiBtX211bHRpR2V0QnlPZmZzZXREYXRhOwogICAgIEJhZzxNdWx0aVB1dEJ5T2Zmc2V0RGF0YT4g
bV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YTsKICAgICBCYWc8T2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YT4gbV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhOwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVi
bGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBt
X3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6
RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1f
ZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5h
dG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVt
YmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3Bz
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
UFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURv
bWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJh
bExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJh
bExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBt
X3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3Vu
dFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwog
ICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lz
SW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBt
X21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRl
eGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3Ry
YWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0
cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDU5IEBAIHN0YXRpYyB2
b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RT
dGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxv
Y2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2Zh
SGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7
Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0Fy
ZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3Ry
dWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1
ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVl
c0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1h
dDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1h
dCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBp
ZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7Cisg
ICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRy
eXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZv
dW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNs
b2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBv
aW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hl
ZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZv
cm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQorICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07Cisg
ICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBG
bHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShT
cGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFk
LmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVl
OgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5t
YWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQg
Zmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkg
ewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJv
b3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFp
bC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRl
eCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7
Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsK
LSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgICAg
IGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1
cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5z
KGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMgYWJv
dmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVChi
bG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZh
bHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDYgKzM2
OSwxMyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5i
bG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KKworICAgIGNhc2UgRW50cnlT
d2l0Y2g6IHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogdGFyZ2V0QmxvY2sgOiB0ZXJtaW5hbC0+ZW50cnlTd2l0Y2hEYXRhKCktPmJsb2Nr
cykKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgdGFyZ2V0QmxvY2sp
OworICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0
dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9p
ZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAg
b3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAg
Y2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnku
c2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAg
dmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29k
ZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAg
fQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29k
ZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5
QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAg
IGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4
LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0
dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6
ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50
cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNo
RW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAg
ICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAg
ICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3Vz
SW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5
cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJ
bmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3Vz
SW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisg
ICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBh
cmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChD
YXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdU
Rk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBw
ZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiw2ICsxNTgsNyBA
QCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxE
Rkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9yPENhdGNoRW50cnlwb2ludERh
dGE+IGNhdGNoRW50cnlwb2ludHM7CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwg
OD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxh
dGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50
U3RyZWFtOwpAQCAtMTY4LDYgKzE5NSw4IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29k
ZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAg
ICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAgIE1hbGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9T
UkVudHJ5QnVmZmVyOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDkgQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3Zl
cmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBp
ZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29k
ZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVv
ZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwog
ICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxh
dGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2
ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxl
cjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1h
bGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAg
Y29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVy
OjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpu
b3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6
OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9y
bWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2Nr
LmlzQ2F0Y2hFbnRyeXBvaW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVy
c2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlv
biByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNC
bG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1v
dmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVu
dHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQs
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxv
Y2suaXNDYXRjaEVudHJ5cG9pbnQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2Vk
IGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMu
CiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENv
ZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZm
ZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZh
bHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAg
ICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRl
YWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1
Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShC
YXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOwor
ICAgIHZvaWQgbm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6
TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3Vt
ZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVy
biBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5h
dHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9v
cERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3Jh
cGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygp
KTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1M
b29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGlu
Z3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAg
ICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RM
b29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAg
ICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9v
cERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRp
ZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29w
cyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4
ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0g
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBt
X2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2Rh
dGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAg
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5l
ck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAg
ICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91
dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAg
ICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRh
LndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9
IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhl
YWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNz
b3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHBy
ZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9v
cCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAg
ICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxv
b3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAg
IGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRl
eCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRv
IGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXpl
KCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBs
b29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRl
ciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgu
bV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAg
IGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAh
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVD
YWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFw
aCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7
CisgICAgLy8gT09QUzogbWF5YmUgdXNlIGhhc2hzZXQgZm9yIHRoaXMgYXNzZXJ0LgorICAgIFJF
TEVBU0VfQVNTRVJUKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7IC8vIEFu
IGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AhCisKICAgICAvLyBGSVhNRTogSWYg
d2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3aXRoIGEg
Yml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBsaWtlOgog
ICAgIC8vCkBAIC02OSw3ICs3Miw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFw
aCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJlcXVlbmNp
ZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBmbG9hdCBm
cmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+
cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRl
cyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3Jz
LT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1heChmcmVxdWVuY3ksIHByZWRlY2Vzc29yLT5leGVj
dXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAzLDcgKzEwNiw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0
ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vz
c29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXpl
KCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nv
ciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgIGlmIChn
cmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAg
ICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzW3By
ZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+cHJlZGVjZXNzb3JzLmxhc3QoKTsKICAgICAgICAg
YmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBw
dWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBs
b29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgt
LTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25h
dHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwotICAgICAgICAgICAgQmFzaWNCbG9jayogZXhp
c3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1f
Z3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAg
ICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJh
bExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGlu
Z1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG5lZWRzTmV3UHJlSGVhZGVy
ID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBs
b29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7
Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigp
LT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3Ip
KQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFk
ZXIoKS5ub2RlKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsK
KyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCku
bm9kZSgpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07CisgICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKS5ub2Rl
KCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgewogICAgICAgICAgICAgICAgICAgICBl
eGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTY1LDE0ICsxNjgsMTQgQEAgcHVi
bGljOgogICAgICAgICAgICAgLy8gQSBwcmUtaGVhZGVyIGlzIG1vc3QgdXNlZnVsIGlmIGl0J3Mg
cG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0ZXJtaW5hbC4gSGVuY2UKICAgICAgICAgICAgIC8v
IGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhpc3RpbmcgcHJlLWhlYWRlciBkb2Vzbid0IGFsbG93
IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAgICAgICAgICAgICAvLyBvcmlnaW4gb2YgdGhlIGxv
b3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyBwcmUtaGVhZGVyLgot
ICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLT5hdCgw
KS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBs
b29wLmhlYWRlcigpLm5vZGUoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKICAgICAgICAgICAgICAg
ICAmJiAhZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9yaWdpbi5leGl0T0spCiAgICAg
ICAgICAgICAgICAgbmVlZHNOZXdQcmVIZWFkZXIgPSB0cnVlOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9p
bnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkpOworICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVy
KG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpLm5vZGUoKSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5leGVjdXRlKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9v
bCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRz
W25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlz
UHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYg
IWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMSArNzgsMTMgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgQ291bnRFeGVjdXRp
b246CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgQnJhbmNoOgorICAgIGNhc2UgRW50cnlTd2l0
Y2g6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIERvdWJsZVJlcDoKICAgICBjYXNl
IEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCShyZXZpc2lvbiAyMjA3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxNSArMzQsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8Q0ZHPiBOYXR1cmFsTG9vcDsKK3Vz
aW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+OwordXNpbmcgQ1BT
TmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CiAKLWNsYXNzIE5hdHVyYWxM
b29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3Bz
PENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9vcHMpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxMb29wcyhHcmFw
aCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3JhcGgubV9jZmcs
IGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAg
OiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpLCBl
bnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlvbkVuYWJsZWQo
KSkKICAgICB7CisgICAgICAgIC8vIE9PUFM6IGFkZCBzb21lIHZhbGlkYXRpb24gdGhhdCBncmFw
aCdzIGVudHJ5cG9pbnRzIGFyZSBub3QgaW4gYW55IGxvb3AuCiAgICAgfQogfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiAr
MjAzLDE0IEBAIHN0cnVjdCBTd2l0Y2hEYXRhIHsKICAgICBib29sIGRpZFVzZUp1bXBUYWJsZTsK
IH07CiAKK3N0cnVjdCBFbnRyeVN3aXRjaERhdGEgeworICAgIEVudHJ5U3dpdGNoRGF0YSgpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8QmFzaWNCbG9jayo+IGJsb2NrczsKK307CisK
IHN0cnVjdCBDYWxsVmFyYXJnc0RhdGEgewogICAgIGludCBmaXJzdFZhckFyZ09mZnNldDsKIH07
CkBAIC0xMjc3LDE3ICsxMjg1LDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
QnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dp
dGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9
CiAKKyAgICBib29sIGlzRW50cnlTd2l0Y2goKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gRW50cnlTd2l0Y2g7CisgICAgfQorCiAgICAgYm9vbCBpc1Rlcm1pbmFsKCkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIEp1bXA6CiAgICAgICAg
IGNhc2UgQnJhbmNoOgogICAgICAgICBjYXNlIFN3aXRjaDoKKyAgICAgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CiAgICAg
ICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkBAIC0xMzQ5LDYgKzEzNjMsMTIgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQoaXNTd2l0Y2goKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxT
d2l0Y2hEYXRhKj4oKTsKICAgICB9CisKKyAgICBFbnRyeVN3aXRjaERhdGEqIGVudHJ5U3dpdGNo
RGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNFbnRyeVN3aXRjaCgpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPEVudHJ5U3dpdGNoRGF0YSo+KCk7CisgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIG51bVN1Y2Nlc3NvcnMoKQogICAgIHsKQEAgLTEzNTksNiArMTM3OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICBjYXNlIFN3aXRjaDoKICAgICAg
ICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSArIDE7CisgICAgICAgIGNh
c2UgRW50cnlTd2l0Y2g6CisgICAgICAgICAgICByZXR1cm4gZW50cnlTd2l0Y2hEYXRhKCktPmJs
b2Nrcy5zaXplKCk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQpAQCAtMTM3Miw2ICsxMzk0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisK
KyAgICAgICAgaWYgKGlzRW50cnlTd2l0Y2goKSkKKyAgICAgICAgICAgIHJldHVybiBlbnRyeVN3
aXRjaERhdGEoKS0+YmxvY2tzW2luZGV4XTsKKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAg
ICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1MTgsNiArMTU0
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBdG9taWNzU3RvcmU6CiAgICAgICAgIGNhc2Ug
QXRvbWljc1N1YjoKICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMwLDYgKzE5NTcsMTIgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAg
ICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAg
IHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CiAgICAgCiAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUg
Zm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcg
YSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9c
CiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1h
Y3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGll
ci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNr
VGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC0zODYsNiArMzg3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEp1bXAsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhCcmFuY2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhTd2l0Y2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbnRyeVN3aXRjaCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFJldHVybiwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKFRhaWxDYWxsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwK
ICAgICBtYWNybyhEaXJlY3RUYWlsQ2FsbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJB
cmdzKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTMzNiw2ICszMzcsNjcg
QEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBz
Y3JhdGNoOwogfQogCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIGlm
ICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2Nr
LT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENv
ZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0
Q29kZSk7CisKKyAgICBERkc6OkNhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoRW50cnlwb2ludCA9
IGppdENvZGUtPmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KTsKKyAgICBpZiAoIWNhdGNoRW50cnlwb2ludCkgeworICAgICAgICAvLyBUaGlzIGNhbiBiZSBu
dWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy4gVGhlIG1vc3QgY29tbW9uIGlzIHRoYXQgd2Ug
ZGlkbid0IGNvbXBpbGUgdGhpcworICAgICAgICAvLyBhZnRlcl9jYXRjaCBhcyBhbiBlbnRyeXBv
aW50IHNpbmNlIGl0IGhhZCBuZXZlciBleGVjdXRlZC4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgLy8gV2UncmUgb25seSBhbGxvd2VkIHRvIE9TUiBlbnRlciBpZiB3ZSd2
ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRpYmxlIGFyZ3VtZW50IHR5cGVzLgorICAgIGZvciAodW5z
aWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVu
dEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBl
eGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOwor
ICAgICAgICBzd2l0Y2ggKGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1l
bnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAo
IXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAg
ICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAg
ICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVz
aDoKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4g
VGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQgdG8gYmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4g
YXJndW1lbnQgaXMgdHJpdmlhbGx5IGEgSlNWYWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGpp
dENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7
CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdp
c3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0
KCldKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0
ZWNvZGVPZmZzZXQoKV0udS5vcGNvZGUpID09IG9wX2FmdGVyX2NhdGNoKTsKKyAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMt
PmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5p
c0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXIuZ2V0KClbaW5kZXhdID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3Bl
cmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4OworICAgIH0pOworCisgICAgcmV0dXJu
IGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21h
Y2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNo
Rm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9y
Lmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFC
eXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAK
K3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5k
ZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhp
cyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cwor
ICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRj
aCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsK
KwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50
cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51
bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3
ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAg
dG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVu
dHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9j
a0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUg
IkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhl
YWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlO
VF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigp
LgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2Vs
aW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMs
MTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBv
cmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8
Tm9kZSosIDg+IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0g
MDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAg
ICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1l
bnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYg
aXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICBvbGROb2RlID0gYXJndW1lbnRzW2Fy
Z3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290
LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1
bWVudCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0g
PSBub2RlOworICAgICAgICAgICAgYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAg
IH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVt
Q2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzksOCArMTQxLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0
YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7
CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9vdCwgYXJndW1lbnRzKTsKKwogICAgICAg
ICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVh
Y2hhYmxlQmxvY2tzKCk7CisKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzI3LDcgKzcyNyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBt
X2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9k
ZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0Fu
YWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMo
bV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3Mo
bV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxh
bjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBy
dW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8g
c2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgog
ICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0
b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVu
c3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMo
KTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3
aXRjaCAobW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIK
LQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJl
UG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1i
ZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0
OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQ
cmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGls
ZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRj
aCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAg
ICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAg
ICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAg
ICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2Rl
XS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5n
KCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2Fz
ZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NF
ZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQu
cHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRl
ICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRF
ZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51
bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0g
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmlu
ZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVO
dW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3By
ZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNv
bnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJ
cyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rv
ck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYm
IHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJv
bSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2lj
QmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNE
ZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0g
ICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkg
bm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBp
cyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2lu
ZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAg
ICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9m
KHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3Qg
TnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2ln
bmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21h
cDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhl
IGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVu
dHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rp
b25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2so
KS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFy
Zyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAg
ICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjAsNiArNzIwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAgICAgICBjYXNl
IFRvTnVtYmVyOgogICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6IHsKICAgICAgICAgICAg
IHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTExMTEsNiArMTExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eToKICAgICAgICAgY2FzZSBERkc6Okp1bXA6CiAgICAg
ICAgIGNhc2UgQnJhbmNoOgorICAgICAgICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICBjYXNl
IFN3aXRjaDoKICAgICAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICAgICAgY2FzZSBQcm9maWxl
Q29udHJvbEZsb3c6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1w
KCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBT
U0FDYWxjdWxhdG9yIHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNl
dCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNhbGN1bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDEyICs5NSwxMiBAQCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0Rl
CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0Rl
ZihCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiBy
ZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlh
YmxlKTsKKyAgICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRv
cnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NB
Q2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxl
KiB2YXJpYWJsZSkKIHsKLSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmlkb20oYmxvY2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgu
bV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBt
X2RhdGFbYmxvY2tdLm1fZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRl
ZjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1
bGF0b3IuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDYWxjdWxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZv
aWQgY29tcHV0ZVBoaXMoY29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7
Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRv
cnMpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FE
b21pbmF0b3JzKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDog
bV92YXJpYWJsZXMpIHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxC
bG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1f
Z3JhcGgubV9zc2FEb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZz
LAogICAgICAgICAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2Nr
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09
IFRocmVhZGVkQ1BTKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVu
dHMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3Jh
cGgubV9jcHNDRkcgPSBudWxscHRyOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRv
cnMoKTsgLy8gT09QUzogYWxsb3cgdXMgdG8gYXNzZXJ0IGluIGVuc3VyZVNTQURvbWluYXRvcnMg
dGhhdCB3ZSdyZSBpbiBTU0EgZm9ybS4KICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7
CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRyYW5zZm9ybWF0aW9uOlxu
Iik7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRl
cyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3
aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9y
IGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJl
IHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAg
ICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1
bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUq
IHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJp
YWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgyLDIy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAg
ICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURh
dGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisg
ICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
OTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9
PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNo
Rm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAg
ICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0g
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBs
b2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9m
aWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxv
YWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2Zp
bGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7
CkBAIC00MTYsNyArNDIxLDExIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVNTQUNvbnZlcnNp
b24oR3JhcGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhh
c2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9pc0luU1NBQ29udmVyc2lv
bik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IHRydWU7CisgICAgYm9vbCByZXN1
bHQgPSBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBncmFwaC5tX2lz
SW5TU0FDb252ZXJzaW9uID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3
LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2Ug
SnVtcDoKICAgICBjYXNlIEJyYW5jaDoKICAgICBjYXNlIFN3aXRjaDoKKyAgICBjYXNlIEVudHJ5
U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBE
aXJlY3RUYWlsQ2FsbDoKQEAgLTMyMyw2ICszMjQsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1
ZGUgIlR5cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTYwODAsNiArNjA4MiwxNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpT
VmFsdWUqIHB0ciA9ICZtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClb
bm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0
aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2pp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7
CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxv
b3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpAQCAtNjA4OCw2ICs2MTAwLDggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorCisgICAgY2FzZSBFbnRyeVN3aXRjaDoKICAg
ICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBA
IC02MTE2LDcgKzYxMzAsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6
CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3Jh
cGgoKS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRN
YXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKKyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJl
c2V0KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBA
IC0xNzcwLDggKzE3NzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlw
ZXMoCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmln
aW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQu
Z3JhcGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQu
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUg
PSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJn
dW1lbnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1
bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4K
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg1NSwxMiArMTg2MywxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2Ug
ZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAg
ICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZCht
X2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NS
VGFyZ2V0IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQg
dGhlbQorICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JF
bnRyeUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAg
ICB9CiAgICAgfQogfQogCkBAIC0xODcxLDEwICsxODc4LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAg
ICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9j
aywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAg
ICBpZiAoYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAg
ICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAg
ICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkp
OworICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3Rvcikg
eworICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAg
ICBGbHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9y
bWF0ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVz
aEZvcm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQo
Zmx1c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29z
ckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVu
dEZvcm1hdHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+
aXNPU1JUYXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBt
X29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0K
ICAgICB9CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50
cygpOworCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUo
KSk7CiAgICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVy
YWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAg
ICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBi
YXNlZCBvbiBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBo
Lm1fbmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5l
eGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERl
cHRoKGJsb2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJy
YW5jaCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUg
Y29ycmVjdC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0
dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9v
cDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBw
dWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04
MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29w
cyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3Jh
cGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVp
bGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4
Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BU
b0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhp
bnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9v
cEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdl
IHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCks
IEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBo
LCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0g
YmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJl
cnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9k
ZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhp
dCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91
c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9L
KQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygp
LAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBD
b2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3Ry
dWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwg
IjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAg
ICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmlu
Zy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBt
X25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdp
bigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFs
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRz
W2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAg
IG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0
Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJn
ZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdl
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFp
bCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFs
c2U7CkBAIC0xNDQxNCw3ICsxNDQxNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2so
KSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhp
cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQz
Ml90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQz
Ml90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwx
MyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwg
dWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBj
dXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9h
c3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29w
X2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRl
cl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6
IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lw
T1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tp
cE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxl
Lm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgm
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAg
aWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4o
REZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0
ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlW
YWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAq
UF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJf
dCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4
ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9O
ICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xv
d1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShF
eGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVS
QVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBl
ZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4
ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAj
ZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIp
OworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2Zp
bGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7Cisg
ICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZy
YW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlm
eV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSop
IFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6Cisg
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3Bf
ZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDcgQEAKIAkJNzBFQ0E2MEIxQjAyNDI2ODAw
NDQ5NzM5IC8qIFN5bWJvbEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEVDQTYwQzFCMDI0
MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5pcXVlZFN0cmluZ0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzkzNkQ2QTkxQzk5RjhBRTAwMEQxQUVEIC8qIFNtYWxsUHRyU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYWxsUHRyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2xlUm9vdEdyYXBoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkFFMUVCMjJBQzYwMERBREUzNiAvKiBV
VUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVVSUQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVVJRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmlnYW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyaWdhbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzOCw2ICs5MzksNyBAQAogCQkJCTE0Njk0MTk0MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkxNDY5NDE5ODE2RUFCMDQxMDAy
NEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwICovLAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0
RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCisJCQkJNzk1MjEyMDIxRjQyNTg4ODAwQkQ2
NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5
QiAvKiBTY29wZS5oICovLAogCQkJCTBGRUM4NEIwMUJEQUNEMzkwMDgwRkY3NCAvKiBTY29wZWRM
YW1iZGEuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAg
Ki8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNv
dXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5v
ZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9TaW5nbGVSb290R3JhcGguaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMzgsMTMzICszOSw5IEBAIGNsYXNzIEJhY2t3YXJkc0dyYXBoIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNHcmFwaCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gV2UgdXNlICIjZW5kIiB0byByZWZlciB0
byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjZW5kIjsgfTsKLQotICAgIGNsYXNzIE5vZGUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgTm9kZSh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlID0gdHlw
ZW5hbWUgR3JhcGg6Ok5vZGUoKSkKLSAgICAgICAgICAgIDogbV9ub2RlKG5vZGUpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBOb2RlIHJvb3QoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBOb2RlIHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOwot
ICAgICAgICAgICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZSYg
b3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3Ro
ZXIubV9ub2RlCi0gICAgICAgICAgICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9kZSYgb3RoZXIp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAqdGhpcyAhPSBOb2RlKCk7IH0KLQotICAgICAgICBib29sIGlzUm9vdCgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2lzUm9vdDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0K
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKLSAg
ICAgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIGNsYXNzIFNldCB7
Ci0gICAgcHVibGljOgotICAgICAgICBTZXQoKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGJvb2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja0Fu
ZFNldChtX2hhc1Jvb3QsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2Rl
Lm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHJlbW92ZShjb25zdCBOb2RlJiBu
b2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBmYWxzZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1faGFzUm9vdDsKLSAg
ICAgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1faGFzUm9vdCkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQocm9v
dE5hbWUoKSwgIiAiKTsKLSAgICAgICAgICAgIG91dC5wcmludChtX3NldCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3Nl
dDsKLSAgICAgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIGNsYXNzIE1hcCB7Ci0gICAgcHVibGljOgotICAgICAgICBN
YXAoR3JhcGgmIGdyYXBoKQotICAgICAgICAgICAgOiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdN
YXA8VD4oKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1fbWFwLmNsZWFyKCk7Ci0gICAgICAgICAgICBtX3Jvb3Qg
PSBUKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLnNpemUoKSArIDE7IH0KLQotICAgICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRl
eCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFpbmRleCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFwW2luZGV4IC0gMV07Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxNYXAqPih0aGlzKSlb
aW5kZXhdOwotICAgICAgICB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBu
b2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFwW25vZGUubm9k
ZSgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oY29uc3QgTm9k
ZSYgbm9kZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3RfY2Fz
dDxNYXAqPih0aGlzKSlbbm9kZV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKLSAgICAgICAg
VCBtX3Jvb3Q7Ci0gICAgfTsKLQorICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2Rl
PEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3JhcGhTZXQ8R3JhcGg+OworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5nbGVSb290TWFwPFQsIEdyYXBo
PjsKICAgICB0eXBlZGVmIFZlY3RvcjxOb2RlLCA0PiBMaXN0OwogCiAgICAgQmFja3dhcmRzR3Jh
cGgoR3JhcGgmIGdyYXBoKQpAQCAtMjU1LDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFub2RlKQogICAgICAgICAgICAgb3V0LnByaW50KCI8bnVsbD4iKTsKICAgICAgICAgZWxzZSBp
ZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgIG91dC5wcmludChyb290TmFtZSgpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOwogICAgICAgICBy
ZXR1cm4gb3V0LnRvQ1N0cmluZygpOwpJbmRleDogU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIw
NzEzKQorKysgU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJq
YW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAg
ICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAg
ICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRo
IGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0
byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1i
ZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYv
d3RmL1NpbmdsZVJvb3RHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RG
X1NpbmdsZVJvb3RHcmFwaF9oCisjZGVmaW5lIFdURl9TaW5nbGVSb290R3JhcGhfaAorCisjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3Qu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgR3JhcGg+Citj
bGFzcyBTaW5nbGVSb290R3JhcGhOb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBXZSB1c2UgIiNyb290
IiB0byByZWZlciB0byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjcm9vdCI7IH07CisKKyAgICBT
aW5nbGVSb290R3JhcGhOb2RlKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBlbmFtZSBH
cmFwaDo6Tm9kZSgpKQorICAgICAgICA6IG1fbm9kZShub2RlKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU2luZ2xlUm9vdEdyYXBoTm9kZSByb290KCkKKyAgICB7CisgICAgICAgIFNpbmds
ZVJvb3RHcmFwaE5vZGUgcmVzdWx0OworICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKKyAgICAg
ICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQorICAg
ICAgICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7CisgICAgfQorCisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBTaW5nbGVSb290R3Jh
cGhOb2RlKCk7IH0KKworICAgIGJvb2wgaXNSb290KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2lzUm9vdDsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9pc1Jvb3QpOworICAgICAgICByZXR1cm4g
bV9ub2RlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25v
ZGU7CisgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGhTZXQgeworICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290R3JhcGhT
ZXQoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgYm9vbCBhZGQoY29uc3QgTm9kZSYgbm9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNr
QW5kU2V0KG1faGFzUm9vdCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5u
b2RlKCkpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUpCisgICAg
eworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBjaGVja0Fu
ZFNldChtX2hhc1Jvb3QsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2Rl
Lm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlJiBub2RlKQor
ICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9o
YXNSb290OworICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOworICAg
IH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKG1faGFzUm9vdCkKKyAgICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgp
LCAiICIpOworICAgICAgICBvdXQucHJpbnQobV9zZXQpOworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3NldDsKKyAgICBib29sIG1faGFzUm9vdCB7IGZh
bHNlIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBHcmFwaD4KK2NsYXNz
IFNpbmdsZVJvb3RNYXAgeworICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdy
YXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290TWFwKEdyYXBoJiBncmFwaCkKKyAgICAgICAg
OiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdNYXA8VD4oKSkKKyAgICB7CisgICAgfQorCisgICAg
U2luZ2xlUm9vdE1hcChTaW5nbGVSb290TWFwJiYgb3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RG
TW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9yb290KFdURk1vdmUob3RoZXIubV9yb290
KSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX21h
cC5jbGVhcigpOworICAgICAgICBtX3Jvb3QgPSBUKCk7CisgICAgfQorCisgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9CisKKyAgICBUJiBvcGVyYXRv
cltdKHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAg
ICByZXR1cm4gbV9yb290OworICAgICAgICByZXR1cm4gbV9tYXBbaW5kZXggLSAxXTsKKyAgICB9
CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtpbmRleF07
CisgICAgfQorCisgICAgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAg
ICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9yb290OworICAg
ICAgICByZXR1cm4gbV9tYXBbbm9kZS5ub2RlKCldOworICAgIH0KKworICAgIGNvbnN0IFQmIG9w
ZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAo
KmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtub2RlXTsKKyAgICB9CisgICAgCitw
cml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7CisgICAg
VCBtX3Jvb3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJv
b3RHcmFwaCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2luZ2xlUm9vdEdyYXBoKTsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKworICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3Jh
cGhTZXQ8R3JhcGg+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5n
bGVSb290TWFwPFQsIEdyYXBoPjsKKyAgICB1c2luZyBMaXN0ID0gVmVjdG9yPE5vZGUsIDQ+Owor
CisgICAgU2luZ2xlUm9vdEdyYXBoKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdy
YXBoKQorICAgIHsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSByZWFsUm9vdCA6
IGdyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29y
cyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsgLy8gT09QUzogZG8gd2Ugd2FudCB0aGlzIGFzc2VydGlv
bj8KKyAgICAgICAgICAgIG1fcm9vdFN1Y2Nlc3Nvckxpc3QuYXBwZW5kKHJlYWxSb290KTsKKyAg
ICAgICAgICAgIG1fcm9vdFN1Y2Nlc3NvclNldC5hZGQocmVhbFJvb3QpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgTm9kZSByb290KCkgY29uc3QgeyByZXR1cm4gTm9kZTo6cm9vdCgpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBN
YXA8VD4obV9ncmFwaCk7IH0KKworICAgIExpc3Qgc3VjY2Vzc29ycyhjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAg
IGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1fZ3JhcGguc3VjY2Vzc29ycyhub2Rl
Lm5vZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIExpc3QgcHJlZGVjZXNzb3JzKGNvbnN0IE5vZGUmIG5v
ZGUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IHJldHVybiBMaXN0IHsgfTsKKworICAgICAgICBpZiAobV9yb290U3VjY2Vzc29yU2V0LmNvbnRh
aW5zKG5vZGUubm9kZSgpKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgucHJlZGVjZXNz
b3JzKG5vZGUubm9kZSgpKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIExpc3QgeyBy
b290KCkgfTsKKyAgICAgICAgfQorCisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3Ig
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5v
ZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KGNvbnN0IE5vZGUmIG5vZGUpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbV9ncmFwaC5pbmRleChub2RlLm5vZGUoKSkgKyAxOworICAg
IH0KKworICAgIE5vZGUgbm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gcm9vdCgpOworICAgICAgICByZXR1cm4g
bV9ncmFwaC5ub2RlKGluZGV4IC0gMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtTm9kZXMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubnVtTm9kZXMoKSArIDE7Cisg
ICAgfQorCisgICAgQ1N0cmluZyBkdW1wKE5vZGUgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAg
IFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
b3V0LnByaW50KCI8bnVsbD4iKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS5pc1Jvb3QoKSkKKyAg
ICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOworICAgICAgICBy
ZXR1cm4gb3V0LnRvQ1N0cmluZygpOworICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bU5vZGVzKCk7ICsraSkgeworICAgICAgICAgICAgTm9kZSBub2RlID0gdGhpcy0+bm9kZShpKTsK
KyAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIG91dC5wcmludChkdW1wKG5vZGUpLCAiOlxuIik7CisgICAgICAgICAgICBvdXQucHJp
bnQoIiAgICBQcmVkczogIik7CisgICAgICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAg
ICAgICAgICBmb3IgKE5vZGUgcHJlZGVjZXNzb3IgOiBwcmVkZWNlc3NvcnMobm9kZSkpCisgICAg
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBkdW1wKHByZWRlY2Vzc29yKSk7CisgICAgICAg
ICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICBTdWNjczog
Iik7CisgICAgICAgICAgICBjb21tYSA9IENvbW1hUHJpbnRlcigpOworICAgICAgICAgICAgZm9y
IChOb2RlIHN1Y2Nlc3NvciA6IHN1Y2Nlc3NvcnMobm9kZSkpCisgICAgICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBkdW1wKHN1Y2Nlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJc
biIpOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoJiBtX2dyYXBoOwor
ICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1f
cm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6
OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>
<flag name="commit-queue"
          id="338559"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318099</attachid>
            <date>2017-08-14 19:10:14 -0700</date>
            <delta_ts>2017-08-14 20:41:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>147457</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2xleGljYWwtbGV0LWV4Y2VwdGlvbi1oYW5kbGluZy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9sZXhpY2FsLWxldC1leGNlcHRpb24taGFuZGxp
bmcuanMJKHJldmlzaW9uIDIyMDcxMykKKysrIEpTVGVzdHMvc3RyZXNzL2xleGljYWwtbGV0LWV4
Y2VwdGlvbi1oYW5kbGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTMsNzAgKzEzLDcwIEBAIG5v
SW5saW5lKGFzc2VydCk7CiAKIGNvbnN0IE5VTV9MT09QUyA9IDEwMDsKIAotOyhmdW5jdGlvbiAo
KSB7Ci0KLWZ1bmN0aW9uIGZvbygpIHsKLSAgICBsZXQgeCA9IDIwOwotICAgIGxldCB5ID0gInki
OwotICAgIHRyeSB7Ci0gICAgICAgIGFzc2VydCh4ID09PSAyMCk7Ci0gICAgICAgIGFzc2VydCh5
ID09PSAieSIpOwotICAgICAgICB0aHJvdyAiZXJyb3IiOwotICAgIH0gY2F0Y2goZSkgewotICAg
ICAgICBhc3NlcnQoeCA9PT0gMjApOwotICAgIH0gZmluYWxseSB7Ci0gICAgICAgIGFzc2VydCh4
ID09PSAyMCk7Ci0gICAgICAgIGFzc2VydCh5ID09PSAieSIpOwotICAgIH0KLQotICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTsgaSsrKSB7Ci0gICAgICAgIGxldCBudW1GaW5hbGx5ID0gMDsKLSAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGxldCBhID0gNDA7Ci0gICAgICAgICAgICBsZXQgY2Fw
QSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gYTsgfQotICAgICAgICAgICAgYXNzZXJ0KGNhcEEoKSA9
PT0gNDApOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBsZXQgYiA9IDQxOwot
ICAgICAgICAgICAgICAgIGxldCBjYXBCID0gZnVuY3Rpb24oKSB7IHJldHVybiBiOyB9Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0KGNhcEIoKSA9PT0gNDEpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dChjYXBBKCkgPT09IDQwKTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMjA7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaChlKXsKLSAgICAgICAgICAg
ICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgICAgICBsZXQgYyA9IDQyOwotICAgICAg
ICAgICAgICAgICAgICBsZXQgY2FwQyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gYzsgfQotICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQoY2FwQygpID09PSA0Mik7Ci0gICAgICAgICAgICAgICAgICAg
IGFzc2VydChjYXBCKCkgPT09IDQxKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNhcEEo
KSA9PT0gNDApOwotICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgbnVtRmluYWxseSsrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAyMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGkgPT09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbnVtRmluYWxseSsrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gMjM7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgaWYg
KGkgPT09IDApIHsKLSAgICAgICAgICAgICAgICBudW1GaW5hbGx5Kys7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBhc3NlcnQobnVtRmluYWxseSA9PT0gMyk7Ci0gICAgICAgICAgICByZXR1
cm4gMjQ7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgTlVNX0xP
T1BTOyBpKyspIHsKLSAgICBhc3NlcnQoZm9vKCkgPT09IDI0KTsKLX0KLQotfSkoKTsKKy8vOyhm
dW5jdGlvbiAoKSB7CisvLworLy9mdW5jdGlvbiBmb28oKSB7CisvLyAgICBsZXQgeCA9IDIwOwor
Ly8gICAgbGV0IHkgPSAieSI7CisvLyAgICB0cnkgeworLy8gICAgICAgIGFzc2VydCh4ID09PSAy
MCk7CisvLyAgICAgICAgYXNzZXJ0KHkgPT09ICJ5Iik7CisvLyAgICAgICAgdGhyb3cgImVycm9y
IjsKKy8vICAgIH0gY2F0Y2goZSkgeworLy8gICAgICAgIGFzc2VydCh4ID09PSAyMCk7CisvLyAg
ICB9IGZpbmFsbHkgeworLy8gICAgICAgIGFzc2VydCh4ID09PSAyMCk7CisvLyAgICAgICAgYXNz
ZXJ0KHkgPT09ICJ5Iik7CisvLyAgICB9CisvLworLy8gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
OyBpKyspIHsKKy8vICAgICAgICBsZXQgbnVtRmluYWxseSA9IDA7CisvLyAgICAgICAgdHJ5IHsK
Ky8vICAgICAgICAgICAgbGV0IGEgPSA0MDsKKy8vICAgICAgICAgICAgbGV0IGNhcEEgPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGE7IH0KKy8vICAgICAgICAgICAgYXNzZXJ0KGNhcEEoKSA9PT0gNDAp
OworLy8gICAgICAgICAgICB0cnkgeworLy8gICAgICAgICAgICAgICAgbGV0IGIgPSA0MTsKKy8v
ICAgICAgICAgICAgICAgIGxldCBjYXBCID0gZnVuY3Rpb24oKSB7IHJldHVybiBiOyB9CisvLyAg
ICAgICAgICAgICAgICBhc3NlcnQoY2FwQigpID09PSA0MSk7CisvLyAgICAgICAgICAgICAgICBh
c3NlcnQoY2FwQSgpID09PSA0MCk7CisvLyAgICAgICAgICAgICAgICB0cnkgeworLy8gICAgICAg
ICAgICAgICAgICAgIHJldHVybiAyMDsKKy8vICAgICAgICAgICAgICAgIH0gY2F0Y2goZSl7Cisv
LyAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworLy8gICAgICAgICAgICAgICAgICAgIGxldCBj
ID0gNDI7CisvLyAgICAgICAgICAgICAgICAgICAgbGV0IGNhcEMgPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGM7IH0KKy8vICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2FwQygpID09PSA0Mik7Cisv
LyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNhcEIoKSA9PT0gNDEpOworLy8gICAgICAgICAg
ICAgICAgICAgIGFzc2VydChjYXBBKCkgPT09IDQwKTsKKy8vICAgICAgICAgICAgICAgICAgICBp
ZiAoaSA9PT0gMCkgeworLy8gICAgICAgICAgICAgICAgICAgICAgICBudW1GaW5hbGx5Kys7Cisv
LyAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAgICAgIHJldHVybiAyMjsK
Ky8vICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgfSBjYXRjaChlKSB7CisvLyAgICAg
ICAgICAgIH0gZmluYWxseSB7CisvLyAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgeworLy8g
ICAgICAgICAgICAgICAgICAgIG51bUZpbmFsbHkrKzsKKy8vICAgICAgICAgICAgICAgIH0KKy8v
ICAgICAgICAgICAgICAgIHJldHVybiAyMzsKKy8vICAgICAgICAgICAgfQorLy8gICAgICAgIH0g
Y2F0Y2goZSkgeworLy8gICAgICAgIH0gZmluYWxseSB7CisvLyAgICAgICAgICAgIGlmIChpID09
PSAwKSB7CisvLyAgICAgICAgICAgICAgICBudW1GaW5hbGx5Kys7CisvLyAgICAgICAgICAgIH0K
Ky8vICAgICAgICAgICAgYXNzZXJ0KG51bUZpbmFsbHkgPT09IDMpOworLy8gICAgICAgICAgICBy
ZXR1cm4gMjQ7CisvLyAgICAgICAgfQorLy8gICAgfQorLy99CisvLworLy9mb3IgKHZhciBpID0g
MDsgaSA8IE5VTV9MT09QUzsgaSsrKSB7CisvLyAgICBhc3NlcnQoZm9vKCkgPT09IDI0KTsKKy8v
fQorLy8KKy8vfSkoKTsKIAogCiA7KGZ1bmN0aW9uICgpIHsKQEAgLTk2LDEyICs5NiwxNCBAQCBm
dW5jdGlvbiBmb28oKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgImUiOwogICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
ICAgICAgICBhc3NlcnQoImZvbyIpOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoaSA9PT0g
MCk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBCKCkgPT09IDQxKTsKICAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0KGNhcEEoKSA9PT0gNDApOwogICAgICAgICAgICAgICAgICAgICBu
dW1FcnJvcnMrKzsKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgICAgICAg
ICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoImJhciIpOwogICAgICAg
ICAgICAgICAgICAgICBsZXQgYyA9IDQyOwogICAgICAgICAgICAgICAgICAgICBsZXQgY2FwQyA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gYzsgfQogICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYWwg
PSAibG9jYWwiOwpAQCAtMTE0LDYgKzExNiw3IEBAIGZ1bmN0aW9uIGZvbygpIHsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgICAgIGFzc2VydChlID09PSAiZSIpOwogICAgICAgICAgICAgICAgIGFz
c2VydChpID09PSAwKTsKICAgICAgICAgICAgICAgICBhc3NlcnQoY2FwQSgpID09PSA0MCk7CiAg
ICAgICAgICAgICAgICAgbnVtRXJyb3JzKys7CkBAIC0xMjksNiArMTMyLDcgQEAgZnVuY3Rpb24g
Zm9vKCkgewogICAgICAgICAgICAgICAgIHJldHVybiAyMzsKICAgICAgICAgICAgIH0gICAgCiAg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0KGUgPT09ICJlIik7CiAgICAg
ICAgICAgICAvL2Fzc2VydChpID09PSAwKTsKICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAg
ICAgIGlmIChpID09PSAwKSB7CkBAIC0xNDksNTQgKzE1Myw1NCBAQCBmb3IgKHZhciBpID0gMDsg
aSA8IE5VTV9MT09QUzsgaSsrKSB7CiB9KSgpOwogCiAKLXZhciBkID0gMTAwOwotOyhmdW5jdGlv
biAoKXsKLWZ1bmN0aW9uIGZvbygpIHsKLSAgICBhc3NlcnQoZCA9PT0gMTAwKTsKLSAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDE7IGkrKykgewotICAgICAgICBsZXQgbnVtRmluYWxseSA9IDA7Ci0g
ICAgICAgIGxldCBudW1FcnJvcnMgPSAwOwotICAgICAgICBsZXQgYyA9IDQ0OwotICAgICAgICBh
c3NlcnQoZCA9PT0gMTAwKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGxldCBkID0gNDU7
Ci0gICAgICAgICAgICBpZiAodHJ1dGgoKSkgewotICAgICAgICAgICAgICAgIGxldCBhID0gMjA7
Ci0gICAgICAgICAgICAgICAgbGV0IGNhcEEgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGE7IH0KLSAg
ICAgICAgICAgICAgICBhc3NlcnQoY2FwQSgpID09PSAyMCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHRydXRoKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSAyMTsKLSAgICAgICAgICAg
ICAgICAgICAgbGV0IGUgPSA0ODsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGNhcEIgPSBmdW5j
dGlvbigpIHsgcmV0dXJuIGI7IH0KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNhcEIoKSA9
PT0gMjEpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZCA9PT0gNDUpOwotICAgICAgICAg
ICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgImUiOwotICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydChjYXBBKCkgPT09IDIwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChhID09
PSAyMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBudW1FcnJvcnMrKzsKLSAgICAgICAgICAg
ICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBB
KCkgPT09IDIwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChlID09PSA0OCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBudW1GaW5hbGx5Kys7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMzA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
IAotICAgICAgICAgICAgfQotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgYXNzZXJ0
KGMgPT09IDQ0KTsKLSAgICAgICAgICAgIGFzc2VydChkID09PSAxMDApOwotICAgICAgICAgICAg
bnVtRmluYWxseSsrOwotICAgICAgICAgICAgYXNzZXJ0KG51bUZpbmFsbHkgPT09IDIpOwotICAg
ICAgICAgICAgYXNzZXJ0KG51bUVycm9ycyA9PT0gMSk7Ci0gICAgICAgICAgICByZXR1cm4gNDA7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgTlVNX0xPT1BTOyBp
KyspIHsKLSAgICBhc3NlcnQoZm9vKCkgPT09IDQwKTsKLX0KLQotfSkoKTsKKy8vdmFyIGQgPSAx
MDA7CisvLzsoZnVuY3Rpb24gKCl7CisvL2Z1bmN0aW9uIGZvbygpIHsKKy8vICAgIGFzc2VydChk
ID09PSAxMDApOworLy8gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxOyBpKyspIHsKKy8vICAgICAg
ICBsZXQgbnVtRmluYWxseSA9IDA7CisvLyAgICAgICAgbGV0IG51bUVycm9ycyA9IDA7CisvLyAg
ICAgICAgbGV0IGMgPSA0NDsKKy8vICAgICAgICBhc3NlcnQoZCA9PT0gMTAwKTsKKy8vICAgICAg
ICB0cnkgeworLy8gICAgICAgICAgICBsZXQgZCA9IDQ1OworLy8gICAgICAgICAgICBpZiAodHJ1
dGgoKSkgeworLy8gICAgICAgICAgICAgICAgbGV0IGEgPSAyMDsKKy8vICAgICAgICAgICAgICAg
IGxldCBjYXBBID0gZnVuY3Rpb24oKSB7IHJldHVybiBhOyB9CisvLyAgICAgICAgICAgICAgICBh
c3NlcnQoY2FwQSgpID09PSAyMCk7CisvLyAgICAgICAgICAgICAgICBpZiAodHJ1dGgoKSkgewor
Ly8gICAgICAgICAgICAgICAgICAgIGxldCBiID0gMjE7CisvLyAgICAgICAgICAgICAgICAgICAg
bGV0IGUgPSA0ODsKKy8vICAgICAgICAgICAgICAgICAgICBsZXQgY2FwQiA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gYjsgfQorLy8gICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBCKCkgPT09IDIx
KTsKKy8vICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZCA9PT0gNDUpOworLy8gICAgICAgICAg
ICAgICAgICAgIHRyeSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICJlIjsKKy8v
ICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgYXNzZXJ0KGNhcEEoKSA9PT0gMjApOworLy8gICAgICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQoYSA9PT0gMjApOworLy8gICAgICAgICAgICAgICAgICAgICAgICBudW1FcnJvcnMrKzsKKy8v
ICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworLy8gICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQoY2FwQSgpID09PSAyMCk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dChlID09PSA0OCk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIG51bUZpbmFsbHkrKzsKKy8v
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDMwOworLy8gICAgICAgICAgICAgICAgICAg
IH0KKy8vICAgICAgICAgICAgICAgIH0gCisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICB9IGZp
bmFsbHkgeworLy8gICAgICAgICAgICBhc3NlcnQoYyA9PT0gNDQpOworLy8gICAgICAgICAgICBh
c3NlcnQoZCA9PT0gMTAwKTsKKy8vICAgICAgICAgICAgbnVtRmluYWxseSsrOworLy8gICAgICAg
ICAgICBhc3NlcnQobnVtRmluYWxseSA9PT0gMik7CisvLyAgICAgICAgICAgIGFzc2VydChudW1F
cnJvcnMgPT09IDEpOworLy8gICAgICAgICAgICByZXR1cm4gNDA7CisvLyAgICAgICAgfQorLy8g
ICAgfQorLy99CisvLworLy9mb3IgKHZhciBpID0gMDsgaSA8IE5VTV9MT09QUzsgaSsrKSB7Cisv
LyAgICBhc3NlcnQoZm9vKCkgPT09IDQwKTsKKy8vfQorLy8KKy8vfSkoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDcgKzM4
OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR1BoYXNlLmNwcAog
ICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5jcHAKLSAgICBkZmcv
REZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBo
YXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKICAgICBk
ZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5
NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
M0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQkw
RjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQzFGMTgxQjg2OEU3
OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsKIAkJMEYzQzFGMUIx
Qjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4RTc5MDBBQkIwOEIg
LyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUExOUQzNTNBNTAwRjYx
QjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBGNjFCN0YgLyogREZH
UHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcu
aCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzIxQzQ1RjM1
QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVH
ZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQwRTRBOTFDNDk3
Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNv
ZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1OThBQTYgLyogREZH
SW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5MUI4NjhFNzkwMEFC
QjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0UwMUE4MTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRoID0gZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNFMDFB
OTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBhdGggPSBkZmcvREZH
UHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0
NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3JtYXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJCQkJMEZCRTBGNkUx
NkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oICovLAogCQkJ
CTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERG
R1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQwQkE3RDAwQjFEMUI1
IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJCOUNFMTE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJCQkwRkZDOTIxNTFC
OTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBAIC04NjkzLDcgKzg2
ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxD
bG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFEQjBCMDA4MkM1RTgg
LyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZG
Qzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCBp
biBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0
TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBCQTdEMDBCMUQxQjUg
LyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5MjE2
MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5NzM4QjgwMDlERjc0
NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0MTZDMURCMDkwMDgy
QzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBE
RkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI5Q0VDMTlEMEJB
N0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1l
KHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9pZCogcG9pbnRlciA9
IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxv
Y2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmludGYoIiVwIiwgcG9p
bnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BB
bmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24J
KHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgi
IDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJs
ZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3Ro
IiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0
aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDog
MiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxl
bmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgi
IDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dl
dF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgor
ICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fz
c2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAg
ICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0
ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBj
YXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElO
VF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsg
b3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4g
YWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rp
b25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24q
IHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAgKzgwNywxNiBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251
bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9j
YXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAg
ICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAg
LTgzMyw2ICs4NDEsMzAgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
UwogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgp
LT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXpl
b2YoSW5zdHJ1Y3Rpb24pKTsKKworICAgIGlmIChhZnRlckNhdGNoSW5kaWNlcy5zaXplKCkpIHsK
KyAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2
ZW5lc3NBbmFseXNpcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFmdGVyQ2F0Y2hJbmRleCA6
IGFmdGVyQ2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVMb2Nh
bHMgPSBieXRlY29kZUxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYWZ0
ZXJDYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVP
cGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hT
ZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3Bl
cmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVy
cygpOyArK2kpCisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChpKSk7CisKKyAgICAgICAgICAgIGRhdGFMb2dMbigiTGl2ZSBvcGVy
YW5kcyBzaXplOiAiLCBsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKworICAgICAgICAgICAgYXV0byBw
cm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4o
bGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxl
cy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBw
cm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9m
ZnNldCgpOworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbYWZ0ZXJDYXRjaEluZGV4ICsgMV0u
dS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMu
YXBwZW5kKFdURk1vdmUocHJvZmlsZXMpKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTI0ODYsOSArMjUxOCwxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBD
b2RlQmxvY2s6OmlkZW50aWZpZXIoCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlv
bnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVl
UHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzKQogewogICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKKwogICAgIG51bWJlck9mTGl2
ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA9IDA7CiAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9m
aWxlcyA9IDA7IC8vIElmIHRoaXMgZGl2aWRlZCBieSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVj
a2V0cyBlcXVhbHMgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgdGhlbiB2YWx1ZSBwcm9maWxlcyBh
cmUgZnVsbC4KKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFs
dWVQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0
RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAgICAgIHVuc2lnbmVkIG51bVNhbXBsZXMgPSBw
cm9maWxlLT50b3RhbE51bWJlck9mU2FtcGxlcygpOwpAQCAtMjUwMyw2ICsyNTM2LDEyIEBAIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZEMKICAgICAgICAgICAgIG51bWJl
ck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHBy
b2ZpbGVCdWNrZXQgOiBtX2NhdGNoUHJvZmlsZXMpIHsKKyAgICAgICAgcHJvZmlsZUJ1Y2tldC0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgIHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwor
ICAgICAgICB9KTsKKyAgICB9CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgbV9sYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZXMuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhsb2NrZXIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNp
b24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7
CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVzOworICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1f
Y2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBt
X3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2NhdGlvblBy
b2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxlVmVjdG9y
IG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDggKzE3
NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0
cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJP
ZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTog
VmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9
CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRz
PDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0
UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7Cisg
ICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsKKworc3Ry
dWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7
CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1vcmUgc3R1ZmYgdGhhbiB3ZSBu
ZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGUgb3VyIHZhbHVlIHByb2ZpbGVzCisgICAgICAgIC8v
IHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0gTWFsbG9j
UHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9mKFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
c2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyAr
K2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgICB2b2lk
IGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1ZmZlci5n
ZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxvY1B0cjxW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTYxLDYgKzM5NjEsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0
Y2goUmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bjb2RlKG9w
X2FmdGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJ
bmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6IHsKICAg
ICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJlYWs7CkBA
IC0xODM4LDcgKzE4MzksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0aW9uYWwgdGhpbmdzLgogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIGNhc2UgUmV0dXJuOgogICAg
ICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcuaAkocmV2aXNpb24gMjIw
NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dyYXBoPENG
Rz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dyYXBoPFNTQUNGRz4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NGRyk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ0ZHKEdyYXBoJiBncmFwaCkK
LSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBC
YWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+KGdyYXBoKSkKICAgICB7CiAg
ICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNpY0Jsb2Nr
OjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQogICAgICwg
aW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXNDYXRjaEVu
dHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICwgY2ZhU2hv
dWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8
QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAgICAgICB3aGlsZSAoaS0t
KSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAgICAgICAgICAgIGNhc2Ug
QnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAgICAgICBjYXNlIFJldHVy
bjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIERpcmVjdFRh
aWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAgICAgICBj
YXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFVucmVhY2hhYmxl
OgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLT5v
cCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQaGFudG9t
cyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3IgdHdvIG5v
ZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2lsbCBub3Qg
aGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IC8vIFRo
aXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAgICAgICAg
IGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJl
ZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsKICAgICAKICAgICBib29s
IGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9pbnQ7CiAgICAgYm9vbCBjZmFI
YXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29sIGNmYUZvdW5k
Q29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJyYXlNb2Rl
LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAj
aW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRl
LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAsNyArMTEzMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29y
dGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxv
Y2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFz
aWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8g
SWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRo
aXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0
IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtl
ZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9y
CkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1
c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2lu
ZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBt
X2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ss
IFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50
cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVu
dHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0
QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2Yg
YW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgo
U2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRC
bG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRB
cmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUwLDYgKzUxNTUsMTIzIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRj
aDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9hZnRl
cl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBmcmFtZXMu
IFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAg
ICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRl
cik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0
aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+
IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6Oklu
dEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2ln
bmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0Fy
ZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlm
IChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGlj
dGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVp
bnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJn
dW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29w
ZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAw
OyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkp
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9u
c0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rp
b25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2Fz
ZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUK
KyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBj
b21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICAvLyBXZSBkbyB0
aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJlIHRvIE9TUiBlbnRlciwgd2UgZG8g
aXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2FmdGVyX2NhdGNoLgorICAgICAgICAg
ICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsKKworICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisg
ICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+PiBsb2Nh
bHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
YnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRoYW4gdGhl
IG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBpbmNsdWRl
cyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdlJ3JlIG5v
dCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cgdG8gZG8g
dmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscyA9IDA7
CisgICAgICAgICAgICB1bnNpZ25lZCBfX2luZGV4ID0gMDsKKyAgICAgICAgICAgIGRhdGFMb2dM
bigiLS0tLS0tLS0tLS0tLS0tIik7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgKytfX2lu
ZGV4OworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9v
cGVyYW5kKTsKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0FyZ3VtZW50KCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5p
c0xvY2FsKCkpOworICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiY29tcGlsaW5nOiBidWZmZXIg
aW5kZXg6ICIsIF9faW5kZXggLSAxLCAiIGlzICIsIG9wZXJhbmQsICIgYW5kIG9zciBlbnRyeSBi
dWZmZXIgaW5kZXg6ICIsIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2
YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2Fs
cyksIE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAg
ICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZI
aW50LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
bG9jYWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVl
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRhdGFMb2dMbigiLS0tLS0tLS0tLS0t
LS0tIik7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkg
PSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9T
UkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJlY2F1c2Ugd2UndmUg
c2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZlIGxvY2Fscy4KKyAg
ICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRP
Syk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGFyZ3Vt
ZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUgYmVjYXVz
ZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0byB0aGlz
IHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4KKyAgICAg
ICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgICAg
ICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJlc2l6ZSht
X251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9
IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1Zh
cmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOwor
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25z
W2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0
dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJyYXlIb2lz
dGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkp
OworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChT
ZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQs
IHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1th
cmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0KQorICAg
ICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmlyc3QsIHBh
aXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOwor
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAg
ICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFy
KTsKQEAgLTYxMzgsOCArNjI2MCwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVC
bG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRC
bG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9j
ay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZp
bml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5u
dW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2Nrcygp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9j
ay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9n
cmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHBy
ZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDggKzYzMjAs
OCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VD
b2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2Vk
QmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBt
X2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hh
YmxlQmxvY2tzKCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
QVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
QVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxv
Y2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRlY29kZUluZGV4
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAg
ICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjA3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgPHd0
Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CkBAIC00OCw3ICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE5vZGUgcm9v
dCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2RlIHJvb3QoKQorICAgIHsK
KyAgICAgICAgLy8gT09QUzogbWF5YmUgbWFrZSB0aGlzIHJlbGVhc2U/CisgICAgICAgIEFTU0VS
VChtX2dyYXBoLm1fZm9ybSA9PSBTU0EgfHwgbV9ncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uKTsK
KyAgICAgICAgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7CisgICAgfQorCisgICAgTGlzdCByb290
cygpCisgICAgeworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiByb290IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChyb290KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBCbG9ja01hcDxUPihtX2dy
YXBoKTsgfQpAQCAtNzEsNiArODUsMzAgQEAgcHJpdmF0ZToKICAgICBHcmFwaCYgbV9ncmFwaDsK
IH07CiAKK2NsYXNzIENQU0NGRyA6IHB1YmxpYyBTaW5nbGVSb290R3JhcGg8Q0ZHPiB7CitwdWJs
aWM6CisgICAgQ1BTQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBTaW5nbGVSb290R3JhcGg8
Q0ZHPigqZ3JhcGgubV9zc2FDRkcpCisgICAgeworICAgIH0KK307CisKK3VzaW5nIFNTQUNGRyA9
IENGRzsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0NGRyYg
c2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX2Nw
c0NGRyk7CisgICAgcmV0dXJuICpncmFwaC5tX2Nwc0NGRzsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQs
IFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQUNGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX3NzYUNGRyk7CisgICAgcmV0dXJuICpncmFw
aC5tX3NzYUNGRzsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQnV0IHRob3Nl
IFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGlu
ZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUg
aW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3Vt
ZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRo
ZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspCi0gICAg
ICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJz
dFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAgQmFz
aWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVjdG9y
PE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50c1tp
XSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3Bl
cmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OCw3ICs1OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKICAgICAgICAgbV9n
cmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAg
IAogICAgICAgICBtX3ByZU9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CiAgICAg
ICAgIApAQCAtNjkwLDcgKzY5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAg
ICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5v
d25lciwgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9y
cy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAg
ICAgbV9ub2RlLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzc5LDcgKzc3OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUgc3RyaWN0IGRvbWluYXRpb24gYmVj
YXVzZSB0aGlzIHdvdWxkIG9ubHkgc2VlIHRoaW5ncyBpbiBvdXIgb3duIGJsb2NrIGlmCiAgICAg
ICAgICAgICAvLyB0aGV5IGNhbWUgKmFmdGVyKiBvdXIgcG9zaXRpb24gaW4gdGhlIGJsb2NrLiBD
bGVhcmx5LCB3aGlsZSBvdXIgYmxvY2sgZG9taW5hdGVzCiAgICAgICAgICAgICAvLyBpdHNlbGYs
IHRoZSB0aGluZ3MgaW4gdGhlIGJsb2NrIGFmdGVyIHVzIGRvbid0IGRvbWluYXRlIHVzLgotICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9j
aywgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0
bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIGRhdGEuZGlkVmlzaXQpOwpAQCAtODU2LDcgKzg1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21p
bmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNh
bmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtPnJl
cGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gu
c2V0Tm9kZShjYW5kaWRhdGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiAr
MjQ3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNh
c2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50
X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDoKICAg
ICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAg
IGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsNiArMTQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgRXh0cmFjdE9TUkVu
dHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrU3Ry
dWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9y
cygpKQogICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1cmVCYWNrd2Fy
ZHNEb21pbmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CisgICAgU1NB
RG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIG1fYmFj
a3dhcmRzRG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsOCBAQCBw
dWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0lu
UHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAgICAKLSAg
ICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAgIGZvciAo
YXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy52
YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rvcik7CiAK
ICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAuCiAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxv
Y2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3Nl
bWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlz
YXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSw4IEBA
IFZlY3RvcjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBkdW1wSGVhZGVy
KG91dCwgbGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91c09yaWdp
bik7CiAgICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgbV9ncmFwaC5l
bnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsK
KyAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAgIGNvbnN0IGNo
YXIqIHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVByZWZpeCA9
ICIgICAgICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0OgogICAg
IGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAg
ICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8
Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIERvbWluYXRvcnMgOiBw
dWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZH
PigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+KHNlbGVj
dENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CiAKK3VzaW5nIFNTQURvbWlu
YXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5h
dG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgor
Q1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7Cisg
ICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRvcnMmIGVuc3VyZURvbWluYXRv
cnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVTU0FEb21p
bmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9t
aW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdl
RG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTIgQEAg
cHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAgICAgICwgbV9yZXN1bHQodHJ1
ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgewotICAgICAg
ICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2Rl
KCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fc3Nh
RG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CiAgICAg
ICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAg
ICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5vZGUoKS0+b3duZXIsCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5ODMsNiArMTk4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBF
eHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAg
ICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNl
IFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9y
bWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1
c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAog
ICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0pJ
VENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHTmF0dXJhbExv
b3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1ZGUgIkRGR1Zh
cmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcgKzcyLDggQEAg
R3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAg
ICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayht
X2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFrZV91bmlxdWU8
Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRo
aXMpKQorICAgICwgbV9jcHNDRkcoc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KCp0aGlzKSkKICAg
ICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZp
eHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3RhcnRl
ZFJlZ2lzdGVyaW5nKQpAQCAtNDExLDcgKzQxMSw4IEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0Fy
ZVZhbGlkKCkKIAogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBw
aGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChw
cmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9y
aWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDog
IiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwg
IlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5D
b250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAg
ICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09T
UlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQg
PyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5leGVj
dXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmludChw
cmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAiXG4i
KTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00MjIsMTgg
KzQyMywxNyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAg
aWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwg
KnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAg
ICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJs
b2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91
dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsKLSAgICBpZiAobV9k
b21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAgb3V0LnByaW50KHBy
ZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9j
ayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1f
ZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRv
bWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPml0ZXJh
dGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxuIik7Ci0gICAg
fQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZh
bGlkKCkpIHsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZWQgYnk6ICIs
IG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWlu
YXRlZEJ5KGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9t
aW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxv
Y2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21p
bmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFuY2VGcm9udGll
ck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKKyAgICAvL30KICAgICBpZiAobV9iYWNr
d2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKICAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwgbV9iYWNrd2FyZHNEb21p
bmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAgICAgb3V0LnByaW50KHBy
ZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2FyZHNEb21pbmF0b3JzLT5i
bG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5ICs0NDYsMjggQEAgdm9p
ZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9CiAgICAgICAg
IG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAiLCBtX3ByZVBv
c3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5w
b3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJhbExvb3BzKSB7Ci0gICAg
ICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLT5oZWFkZXJP
ZihibG9jaykpIHsKLSAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3AgaGVhZGVy
LCBjb250YWluczoiKTsKLSAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBzb3J0ZWRCbG9j
a0xpc3Q7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChsb29wLT5hdChp
KS0+aW5kZXgpOwotICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlzdC5iZWdpbigp
LCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKLSAgICAgICAgICAgIG91dC5wcmludCgi
XG4iKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxM
b29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExvb3BzLT5sb29w
c09mKGJsb2NrKTsKLSAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3AgaGVhZGVyczoi
KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWluaW5nTG9vcHMu
c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdM
b29wc1tpXS0+aGVhZGVyKCkpOwotICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwotICAgICAg
ICB9Ci0gICAgfQorICAgIC8vIE9PUFMuCisgICAgLy9pZiAobV9uYXR1cmFsTG9vcHMpIHsKKyAg
ICAvLyAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVh
ZGVyT2YoYmxvY2spKSB7CisgICAgLy8gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3Ag
aGVhZGVyLCBjb250YWluczoiKTsKKyAgICAvLyAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNv
cnRlZEJsb2NrTGlzdDsKKyAgICAvLyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxv
b3AtPnNpemUoKTsgKytpKQorICAgIC8vICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVu
ZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgIC8vICAgICAgICBzdGQ6OnNvcnQoc29ydGVkQmxv
Y2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7CisgICAgLy8gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyArK2kpCisgICAg
Ly8gICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKKyAgICAv
LyAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgIC8vICAgIH0KKyAgICAvLyAgICAKKyAgICAv
LyAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5nTG9vcHMgPQorICAgIC8v
ICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgLy8gICAgaWYgKCFj
b250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CisgICAgLy8gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOworICAgIC8vICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytpKQorICAgIC8vICAg
ICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOwor
ICAgIC8vICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8gICAgfQorICAgIC8vfQogICAg
IGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgs
ICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+
cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUwMSwxMCBAQCB2b2lkIEdyYXBoOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRl
OiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24g
c3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3Jl
ZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQu
cHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMp
LCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxp
c3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0
byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBvdXQucHJpbnQo
IiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIsIGxpc3REdW1w
KHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAog
ICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NDEsMTAgQEAgdm9pZCBH
cmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5l
UmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsK
LSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJs
ZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50
cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdv
cmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5p
c0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFz
dCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBp
LS07KQpAQCAtNzk4LDkgKzgwMSwxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFjaGFibGVCbG9j
a3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2RvbWluYXRvcnMg
PSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBtX3ByZVBvc3RO
dW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAg
bV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxw
dHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51
bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEyICs4NTQsMzcg
QEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3Qg
cmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChi
bG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50
cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNC
bG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGJs
b2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsg
aS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3NvcihpKSk7CiAg
ICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgLy8gV2hlbiBp
dGVyYXRpbmcgb3ZlciBwcmUgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5hdG9ycworICAgICAg
ICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgIGF1dG8gdmFsaWRhdGVS
ZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFz
aWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0g
YikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpIDwgaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNv
bnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9y
cygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQ
U0RvbWluYXRvcnMoKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTg2Myw3
ICs4OTIsOCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBC
bG9ja0xpc3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0g
ICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBv
aW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsK
ICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAg
ICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToK
QEAgLTg3Niw2ICs5MDYsMzEgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRv
JiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBvdmVyIHJldmVy
c2UgcG9zdCBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgICAgICAvLyBi
ZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
YiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpID4gaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNp
b24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWlu
YXRvcnMoKSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCAr
MTUyNyw0MyBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fz
c2VydGlvbkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwg
cG9pbnRlckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0
aW9uKTsKIH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9t
aW5hdG9ycyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9j
cHNEb21pbmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENQU0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30K
KworU1NBRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlm
ICghbV9kb21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PERvbWluYXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlm
ICghbV9zc2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9y
czsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmco
KQorQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAg
ICBpZiAoIW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0g
c3RkOjptYWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICpt
X3ByZVBvc3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAh
bV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlm
ICghbV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0
dXJhbExvb3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMo
KQorU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAg
ICBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAg
bV9uYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwot
ICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFs
TG9vcHMpCisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQog
CiBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIFJFTEVB
U0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAvLyBXZSBjb3VsZCBjaGFuZ2UgdGhpcywgYnV0IGl0
J3Mgb25seSB1c2VkIGluIFNTQSBmb3Igbm93LCBhbmQgd2UgZG9uJ3QgbmVlZCB0d28gZ3JhcGgg
ZmllbGRzIHlldCBmb3IgdHdvIHR5cGVzIG9mIGJhY2t3YXJkcyBDRkcuCiAgICAgaWYgKCFtX2Jh
Y2t3YXJkc0NGRykKICAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
Y2t3YXJkc0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CkBAIC0xNTAz
LDYgKzE1NzEsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAK
IEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkK
IHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dh
cmRzRG9taW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3
YXJkc0RvbWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1NzksNyBAQCBCYWNrd2FyZHNEb21pbmF0b3Jz
JiBHcmFwaDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFw
aDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cykKICAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE1OTcsNyBAQCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJn
dW1lbnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVl
W2FyZ3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU2luZ2xlUm9vdEdyYXBoOworfQorCiBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgQ29kZUJsb2NrOwpAQCAtNTYsMTAgKzYwLDE3IEBAIGNsYXNzIEJhY2t3YXJk
c0NGRzsKIGNsYXNzIEJhY2t3YXJkc0RvbWluYXRvcnM7CiBjbGFzcyBDRkc7CiBjbGFzcyBDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKLWNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBO
YXR1cmFsTG9vcHM7CiBjbGFzcyBGbG93SW5kZXhpbmc7Ci1jbGFzcyBOYXR1cmFsTG9vcHM7Ci1j
bGFzcyBQcmVQb3N0TnVtYmVyaW5nOworCitjbGFzcyBDUFNDRkc7Cit1c2luZyBTU0FDRkcgPSBD
Rkc7CisKK3VzaW5nIENQU0RvbWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47Cit1c2luZyBT
U0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcgQ1BTTmF0dXJhbExvb3Bz
ID0gTmF0dXJhbExvb3BzPENQU0NGRz47Cit1c2luZyBTU0FOYXR1cmFsTG9vcHMgPSBOYXR1cmFs
TG9vcHM8U1NBQ0ZHPjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZsb3dNYXA7CiAKQEAg
LTkwMSw5ICs5MTIsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNEZWJ1Z2dlckVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsgfQogCi0gICAgRG9taW5hdG9y
cyYgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIFByZVBvc3ROdW1iZXJpbmcmIGVuc3VyZVByZVBv
c3ROdW1iZXJpbmcoKTsKLSAgICBOYXR1cmFsTG9vcHMmIGVuc3VyZU5hdHVyYWxMb29wcygpOwor
ICAgIENQU0RvbWluYXRvcnMmIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBTU0FEb21pbmF0
b3JzJiBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgQ1BTTmF0dXJhbExvb3BzJiBlbnN1cmVD
UFNOYXR1cmFsTG9vcHMoKTsKKyAgICBTU0FOYXR1cmFsTG9vcHMmIGVuc3VyZVNTQU5hdHVyYWxM
b29wcygpOwogICAgIEJhY2t3YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7CiAgICAgQmFj
a3dhcmRzRG9taW5hdG9ycyYgZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwogICAgIENvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBlbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygp
OwpAQCAtOTIxLDcgKzkzMyw4IEBAIHB1YmxpYzoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2Nr
OwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAgIAotICAgIFZlY3RvcjwgUmVm
UHRyPEJhc2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPFJlZlB0cjxCYXNpY0Js
b2NrPiwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxPiBtX2VudHJ5cG9p
bnRzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKIAogICAgIEhhc2hN
YXA8RW5jb2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNv
ZGVkSlNWYWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7CkBAIC05NTYsMTEgKzk2OSwx
MSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFuZCB3
ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNpZGUK
ICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7CisgICAg
SGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1
bWVudHM7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0Es
IHRoaXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgog
ICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Ci0gICAgCisKICAgICBT
ZWdtZW50ZWRWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhLCAxNj4gbV92YXJpYWJsZUFjY2Vzc0Rh
dGE7CiAgICAgU2VnbWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24sIDg+IG1fYXJndW1lbnRQ
b3NpdGlvbnM7CiAgICAgQmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7CkBAIC05ODIsMTAg
Kzk5NSwxMiBAQCBwdWJsaWM6CiAgICAgSGFzaFNldDxzdGQ6OnBhaXI8SlNPYmplY3QqLCBQcm9w
ZXJ0eU9mZnNldD4+IG1fc2FmZVRvTG9hZDsKICAgICBIYXNoTWFwPFByb3BlcnR5VHlwZUtleSwg
SW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yPiBtX2luZmVycmVkVHlwZXM7CiAgICAgVmVjdG9yPFJl
ZjxTbmlwcGV0Pj4gbV9kb21KSVRTbmlwcGV0czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9taW5h
dG9ycz4gbV9kb21pbmF0b3JzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQcmVQb3N0TnVtYmVyaW5n
PiBtX3ByZVBvc3ROdW1iZXJpbmc7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE5hdHVyYWxMb29wcz4g
bV9uYXR1cmFsTG9vcHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENGRz4gbV9jZmc7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENQU0RvbWluYXRvcnM+IG1fY3BzRG9taW5hdG9yczsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1NBRG9taW5hdG9ycz4gbV9zc2FEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDUFNOYXR1cmFsTG9vcHM+IG1fY3BzTmF0dXJhbExvb3BzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTU0FOYXR1cmFsTG9vcHM+IG1fc3NhTmF0dXJhbExvb3BzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTU0FDRkc+IG1fc3NhQ0ZHOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNDRkc+IG1fY3Bz
Q0ZHOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+IG1fYmFja3dhcmRzQ0ZHOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0b3JzPiBtX2JhY2t3YXJkc0RvbWlu
YXRvcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPiBt
X2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTAwOSw2ICsxMDI0LDggQEAgcHVibGlj
OgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwogICAgIGJvb2wgbV9oYXNEZWJ1
Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIHsgZmFsc2UgfTsK
KyAgICBib29sIG1faXNJblNTQUNvbnZlcnNpb24geyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9u
YWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw1NCArOTMs
NjEgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8Tm9kZUFicwogCiB2b2lkIElu
UGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAgICBCYXNpY0Jsb2NrKiByb290
ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsK
LSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhRm91bmRDb25z
dGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQg
PSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3Rh
dGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKLSAgICAg
ICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7Ci0KLSAgICAgICAgRmx1
c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKQotICAg
ICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsK
LSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVk
SlNWYWx1ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChub2Rl
LT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sq
IGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2lu
dC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUhhc1Zp
c2l0ZWQgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhRm91bmRDb25zdGFudHMgPSBm
YWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFk
ID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworCisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJn
dW1lbnRzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmFy
Z3VtZW50KGkpLmNsZWFyKCk7CisKKyAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKKyAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpIHsKKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2hlbiBzdXBwb3J0aW5nIG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIHRoZSBGVEws
IHdlIG5lZWQgdG8gY2hhbmdlCisgICAgICAgICAgICAgICAgLy8gd2hhdCB3ZSBkbyBoZXJlOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVbaV07CisgICAgICAgICAgICAg
ICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1
ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoZm9y
bWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xl
YW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAg
ICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0
IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAgICBj
YXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwg
IkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0
SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFk
LmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5j
bGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDEgOyBibG9j
a0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYg
KCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1
ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50
LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorCisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkg
eworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSkgewor
ICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2ludHMgYWJvdmUuCiAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFj
aGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNpdCA9IGZhbHNlOwogICAgICAg
ICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0LDcgKzM3MSw3IEBAIGlubGlu
ZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2UoYmFzaWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAg
ICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQotICAgICAgICAKKwogICAgIGNhc2UgUmV0dXJuOgog
ICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjMsNiArNjMsNyBAQCB2b2lkIEpJVENvZGU6OnNocmlua1RvRml0KCkKICAgICBjb21tb24u
c2hyaW5rVG9GaXQoKTsKICAgICBvc3JFbnRyeS5zaHJpbmtUb0ZpdCgpOwogICAgIG9zckV4aXQu
c2hyaW5rVG9GaXQoKTsKKyAgICBjYXRjaEVudHJ5cG9pbnRzLnNocmlua1RvRml0KCk7CiAgICAg
c3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgpOwogICAgIG1pbmlmaWVkREZHLnByZXBh
cmVBbmRTaHJpbmsoKTsKICAgICB2YXJpYWJsZUV2ZW50U3RyZWFtLnNocmlua1RvRml0KCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIwNzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDYgKzY5LDMyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JF
bnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCiAgICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFC
eXRlY29kZUluZGV4KTsKICAgICB9CisKKyAgICBDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaE9T
UkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8Q2F0Y2hFbnRyeXBvaW50RGF0YSwgdW5z
aWduZWQ+KAorICAgICAgICAgICAgY2F0Y2hFbnRyeXBvaW50cywgY2F0Y2hFbnRyeXBvaW50cy5z
aXplKCksIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgICAgICBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBv
aW50RGF0YSogaXRlbSkgeyByZXR1cm4gaXRlbS0+bV9ieXRlY29kZUluZGV4OyB9KTsKKyAgICB9
CisKKyAgICB2b2lkIGZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygpCisgICAgeworICAgICAg
ICBzdGQ6OnNvcnQoY2F0Y2hFbnRyeXBvaW50cy5iZWdpbigpLCBjYXRjaEVudHJ5cG9pbnRzLmVu
ZCgpLCBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYSwgY29uc3QgQ2F0Y2hFbnRyeXBv
aW50RGF0YSYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEubV9ieXRlY29kZUluZGV4IDwgYi5t
X2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0pOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAg
ICAgdW5zaWduZWQgcHJldmlvdXNJbmRleCA9IDA7CisgICAgICAgIGZvciAoY29uc3QgQ2F0Y2hF
bnRyeXBvaW50RGF0YSYgZW50cnlwb2ludCA6IGNhdGNoRW50cnlwb2ludHMpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChwcmV2aW91c0luZGV4IDwgZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXgpOwor
ICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4Owor
ICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZENhdGNoRW50cnlwb2lu
dCh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVj
dG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNo
RW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlwb2ludERhdGEgeyBieXRlY29kZUluZGV4LCBt
YWNoaW5lQ29kZU9mZnNldCwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAg
ICAKICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAg
ewpAQCAtMTMyLDYgKzE1OCw3IEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBj
b21tb247CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0
b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRyeXBvaW50czsKICAgICBTZWdtZW50ZWRW
ZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0
aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50
U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07CkBAIC0xNjgsNiArMTk1LDggQEAgcHVibGljOgog
ICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fb3NyRW50cnlCbG9jazsKICAgICB1bnNpZ25l
ZCBvc3JFbnRyeVJldHJ5OwogICAgIGJvb2wgYWJhbmRvbk9TUkVudHJ5OworCisgICAgTWFsbG9j
UHRyPEpTVmFsdWU+IGNhdGNoT1NSRW50cnlCdWZmZXI7CiAjZW5kaWYgLy8gRU5BQkxFKEZUTF9K
SVQpCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0
aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvCiAKIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGUoKQogeworICAgIGlmIChtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRy
eSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyID0gTWFsbG9jUHRyPEpT
VmFsdWU+OjptYWxsb2Moc2l6ZW9mKEpTVmFsdWUpICogKCptX2dyYXBoLm1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50
cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJ
VD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQyOSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUo
KQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogeworICAgIGlmIChtX2dy
YXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRj
aE9TUkVudHJ5QnVmZmVyID0gTWFsbG9jUHRyPEpTVmFsdWU+OjptYWxsb2Moc2l6ZW9mKEpTVmFs
dWUpICogKCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworCiAgICAgc2V0
U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTcsMjMg
QEAgdm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAK
K3ZvaWQgSklUQ29tcGlsZXI6Om5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiBiYXNp
Y0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQoreworICAgIFJFTEVB
U0VfQVNTRVJUKGJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworICAgIFJFTEVBU0VfQVNT
RVJUKGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlw
b2ludCBpcyBieSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENh
dGNoRW50cnlwb2ludChiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0
T2YoYmxvY2tIZWFkKSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30KKwogdm9pZCBKSVRD
b21waWxlcjo6bm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGls
ZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBSRUxF
QVNFX0FTU0VSVCghYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisKICAgICAvLyBPU1Ig
ZW50cnkgaXMgbm90IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNv
bnRyb2wgZmxvdyBhbmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZD
RkFIYXNWaXNpdGVkKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlE
YXRhKiBlbnRyeSA9IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0
ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAg
IGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RW
YWx1ZXNBdEhlYWQ7CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBp
biBvdXIgcHJvdG9jb2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2
b2lkIG5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tI
ZWFkLCBMaW5rQnVmZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNC
bG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImLCBWZWN0b3I8
Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQdHI8SklUQ29k
ZT4gaml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw2ICs0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFt
ZXNwYWNlIHsKIAordXNpbmcgTmF0dXJhbExvb3AgPSBTU0FOYXR1cmFsTG9vcDsKKwogc3RydWN0
IExvb3BEYXRhIHsKICAgICBMb29wRGF0YSgpCiAgICAgICAgIDogcHJlSGVhZGVyKG51bGxwdHIp
CkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCi0gICAgICAg
IG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVy
YWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAg
ICAgbV9ncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgbV9ncmFwaC5lbnN1
cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCiAgICAgICAgIGlmICh2ZXJib3NlKSB7
CkBAIC04Myw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9uYXR1
cmFsTG9vcHMtPm51bUxvb3BzKCkpOworICAgICAgICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOwogICAgICAgICAKICAgICAgICAgLy8gRmlndXJl
IG91dCB0aGUgc2V0IG9mIHRoaW5ncyBlYWNoIGxvb3Agd3JpdGVzIHRvLCBub3QgaW5jbHVkaW5n
IGJsb2NrcyB0aGF0CiAgICAgICAgIC8vIGJlbG9uZyB0byBpbm5lciBsb29wcy4gV2UgZml4IHRo
aXMgbGF0ZXIuCkBAIC05OCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJs
b2NrLT5jZmFIYXNWaXNpdGVkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1
cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1
cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BP
ZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLT5pbmRleCgpXTsK
QEAgLTExNiwxNCArMTE4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRm9yIGVhY2ggbG9vcDoK
ICAgICAgICAgLy8gLSBJZGVudGlmeSBpdHMgcHJlLWhlYWRlci4KICAgICAgICAgLy8gLSBNYWtl
IHN1cmUgaXRzIG91dGVyIGxvb3BzIGtub3cgd2hhdCBpdCBjbG9iYmVycy4KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygp
OyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0g
bV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7
IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBt
X2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CiAgICAgICAgICAgICBM
b29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLmluZGV4KCldOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKAotICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7Cisg
ICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKICAgICAgICAgICAgICAg
ICBvdXRlckxvb3A7Ci0gICAgICAgICAgICAgICAgb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxvb3ApKQorICAgICAgICAgICAgICAg
IG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9v
cCgqb3V0ZXJMb29wKSkKICAgICAgICAgICAgICAgICBtX2RhdGFbb3V0ZXJMb29wLT5pbmRleCgp
XS53cml0ZXMuYWRkQWxsKGRhdGEud3JpdGVzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
QmFzaWNCbG9jayogaGVhZGVyID0gbG9vcC5oZWFkZXIoKTsKQEAgLTEzNyw3ICsxMzksNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGhlYWRl
ci0+cHJlZGVjZXNzb3JzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIHByZWRlY2Vzc29yID0gaGVhZGVyLT5wcmVkZWNlc3NvcnNbaV07Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3Nv
cikpCisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0
ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgICAgICAgICAgcHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xOTEsNyArMTkz
LDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBsb29wU3Rh
Y2s7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpIHsKLSAgICAgICAgICAgIGNv
bnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0
TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9n
cmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKICAgICAgICAg
ICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIApA
QCAtMTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoCiAgICAgICAgICAg
ICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGN1cnJlbnQgPSBsb29wOwogICAgICAgICAgICAgICAg
IGN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkpCisgICAgICAgICAgICAgICAgY3VycmVu
dCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVu
dCkpCiAgICAgICAgICAgICAgICAgbG9vcFN0YWNrLmFwcGVuZChjdXJyZW50KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gUmVtZW1iZXI6IHRoZSBsb29wIHN0YWNrIGhhcyB0aGUgaW5u
ZXItbW9zdCBsb29wIGF0IGluZGV4IDAsIHNvIGlmIHdlIHdhbnQKQEAgLTMxOCw3ICszMjAsNyBA
QCBwcml2YXRlOgogICAgICAgICAvLyBiZWNhdXNlIG1vc3QgbG9vcHMgYXJlIHNtYWxsIGFuZCBt
b3N0IGJsb2NrcyBiZWxvbmcgdG8gZmV3IGxvb3BzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJv
ZHlJbmRleCA9IGxvb3AtPnNpemUoKTsgYm9keUluZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWJCbG9jayA9IGxvb3AtPmF0KGJvZHlJbmRleCk7Ci0gICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmhlYWRlck9m
KHN1YkJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9n
cmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2spOwogICAgICAgICAgICAg
aWYgKCFzdWJMb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgQmFz
aWNCbG9jayogc3ViUHJlSGVhZGVyID0gbV9kYXRhW3N1Ykxvb3AtPmluZGV4KCldLnByZUhlYWRl
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQ
cmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxv
Y2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQg
PSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
ICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQo
KV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUt
PmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5k
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5v
ZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAg
ICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNh
bGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29w
UHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDkg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQ
cmVIZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0luc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBC
YXNpY0Jsb2NrKiBibG9jaykKIHsKKyAgICAvLyBPT1BTOiBtYXliZSB1c2UgaGFzaHNldCBmb3Ig
dGhpcyBhc3NlcnQuCisgICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1fZW50cnlwb2ludHMuY29u
dGFpbnMoYmxvY2spKTsgLy8gQW4gZW50cnlwb2ludCBzaG91bGQgbm90IGJlIGluIGEgbG9vcCEK
KwogICAgIC8vIEZJWE1FOiBJZiB3ZSBydW4gdGhpcyB1dGlsaXR5IG9uIFNTQSBJUiwgdGhlbiB3
ZSBtYXkgZW5kIHVwIHdpdGggYSBiaXphcnJlIGFycmFuZ2VtZW50IG9mCiAgICAgLy8gVXBzaWxv
bnMgYW5kIFBoaXMsIGxpa2U6CiAgICAgLy8KQEAgLTY5LDcgKzcyLDcgQEAgQmFzaWNCbG9jayog
Y3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIC8vIEluc3RlYWQsIHdlIHVzZSB0aGUg
bWF4IG9mIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgbG9vcCBib2R5J3Mgbm9uLWxvb3AgcHJlZGVj
ZXNzb3JzLgogICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBw
cmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgaWYgKGdyYXBoLm1f
ZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIGlmIChn
cmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZyZXF1ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5j
eSwgcHJlZGVjZXNzb3ItPmV4ZWN1dGlvbkNvdW50KTsKICAgICB9CkBAIC0xMDMsNyArMTA2LDcg
QEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIAogICAgIGZv
ciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IDA7IHByZWRlY2Vzc29ySW5kZXggPCBibG9j
ay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleCsrKSB7CiAgICAgICAgIEJh
c2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3Nvcklu
ZGV4XTsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBw
cmVkZWNlc3NvcikpCisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRl
cyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGJs
b2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleC0tXSA9IGJsb2NrLT5wcmVkZWNlc3Nv
cnMubGFzdCgpOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAg
LTEzMCwxNiArMTMzLDE2IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewot
ICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1
cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7
CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51
bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3Am
IGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7Ci0gICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IDA7CisgICAgICAgIGZvciAodW5z
aWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsg
bG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25zdCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9
IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJv
b2wgbmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQg
cHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHBy
ZWRlY2Vzc29ySW5kZXgtLTspIHsKLSAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhl
YWRlcigpLCBwcmVkZWNlc3NvcikpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vz
c29ySW5kZXggPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJl
ZGVjZXNzb3JJbmRleC0tOykgeworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vz
c29yID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4
XTsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRl
cyhsb29wLmhlYWRlcigpLm5vZGUoKSwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUHJlSGVhZGVyKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0x
NjUsMTQgKzE2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBBIHByZS1oZWFkZXIgaXMg
bW9zdCB1c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0byBleGl0IGZyb20gaXRzIHRlcm1pbmFsLiBI
ZW5jZQogICAgICAgICAgICAgLy8gaWYgdGhlIHRlcm1pbmFsIG9mIHRoZSBleGlzdGluZyBwcmUt
aGVhZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQsIGJ1dCB0aGUgZmlyc3QKICAgICAgICAgICAg
IC8vIG9yaWdpbiBvZiB0aGUgbG9vcCBoZWFkZXIgZG9lcywgdGhlbiB3ZSBzaG91bGQgY3JlYXRl
IGEgbmV3IHByZS1oZWFkZXIuCi0gICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYm
IGxvb3AuaGVhZGVyKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAgICBpZiAoIW5l
ZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCkubm9kZSgpLT5hdCgwKS0+b3JpZ2luLmV4
aXRPSwogICAgICAgICAgICAgICAgICYmICFleGlzdGluZ1ByZUhlYWRlci0+dGVybWluYWwoKS0+
b3JpZ2luLmV4aXRPSykKICAgICAgICAgICAgICAgICBuZWVkc05ld1ByZUhlYWRlciA9IHRydWU7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNyZWF0ZVBy
ZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKSk7CisgICAgICAg
ICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVy
KCkubm9kZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4
aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2Vy
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNp
emUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsK
LSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3Ao
KSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09
IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAg
ICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlz
QXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBp
ZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXIt
PnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3Ao
KSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAg
ICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBj
dXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDYgKzgzLDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAg
IGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2Fs
Tm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpOYXR1cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29w
OwordXNpbmcgU1NBTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2lu
ZyBDUFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8Q1BTQ0ZHPjsKIAotY2xhc3MgTmF0
dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3BzPENGRz4gewordGVtcGxhdGUgPHR5
cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFs
TG9vcHM8Q0ZHS2luZD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5hdHVyYWxMb29wcyk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF0dXJhbExvb3Bz
KEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkc+KCpncmFwaC5t
X2NmZywgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpLCB2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAg
ICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFw
aCksIGVuc3VyZURvbWluYXRvcnNGb3JDRkc8Q0ZHS2luZD4oZ3JhcGgpLCB2YWxpZGF0aW9uRW5h
YmxlZCgpKQogICAgIHsKKyAgICAgICAgLy8gT09QUzogYWRkIHNvbWUgdmFsaWRhdGlvbiB0aGF0
IGdyYXBoJ3MgZW50cnlwb2ludHMgYXJlIG5vdCBpbiBhbnkgbG9vcC4KICAgICB9CiB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
NzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJhbmNoOwog
ICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNoKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CkBAIC0xMzcy
LDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9
PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNo
RGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAo
aW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAt
MTUxOCw2ICsxNTE5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEF0b21pY3NTdG9yZToKICAg
ICAgICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0b21pY3NYb3I6CisgICAgICAg
IGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MzAsNiArMTkzMiwx
MiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNW
YWxpZCgpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNvbnN0
CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2Fs
KTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KICAgICAK
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkwLDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFNw
ZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQgd2Un
cmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0Y2gg
YnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAgIFwK
ICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAgICAg
bWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRG
R0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlZNSW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw3MiBAQCB2b2lkKiBwcmVwYXJlT1NS
RW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0Y2g7CiB9CiAKK3ZvaWQq
IHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JF
bnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRD
b2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0
Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2RlKTsKKworICAgIERGRzo6
Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50ID0gaml0Q29kZS0+Y2F0Y2hPU1JF
bnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICghY2F0Y2hF
bnRyeXBvaW50KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwgdW5kZXIgc29tZSBjaXJj
dW1zdGFuY2VzLiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3ZSBkaWRuJ3QgY29tcGlsZSB0aGlz
CisgICAgICAgIC8vIGFmdGVyX2NhdGNoIGFzIGFuIGVudHJ5cG9pbnQgc2luY2UgaXQgaGFkIG5l
dmVyIGV4ZWN1dGVkLgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBX
ZSdyZSBvbmx5IGFsbG93ZWQgdG8gT1NSIGVudGVyIGlmIHdlJ3ZlIHByb3ZlbiB3ZSBoYXZlIGNv
bXBhdGlibGUgYXJndW1lbnQgdHlwZXMuCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgY2F0Y2hFbnRyeXBvaW50LT5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7ICsr
YXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnIodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3aXRjaCAoY2F0
Y2hFbnRyeXBvaW50LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1bWVudF0pIHsKKyAgICAgICAgY2Fz
ZSBERkc6OkZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgREZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxs
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgaWYgKCF2YWx1
ZS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6RGVhZEZsdXNoOgorICAgICAgICAgICAgLy8g
VGhpcyBtZWFucyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZlLiBUaGVyZWZvcmUsIGl0J3MgYWxs
b3dlZCB0byBiZSBhbnkgdHlwZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERG
Rzo6Rmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAvLyBBbiBhcmd1bWVudCBpcyB0cml2aWFs
bHkgYSBKU1ZhbHVlLgorICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHVuc2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+Y29tbW9uLnJlcXVp
cmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKKyAgICBpZiAoVU5MSUtFTFko
IXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZzZXQoKV0pKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGV4ZWMt
PmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpXS51Lm9w
Y29kZSkgPT0gb3BfYWZ0ZXJfY2F0Y2gpOworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihl
eGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSAr
IDFdLnUucG9pbnRlcik7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIHVuc2lnbmVkIF9f
aW5kZXggPSAwOworICAgIC8vZGF0YUxvZ0xuKCItLS0tLS0tLS0tLS0tLS0iKTsKKyAgICBidWZm
ZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAg
ICAgICsrX19pbmRleDsKKyAgICAgICAgaWYgKCFWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29w
ZXJhbmQpLmlzTG9jYWwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy9kYXRhTG9n
TG4oImRvaW5nIE9TUiBlbnRyeSwgYnVmZmVyIGluZGV4OiAiLCBfX2luZGV4IC0gMSwgIiBpcyBv
cGVyYW5kOiAiLCBWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLCAiIGFuZCBvc3Ig
ZW50cnkgaW5kZXg6ICIsIGluZGV4KTsKKyAgICAgICAgaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1
ZmZlci5nZXQoKVtpbmRleF0gPSBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5q
c1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisgICAgLy9kYXRhTG9nTG4oIi0t
LS0tLS0tLS0tLS0tLSIpOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNz
QXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJh
Y3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFu
ZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlu
bGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50
cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRh
IHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5l
Q29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBj
YXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQg
dHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hG
b3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8g
YSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5k
CiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mg
bm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JF
bnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNl
bHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayos
IHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJERkdC
bG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dy
YXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNs
dWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlOVF9NQVgpOwogICAgICAgICAKICAgICAgICAg
Ly8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigpLgotICAgICAgICBtX2dyYXBoLmVuc3VyZURv
bWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAg
ICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxv
Y2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICAvLyB0
eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmln
aW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IGFyZ3VtZW50cyA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7
CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVt
UGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0g
dGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAg
aWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdh
eXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAg
ICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAg
ICAgICAgICBvbGROb2RlID0gYXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAgICAg
ICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAgICAg
ICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgYXJndW1l
bnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBsb2Nh
bCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBA
IC0xMzksOCArMTQxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVI
ZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAg
ICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3Jh
cGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBv
aW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQo
bmV3Um9vdCwgYXJndW1lbnRzKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5
KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RB
bGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDcgKzcyNyw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsK
ICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBo
LmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3Jz
KCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBw
ZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmlu
ZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYs
OCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYg
d2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0
aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdv
b2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgp
KSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVO
YXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAg
ICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05h
dHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpAQCAtMzg3LDEzICsz
ODYsMTQgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAg
ICBSVU5fUEhBU0UocGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24pOwogICAgICAgICBS
VU5fUEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgZHVtcEFuZFZl
cmlmeUdyYXBoKGRmZywgIkdyYXBoIGFmdGVyIG9wdGltaXphdGlvbjoiKTsKKwogICAgICAgICAK
ICAgICAgICAgSklUQ29tcGlsZXIgZGF0YUZsb3dKSVQoZGZnKTsKICAgICAgICAgaWYgKGNvZGVC
bG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAgICAgICBkYXRhRmxvd0pJ
VC5jb21waWxlRnVuY3Rpb24oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGF0YUZsb3dK
SVQuY29tcGlsZSgpOwotICAgICAgICAKKwogICAgICAgICByZXR1cm4gREZHUGF0aDsKICAgICB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9z
dE51bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYg
RU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNs
dWRlICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVt
YmVyaW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4o
Z3JhcGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAg
d29ya2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJl
ciA9IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9j
a1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVt
Lm9yZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9t
YXBbaXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAg
IHdvcmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAg
IHdvcmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9z
dE51bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0K
LQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcg
bmFtZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91
dCwgRWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndh
cmRFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgi
QmFja0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jh
c2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0g
ICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5n
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBo
Jik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihC
YXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVy
OyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyBy
ZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20g
YSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFz
aWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51
bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5j
ZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7
Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJp
Y3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRh
bnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBU
aGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNo
IGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBz
dWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VL
aW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVy
biBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZy
b20pKQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0
dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJp
bmcgewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9w
b3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsK
LQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIg
KzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3Qg
YmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2lu
dHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisg
ICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmdd
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1i
ZXI6CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAgICAgICAgc2V0UHJl
ZGljdGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwog
ICAgICAgICB9CiAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAg
IG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgU1NBQ2Fs
Y3VsYXRvciBzc2FDYWxjdWxhdG9yKG1fZ3JhcGgpOwogICAgICAgICBJbnNlcnRpb25TZXQgaW5z
ZXJ0aW9uU2V0KG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDYWxjdWxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNhbGN1bGF0b3IuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwx
MiArOTUsMTIgQEAgU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpuZXdEZQogCiBT
U0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5vbkxvY2FsUmVhY2hpbmdEZWYoQmFz
aWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICByZXR1cm4gcmVhY2hp
bmdEZWZBdFRhaWwobV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7
CisgICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5p
ZG9tKGJsb2NrKSwgdmFyaWFibGUpOwogfQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1
bGF0b3I6OnJlYWNoaW5nRGVmQXRUYWlsKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFy
aWFibGUpCiB7Ci0gICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9kb21pbmF0b3Jz
LT5pZG9tKGJsb2NrKSkgeworICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fc3Nh
RG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKICAgICAgICAgaWYgKERlZiogZGVmID0gbV9kYXRh
W2Jsb2NrXS5tX2RlZnMuZ2V0KHZhcmlhYmxlKSkKICAgICAgICAgICAgIHJldHVybiBkZWY7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9y
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q2FsY3VsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUGhpSW5zZXJ0aW9uRnVuY3Rvcj4KICAgICB2b2lkIGNv
bXB1dGVQaGlzKGNvbnN0IFBoaUluc2VydGlvbkZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9kb21pbmF0b3JzKTsK
KyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fc3NhRG9taW5h
dG9ycyk7CiAgICAgICAgIAogICAgICAgICBmb3IgKFZhcmlhYmxlJiB2YXJpYWJsZSA6IG1fdmFy
aWFibGVzKSB7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tz
SW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCisgICAgICAgICAgICBtX2dyYXBo
Lm1fc3NhRG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZy
b250aWVyT2YoCiAgICAgICAgICAgICAgICAgdmFyaWFibGUubV9ibG9ja3NXaXRoRGVmcywKICAg
ICAgICAgICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBib29sIHsKICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IGZ1bmN0b3IoJnZhcmlhYmxlLCBibG9jayk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDgg
QEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJl
YWRlZENQUyk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFyUmVwbGFjZW1lbnRzKCk7
Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLm1f
Y3BzQ0ZHID0gbnVsbHB0cjsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7
IC8vIE9PUFM6IGFsbG93IHVzIHRvIGFzc2VydCBpbiBlbnN1cmVTU0FEb21pbmF0b3JzIHRoYXQg
d2UncmUgaW4gU1NBIGZvcm0uCiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAg
ICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpA
QCAtMTEwLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ly8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhl
IFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBs
YXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBz
dWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBp
bnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAg
bV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9y
OjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVG
b3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAg
ICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihi
bG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZv
cm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAg
ICAvLyBGSVhNRTogU3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7
CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1h
dCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
YXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBm
b3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0
aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5n
LgorICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRo
YXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcu
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAt
NDE2LDcgKzQyMSwxMSBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdy
YXBoJiBncmFwaCkKIHsKLSAgICByZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihn
cmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOwor
ICAgIGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0g
cnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgZ3JhcGgubV9pc0luU1NB
Q29udmVyc2lvbiA9IGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDYgKzMyMyw3IEBA
IGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5
cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRy
eUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAi
V2F0Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIgorCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjA4
MCw2ICs2MDgyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENh
dGNoTG9jYWw6IHsKKyAgICAgICAgSlNWYWx1ZSogcHRyID0gJm1faml0LmppdENvZGUoKS0+Y2F0
Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRl
bXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAg
ICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46
CkBAIC02MDg4LDYgKzYxMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCisKICAg
ICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBA
IC02MTE2LDcgKzYxMjksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6
CiAgICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2
LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3Jh
cGgoKS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwor
ICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRN
YXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2Nr
KTsKKyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJl
c2V0KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBA
IC0xNzcwLDggKzE3NzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlw
ZXMoCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmln
aW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQu
Z3JhcGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQu
Y29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUg
PSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJn
dW1lbnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1
bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4K
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg1NSwxMiArMTg2MywxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sg
PSBtX2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2Ug
ZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAg
ICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZCht
X2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NS
VGFyZ2V0IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQg
dGhlbQorICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JF
bnRyeUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAg
ICB9CiAgICAgfQogfQogCkBAIC0xODcxLDEwICsxODc4LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2pp
dC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAg
ICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9j
aywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAg
ICBpZiAoYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAg
ICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAg
ICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkp
OworICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3Rvcikg
eworICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAg
ICBGbHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9y
bWF0ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVz
aEZvcm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQo
Zmx1c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29z
ckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVu
dEZvcm1hdHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+
aXNPU1JUYXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBt
X29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0K
ICAgICB9CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50
cygpOworCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUo
KSk7CiAgICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3Rp
bWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVy
YWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAg
ICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBi
YXNlZCBvbiBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBo
Lm1fbmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5l
eGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERl
cHRoKGJsb2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJy
YW5jaCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUg
Y29ycmVjdC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0
dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9v
cDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBw
dWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04
MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRv
RlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29w
cyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3Jh
cGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0
dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVp
bGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4
Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BU
b0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhp
bnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9v
cEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9k
ZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAg
ICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGlu
ZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdl
IHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdp
biBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCks
IEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBo
LCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0g
YmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJl
cnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5v
ZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmln
aW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAg
ICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9k
ZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkg
PT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhp
dCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAg
Ly9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91
c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9L
CisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAor
ICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8v
ICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9L
KQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJl
KCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgdm9p
ZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygp
LAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBD
b2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3Ry
dWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwg
IjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAg
ICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmlu
Zy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBt
X25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdp
bigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFs
dWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJz
KCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRz
W2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAg
IG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0
Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJn
ZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdl
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFp
bCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFs
c2U7CkBAIC0xNDQxNCw3ICsxNDQxNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2so
KSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAg
ICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09Q
KG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhp
cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlv
biopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQz
Ml90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQz
Ml90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9w
ZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwx
MyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwg
dWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBw
ZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBj
dXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3Bf
YXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9h
c3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29w
X2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRl
cl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6
IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lw
T1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tp
cE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxl
Lm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgm
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBA
IFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tf
TE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIp
KTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAg
aWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4o
REZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0
ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlW
YWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAq
UF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJf
dCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4
ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9O
ICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xv
d1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShF
eGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVS
QVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBl
ZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0
YXRlKiwgaW50MzJfdCk7CkBAIC0zOTYsNiArMzk3LDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4
ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAj
ZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVk
U3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2MzgsMTggQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIp
OworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2Zp
bGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7Cisg
ICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVy
blR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxG
cmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZy
YW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlm
eV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19z
aGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSop
IFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwgUmVnaXN0ZXIqKSBXVEZf
SU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRfb3BfYWZ0ZXJfY2F0Y2g6Cisg
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpCisgICAg
ZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0aCkKKworCiBfbGxpbnRfb3Bf
ZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDcgQEAKIAkJNzBFQ0E2MEIxQjAyNDI2ODAw
NDQ5NzM5IC8qIFN5bWJvbEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEVDQTYwQzFCMDI0
MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5pcXVlZFN0cmluZ0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzkzNkQ2QTkxQzk5RjhBRTAwMEQxQUVEIC8qIFNtYWxsUHRyU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYWxsUHRyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2xlUm9vdEdyYXBoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkFFMUVCMjJBQzYwMERBREUzNiAvKiBV
VUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVVSUQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVVJRC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y3MjM5MUQ3ODgxMTkwMDY3NEUyNiAvKiBCcmlnYW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyaWdhbmQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzOCw2ICs5MzksNyBAQAogCQkJCTE0Njk0MTk0MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkxNDY5NDE5ODE2RUFCMDQxMDAy
NEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwICovLAogCQkJCTE0Njk0MTk1MTZFQUFGRjgwMDI0
RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCisJCQkJNzk1MjEyMDIxRjQyNTg4ODAwQkQ2
NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5
QiAvKiBTY29wZS5oICovLAogCQkJCTBGRUM4NEIwMUJEQUNEMzkwMDgwRkY3NCAvKiBTY29wZWRM
YW1iZGEuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAg
Ki8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNv
dXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5v
ZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9TaW5nbGVSb290R3JhcGguaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMzgsMTMzICszOSw5IEBAIGNsYXNzIEJhY2t3YXJkc0dyYXBoIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNHcmFwaCk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gV2UgdXNlICIjZW5kIiB0byByZWZlciB0
byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjZW5kIjsgfTsKLQotICAgIGNsYXNzIE5vZGUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgTm9kZSh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlID0gdHlw
ZW5hbWUgR3JhcGg6Ok5vZGUoKSkKLSAgICAgICAgICAgIDogbV9ub2RlKG5vZGUpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBOb2RlIHJvb3QoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBOb2RlIHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOwot
ICAgICAgICAgICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZSYg
b3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3Ro
ZXIubV9ub2RlCi0gICAgICAgICAgICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7
Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9kZSYgb3RoZXIp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiAqdGhpcyAhPSBOb2RlKCk7IH0KLQotICAgICAgICBib29sIGlzUm9vdCgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2lzUm9vdDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0K
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKLSAg
ICAgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIGNsYXNzIFNldCB7
Ci0gICAgcHVibGljOgotICAgICAgICBTZXQoKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGJvb2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja0Fu
ZFNldChtX2hhc1Jvb3QsIHRydWUpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2Rl
Lm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHJlbW92ZShjb25zdCBOb2RlJiBu
b2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBmYWxzZSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1faGFzUm9vdDsKLSAg
ICAgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1faGFzUm9vdCkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQocm9v
dE5hbWUoKSwgIiAiKTsKLSAgICAgICAgICAgIG91dC5wcmludChtX3NldCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3Nl
dDsKLSAgICAgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotICAgIGNsYXNzIE1hcCB7Ci0gICAgcHVibGljOgotICAgICAgICBN
YXAoR3JhcGgmIGdyYXBoKQotICAgICAgICAgICAgOiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdN
YXA8VD4oKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjbGVhcigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1fbWFwLmNsZWFyKCk7Ci0gICAgICAgICAgICBtX3Jvb3Qg
PSBUKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLnNpemUoKSArIDE7IH0KLQotICAgICAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRl
eCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFpbmRleCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFwW2luZGV4IC0gMV07Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxNYXAqPih0aGlzKSlb
aW5kZXhdOwotICAgICAgICB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBu
b2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFwW25vZGUubm9k
ZSgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oY29uc3QgTm9k
ZSYgbm9kZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3RfY2Fz
dDxNYXAqPih0aGlzKSlbbm9kZV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKLSAgICAgICAg
VCBtX3Jvb3Q7Ci0gICAgfTsKLQorICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2Rl
PEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3JhcGhTZXQ8R3JhcGg+OworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5nbGVSb290TWFwPFQsIEdyYXBo
PjsKICAgICB0eXBlZGVmIFZlY3RvcjxOb2RlLCA0PiBMaXN0OwogCiAgICAgQmFja3dhcmRzR3Jh
cGgoR3JhcGgmIGdyYXBoKQpAQCAtMjU1LDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFub2RlKQogICAgICAgICAgICAgb3V0LnByaW50KCI8bnVsbD4iKTsKICAgICAgICAgZWxzZSBp
ZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgIG91dC5wcmludChyb290TmFtZSgpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOwogICAgICAgICBy
ZXR1cm4gb3V0LnRvQ1N0cmluZygpOwpJbmRleDogU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIw
NzEzKQorKysgU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJq
YW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAg
ICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAg
ICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRo
IGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0
byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1i
ZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYv
d3RmL1NpbmdsZVJvb3RHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjg5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RG
X1NpbmdsZVJvb3RHcmFwaF9oCisjZGVmaW5lIFdURl9TaW5nbGVSb290R3JhcGhfaAorCisjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3Qu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgR3JhcGg+Citj
bGFzcyBTaW5nbGVSb290R3JhcGhOb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBXZSB1c2UgIiNyb290
IiB0byByZWZlciB0byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgorICAgIHN0
YXRpYyBjb25zdCBjaGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjcm9vdCI7IH07CisKKyAgICBT
aW5nbGVSb290R3JhcGhOb2RlKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBlbmFtZSBH
cmFwaDo6Tm9kZSgpKQorICAgICAgICA6IG1fbm9kZShub2RlKQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU2luZ2xlUm9vdEdyYXBoTm9kZSByb290KCkKKyAgICB7CisgICAgICAgIFNpbmds
ZVJvb3RHcmFwaE5vZGUgcmVzdWx0OworICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKKyAgICAg
ICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQorICAg
ICAgICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7CisgICAgfQorCisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBTaW5nbGVSb290R3Jh
cGhOb2RlKCk7IH0KKworICAgIGJvb2wgaXNSb290KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2lzUm9vdDsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9pc1Jvb3QpOworICAgICAgICByZXR1cm4g
bV9ub2RlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25v
ZGU7CisgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGhTZXQgeworICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290R3JhcGhT
ZXQoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgYm9vbCBhZGQoY29uc3QgTm9kZSYgbm9kZSkKKyAg
ICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNr
QW5kU2V0KG1faGFzUm9vdCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5u
b2RlKCkpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUpCisgICAg
eworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBjaGVja0Fu
ZFNldChtX2hhc1Jvb3QsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2Rl
Lm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlJiBub2RlKQor
ICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9o
YXNSb290OworICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOworICAg
IH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKG1faGFzUm9vdCkKKyAgICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgp
LCAiICIpOworICAgICAgICBvdXQucHJpbnQobV9zZXQpOworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3NldDsKKyAgICBib29sIG1faGFzUm9vdCB7IGZh
bHNlIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBHcmFwaD4KK2NsYXNz
IFNpbmdsZVJvb3RNYXAgeworICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdy
YXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290TWFwKEdyYXBoJiBncmFwaCkKKyAgICAgICAg
OiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdNYXA8VD4oKSkKKyAgICB7CisgICAgfQorCisgICAg
U2luZ2xlUm9vdE1hcChTaW5nbGVSb290TWFwJiYgb3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RG
TW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9yb290KFdURk1vdmUob3RoZXIubV9yb290
KSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX21h
cC5jbGVhcigpOworICAgICAgICBtX3Jvb3QgPSBUKCk7CisgICAgfQorCisgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9CisKKyAgICBUJiBvcGVyYXRv
cltdKHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAg
ICByZXR1cm4gbV9yb290OworICAgICAgICByZXR1cm4gbV9tYXBbaW5kZXggLSAxXTsKKyAgICB9
CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtpbmRleF07
CisgICAgfQorCisgICAgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAg
ICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9yb290OworICAg
ICAgICByZXR1cm4gbV9tYXBbbm9kZS5ub2RlKCldOworICAgIH0KKworICAgIGNvbnN0IFQmIG9w
ZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAo
KmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtub2RlXTsKKyAgICB9CisgICAgCitw
cml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7CisgICAg
VCBtX3Jvb3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJv
b3RHcmFwaCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2luZ2xlUm9vdEdyYXBoKTsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKworICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3Jh
cGhTZXQ8R3JhcGg+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5n
bGVSb290TWFwPFQsIEdyYXBoPjsKKyAgICB1c2luZyBMaXN0ID0gVmVjdG9yPE5vZGUsIDQ+Owor
CisgICAgU2luZ2xlUm9vdEdyYXBoKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdy
YXBoKQorICAgIHsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSByZWFsUm9vdCA6
IGdyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29y
cyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsgLy8gT09QUzogZG8gd2Ugd2FudCB0aGlzIGFzc2VydGlv
bj8KKyAgICAgICAgICAgIG1fcm9vdFN1Y2Nlc3Nvckxpc3QuYXBwZW5kKHJlYWxSb290KTsKKyAg
ICAgICAgICAgIG1fcm9vdFN1Y2Nlc3NvclNldC5hZGQocmVhbFJvb3QpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgTm9kZSByb290KCkgY29uc3QgeyByZXR1cm4gTm9kZTo6cm9vdCgpOyB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBN
YXA8VD4obV9ncmFwaCk7IH0KKworICAgIExpc3Qgc3VjY2Vzc29ycyhjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBy
ZXR1cm4gbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAg
IGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1fZ3JhcGguc3VjY2Vzc29ycyhub2Rl
Lm5vZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIExpc3QgcHJlZGVjZXNzb3JzKGNvbnN0IE5vZGUmIG5v
ZGUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IHJldHVybiBMaXN0IHsgfTsKKworICAgICAgICBpZiAobV9yb290U3VjY2Vzc29yU2V0LmNvbnRh
aW5zKG5vZGUubm9kZSgpKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgucHJlZGVjZXNz
b3JzKG5vZGUubm9kZSgpKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIExpc3QgeyBy
b290KCkgfTsKKyAgICAgICAgfQorCisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3Ig
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5v
ZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KGNvbnN0IE5vZGUmIG5vZGUpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbV9ncmFwaC5pbmRleChub2RlLm5vZGUoKSkgKyAxOworICAg
IH0KKworICAgIE5vZGUgbm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gcm9vdCgpOworICAgICAgICByZXR1cm4g
bV9ncmFwaC5ub2RlKGluZGV4IC0gMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtTm9kZXMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubnVtTm9kZXMoKSArIDE7Cisg
ICAgfQorCisgICAgQ1N0cmluZyBkdW1wKE5vZGUgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAg
IFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
b3V0LnByaW50KCI8bnVsbD4iKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS5pc1Jvb3QoKSkKKyAg
ICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOworICAgICAgICBy
ZXR1cm4gb3V0LnRvQ1N0cmluZygpOworICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bU5vZGVzKCk7ICsraSkgeworICAgICAgICAgICAgTm9kZSBub2RlID0gdGhpcy0+bm9kZShpKTsK
KyAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIG91dC5wcmludChkdW1wKG5vZGUpLCAiOlxuIik7CisgICAgICAgICAgICBvdXQucHJp
bnQoIiAgICBQcmVkczogIik7CisgICAgICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAg
ICAgICAgICBmb3IgKE5vZGUgcHJlZGVjZXNzb3IgOiBwcmVkZWNlc3NvcnMobm9kZSkpCisgICAg
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBkdW1wKHByZWRlY2Vzc29yKSk7CisgICAgICAg
ICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICBTdWNjczog
Iik7CisgICAgICAgICAgICBjb21tYSA9IENvbW1hUHJpbnRlcigpOworICAgICAgICAgICAgZm9y
IChOb2RlIHN1Y2Nlc3NvciA6IHN1Y2Nlc3NvcnMobm9kZSkpCisgICAgICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBkdW1wKHN1Y2Nlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJc
biIpOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEdyYXBoJiBtX2dyYXBoOwor
ICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1f
cm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6
OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318107</attachid>
            <date>2017-08-14 20:41:06 -0700</date>
            <delta_ts>2017-08-15 11:22:07 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>150725</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2xleGljYWwtbGV0LWV4Y2VwdGlvbi1oYW5kbGluZy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9sZXhpY2FsLWxldC1leGNlcHRpb24taGFuZGxp
bmcuanMJKHJldmlzaW9uIDIyMDcxMykKKysrIEpTVGVzdHMvc3RyZXNzL2xleGljYWwtbGV0LWV4
Y2VwdGlvbi1oYW5kbGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTMsNzMgKzEzLDczIEBAIG5v
SW5saW5lKGFzc2VydCk7CiAKIGNvbnN0IE5VTV9MT09QUyA9IDEwMDsKIAotOyhmdW5jdGlvbiAo
KSB7CisvLzsoZnVuY3Rpb24gKCkgeworLy8KKy8vZnVuY3Rpb24gZm9vKCkgeworLy8gICAgbGV0
IHggPSAyMDsKKy8vICAgIGxldCB5ID0gInkiOworLy8gICAgdHJ5IHsKKy8vICAgICAgICBhc3Nl
cnQoeCA9PT0gMjApOworLy8gICAgICAgIGFzc2VydCh5ID09PSAieSIpOworLy8gICAgICAgIHRo
cm93ICJlcnJvciI7CisvLyAgICB9IGNhdGNoKGUpIHsKKy8vICAgICAgICBhc3NlcnQoeCA9PT0g
MjApOworLy8gICAgfSBmaW5hbGx5IHsKKy8vICAgICAgICBhc3NlcnQoeCA9PT0gMjApOworLy8g
ICAgICAgIGFzc2VydCh5ID09PSAieSIpOworLy8gICAgfQorLy8KKy8vICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTsgaSsrKSB7CisvLyAgICAgICAgbGV0IG51bUZpbmFsbHkgPSAwOworLy8gICAg
ICAgIHRyeSB7CisvLyAgICAgICAgICAgIGxldCBhID0gNDA7CisvLyAgICAgICAgICAgIGxldCBj
YXBBID0gZnVuY3Rpb24oKSB7IHJldHVybiBhOyB9CisvLyAgICAgICAgICAgIGFzc2VydChjYXBB
KCkgPT09IDQwKTsKKy8vICAgICAgICAgICAgdHJ5IHsKKy8vICAgICAgICAgICAgICAgIGxldCBi
ID0gNDE7CisvLyAgICAgICAgICAgICAgICBsZXQgY2FwQiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
YjsgfQorLy8gICAgICAgICAgICAgICAgYXNzZXJ0KGNhcEIoKSA9PT0gNDEpOworLy8gICAgICAg
ICAgICAgICAgYXNzZXJ0KGNhcEEoKSA9PT0gNDApOworLy8gICAgICAgICAgICAgICAgdHJ5IHsK
Ky8vICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjA7CisvLyAgICAgICAgICAgICAgICB9IGNh
dGNoKGUpeworLy8gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKy8vICAgICAgICAgICAgICAg
ICAgICBsZXQgYyA9IDQyOworLy8gICAgICAgICAgICAgICAgICAgIGxldCBjYXBDID0gZnVuY3Rp
b24oKSB7IHJldHVybiBjOyB9CisvLyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNhcEMoKSA9
PT0gNDIpOworLy8gICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBCKCkgPT09IDQxKTsKKy8v
ICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2FwQSgpID09PSA0MCk7CisvLyAgICAgICAgICAg
ICAgICAgICAgaWYgKGkgPT09IDApIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgbnVtRmlu
YWxseSsrOworLy8gICAgICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMjI7CisvLyAgICAgICAgICAgICAgICB9CisvLyAgICAgICAgICAgIH0gY2F0Y2goZSkg
eworLy8gICAgICAgICAgICB9IGZpbmFsbHkgeworLy8gICAgICAgICAgICAgICAgaWYgKGkgPT09
IDApIHsKKy8vICAgICAgICAgICAgICAgICAgICBudW1GaW5hbGx5Kys7CisvLyAgICAgICAgICAg
ICAgICB9CisvLyAgICAgICAgICAgICAgICByZXR1cm4gMjM7CisvLyAgICAgICAgICAgIH0KKy8v
ICAgICAgICB9IGNhdGNoKGUpIHsKKy8vICAgICAgICB9IGZpbmFsbHkgeworLy8gICAgICAgICAg
ICBpZiAoaSA9PT0gMCkgeworLy8gICAgICAgICAgICAgICAgbnVtRmluYWxseSsrOworLy8gICAg
ICAgICAgICB9CisvLyAgICAgICAgICAgIGFzc2VydChudW1GaW5hbGx5ID09PSAzKTsKKy8vICAg
ICAgICAgICAgcmV0dXJuIDI0OworLy8gICAgICAgIH0KKy8vICAgIH0KKy8vfQorLy8KKy8vZm9y
ICh2YXIgaSA9IDA7IGkgPCBOVU1fTE9PUFM7IGkrKykgeworLy8gICAgYXNzZXJ0KGZvbygpID09
PSAyNCk7CisvL30KKy8vCisvL30pKCk7CiAKLWZ1bmN0aW9uIGZvbygpIHsKLSAgICBsZXQgeCA9
IDIwOwotICAgIGxldCB5ID0gInkiOwotICAgIHRyeSB7Ci0gICAgICAgIGFzc2VydCh4ID09PSAy
MCk7Ci0gICAgICAgIGFzc2VydCh5ID09PSAieSIpOwotICAgICAgICB0aHJvdyAiZXJyb3IiOwot
ICAgIH0gY2F0Y2goZSkgewotICAgICAgICBhc3NlcnQoeCA9PT0gMjApOwotICAgIH0gZmluYWxs
eSB7Ci0gICAgICAgIGFzc2VydCh4ID09PSAyMCk7Ci0gICAgICAgIGFzc2VydCh5ID09PSAieSIp
OwotICAgIH0KLQotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTsgaSsrKSB7Ci0gICAgICAgIGxl
dCBudW1GaW5hbGx5ID0gMDsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGxldCBhID0gNDA7
Ci0gICAgICAgICAgICBsZXQgY2FwQSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gYTsgfQotICAgICAg
ICAgICAgYXNzZXJ0KGNhcEEoKSA9PT0gNDApOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICBsZXQgYiA9IDQxOwotICAgICAgICAgICAgICAgIGxldCBjYXBCID0gZnVuY3Rpb24o
KSB7IHJldHVybiBiOyB9Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KGNhcEIoKSA9PT0gNDEpOwot
ICAgICAgICAgICAgICAgIGFzc2VydChjYXBBKCkgPT09IDQwKTsKLSAgICAgICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjA7Ci0gICAgICAgICAgICAgICAgfSBj
YXRjaChlKXsKLSAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgICAg
ICBsZXQgYyA9IDQyOwotICAgICAgICAgICAgICAgICAgICBsZXQgY2FwQyA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gYzsgfQotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2FwQygpID09PSA0Mik7
Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBCKCkgPT09IDQxKTsKLSAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0KGNhcEEoKSA9PT0gNDApOwotICAgICAgICAgICAgICAgICAgICBpZiAo
aSA9PT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbnVtRmluYWxseSsrOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAyMjsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIH0gZmluYWxs
eSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHsKLSAgICAgICAgICAgICAgICAgICAg
bnVtRmluYWxseSsrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4g
MjM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICB9IGZpbmFs
bHkgewotICAgICAgICAgICAgaWYgKGkgPT09IDApIHsKLSAgICAgICAgICAgICAgICBudW1GaW5h
bGx5Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhc3NlcnQobnVtRmluYWxseSA9PT0g
Myk7Ci0gICAgICAgICAgICByZXR1cm4gMjQ7Ci0gICAgICAgIH0KLSAgICB9Ci19CiAKLWZvciAo
dmFyIGkgPSAwOyBpIDwgTlVNX0xPT1BTOyBpKyspIHsKLSAgICBhc3NlcnQoZm9vKCkgPT09IDI0
KTsKLX0KLQotfSkoKTsKLQotCi07KGZ1bmN0aW9uICgpIHsKKzsoZnVuY3Rpb24gYmF6KCkgewog
ZnVuY3Rpb24gZm9vKCkgewogICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTsgaSsrKSB7CiAgICAg
ICAgIGxldCBudW1GaW5hbGx5ID0gMDsKQEAgLTk2LDEyICs5NiwxNCBAQCBmdW5jdGlvbiBmb28o
KSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgImUi
OwogICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgICAgICBhc3Nl
cnQoImZvbyIpOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoaSA9PT0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydChjYXBCKCkgPT09IDQxKTsKICAgICAgICAgICAgICAgICAgICAg
YXNzZXJ0KGNhcEEoKSA9PT0gNDApOwogICAgICAgICAgICAgICAgICAgICBudW1FcnJvcnMrKzsK
ICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICAgICAgICAgICB9IGZpbmFsbHkg
eworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoImJhciIpOwogICAgICAgICAgICAgICAgICAg
ICBsZXQgYyA9IDQyOwogICAgICAgICAgICAgICAgICAgICBsZXQgY2FwQyA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gYzsgfQogICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYWwgPSAibG9jYWwiOwpA
QCAtMTE0LDYgKzExNiw3IEBAIGZ1bmN0aW9uIGZvbygpIHsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgICAgIGFzc2VydChlID09PSAiZSIpOwogICAgICAgICAgICAgICAgIGFzc2VydChpID09PSAw
KTsKICAgICAgICAgICAgICAgICBhc3NlcnQoY2FwQSgpID09PSA0MCk7CiAgICAgICAgICAgICAg
ICAgbnVtRXJyb3JzKys7CkBAIC0xMjksNiArMTMyLDcgQEAgZnVuY3Rpb24gZm9vKCkgewogICAg
ICAgICAgICAgICAgIHJldHVybiAyMzsKICAgICAgICAgICAgIH0gICAgCiAgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgYXNzZXJ0KGUgPT09ICJlIik7CiAgICAgICAgICAgICAvL2Fz
c2VydChpID09PSAwKTsKICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgIGlmIChpID09
PSAwKSB7CkBAIC0xNDksNTQgKzE1Myw1NCBAQCBmb3IgKHZhciBpID0gMDsgaSA8IE5VTV9MT09Q
UzsgaSsrKSB7CiB9KSgpOwogCiAKLXZhciBkID0gMTAwOwotOyhmdW5jdGlvbiAoKXsKLWZ1bmN0
aW9uIGZvbygpIHsKLSAgICBhc3NlcnQoZCA9PT0gMTAwKTsKLSAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDE7IGkrKykgewotICAgICAgICBsZXQgbnVtRmluYWxseSA9IDA7Ci0gICAgICAgIGxldCBu
dW1FcnJvcnMgPSAwOwotICAgICAgICBsZXQgYyA9IDQ0OwotICAgICAgICBhc3NlcnQoZCA9PT0g
MTAwKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGxldCBkID0gNDU7Ci0gICAgICAgICAg
ICBpZiAodHJ1dGgoKSkgewotICAgICAgICAgICAgICAgIGxldCBhID0gMjA7Ci0gICAgICAgICAg
ICAgICAgbGV0IGNhcEEgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGE7IH0KLSAgICAgICAgICAgICAg
ICBhc3NlcnQoY2FwQSgpID09PSAyMCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRydXRoKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSAyMTsKLSAgICAgICAgICAgICAgICAgICAgbGV0
IGUgPSA0ODsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGNhcEIgPSBmdW5jdGlvbigpIHsgcmV0
dXJuIGI7IH0KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNhcEIoKSA9PT0gMjEpOwotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnQoZCA9PT0gNDUpOwotICAgICAgICAgICAgICAgICAgICB0
cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgImUiOwotICAgICAgICAgICAgICAg
ICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBBKCkg
PT09IDIwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChhID09PSAyMCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBudW1FcnJvcnMrKzsKLSAgICAgICAgICAgICAgICAgICAgfSBm
aW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBBKCkgPT09IDIwKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChlID09PSA0OCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBudW1GaW5hbGx5Kys7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
MzA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IAotICAgICAgICAg
ICAgfQotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgYXNzZXJ0KGMgPT09IDQ0KTsK
LSAgICAgICAgICAgIGFzc2VydChkID09PSAxMDApOwotICAgICAgICAgICAgbnVtRmluYWxseSsr
OwotICAgICAgICAgICAgYXNzZXJ0KG51bUZpbmFsbHkgPT09IDIpOwotICAgICAgICAgICAgYXNz
ZXJ0KG51bUVycm9ycyA9PT0gMSk7Ci0gICAgICAgICAgICByZXR1cm4gNDA7Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgTlVNX0xPT1BTOyBpKyspIHsKLSAgICBh
c3NlcnQoZm9vKCkgPT09IDQwKTsKLX0KLQotfSkoKTsKKy8vdmFyIGQgPSAxMDA7CisvLzsoZnVu
Y3Rpb24gKCl7CisvL2Z1bmN0aW9uIGZvbygpIHsKKy8vICAgIGFzc2VydChkID09PSAxMDApOwor
Ly8gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxOyBpKyspIHsKKy8vICAgICAgICBsZXQgbnVtRmlu
YWxseSA9IDA7CisvLyAgICAgICAgbGV0IG51bUVycm9ycyA9IDA7CisvLyAgICAgICAgbGV0IGMg
PSA0NDsKKy8vICAgICAgICBhc3NlcnQoZCA9PT0gMTAwKTsKKy8vICAgICAgICB0cnkgeworLy8g
ICAgICAgICAgICBsZXQgZCA9IDQ1OworLy8gICAgICAgICAgICBpZiAodHJ1dGgoKSkgeworLy8g
ICAgICAgICAgICAgICAgbGV0IGEgPSAyMDsKKy8vICAgICAgICAgICAgICAgIGxldCBjYXBBID0g
ZnVuY3Rpb24oKSB7IHJldHVybiBhOyB9CisvLyAgICAgICAgICAgICAgICBhc3NlcnQoY2FwQSgp
ID09PSAyMCk7CisvLyAgICAgICAgICAgICAgICBpZiAodHJ1dGgoKSkgeworLy8gICAgICAgICAg
ICAgICAgICAgIGxldCBiID0gMjE7CisvLyAgICAgICAgICAgICAgICAgICAgbGV0IGUgPSA0ODsK
Ky8vICAgICAgICAgICAgICAgICAgICBsZXQgY2FwQiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gYjsg
fQorLy8gICAgICAgICAgICAgICAgICAgIGFzc2VydChjYXBCKCkgPT09IDIxKTsKKy8vICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQoZCA9PT0gNDUpOworLy8gICAgICAgICAgICAgICAgICAgIHRy
eSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICJlIjsKKy8vICAgICAgICAgICAg
ICAgICAgICB9IGNhdGNoKGUpIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNh
cEEoKSA9PT0gMjApOworLy8gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoYSA9PT0gMjAp
OworLy8gICAgICAgICAgICAgICAgICAgICAgICBudW1FcnJvcnMrKzsKKy8vICAgICAgICAgICAg
ICAgICAgICB9IGZpbmFsbHkgeworLy8gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2Fw
QSgpID09PSAyMCk7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChlID09PSA0OCk7
CisvLyAgICAgICAgICAgICAgICAgICAgICAgIG51bUZpbmFsbHkrKzsKKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDMwOworLy8gICAgICAgICAgICAgICAgICAgIH0KKy8vICAgICAg
ICAgICAgICAgIH0gCisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICB9IGZpbmFsbHkgeworLy8g
ICAgICAgICAgICBhc3NlcnQoYyA9PT0gNDQpOworLy8gICAgICAgICAgICBhc3NlcnQoZCA9PT0g
MTAwKTsKKy8vICAgICAgICAgICAgbnVtRmluYWxseSsrOworLy8gICAgICAgICAgICBhc3NlcnQo
bnVtRmluYWxseSA9PT0gMik7CisvLyAgICAgICAgICAgIGFzc2VydChudW1FcnJvcnMgPT09IDEp
OworLy8gICAgICAgICAgICByZXR1cm4gNDA7CisvLyAgICAgICAgfQorLy8gICAgfQorLy99Cisv
LworLy9mb3IgKHZhciBpID0gMDsgaSA8IE5VTV9MT09QUzsgaSsrKSB7CisvLyAgICBhc3NlcnQo
Zm9vKCkgPT09IDQwKTsKKy8vfQorLy8KKy8vfSkoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzg5LDcgKzM4OSw2IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR1BoYXNlLmNwcAogICAgIGRmZy9ERkdQ
aGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5jcHAKLSAgICBkZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAogICAg
IGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHUHJvbW90
ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw4ICszOTQsNiBA
QAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZB
MDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQkwRjNDMUYxQTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8q
IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsKIAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJl
cnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1By
ZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJl
cmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
RTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJ
MEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8q
IEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0
NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEg
LyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVVdGlscy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTg3LDgg
KzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0luc2VydGlvblNl
dC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0
YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdD
bG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdD
bG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0UwMUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBE
RkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRoID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJp
bmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJl
cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2
MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJCQkJMEZCRTBGNkUxNkMxREIwMTAwODJD
NUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oICovLAogCQkJCTBGRkZDOTUxMTRF
RjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJ
CQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0
TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21v
dGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJCOUNFMTE5RDBCQTdEMDBCMUQxQjUgLyog
REZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJCQkwRkZDOTIxNTFCOTRGQjNFMDA3MURE
NjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBAIC04NjkzLDcgKzg2ODcsNiBAQAogCQkJ
CURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFEQjBCMDA4MkM1RTggLyogREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3
MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICov
LAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90
ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcx
REQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE3NjYz
MTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0
ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFu
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQ
cmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQx
NEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVt
YmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAv
KiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2
MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNh
c2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9pZCogcG9pbnRlciA9IGdldFBvaW50ZXIo
KigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwg
ImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmludGYoIiVwIiwgcG9pbnRlcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9w
ZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgiIDogMyB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2NhdGNoIiwgImxlbmd0aCIgOiAyIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJ
KHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoK
ICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3Bf
YWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBj
YXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX25v
cDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAj
ZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToK
ICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQRVJfT1BD
T0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAx
XSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaElu
ZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRF
bmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1
Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAgKzgwNywxNiBAQCBib29sIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9mQXJndW1l
bnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAg
ICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7
IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4
LDM0IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlm
IChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29k
ZSgpOworCisgICAgaWYgKGFmdGVyQ2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMmIGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lz
KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRjaElu
ZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2Rl
TGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5kZXgp
OworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOworICAg
ICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fscy5i
aXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0gKHVu
c2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKKyAg
ICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpKTsKKworICAgICAgICAgICAgZGF0YUxvZ0xuKCJMaXZlIG9wZXJhbmRzIHNpemU6ICIs
IGxpdmVPcGVyYW5kcy5zaXplKCkpOworCisgICAgICAgICAgICBhdXRvIHByb2ZpbGVzID0gc3Rk
OjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMu
c2l6ZSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUgPT0g
bGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcHJvZmlsZXMtPm1fc2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIHByb2ZpbGVzLT5tX2J1
ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQgPSBsaXZlT3BlcmFuZHNbaV0ub2Zmc2V0KCk7CisgICAg
ICAgICAgICBtX2luc3RydWN0aW9uc1thZnRlckNhdGNoSW5kZXggKyAxXS51LnBvaW50ZXIgPSBw
cm9maWxlcy5nZXQoKTsKKyAgICAgICAgICAgIG1fY2F0Y2hQcm9maWxlcy5hcHBlbmQoV1RGTW92
ZShwcm9maWxlcykpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2Rl
QmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDY3LDYgKzI0OTksOSBAQCBWZWN0b3I8Q29kZU9y
aWdpbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsCiAKIHNpemVfdCBDb2RlQmxvY2s6Om51bWJlck9m
REZHSWRlbnRpZmllcnMoKSBjb25zdAogeworICAgIGZvciAoYXV0byYgYiA6IG1fY2F0Y2hQcm9m
aWxlcykgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChiLT5tX3NpemUgPCAxMDApOworICAgIH0K
ICAgICBpZiAoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICAKQEAgLTI0ODYsOSArMjUyMSwxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBD
b2RlQmxvY2s6OmlkZW50aWZpZXIoCiB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlv
bnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVl
UHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzKQogewogICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKKwogICAgIG51bWJlck9mTGl2
ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA9IDA7CiAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9m
aWxlcyA9IDA7IC8vIElmIHRoaXMgZGl2aWRlZCBieSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVj
a2V0cyBlcXVhbHMgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgdGhlbiB2YWx1ZSBwcm9maWxlcyBh
cmUgZnVsbC4KKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFs
dWVQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZ2V0
RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAgICAgIHVuc2lnbmVkIG51bVNhbXBsZXMgPSBw
cm9maWxlLT50b3RhbE51bWJlck9mU2FtcGxlcygpOwpAQCAtMjUwMyw2ICsyNTM5LDEyIEBAIHZv
aWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZEMKICAgICAgICAgICAgIG51bWJl
ck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICB9CisKKyAgICBmb3IgKGF1dG8mIHBy
b2ZpbGVCdWNrZXQgOiBtX2NhdGNoUHJvZmlsZXMpIHsKKyAgICAgICAgcHJvZmlsZUJ1Y2tldC0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAg
ICAgIHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwor
ICAgICAgICB9KTsKKyAgICB9CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgbV9sYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZXMuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9ucyhsb2NrZXIpOwpA
QCAtMjc0Myw3ICsyNzg1LDEwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2Zp
bGVGb3IKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0pOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9
IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7Ci0gICAgcmV0dXJuIGluc3RydWN0aW9ucygpW2J5dGVj
b2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOworICAgIFZhbHVlUHJvZmlsZSogcmVz
dWx0ID0gaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2Zp
bGU7CisgICAgUkVMRUFTRV9BU1NFUlQob3Bjb2RlSUQgIT0gb3BfYWZ0ZXJfY2F0Y2gpOworICAg
IC8vIE9PUFMhCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlk
YXRlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAwMiw2ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVBy
b2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxl
czsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXI+PiBtX2NhdGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJvZmls
ZSwgOD4gbV9yYXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFsbG9j
YXRpb25Qcm9maWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJvZmls
ZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3
NCw4ICsxNzQsOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0CiB9
OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1i
ZXJPZkJ1Y2tldHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9m
ZnNldCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZz
ZXQpIHsgfQorICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9m
QnVja2V0czwwPigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDog
VmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUg
aW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNlUHJv
ZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmQgeworICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsKK307
CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNpemUp
CisgICAgeworICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZmIHRo
YW4gd2UgbmVlZC4gV2UgY291bGQgb3B0aW1pemUgdGhlIG91ciB2YWx1ZSBwcm9maWxlcworICAg
ICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBtX2J1ZmZlciA9
IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6ZSAqIHNpemVv
ZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdldCgpW2ldKSBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
c2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+Cisg
ICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVuY3Rpb24obV9i
dWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICBNYWxs
b2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzk2MSw2ICszOTYxLDkgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgZW1pdE9w
Y29kZShvcF9hZnRlcl9jYXRjaCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogfQog
CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXN0b3JlU2NvcGVSZWdpc3RlcihpbnQgbGV4aWNh
bFNjb3BlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisg
ICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2Fs
OiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTgzOCw3ICsxODM5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5n
cy4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAgICAgCisKICAgICBjYXNlIFJldHVy
bjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc0NGRy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZH
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNH
cmFwaDxDRkc+IHsKK2NsYXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxT
U0FDRkc+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNDRkcpOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhY2t3YXJkc0NGRyhHcmFwaCYg
Z3JhcGgpCi0gICAgICAgIDogQmFja3dhcmRzR3JhcGg8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAg
ICAgIDogQmFja3dhcmRzR3JhcGg8U1NBQ0ZHPihzZWxlY3RDRkc8U1NBQ0ZHPihncmFwaCkpCiAg
ICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgQmFz
aWNCbG9jazo6QmFzaWNCbG9jaygKICAgICA6IGJ5dGVjb2RlQmVnaW4oYnl0ZWNvZGVCZWdpbikK
ICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKKyAgICAsIGlz
Q2F0Y2hFbnRyeXBvaW50KGZhbHNlKQogICAgICwgY2ZhSGFzVmlzaXRlZChmYWxzZSkKICAgICAs
IGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZD
b3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hp
bGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAg
ICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2Fz
ZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBE
aXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAg
ICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJl
YWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4g
UGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9y
IHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdp
bGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNr
OiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAg
ICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3LDcgQEAgc3RydWN0IEJhc2ljQmxv
Y2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2NrSW5kZXggaW5kZXg7CiAgICAgCiAg
ICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0Y2hFbnRyeXBvaW50OwogICAgIGJv
b2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNob3VsZFJldmlzaXQ7CiAgICAgYm9vbCBj
ZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SGVhcC5oIgogI2luY2x1ZGUgIkRGR0Fy
cmF5TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgorI2luY2x1ZGUgIkRGR0NG
Ry5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdDbG9iYmVyc0V4
aXRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCkBAIC0xMTMwLDcgKzExMzEsNyBAQCBw
cml2YXRlOgogICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0
IGJlIHNvcnRlZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90IGhhdmUg
dHdvIGJsb2NrcyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVj
dG9yPEJhc2ljQmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAorCiAgICAg
ICAgIC8vIElmIHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3bywg
dGhlbiB0aGlzIHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxzaXRlIGJs
b2NrLiBJdCBuZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAgIC8vIG1f
dW5saW5rZWRCbG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJlJ3Mgbm8g
d2F5IGZvcgpAQCAtNDA3NCw3ICs0MDc1LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAvLyB1cyB0byB0cmFjayBpZiBhIHVzZSBvZiBhbiBhcmd1bWVu
dCBtYXkgdXNlIHRoZSBhY3R1YWwgYXJndW1lbnQgcGFzc2VkLCBhcwogICAgIC8vIG9wcG9zZWQg
dG8gdXNpbmcgYSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAgICBpZiAobV9jdXJyZW50Qmxv
Y2sgPT0gbV9ncmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkpIHsKLSAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVu
dEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRB
cmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBlbnRyeXBvaW50
QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisKICAgICAgICAgLy8gV2Ugd2lsbCBl
bWl0IFNldEFyZ3VtZW50IG5vZGVzLiBUaGV5IGRvbid0IGV4aXQsIGJ1dCB3ZSdyZSBhdCB0aGUg
dG9wIG9mIGFuIG9wX2VudGVyIHNvCiAgICAgICAgIC8vIGV4aXRPSyA9IHRydWUuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTQwODcsNyArNDA5Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5
cGUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRU
b0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBlbnRy
eXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVu
dCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE1MCw2ICs1MTU1LDEyMyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ug
b3BfY2F0Y2g6CiAgICAgICAgICAgICBtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMgPSB0
cnVlOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworCisgICAgICAgIGNhc2Ug
b3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgewor
ICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGRvIGFueXRoaW5nIGhlcmUgZm9yIGlubGluZWQg
ZnJhbWVzLiBXZSB3b24ndCB0cmVhdCB0aGlzIGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0aGUgRlRMLgorICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKworICAg
ICAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
LnBvaW50ZXIpOworCisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGFyZ3VtZW50
UHJlZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgVmVjdG9yPFNwZWN1bGF0
ZWRUeXBlPiBsb2NhbFByZWRpY3Rpb25zOworICAgICAgICAgICAgSGFzaFNldDx1bnNpZ25lZCwg
V1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0
czx1bnNpZ25lZD4+IHNlZW5Bcmd1bWVudHM7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIGJvb2wgYWxsUHJlZGljdGlvbnNB
cmVFbXB0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgYWxsUHJlZGlj
dGlvbnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNwZWNOb25lOworICAgICAgICAgICAgICAg
ICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
bFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJn
dW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9u
cy5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlbkFyZ3VtZW50cy5hZGQob3BlcmFu
ZC50b0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRQcmVkaWN0
aW9uc1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsaWRh
dGlvbkVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3Vt
ZW50ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJn
dW1lbnQpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYWxsUHJl
ZGljdGlvbnNBcmVFbXB0eSAmJiAoYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkgfHwgbG9jYWxQ
cmVkaWN0aW9ucy5zaXplKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMg
dGhlIGNhc2UsIHdlIGhhdmVuJ3QgZXhlY3V0ZWQgdGhpcyBjYXRjaCB5ZXQuIExldCdzIG5vdCBj
b21waWxlCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IGFzIGFuIGVudHJ5cG9pbnQuCisgICAg
ICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0
ZWQgdG8gY29tcGlsaW5nIHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKworICAgICAgICAgICAgLy8g
V2UgZG8gdGhpcyBiZWNhdXNlIHdoZW4gc2VhcmNoaW5nIGZvciB3aGVyZSB0byBPU1IgZW50ZXIs
IHdlIGRvIGl0IHJlbGF0aXZlCisgICAgICAgICAgICAvLyB0byBvcF9hZnRlcl9jYXRjaC4KKyAg
ICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7
CisKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA9IHRydWU7
CisgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2Nr
KTsKKworICAgICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxWaXJ0dWFsUmVnaXN0ZXIsIE5vZGUq
Pj4gbG9jYWxzVG9TZXQ7CisgICAgICAgICAgICBsb2NhbHNUb1NldC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsgLy8gTm90ZTogVGhpcyB3aWxsIHJlc2VydmUgbW9yZSB0
aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNhdXNlIHRoZSBidWZmZXIg
aW5jbHVkZXMgYXJndW1lbnRzLgorCisgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBX
ZSdyZSBub3QgYWxsb3dlZCB0byBleGl0IGhlcmUgc2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93
IHRvIGRvIHZhbHVlIHJlY292ZXJ5LgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2Nh
bHMgPSAwOworICAgICAgICAgICAgdW5zaWduZWQgX19pbmRleCA9IDA7CisgICAgICAgICAgICBk
YXRhTG9nTG4oIi0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNo
KFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAg
ICsrX19pbmRleDsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9m
aWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKG9w
ZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImNvbXBpbGluZzog
YnVmZmVyIGluZGV4OiAiLCBfX2luZGV4IC0gMSwgIiBpcyAiLCBvcGVyYW5kLCAiIGFuZCBvc3Ig
ZW50cnkgYnVmZmVyIGluZGV4OiAiLCBudW1iZXJPZkxvY2Fscyk7CisgICAgICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVy
T2ZMb2NhbHMpLCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAg
ICAgICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoTW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIGxvY2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5k
LCB2YWx1ZSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIi0tLS0t
LS0tLS0tLS0tLSIpOworCisgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KQorICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRj
aE9TUkVudHJ5ID0gMDsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9T
UkVudHJ5ID0gc3RkOjptYXgobnVtYmVyT2ZMb2NhbHMsICptX2dyYXBoLm1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBub3cgZXhpdCBiZWNhdXNl
IHdlJ3ZlIHNldCB1cCBvdXIgT1NSIGV4aXQgc3RhdGUgdG8gcmVjb3ZlciBhbnkgbGl2ZSBsb2Nh
bHMuCisgICAgICAgICAgICBtX2V4aXRPSyA9IHRydWU7IAorICAgICAgICAgICAgYWRkVG9HcmFw
aChFeGl0T0spOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gU2V0IHVwIG91
ciBhcmd1bWVudHMgbm93IHRoYXQgaXQncyBzYWZlIHRvIGV4aXQuIFRoaXMgaGFwcGVucyBoZXJl
IGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUgY2hlY2tzIHVwCisgICAgICAgICAgICAgICAgLy8g
dG8gdGhpcyBwb2ludCBpbiB0aGUgcHJvZ3JhbSwgc28gaXQgbXVzdCBiZSBzYWZlIHRvIGV4aXQu
CisgICAgICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4PigpKTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAg
ICAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5y
ZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJn
dW1lbnQgPSAwOyBhcmd1bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpOyArK2FyZ3Vt
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUg
PSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1l
bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QoYXJndW1lbnRQcmVk
aWN0aW9uc1thcmd1bWVudF0pOworCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJn
ZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4
LCBCYWRDYWNoZSkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0Fy
cmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGlu
Z1R5cGUpKTsKKworICAgICAgICAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRv
R3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOworICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFy
Z3VtZW50LCBzZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1
bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBsb2NhbHNUb1Nl
dCkKKyAgICAgICAgICAgICAgICBzZXRMb2NhbChjdXJyZW50Q29kZU9yaWdpbigpLCBwYWlyLmZp
cnN0LCBwYWlyLnNlY29uZCk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2Nh
dGNoKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAg
ICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsLCBDYWxsTW9kZTo6
UmVndWxhcik7CkBAIC02MTM4LDggKzYyNjAsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Vu
bGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBl
bmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sg
aXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAoIW1f
Z3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1C
bG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBl
bmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAgICAg
ICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjE5Niw4
ICs2MzIwLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAogICAg
IHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91
bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOwor
CiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxV
bnJlYWNoYWJsZUJsb2NrcygpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkFQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkFQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
aWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNv
ZGVJbmRleCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
CisKICAgICAgICAgICAgICAgICBpZiAobV92ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICBGb3VuZCBtdXN0LWhhbmRsZSBibG9jazogIiwgKmJsb2NrLCAiXG4iKTsKICAg
ICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkocmV2aXNp
b24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5o
IgogI2luY2x1ZGUgIkRGR0Jsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNs
dWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIApAQCAtNDgsNyArNDksMjAgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBO
b2RlIHJvb3QoKSB7IHJldHVybiBtX2dyYXBoLmJsb2NrKDApOyB9CisgICAgTm9kZSByb290KCkK
KyAgICB7CisgICAgICAgIC8vIE9PUFM6IG1heWJlIG1ha2UgdGhpcyByZWxlYXNlPworICAgICAg
ICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBIHx8IG1fZ3JhcGgubV9pc0luU1NBQ29udmVy
c2lvbik7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmJsb2NrKDApOworICAgIH0KKworICAgIExp
c3Qgcm9vdHMoKQorICAgIHsKKyAgICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogcm9vdCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQocm9vdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KICAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gQmxvY2tNYXA8
VD4obV9ncmFwaCk7IH0KQEAgLTcxLDYgKzg1LDMwIEBAIHByaXZhdGU6CiAgICAgR3JhcGgmIG1f
Z3JhcGg7CiB9OwogCitjbGFzcyBDUFNDRkcgOiBwdWJsaWMgU2luZ2xlUm9vdEdyYXBoPENGRz4g
eworcHVibGljOgorICAgIENQU0NGRyhHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogU2luZ2xlUm9v
dEdyYXBoPENGRz4oKmdyYXBoLm1fc3NhQ0ZHKQorICAgIHsKKyAgICB9Cit9OworCit1c2luZyBT
U0FDRkcgPSBDRkc7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1ZT46OnR5cGU+CitD
UFNDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3Jh
cGgubV9jcHNDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9jcHNDRkc7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
c2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FDRkcmIHNlbGVjdENGRyhHcmFwaCYg
Z3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9zc2FDRkcpOworICAgIHJldHVy
biAqZ3JhcGgubV9zc2FDRkc7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEJ1
dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhl
IG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBXZSBjb3Vs
ZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRo
ZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBhbm90aGVy
IGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07
KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3Vt
ZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpIHsKKyAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGNvbnN0
IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAg
IGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1
bWVudHNbaV0pOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRL
aW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4LDcgQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCiAgICAg
ICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1
cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwog
ICAgICAgICAKICAgICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigp
OwogICAgICAgICAKQEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykg
ewogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtp
XTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRp
ZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURv
bWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAg
ICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAg
ICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTc3OSw3ICs3
NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0cmljdCBkb21pbmF0
aW9uIGJlY2F1c2UgdGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3VyIG93biBibG9jayBp
ZgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBi
bG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8g
aXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1
cy4KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0
ZXMoYmxvY2ssIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWlu
YXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIEl0
IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsg
aS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWlu
YXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoLnNldE5vZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ3LDYgKzI0Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQK
ICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfZ2V0
X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NhdGNoOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0
Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0
aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMjA3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1
cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNTQURv
bWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5zdXJl
QmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOwor
ICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0b3Jz
JiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5i
bG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAg
ICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAg
ICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1
bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0
b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVw
LgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tz
KCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCAr
OTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAgZHVt
cEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlv
dXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgIG1f
Z3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0
b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAgICBj
b25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1ibHlQ
cmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDcgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tl
dDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToK
KyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9j
YWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRS
ZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0
b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwzMiBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21p
bmF0b3JzPENGRz4gewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBEb21pbmF0
b3JzIDogcHVibGljIFdURjo6RG9taW5hdG9yczxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoRG9taW5hdG9ycyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgRG9taW5hdG9ycyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpEb21pbmF0
b3JzPENGRz4oKmdyYXBoLm1fY2ZnKQorICAgICAgICA6IFdURjo6RG9taW5hdG9yczxDRkdLaW5k
PihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpKQogICAgIHsKICAgICB9CiB9OwogCit1c2luZyBT
U0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcgQ1BTRG9taW5hdG9ycyA9
IERvbWluYXRvcnM8Q1BTQ0ZHPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZhbHVlPjo6
dHlwZT4KK0NQU0RvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBo
KQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FEb21pbmF0b3JzJiBlbnN1cmVE
b21pbmF0b3JzRm9yQ0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJl
U1NBRG9taW5hdG9ycygpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RWRnZURvbWluYXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRWRnZURvbWluYXRlcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQw
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQogICAgICAgICAsIG1fcmVz
dWx0KHRydWUpCiAgICAgeworICAgICAgICBBU1NFUlQoZ3JhcGgubV9mb3JtID09IFNTQSk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgb3BlcmF0b3IoKShOb2RlKiwgRWRnZSBlZGdlKQogICAgIHsK
LSAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGVk
Z2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFw
aC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2sp
OwogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAg
ICAgICAgICAiQ2hlY2tpbmcgaWYgIiwgZWRnZSwgIiBpbiAiLCAqZWRnZS5ub2RlKCktPm93bmVy
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgzLDYgKzE5ODMsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAg
IGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAg
ICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7Citl
bnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJ
bnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRl
ICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR05h
dHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2
ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCkBAIC03Myw3ICs3
Miw4IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxh
bikKICAgICAsIG1fY29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVk
QmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX2NmZyhzdGQ6Om1ha2Vf
dW5pcXVlPENGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FD
Rkc+KCp0aGlzKSkKKyAgICAsIG1fY3BzQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPigqdGhp
cykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShC
ZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5v
dFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTQxMSw3ICs0MTEsOCBAQCBib29sIEdyYXBoOjp0ZXJt
aW5hbHNBcmVWYWxpZCgpCiAKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVt
cE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQu
cHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0
KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUg
PyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCki
IDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIg
KCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIp
OiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9j
ay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50ID8gIiAoQ2F0Y2ggRW50cnlwb2ludCkiIDogIiIsICJcbiIpOwogICAgIGlmIChibG9j
ay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBFeGVjdXRpb24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3Vu
dCwgIlxuIik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAt
NDIyLDE4ICs0MjMsMTcgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFt
JgogICAgIGlmIChibG9jay0+dGVybWluYWwoKSkgewogICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgIG91dC5wcmlu
dCgiICIsICpzdWNjZXNzb3IpOwotICAgICAgICAgICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykK
LSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5lZGdl
S2luZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAg
ICAgICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsKICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAg
aWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7Ci0gICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21pbmF0b3JzLT5kb21pbmF0b3Jz
T2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVz
OiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7Ci0gICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0
b3JzLT5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3Jz
LT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoQmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIp
OwotICAgIH0KKyAgICAvLyBPT1BTLgorICAgIC8vaWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5h
bHNBcmVWYWxpZCgpKSB7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVk
IGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOworICAgIC8v
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgbV9kb21pbmF0b3JzLT5ibG9j
a3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOworICAgIC8vICAgIG91dC5wcmludChwcmVmaXgs
ICIgIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5kb21pbmFuY2VGcm9udGll
ck9mKGJsb2NrKSwgIlxuIik7CisgICAgLy8gICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0
ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPml0ZXJhdGVkRG9taW5hbmNl
RnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxuIik7CisgICAgLy99CiAgICAgaWYg
KG1fYmFja3dhcmRzRG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CiAgICAgICAg
IG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBkb21pbmF0ZXMgYnk6ICIsIG1fYmFja3dh
cmRzRG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CiAgICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBkb21pbmF0ZXM6ICIsIG1fYmFja3dhcmRzRG9taW5h
dG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKQEAgLTQ0NiwyOSArNDQ2LDI4
IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQog
ICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJp
bmcpCi0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwg
bV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1iZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJl
cmluZy0+cG9zdE51bWJlcihibG9jayksICJcbiIpOwotICAgIGlmIChtX25hdHVyYWxMb29wcykg
ewotICAgICAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+
aGVhZGVyT2YoYmxvY2spKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBMb29w
IGhlYWRlciwgY29udGFpbnM6Iik7Ci0gICAgICAgICAgICBWZWN0b3I8QmxvY2tJbmRleD4gc29y
dGVkQmxvY2tMaXN0OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvb3At
PnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQobG9v
cC0+YXQoaSktPmluZGV4KTsKLSAgICAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9ja0xpc3Qu
YmVnaW4oKSwgc29ydGVkQmxvY2tMaXN0LmVuZCgpKTsKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAg
ICAgb3V0LnByaW50KCIgIyIsIHNvcnRlZEJsb2NrTGlzdFtpXSk7Ci0gICAgICAgICAgICBvdXQu
cHJpbnQoIlxuIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFZlY3Rvcjxjb25zdCBO
YXR1cmFsTG9vcCo+IGNvbnRhaW5pbmdMb29wcyA9Ci0gICAgICAgICAgICBtX25hdHVyYWxMb29w
cy0+bG9vcHNPZihibG9jayk7Ci0gICAgICAgIGlmICghY29udGFpbmluZ0xvb3BzLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmluZyBsb29wIGhl
YWRlcnM6Iik7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmlu
Z0xvb3BzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIsICpjb250
YWluaW5nTG9vcHNbaV0tPmhlYWRlcigpKTsKLSAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsK
LSAgICAgICAgfQotICAgIH0KKyAgICAvLyBPT1BTLgorICAgIC8vaWYgKG1fbmF0dXJhbExvb3Bz
KSB7CisgICAgLy8gICAgaWYgKGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9v
cHMtPmhlYWRlck9mKGJsb2NrKSkgeworICAgIC8vICAgICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBMb29wIGhlYWRlciwgY29udGFpbnM6Iik7CisgICAgLy8gICAgICAgIFZlY3RvcjxCbG9ja0lu
ZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7CisgICAgLy8gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsb29wLT5zaXplKCk7ICsraSkKKyAgICAvLyAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlz
dC5hcHBlbmQobG9vcC0+YXQoaSktPmluZGV4KTsKKyAgICAvLyAgICAgICAgc3RkOjpzb3J0KHNv
cnRlZEJsb2NrTGlzdC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOworICAgIC8vICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc29ydGVkQmxvY2tMaXN0LnNpemUoKTsgKytp
KQorICAgIC8vICAgICAgICAgICAgb3V0LnByaW50KCIgIyIsIHNvcnRlZEJsb2NrTGlzdFtpXSk7
CisgICAgLy8gICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAvLyAgICB9CisgICAgLy8gICAg
CisgICAgLy8gICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0K
KyAgICAvLyAgICAgICAgbV9uYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOworICAgIC8vICAg
IGlmICghY29udGFpbmluZ0xvb3BzLmlzRW1wdHkoKSkgeworICAgIC8vICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3AgaGVhZGVyczoiKTsKKyAgICAvLyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKKyAg
ICAvLyAgICAgICAgICAgIG91dC5wcmludCgiICIsICpjb250YWluaW5nTG9vcHNbaV0tPmhlYWRl
cigpKTsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgIC8vICAgIH0KKyAgICAv
L30KICAgICBpZiAoIWJsb2NrLT5waGlzLmlzRW1wdHkoKSkgewogICAgICAgICBvdXQucHJpbnQo
cHJlZml4LCAiICBQaGkgTm9kZXM6Iik7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpIHsKQEAgLTUwMiw4ICs1MDEsMTAgQEAgdm9pZCBHcmFw
aDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2lu
dCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZp
Y2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTog
IiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAg
ICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRG
b3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRz
OiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBm
b3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJndW1lbnRzKQorICAgICAgICAgICAgb3V0
LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwgcGFpci5rZXktPmluZGV4LCAiOiAiLCBs
aXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAgfQogICAgIG91dC5wcmludCgiXG4iKTsK
ICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CkBAIC02NDAsOCArNjQxLDEwIEBA
IHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZvaWQgR3JhcGg6OmRl
dGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4gd29y
a2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsKLSAgICBibG9jaygwKS0+aXNS
ZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50
cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFjaGFibGUgPSB0cnVlOworICAg
ICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAgfQogICAgIHdoaWxlICghd29y
a2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3Qu
dGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3Nv
cnMoKTsgaS0tOykKQEAgLTc5OCw5ICs4MDEsMTAgQEAgdm9pZCBHcmFwaDo6a2lsbFVucmVhY2hh
YmxlQmxvY2tzKCkKIAogdm9pZCBHcmFwaDo6aW52YWxpZGF0ZUNGRygpCiB7Ci0gICAgbV9kb21p
bmF0b3JzID0gbnVsbHB0cjsKLSAgICBtX25hdHVyYWxMb29wcyA9IG51bGxwdHI7Ci0gICAgbV9w
cmVQb3N0TnVtYmVyaW5nID0gbnVsbHB0cjsKKyAgICBtX2Nwc0RvbWluYXRvcnMgPSBudWxscHRy
OworICAgIG1fc3NhRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMg
PSBudWxscHRyOworICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKICAgICBtX2NvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsKICAgICBtX2JhY2t3YXJkc0RvbWluYXRv
cnMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0cjsKQEAgLTg1MCwxMiAr
ODU0LDM3IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5QcmVPcmRlcigpCiB7CiAgICAgQmxv
Y2tMaXN0IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0
LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50
cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUg
KEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgcmVzdWx0LmFw
cGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNz
b3JzKCk7IGktLTspCiAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKGJsb2NrLT5zdWNjZXNzb3Io
aSkpOwogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8v
IFdoZW4gaXRlcmF0aW5nIG92ZXIgcHJlIG9yZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMK
KyAgICAgICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgorICAgICAgICBhdXRvIHZh
bGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAgICAgICAgaWYgKCFhKQor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAgICAgICAgIGlmICghYiB8
fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA8IGopOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3JtID09IFNTQSB8fCBtX2lz
SW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZVNTQURv
bWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhl
bnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC04NjMsNyArODkyLDggQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7
CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmts
aXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayog
ZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlw
b2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkg
ewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAgICAgY2FzZSBWaXNpdE9yZGVy
OjpQcmU6CkBAIC04NzYsNiArOTA2LDMxIEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0
T3JkZXIoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAo
dmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBhdXRvIHZhbGlkYXRlUmVzdWx0cyA9IFsm
XSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICAgICAgLy8gV2hlbiBpdGVyYXRpbmcgb3Zl
ciByZXZlcnNlIHBvc3Qgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5hdG9ycworICAgICAgICAg
ICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgorICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAgICAgICAgaWYgKCFhKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAgICAgICAgIGlmICghYiB8fCBhID09
IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaSA+IGopOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3JtID09IFNTQSB8fCBtX2lzSW5TU0FD
b252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZVNTQURvbWluYXRv
cnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVD
UFNEb21pbmF0b3JzKCkpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE0
NzIsMzAgKzE1MjcsNDMgQEAgdm9pZCBHcmFwaDo6bG9nQXNzZXJ0aW9uRmFpbHVyZSgKICAgICBs
b2dERkdBc3NlcnRpb25GYWlsdXJlKCp0aGlzLCB0b0NTdHJpbmcoIldoaWxlIGhhbmRsaW5nIGJs
b2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuXG4iKSwgZmlsZSwgbGluZSwgZnVuY3Rpb24s
IGFzc2VydGlvbik7CiB9CiAKLURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVEb21pbmF0b3JzKCkK
K0NQU0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBp
ZiAoIW1fY3BzRG9taW5hdG9ycykKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0dXJuICptX2Nwc0RvbWluYXRv
cnM7Cit9CisKK1NTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKCkKIHsK
LSAgICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX2RvbWluYXRvcnM7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKTsK
KyAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykKKyAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gc3Rk
OjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NzYURv
bWluYXRvcnM7CiB9CiAKLVByZVBvc3ROdW1iZXJpbmcmIEdyYXBoOjplbnN1cmVQcmVQb3N0TnVt
YmVyaW5nKCkKK0NQU05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygp
CiB7Ci0gICAgaWYgKCFtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG1fcHJlUG9zdE51bWJl
cmluZyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlUG9zdE51bWJlcmluZz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9wcmVQb3N0TnVtYmVyaW5nOworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBT
U0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsK
KyAgICBpZiAoIW1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0dXJuICpt
X2Nwc05hdHVyYWxMb29wczsKIH0KIAotTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlTmF0dXJh
bExvb3BzKCkKK1NTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxMb29wcygp
CiB7Ci0gICAgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIGlmICghbV9uYXR1cmFsTG9vcHMpCi0g
ICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0
aGlzKTsKLSAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSA9PSBTU0EpOworICAgIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBpZiAoIW1fc3Nh
TmF0dXJhbExvb3BzKQorICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlx
dWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NzYU5hdHVyYWxMb29w
czsKIH0KIAogQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKCkKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgLy8gV2UgY291bGQgY2hhbmdlIHRoaXMs
IGJ1dCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EgZm9yIG5vdywgYW5kIHdlIGRvbid0IG5lZWQgdHdv
IGdyYXBoIGZpZWxkcyB5ZXQgZm9yIHR3byB0eXBlcyBvZiBiYWNrd2FyZHMgQ0ZHLgogICAgIGlm
ICghbV9iYWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3Vu
aXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwpA
QCAtMTUwMyw2ICsxNTcxLDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRz
Q0ZHKAogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9taW5h
dG9ycygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFt
X2JhY2t3YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0
ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAq
bV9iYWNrd2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTc5LDcgQEAgQmFja3dhcmRzRG9t
aW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1h
a2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAgcmV0dXJu
ICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3ICsxNTk3LDcgQEAgTWV0
aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkp
LT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2Rl
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
aAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwxNyBAQCBjbGFzcyBC
YWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZHOwogY2xh
c3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0dXJhbExv
b3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZHOwordXNpbmcgU1NB
Q0ZHID0gQ0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+Owor
dXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVy
YWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0dXJhbExvb3BzID0g
TmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGbG93TWFw
OwogCkBAIC05MDEsOSArOTEyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRGVidWdnZXJF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAotICAgIERv
bWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5nJiBlbnN1
cmVQcmVQb3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1cmFsTG9v
cHMoKTsKKyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgU1NB
RG9taW5hdG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05hdHVyYWxMb29wcyYg
ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3BzJiBlbnN1cmVTU0FO
YXR1cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NGRygpOwog
ICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKTsKICAg
ICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXMoKTsKQEAgLTkyMSw3ICs5MzMsOCBAQCBwdWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2Nv
ZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0
b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8
QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9l
bnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAg
ICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFz
aCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDEx
ICs5NjksMTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFk
ZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRo
ZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRz
OworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50cnlwb2lu
dFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4g
SW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tl
ZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwotICAgIAor
CiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVB
Y2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2Fy
Z3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9uPiBtX3RyYW5zaXRpb25zOwpAQCAt
OTgyLDEwICs5OTUsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0
KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5
cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZl
Y3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51
bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFs
TG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZH
PiBtX2Nwc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJk
c0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2Fy
ZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAyNCw4IEBA
IHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1f
aGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFi
c3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMs
NTQgKzkzLDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAog
dm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9j
ayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9
IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZv
dW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRl
QXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xv
YmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7
Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAg
ICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNT
QSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVu
dHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0g
Rmx1c2hlZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0g
bm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgZm9yIChCYXNp
Y0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5j
ZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3Rh
bnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0
ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFT
dHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1i
ZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0
VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3Jt
YXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiB0
aGUgRlRMLCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgIC8vIHdoYXQgd2UgZG8g
aGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAgICAg
ICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hl
ZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9y
bWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0
Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAg
ICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0lu
dDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNo
ZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAg
ICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5
dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNo
IGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAg
ICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQu
YXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51
bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVl
c0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9j
YWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAx
IDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAg
ICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9y
ZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9j
aykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgog
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2st
PmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsK
ICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw3ICszNzEsNyBA
QCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7
CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNlIFJl
dHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAg
Y29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBv
c3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgp
OwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERG
Ry5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0Zp
dCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRy
eSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50
cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSog
Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERh
dGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlw
b2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNo
RW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7
CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsK
KyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBv
aW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNo
RW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRl
eCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0
IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7Cisg
ICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUlu
ZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJ
bmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVu
dHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZz
ZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAg
ICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJ
bmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAg
ICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0
KQogICAgIHsKQEAgLTEzMiw2ICsxNTgsNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1v
bkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7Cisg
ICAgVmVjdG9yPENhdGNoRW50cnlwb2ludERhdGE+IGNhdGNoRW50cnlwb2ludHM7CiAgICAgU2Vn
bWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpT
cGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFi
bGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpAQCAtMTY4LDYgKzE5NSw4IEBAIHB1
YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAg
dW5zaWduZWQgb3NyRW50cnlSZXRyeTsKICAgICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAg
IE1hbGxvY1B0cjxKU1ZhbHVlPiBjYXRjaE9TUkVudHJ5QnVmZmVyOwogI2VuZGlmIC8vIEVOQUJM
RShGVExfSklUKQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDkg
QEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxv
Y1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29t
cGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3Vs
YXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksMTEgQEAgdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAg
aWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSB7CisgICAgICAgIG1faml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNp
emVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsK
KyAgICAgICAgZGF0YUxvZ0xuKCJDYXRjaCBvc3IgZW50cnkgYnVmZmVyOiAiLCBSYXdQb2ludGVy
KG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKSksICIgaGFzIHNpemU6ICIsICpt
X2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSk7CisgICAgfQorCiAgICAgc2V0U3Rh
cnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTksMjMgQEAg
dm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3Zv
aWQgSklUQ29tcGlsZXI6Om5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiBiYXNpY0Js
b2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2lu
dCBpcyBieSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNo
RW50cnlwb2ludChiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2Yo
YmxvY2tIZWFkKSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30KKwogdm9pZCBKSVRDb21w
aWxlcjo6bm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6
OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBSRUxFQVNF
X0FTU0VSVCghYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisKICAgICAvLyBPU1IgZW50
cnkgaXMgbm90IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRy
b2wgZmxvdyBhbmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFI
YXNWaXNpdGVkKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRh
KiBlbnRyeSA9IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNv
ZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVu
dHJ5LT5tX2V4cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1
ZXNBdEhlYWQ7CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBv
dXIgcHJvdG9jb2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lk
IG5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFk
LCBMaW5rQnVmZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9j
ayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImLCBWZWN0b3I8Rmx1
c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4g
aml0Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNw
YWNlIHsKIAordXNpbmcgTmF0dXJhbExvb3AgPSBTU0FOYXR1cmFsTG9vcDsKKwogc3RydWN0IExv
b3BEYXRhIHsKICAgICBMb29wRGF0YSgpCiAgICAgICAgIDogcHJlSGVhZGVyKG51bGxwdHIpCkBA
IC03NCw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCi0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgbV9ncmFwaC5lbnN1cmVD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CkBA
IC04Myw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9uYXR1cmFs
TG9vcHMtPm51bUxvb3BzKCkpOworICAgICAgICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9zc2FO
YXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOwogICAgICAgICAKICAgICAgICAgLy8gRmlndXJlIG91
dCB0aGUgc2V0IG9mIHRoaW5ncyBlYWNoIGxvb3Agd3JpdGVzIHRvLCBub3QgaW5jbHVkaW5nIGJs
b2NrcyB0aGF0CiAgICAgICAgIC8vIGJlbG9uZyB0byBpbm5lciBsb29wcy4gV2UgZml4IHRoaXMg
bGF0ZXIuCkBAIC05OCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2Nr
LT5jZmFIYXNWaXNpdGVkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFs
TG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFs
TG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihi
bG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLT5pbmRleCgpXTsKQEAg
LTExNiwxNCArMTE4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRm9yIGVhY2ggbG9vcDoKICAg
ICAgICAgLy8gLSBJZGVudGlmeSBpdHMgcHJlLWhlYWRlci4KICAgICAgICAgLy8gLSBNYWtlIHN1
cmUgaXRzIG91dGVyIGxvb3BzIGtub3cgd2hhdCBpdCBjbG9iYmVycy4KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBs
b29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxv
b3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CiAgICAgICAgICAgICBMb29w
RGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLmluZGV4KCldOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBmb3IgKAotICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxvb3Ag
PSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7CisgICAg
ICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FO
YXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKICAgICAgICAgICAgICAgICBv
dXRlckxvb3A7Ci0gICAgICAgICAgICAgICAgb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxM
b29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxvb3ApKQorICAgICAgICAgICAgICAgIG91
dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgq
b3V0ZXJMb29wKSkKICAgICAgICAgICAgICAgICBtX2RhdGFbb3V0ZXJMb29wLT5pbmRleCgpXS53
cml0ZXMuYWRkQWxsKGRhdGEud3JpdGVzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQmFz
aWNCbG9jayogaGVhZGVyID0gbG9vcC5oZWFkZXIoKTsKQEAgLTEzNyw3ICsxMzksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGhlYWRlci0+
cHJlZGVjZXNzb3JzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IHByZWRlY2Vzc29yID0gaGVhZGVyLT5wcmVkZWNlc3NvcnNbaV07Ci0gICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3Nvcikp
CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMo
aGVhZGVyLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgcHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xOTEsNyArMTkzLDcg
QEAgcHVibGljOgogICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBsb29wU3RhY2s7
CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpIHsKLSAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9v
cE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFw
aC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKICAgICAgICAgICAg
IGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIApAQCAt
MTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoCiAgICAgICAgICAgICAg
ICAgY29uc3QgTmF0dXJhbExvb3AqIGN1cnJlbnQgPSBsb29wOwogICAgICAgICAgICAgICAgIGN1
cnJlbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMt
PmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkpCisgICAgICAgICAgICAgICAgY3VycmVudCA9
IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkp
CiAgICAgICAgICAgICAgICAgbG9vcFN0YWNrLmFwcGVuZChjdXJyZW50KTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgLy8gUmVtZW1iZXI6IHRoZSBsb29wIHN0YWNrIGhhcyB0aGUgaW5uZXIt
bW9zdCBsb29wIGF0IGluZGV4IDAsIHNvIGlmIHdlIHdhbnQKQEAgLTMxOCw3ICszMjAsNyBAQCBw
cml2YXRlOgogICAgICAgICAvLyBiZWNhdXNlIG1vc3QgbG9vcHMgYXJlIHNtYWxsIGFuZCBtb3N0
IGJsb2NrcyBiZWxvbmcgdG8gZmV3IGxvb3BzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJvZHlJ
bmRleCA9IGxvb3AtPnNpemUoKTsgYm9keUluZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBzdWJCbG9jayA9IGxvb3AtPmF0KGJvZHlJbmRleCk7Ci0gICAgICAgICAgICBjb25zdCBO
YXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1
YkJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9ncmFw
aC5tX3NzYU5hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2spOwogICAgICAgICAgICAgaWYg
KCFzdWJMb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgQmFzaWNC
bG9jayogc3ViUHJlSGVhZGVyID0gbV9kYXRhW3N1Ykxvb3AtPmluZGV4KCldLnByZUhlYWRlcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIw
NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVBy
ZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
bG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2st
PmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBu
b2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYm
IG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07
CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxv
Y2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUg
PT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICAgICAg
aWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxG
cmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDkgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVI
ZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0luc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNp
Y0Jsb2NrKiBibG9jaykKIHsKKyAgICAvLyBPT1BTOiBtYXliZSB1c2UgaGFzaHNldCBmb3IgdGhp
cyBhc3NlcnQuCisgICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1fZW50cnlwb2ludHMuY29udGFp
bnMoYmxvY2spKTsgLy8gQW4gZW50cnlwb2ludCBzaG91bGQgbm90IGJlIGluIGEgbG9vcCEKKwog
ICAgIC8vIEZJWE1FOiBJZiB3ZSBydW4gdGhpcyB1dGlsaXR5IG9uIFNTQSBJUiwgdGhlbiB3ZSBt
YXkgZW5kIHVwIHdpdGggYSBiaXphcnJlIGFycmFuZ2VtZW50IG9mCiAgICAgLy8gVXBzaWxvbnMg
YW5kIFBoaXMsIGxpa2U6CiAgICAgLy8KQEAgLTY5LDcgKzcyLDcgQEAgQmFzaWNCbG9jayogY3Jl
YXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIC8vIEluc3RlYWQsIHdlIHVzZSB0aGUgbWF4
IG9mIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgbG9vcCBib2R5J3Mgbm9uLWxvb3AgcHJlZGVjZXNz
b3JzLgogICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVk
ZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIGlmIChncmFw
aC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGZyZXF1ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5jeSwg
cHJlZGVjZXNzb3ItPmV4ZWN1dGlvbkNvdW50KTsKICAgICB9CkBAIC0xMDMsNyArMTA2LDcgQEAg
QmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIAogICAgIGZvciAo
dW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IDA7IHByZWRlY2Vzc29ySW5kZXggPCBibG9jay0+
cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleCsrKSB7CiAgICAgICAgIEJhc2lj
QmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4
XTsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVk
ZWNlc3NvcikpCisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhi
bG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGJsb2Nr
LT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleC0tXSA9IGJsb2NrLT5wcmVkZWNlc3NvcnMu
bGFzdCgpOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAgLTEz
MCwxNiArMTMzLDE2IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAg
ICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVO
YXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxv
b3BzKCk7IGxvb3BJbmRleC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7Ci0gICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IDA7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9v
cEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25zdCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9IG1f
Z3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wg
bmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJl
ZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRl
Y2Vzc29ySW5kZXgtLTspIHsKLSAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nv
ciA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRl
cigpLCBwcmVkZWNlc3NvcikpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29y
SW5kZXggPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVj
ZXNzb3JJbmRleC0tOykgeworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29y
ID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsK
KyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhs
b29wLmhlYWRlcigpLm5vZGUoKSwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUHJlSGVhZGVyKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGV4aXN0aW5nUHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xNjUs
MTQgKzE2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBBIHByZS1oZWFkZXIgaXMgbW9z
dCB1c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0byBleGl0IGZyb20gaXRzIHRlcm1pbmFsLiBIZW5j
ZQogICAgICAgICAgICAgLy8gaWYgdGhlIHRlcm1pbmFsIG9mIHRoZSBleGlzdGluZyBwcmUtaGVh
ZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQsIGJ1dCB0aGUgZmlyc3QKICAgICAgICAgICAgIC8v
IG9yaWdpbiBvZiB0aGUgbG9vcCBoZWFkZXIgZG9lcywgdGhlbiB3ZSBzaG91bGQgY3JlYXRlIGEg
bmV3IHByZS1oZWFkZXIuCi0gICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxv
b3AuaGVhZGVyKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAgICBpZiAoIW5lZWRz
TmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCkubm9kZSgpLT5hdCgwKS0+b3JpZ2luLmV4aXRP
SwogICAgICAgICAgICAgICAgICYmICFleGlzdGluZ1ByZUhlYWRlci0+dGVybWluYWwoKS0+b3Jp
Z2luLmV4aXRPSykKICAgICAgICAgICAgICAgICBuZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNyZWF0ZVByZUhl
YWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKSk7CisgICAgICAgICAg
ICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCku
bm9kZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1h
bEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgogICAg
ICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUo
KTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAg
ICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1f
Z3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJn
dW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAo
aXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZh
bHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAg
ICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJy
ZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYg
KzgzLDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNh
c2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRy
eUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90
OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpOYXR1cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29wOwor
dXNpbmcgU1NBTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2luZyBD
UFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8Q1BTQ0ZHPjsKIAotY2xhc3MgTmF0dXJh
bExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3BzPENGRz4gewordGVtcGxhdGUgPHR5cGVu
YW1lIENGR0tpbmQ+CitjbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFsTG9v
cHM8Q0ZHS2luZD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5hdHVyYWxMb29wcyk7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF0dXJhbExvb3BzKEdy
YXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkc+KCpncmFwaC5tX2Nm
ZywgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpLCB2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAg
ICA6IFdURjo6TmF0dXJhbExvb3BzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCks
IGVuc3VyZURvbWluYXRvcnNGb3JDRkc8Q0ZHS2luZD4oZ3JhcGgpLCB2YWxpZGF0aW9uRW5hYmxl
ZCgpKQogICAgIHsKKyAgICAgICAgLy8gT09QUzogYWRkIHNvbWUgdmFsaWRhdGlvbiB0aGF0IGdy
YXBoJ3MgZW50cnlwb2ludHMgYXJlIG5vdCBpbiBhbnkgbG9vcC4KICAgICB9CiB9OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNzcs
NyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJhbmNoOwogICAg
IH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNoKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CkBAIC0xMzcyLDYg
KzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBz
d2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0
YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAoaW5k
ZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAtMTUx
OCw2ICsxNTE5LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEF0b21pY3NTdG9yZToKICAgICAg
ICAgY2FzZSBBdG9taWNzU3ViOgogICAgICAgICBjYXNlIEF0b21pY3NYb3I6CisgICAgICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MzAsNiArMTkzMiwxMiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxp
ZCgpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNvbnN0Cisg
ICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsK
KyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KICAgICAKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkw
LDYgKzkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFNwZWNp
YWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQgd2UncmUg
bG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0Y2ggYnVm
ZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3VsdEpTKSBc
CisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAg
ICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAgICAgbWFj
cm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0pJ
VENvZGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIlZNSW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw3NCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50
cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHBy
ZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRy
eVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZXhlYy0+Y29kZUJsb2Nr
KCktPm51bWJlck9mREZHSWRlbnRpZmllcnMoKTsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZH
SklUKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+
ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisKKyAgICBERkc6OkNhdGNoRW50
cnlwb2ludERhdGEqIGNhdGNoRW50cnlwb2ludCA9IGppdENvZGUtPmNhdGNoT1NSRW50cnlEYXRh
Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBpZiAoIWNhdGNoRW50cnlwb2lu
dCkgeworICAgICAgICAvLyBUaGlzIGNhbiBiZSBudWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNl
cy4gVGhlIG1vc3QgY29tbW9uIGlzIHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgdGhpcworICAgICAg
ICAvLyBhZnRlcl9jYXRjaCBhcyBhbiBlbnRyeXBvaW50IHNpbmNlIGl0IGhhZCBuZXZlciBleGVj
dXRlZC4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gV2UncmUgb25s
eSBhbGxvd2VkIHRvIE9TUiBlbnRlciBpZiB3ZSd2ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRpYmxl
IGFyZ3VtZW50IHR5cGVzLgorICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVu
dCA8IGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVudEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50
KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOworICAgICAgICBzd2l0Y2ggKGNhdGNoRW50cnlw
b2ludC0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpG
bHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNCb29s
ZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVzaDoKKyAgICAgICAgICAgIC8vIFRoaXMgbWVh
bnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4gVGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQgdG8g
YmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNo
ZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4gYXJndW1lbnQgaXMgdHJpdmlhbGx5IGEgSlNW
YWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1
bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lz
dGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1
cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgQVNTRVJUKEludGVycHJldGVyOjpnZXRPcGNvZGVJRChleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKV0udS5vcGNvZGUpID09
IG9wX2FmdGVyX2NhdGNoKTsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBv
aW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBfX2luZGV4ID0g
MDsKKyAgICAvL2RhdGFMb2dMbigiLS0tLS0tLS0tLS0tLS0tIik7CisgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICArK19f
aW5kZXg7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5p
c0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vZGF0YUxvZ0xuKCJkb2lu
ZyBPU1IgZW50cnksIGJ1ZmZlciBpbmRleDogIiwgX19pbmRleCAtIDEsICIgaXMgb3BlcmFuZDog
IiwgVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKSwgIiBhbmQgb3NyIGVudHJ5IGlu
ZGV4OiAiLCBpbmRleCk7CisgICAgICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0
KClbaW5kZXhdID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgp
OworICAgICAgICArK2luZGV4OworICAgIH0pOworICAgIC8vZGF0YUxvZ0xuKCItLS0tLS0tLS0t
LS0tLS0iKTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0
KGNhdGNoRW50cnlwb2ludC0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUu
aCIKKyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAj
aW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5z
aWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+
bV9ieXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAg
dW5zaWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZz
ZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdl
IHByb3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVm
b3JlIGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBt
X2FyZ3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBi
dWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFy
c2UuIElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRy
eShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8g
SWYgbnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxs
LCBpdCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhl
Y1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5s
aW5lIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25l
ZCkgeyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tJbnNl
cnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgog
I2luY2x1ZGUgIkRGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZH
UGhhc2UuaCIKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VS
VChieXRlY29kZUluZGV4ICE9IFVJTlRfTUFYKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5lZWRl
ZCBieSBjcmVhdGVQcmVIZWFkZXIoKS4KLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3Jz
KCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOwogICAgICAgICAKICAg
ICAgICAgQ29kZUJsb2NrKiBiYXNlbGluZSA9IG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrOwogICAg
ICAgICAKQEAgLTExMiwxNiArMTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVj
a3MgdG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAg
ICAgICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAg
ICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRl
cnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xk
Tm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUg
YSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBv
bGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
b2xkTm9kZSA9IGFyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dy
YXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcElu
Zm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1
bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBs
b2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDgg
KzE0MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50
cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0g
PSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFy
KCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3Qs
IGFyZ3VtZW50cyk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAg
ICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsMTIgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIE9TUkV4aXQ6OmNvbXBpbGVPU1JFeAogICAgIHsKICAgICAgICAgQ0NhbGxIZWxw
ZXJzIGppdChjb2RlQmxvY2spOwogCisgICAgICAgIGppdC5wcm9iZShbZXhpdF0gKFByb2JlQ29u
dGV4dCogY3R4KSB7CisgICAgICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBiaXR3aXNlX2Nhc3Q8
RXhlY1N0YXRlKj4oY3R4LT5ncHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5hbHRlcm5hdGl2ZSgpLT5udW1iZXJPZkRGR0lkZW50
aWZpZXJzKCk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIldlJ3JlIGNvb2wgYmVmb3JlIE9TUiBl
eGl0OiAiLCBleGl0Lm1fY29kZU9yaWdpbik7CisgICAgICAgIH0pOworCiAgICAgICAgIGlmIChl
eGl0Lm1fa2luZCA9PSBHZW5lcmljVW53aW5kKSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgYWN0
aW5nIGFzIGEgZGVmYWN0byBvcF9jYXRjaCBiZWNhdXNlIHdlIGFycml2ZSBoZXJlIGZyb20gZ2Vu
ZXJpY1Vud2luZCgpLgogICAgICAgICAgICAgLy8gU28sIHdlIG11c3QgcmVzdG9yZSBvdXIgY2Fs
bCBmcmFtZSBhbmQgc3RhY2sgcG9pbnRlci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDYgKzMxMywxMSBAQCB2b2lkIGFkanVzdEFu
ZEp1bXBUb1RhcmdldChWTSYgdm0sIENDYWxsCiAgICAgfQogICAgIAogICAgIGppdC5tb3ZlKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFyZ2V0KSwgR1BSSW5mbzo6cmVnVDIp
OworICAgIGppdC5wcm9iZShbZXhpdF0gKFByb2JlQ29udGV4dCogY3R4KSB7CisgICAgICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IGJpdHdpc2VfY2FzdDxFeGVjU3RhdGUqPihjdHgtPmdwcihHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlcikpOworICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+bnVtYmVy
T2ZERkdJZGVudGlmaWVycygpOworICAgICAgICBkYXRhTG9nTG4oIldlJ3JlIGNvb2wgYWZ0ZXIg
T1NSIGV4aXQ6ICIsIGV4aXQubV9jb2RlT3JpZ2luKTsKKyAgICB9KTsKICAgICBqaXQuanVtcChH
UFJJbmZvOjpyZWdUMik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2
aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDcgKzcyNyw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAg
ICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVu
c3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7
CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJm
b3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRM
aXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBA
QCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2Un
cmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVt
IGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2Qg
YSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7
Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1
cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAg
ICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVy
YWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpAQCAtMzg3LDEzICszODYs
MTQgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgICAgICBS
VU5fUEhBU0UocGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24pOwogICAgICAgICBSVU5f
UEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgZHVtcEFuZFZlcmlm
eUdyYXBoKGRmZywgIkdyYXBoIGFmdGVyIG9wdGltaXphdGlvbjoiKTsKKwogICAgICAgICAKICAg
ICAgICAgSklUQ29tcGlsZXIgZGF0YUZsb3dKSVQoZGZnKTsKICAgICAgICAgaWYgKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAgICAgICBkYXRhRmxvd0pJVC5j
b21waWxlRnVuY3Rpb24oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGF0YUZsb3dKSVQu
Y29tcGlsZSgpOwotICAgICAgICAKKwogICAgICAgICByZXR1cm4gREZHUGF0aDsKICAgICB9CiAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRl
ICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVy
aW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3Jh
cGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29y
a2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9
IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dp
dGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9y
ZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBb
aXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51
bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
RWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFj
a0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBv
c3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAg
Q3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7
Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNp
Y0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9
Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1
cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBz
dHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNC
bG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
cHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJl
cihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0
b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RB
bmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlz
IHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVk
Z2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNo
IGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5k
KEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBG
b3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20p
KQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJu
IENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcg
ewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0
TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUx
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxv
Y2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMg
aGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAg
ICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAg
ICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50
c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIw
NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyMCw2ICs3MjAsNyBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgICAgIGNhc2UgVG9OdW1iZXI6
CiAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6CiAgICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjogewogICAgICAgICAgICAgc2V0UHJlZGlj
dGlvbihtX2N1cnJlbnROb2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRT
dGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1f
Z3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgU1NBQ2FsY3Vs
YXRvciBzc2FDYWxjdWxhdG9yKG1fZ3JhcGgpOwogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0
aW9uU2V0KG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FD
YWxjdWxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNhbGN1bGF0b3IuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMiAr
OTUsMTIgQEAgU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpuZXdEZQogCiBTU0FD
YWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5vbkxvY2FsUmVhY2hpbmdEZWYoQmFzaWNC
bG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICByZXR1cm4gcmVhY2hpbmdE
ZWZBdFRhaWwobV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7Cisg
ICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5pZG9t
KGJsb2NrKSwgdmFyaWFibGUpOwogfQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0
b3I6OnJlYWNoaW5nRGVmQXRUYWlsKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFi
bGUpCiB7Ci0gICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5p
ZG9tKGJsb2NrKSkgeworICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fc3NhRG9t
aW5hdG9ycy0+aWRvbShibG9jaykpIHsKICAgICAgICAgaWYgKERlZiogZGVmID0gbV9kYXRhW2Js
b2NrXS5tX2RlZnMuZ2V0KHZhcmlhYmxlKSkKICAgICAgICAgICAgIHJldHVybiBkZWY7CiAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgJ
KHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2Fs
Y3VsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUGhpSW5zZXJ0aW9uRnVuY3Rvcj4KICAgICB2b2lkIGNvbXB1
dGVQaGlzKGNvbnN0IFBoaUluc2VydGlvbkZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9kb21pbmF0b3JzKTsKKyAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fc3NhRG9taW5hdG9y
cyk7CiAgICAgICAgIAogICAgICAgICBmb3IgKFZhcmlhYmxlJiB2YXJpYWJsZSA6IG1fdmFyaWFi
bGVzKSB7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5Q
cnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCisgICAgICAgICAgICBtX2dyYXBoLm1f
c3NhRG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2YoCiAgICAgICAgICAgICAgICAgdmFyaWFibGUubV9ibG9ja3NXaXRoRGVmcywKICAgICAg
ICAgICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBib29sIHsKICAgICAgICAgICAg
ICAgICAgICAgTm9kZSogcGhpTm9kZSA9IGZ1bmN0b3IoJnZhcmlhYmxlLCBibG9jayk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDggQEAg
cHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRl
ZENQUyk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFyUmVwbGFjZW1lbnRzKCk7Ci0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLm1fY3Bz
Q0ZHID0gbnVsbHB0cjsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7IC8v
IE9PUFM6IGFsbG93IHVzIHRvIGFzc2VydCBpbiBlbnN1cmVTU0FEb21pbmF0b3JzIHRoYXQgd2Un
cmUgaW4gU1NBIGZvcm0uCiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAg
ICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAt
MTEwLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
RGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBo
aSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRl
ciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNo
IGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNl
cnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9j
YWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpW
YXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JT
U0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAg
ICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9j
ayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1h
dHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAv
LyBGSVhNRTogU3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7Cisg
ICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJn
dW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3Jt
YXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAg
ICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0
IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgor
ICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQg
bG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2
LDcgKzQyMSwxMSBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBo
JiBncmFwaCkKIHsKLSAgICByZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFw
aCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAg
IGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVu
UGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgZ3JhcGgubV9pc0luU1NBQ29u
dmVyc2lvbiA9IGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDYgKzMyMyw3IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVk
QXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxv
Y2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcElu
TG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiV2F0
Y2hkb2cuaCIKIAorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIgorCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKICNpZiBVU0UoSlNWQUxVRTY0KQpAQCAtNjA4MCw2
ICs2MDgyLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6IHsKKyAgICAgICAgSlNWYWx1ZSogcHRyID0gJm1faml0LmppdENvZGUoKS0+Y2F0Y2hP
U1JFbnRyeUJ1ZmZlci5nZXQoKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAu
Z3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0
ciksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAg
Y2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkBA
IC02MDg4LDYgKzYxMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQogCisKICAgICBj
YXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkBAIC02
MTE2LDcgKzYxMjksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlUmVzdDoKICAgICBjYXNlIFBoYW50b21TcHJlYWQ6CiAg
ICAgY2FzZSBQaGFudG9tTmV3QXJyYXlXaXRoU3ByZWFkOgotICAgICAgICBERkdfQ1JBU0gobV9q
aXQuZ3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Niw2ICsxNjc2LDEz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAg
ICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgo
KS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
ICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRNYXRl
cmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsK
KyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0
KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBAIC0x
NzcwLDggKzE3NzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMo
CiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1bWVu
dHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQuZ3Jh
cGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBt
X2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJndW1l
bnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVu
dCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg1NSwxMiArMTg2MywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBt
X2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2UgZG9u
J3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAgICAg
IC8vIGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZChtX2pp
dC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NSVGFy
Z2V0IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3VycmVu
dGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhl
bQorICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JFbnRy
eUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICB9
CiAgICAgfQogfQogCkBAIC0xODcxLDEwICsxODc4LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2ppdC5n
cmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAgICBp
ZiAoIWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywg
bV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBp
ZiAoYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBt
X2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAg
ICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICBW
ZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50
Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOwor
ICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3Rvcikgewor
ICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBG
bHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9ybWF0
ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZv
cm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1
c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29zckVu
dHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVudEZv
cm1hdHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNP
U1JUYXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29z
ckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0KICAg
ICB9CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygp
OworCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7
CiAgICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0
aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAg
ICAKICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBiYXNl
ZCBvbiBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1f
Z3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5leGVj
dXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERlcHRo
KGJsb2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJyYW5j
aCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUgY29y
cmVjdC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFw
cGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
OCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0dXJu
IGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9vcDsK
KwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJs
aWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04MSw4
ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvRlRM
KCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29wcyYg
bmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3JhcGgu
ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0dXJh
bExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8Y29u
c3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVpbGRO
YXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNoTWFw
PHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4Miw3
ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBI
YXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xv
b3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRN
YXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAgICBI
YXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9vcEhp
bnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlz
VmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBm
b3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNo
b3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBhbiBl
bnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9p
bnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBv
cmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdl
dExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxOCArMTk1LDE4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEobWF5RXhpdChtX2dyYXBoLCBu
b2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRPSykpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlID0gYmxv
Y2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhY2xvYmJlcnNF
eGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAg
fHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUt
Pm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4u
Zm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKLSAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+
b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0g
RXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAh
PSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9O
b2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEpOworICAgICAgICAgICAgICAgICAg
ICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAg
ICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0ZShtX2dyYXBoLCBwcmV2aW91c05v
ZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCisg
ICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCisgICAgICAg
ICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9k
ZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAg
ICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAg
ICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBub2RlLT5vcmlnaW4uZXhpdE9LKQor
ICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAgICAg
ICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05v
ZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkg
fHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgdm9pZCBs
aW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLAog
ICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBDb2Rl
QmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3RydWN0
aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpc
biIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAg
ICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNTQURv
bWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAg
ICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2
aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAgICAg
IG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURv
bWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQog
ICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmluZy5c
biIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBtX25v
ZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigw
KSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7
IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ld
OworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAgIG1f
b3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
ID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0Myw3
ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJnZXQg
PSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAgaWYg
KG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdldCkp
IHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFpbCBh
bHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7
CkBAIC0xNDQxNCw3ICsxNDQxNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIXZh
bHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgubV9k
b21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAgICAg
ICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwg
bV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMpCiAgICAg
ICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykKICAgICAgICAgREVGSU5FX09QKG9w
X2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJfY2F0Y2gpCiAgICAgICAgIERFRklO
RV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAg
ICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29u
c3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiop
OwpAQCAtNzk1LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90
LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJh
dGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9F
SkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDYgKzU3OSwxMyBA
QCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWlu
dDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5k
Q2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMgb3BlcmF0aW9uLCBHUFJSZWcg
YXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIK
ICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikKK3sKKyAgICAvLyBPT1BTCisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9hc3Nl
cnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9j
YXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIE9PUFM6IGFk
ZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lwT1NS
RW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVz
dG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tpcE9T
UkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkp
IHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYg
cHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1f
b3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSgmcHJv
ZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIHZvaWQgSklUOjplbWl0
X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUxNCw2ICsxNTE0LDE5IEBAIFNs
b3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9H
X0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsK
ICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5
dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXpl
ZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYg
KG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZH
OjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNv
ZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1
ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpAQCAtMjIwMiw2
ICsyMjE1LDExIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKICAg
ICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCisgICAgaWYgKGV4ZWMtPmJ5dGVjb2RlT2Zm
c2V0KCkgPT0gNjI5KSB7CisgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1
ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihleGVjLT5j
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbNjQzXS51LnBvaW50ZXIpOworICAgICAgICBkYXRh
TG9nTG4oIlRocm93aW4sIHNpemUgb2YgYnVmZmVyOiAiLCBidWZmZXItPm1fc2l6ZSk7CisgICAg
fQorCiAgICAgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
RXhjZXB0aW9uVmFsdWUpOwogICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRp
b25WYWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5cGVkZWYgY2hh
ciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJ
T04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0
eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0
ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9K
SVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBj
aGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50
MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9K
SVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0
cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUq
LCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRP
cGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYg
RU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJf
dCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFs
dWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsx
NjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBM
TElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2Nh
dGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
Kj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVj
a2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVy
YW5kKS5qc1ZhbHVlKCkpOworICAgIH0pOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9y
KFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYg
KzEyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3Vu
Y2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZN
KiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRl
cm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShW
TSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc3LDYgKzE5NzcsMTEgQEAgX2xsaW50X29wX2Nh
dGNoOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50
X29wX2FmdGVyX2NhdGNoOgorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2FmdGVyX2NhdGNoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9hZnRlcl9jYXRjaF9sZW5n
dGgpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJ
CTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFs
bFB0clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEg
LyogU2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNp
bmdsZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFF
QjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkw
MERBREUzNiAvKiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5
MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
cmlnYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAK
IAkJCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJ
MTQ2OTQxOTgxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkx
NDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5
NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1
MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5
MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEEx
RDNGIC8qIFNlY29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3Jh
cGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFz
cyBCYWNrd2FyZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3Jh
cGgpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVz
ZSAiI2VuZCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4K
LSAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0K
LSAgICBjbGFzcyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3Jh
cGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1f
bm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSBy
b290KCkKLSAgICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICBy
ZXN1bHQubV9ub2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290
ID09IG90aGVyLm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9v
bCBpc1Jvb3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7
Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFw
aDo6Tm9kZSBtX25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07
Ci0KLSAgICBjbGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAg
ewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2Rl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJl
dHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBy
ZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUu
aXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwg
ZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBtX2hhc1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5u
b2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAg
ICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQo
bV9zZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVu
YW1lIEdyYXBoOjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsK
LSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAg
IHB1YmxpYzoKLSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAo
Z3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwot
ICAgICAgICAgICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3Bl
cmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21h
cFtpbmRleCAtIDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0
X2Nhc3Q8TWFwKj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJh
dG9yW10oY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUu
aXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJl
dHVybiBtX21hcFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBv
cGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8
VD4gbV9tYXA7Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0g
U2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdy
YXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2lu
Z2xlUm9vdE1hcDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsK
IAogICAgIEJhY2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+
Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJp
bnQocm9vdE5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5u
b2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0
b3JzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAgICAgIExlbmdhdWVy
VGFyamFuIGxlbmdhdWVyVGFyamFuKG1fZ3JhcGgpOwogICAgICAgICBsZW5nYXVlclRhcmphbi5j
b21wdXRlKCk7CiAKLSAgICAgICAgbV9kYXRhID0gbV9ncmFwaC50ZW1wbGF0ZSBuZXdNYXA8Qmxv
Y2tEYXRhPigpOwotICAgIAogICAgICAgICAvLyBGcm9tIGhlcmUgd2Ugd2FudCB0byBidWlsZCBh
IHNwYW5uaW5nIHRyZWUgd2l0aCBib3RoIHVwd2FyZCBhbmQgZG93bndhcmQgbGlua3MgYW5kIHdl
IHdhbnQKICAgICAgICAgLy8gdG8gZG8gYSBzZWFyY2ggb3ZlciB0aGlzIHRyZWUgdG8gY29tcHV0
ZSBwcmUgYW5kIHBvc3QgbnVtYmVycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBkb21pbmFuY2UKICAg
ICAgICAgLy8gdGVzdHMuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIFdURl9TaW5nbGVSb290R3JhcGhfaAorI2RlZmluZSBXVEZfU2luZ2xl
Um9vdEdyYXBoX2gKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3Rm
L0dyYXBoTm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoTm9kZSB7CitwdWJsaWM6Cisg
ICAgLy8gV2UgdXNlICIjcm9vdCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhh
dmUgY3JlYXRlZC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAi
I3Jvb3QiOyB9OworCisgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSh0eXBlbmFtZSBHcmFwaDo6Tm9k
ZSBub2RlID0gdHlwZW5hbWUgR3JhcGg6Ok5vZGUoKSkKKyAgICAgICAgOiBtX25vZGUobm9kZSkK
KyAgICB7CisgICAgfQorCisgICAgc3RhdGljIFNpbmdsZVJvb3RHcmFwaE5vZGUgcm9vdCgpCisg
ICAgeworICAgICAgICBTaW5nbGVSb290R3JhcGhOb2RlIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0
Lm1fbm9kZSA9IDA7CisgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNpbmdsZVJv
b3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbm9kZSA9
PSBvdGhlci5tX25vZGUKKyAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaW5nbGVSb290R3JhcGhOb2Rl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRo
aXMgIT0gU2luZ2xlUm9vdEdyYXBoTm9kZSgpOyB9CisKKyAgICBib29sIGlzUm9vdCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7CisgICAgfQorCisgICAgdHlwZW5hbWUg
R3JhcGg6Ok5vZGUgbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoIW1faXNSb290
KTsKKyAgICAgICAgcmV0dXJuIG1fbm9kZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdHlwZW5h
bWUgR3JhcGg6Ok5vZGUgbV9ub2RlOworICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoU2V0IHsK
KyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CitwdWJsaWM6Cisg
ICAgU2luZ2xlUm9vdEdyYXBoU2V0KCkgPSBkZWZhdWx0OworICAgIAorICAgIGJvb2wgYWRkKGNv
bnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAg
ICAgICAgIHJldHVybiBjaGVja0FuZFNldChtX2hhc1Jvb3QsIHRydWUpOworICAgICAgICByZXR1
cm4gbV9zZXQuYWRkKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZShjb25z
dCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAg
ICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBmYWxzZSk7CisgICAgICAgIHJldHVy
biBtX3NldC5yZW1vdmUobm9kZS5ub2RlKCkpOworICAgIH0KKworICAgIGJvb2wgY29udGFpbnMo
Y29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIG1faGFzUm9vdDsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmNvbnRhaW5z
KG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2hhc1Jvb3QpCisgICAgICAgICAgICBvdXQucHJp
bnQoTm9kZTo6cm9vdE5hbWUoKSwgIiAiKTsKKyAgICAgICAgb3V0LnByaW50KG1fc2V0KTsKKyAg
ICB9CisgICAgCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7CisgICAg
Ym9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290TWFwIHsKKyAgICB1c2luZyBOb2RlID0gU2lu
Z2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CitwdWJsaWM6CisgICAgU2luZ2xlUm9vdE1hcChHcmFw
aCYgZ3JhcGgpCisgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCisg
ICAgeworICAgIH0KKworICAgIFNpbmdsZVJvb3RNYXAoU2luZ2xlUm9vdE1hcCYmIG90aGVyKQor
ICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQorICAgICAgICAsIG1fcm9vdChX
VEZNb3ZlKG90aGVyLm1fcm9vdCkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQor
ICAgIHsKKyAgICAgICAgbV9tYXAuY2xlYXIoKTsKKyAgICAgICAgbV9yb290ID0gVCgpOworICAg
IH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgMTsg
fQorCisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICBpZiAo
IWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKKyAgICAgICAgcmV0dXJuIG1fbWFw
W2luZGV4IC0gMV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5k
ZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PFNpbmdsZVJvb3RN
YXAqPih0aGlzKSlbaW5kZXhdOworICAgIH0KKworICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9k
ZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAg
cmV0dXJuIG1fcm9vdDsKKyAgICAgICAgcmV0dXJuIG1fbWFwW25vZGUubm9kZSgpXTsKKyAgICB9
CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PFNpbmdsZVJvb3RNYXAqPih0aGlzKSlbbm9k
ZV07CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6dGVtcGxhdGUg
TWFwPFQ+IG1fbWFwOworICAgIFQgbV9yb290OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgR3Jh
cGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGggeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNp
bmdsZVJvb3RHcmFwaCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisK
KyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcg
U2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CisgICAgdXNpbmcgTGlzdCA9
IFZlY3RvcjxOb2RlLCA0PjsKKworICAgIFNpbmdsZVJvb3RHcmFwaChHcmFwaCYgZ3JhcGgpCisg
ICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3Jh
cGg6Ok5vZGUgcmVhbFJvb3QgOiBncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7IC8vIE9PUFM6IGRvIHdl
IHdhbnQgdGhpcyBhc3NlcnRpb24/CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFw
cGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxS
b290KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJu
IE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4g
bmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3Nv
cnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9v
dCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExp
c3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dy
YXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChu
b2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vz
c29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNS
b290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAgaWYgKG1fcm9v
dFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAgICBMaXN0IHJl
c3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5w
cmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2Rl
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleChj
b25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguaW5kZXgobm9k
ZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHJvb3Qo
KTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAgIH0KKworICAg
IHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBo
Lm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2RlIG5vZGUpIGNv
bnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAgIGVsc2UgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5u
b2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9CisKKyAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUgbm9k
ZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwgIjpcbiIpOwor
ICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAgICAgQ29tbWFQ
cmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29yIDogcHJlZGVj
ZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChwcmVk
ZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAgb3V0
LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21tYVByaW50ZXIo
KTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3JzKG5vZGUpKQor
ICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3IpKTsKKyAgICAg
ICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAg
ICBHcmFwaCYgbV9ncmFwaDsKKyAgICBMaXN0IG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgdHlw
ZW5hbWUgR3JhcGg6OlNldCBtX3Jvb3RTdWNjZXNzb3JTZXQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwordXNpbmcgV1RGOjpTaW5nbGVSb290R3JhcGg7CisKKyNlbmRpZiAvLyBXVEZfU2lu
Z2xlUm9vdEdyYXBoX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318139</attachid>
            <date>2017-08-15 11:22:07 -0700</date>
            <delta_ts>2017-08-15 12:39:46 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>140535</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZD4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAg
KzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAg
ICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2Fz
ZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBwZW5k
KGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNvZGVz
KCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFmdGVyQ2F0Y2hJbmRpY2Vz
LnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGJ5dGVjb2RlTGl2
ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJvZmlsZXM7CisgICAgICAg
IGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRjaEluZGljZXMpIHsKKyAg
ICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3MuZ2V0
TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5kZXgpOworICAgICAgICAg
ICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOworICAgICAgICAgICAgbGl2
ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fscy5iaXRDb3VudCgpKTsK
KyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGxpdmVM
b2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAgICAg
ICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKwor
ICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkK
KyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0g
bGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbYWZ0
ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7CisgICAgICAgICAg
ICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKwor
ICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNhdGNoUHJvZmlsZXMpOwor
ICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhp
cyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9u
cy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29kZUJsb2Nr
OjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291
bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
LCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVOb25Bcmd1
bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMgPSAw
OyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgZXF1
YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1bGwu
CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmls
ZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZyb21BbGxW
YWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJvZmlsZS0+
dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwxMiBAQCB2b2lkIENvZGVC
bG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJPZkxpdmVO
b25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9maWxlQnVj
a2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBwcm9m
aWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAg
fSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKQEAgLTI3NDMs
NyArMjc4NiwxMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yCiB7
CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVM
ZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNl
dCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IGlu
c3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOworICAg
IFJFTEVBU0VfQVNTRVJUKG9wY29kZUlEICE9IG9wX2FmdGVyX2NhdGNoKTsKKyAgICAvLyBPT1BT
IQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMDIsNiArMTAwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAg
ICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlczsK
ICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJvZmlsZXM7CisgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPj4gbV9j
YXRjaFByb2ZpbGVzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1f
cmFyZUNhc2VQcm9maWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8QXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZT4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlczsKICAgICBBcnJheVByb2ZpbGVWZWN0b3Ig
bV9hcnJheVByb2ZpbGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zh
bHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsOCArMTc0
LDggQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldAogfTsKIAogc3Ry
dWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNr
ZXRzPDA+IHsKLSAgICBWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9m
QnVja2V0czwwPigpIHsgfQotICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0K
KyAgICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8
MD4oKSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJv
ZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTIwMiw0ICsyMDIsMzggQEAgaW5saW5lIGludCBnZXRS
YXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZgogICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1f
Ynl0ZWNvZGVPZmZzZXQ7CiB9CiAKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kIHsKKyAg
ICBWYWx1ZVByb2ZpbGUgbV9wcm9maWxlOworICAgIGludCBtX29wZXJhbmQ7Cit9OworCitzdHJ1
Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciB7CisgICAgVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcih1bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsK
KyAgICAgICAgLy8gRklYTUU6IFZhbHVlUHJvZmlsZSBoYXMgbW9yZSBzdHVmZiB0aGFuIHdlIG5l
ZWQuIFdlIGNvdWxkIG9wdGltaXplIHRoZSBvdXIgdmFsdWUgcHJvZmlsZXMKKyAgICAgICAgLy8g
dG8gYmUgbW9yZSBzcGFjZSBlZmZpY2llbnQuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTMKKyAgICAgICAgbV9idWZmZXIgPSBNYWxsb2NQ
dHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD46Om1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBuZXcgKCZtX2J1ZmZlci5nZXQoKVtpXSkgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCgpOworICAgIH0KKworICAgIH5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsr
aSkKKyAgICAgICAgICAgIG1fYnVmZmVyLmdldCgpW2ldLn5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
KCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQg
Zm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyLmdl
dCgpW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgTWFsbG9jUHRyPFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQ+IG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5NjEsNiArMzk2MSw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRj
aChSZWdpc3QKICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKworICAgIGVtaXRPcGNvZGUob3Bf
YWZ0ZXJfY2F0Y2gpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKIH0KIAogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6cmVzdG9yZVNjb3BlUmVnaXN0ZXIoaW50IGxleGljYWxTY29wZUlu
ZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDcsNiArMjA3LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDogewogICAg
ICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwogICAgICAgICBicmVhazsKQEAg
LTE4MzgsNyArMTgzOSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgLy8gRklYTUU6IERvIHNwYXJzZSBjb25kaXRpb25hbCB0aGluZ3MuCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgY2FzZSBSZXR1cm46CiAgICAg
ICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc0NGRy5oCShyZXZpc2lvbiAyMjA3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc0NGRy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi1jbGFzcyBCYWNrd2FyZHNDRkcgOiBwdWJsaWMgQmFja3dhcmRzR3JhcGg8Q0ZH
PiB7CitjbGFzcyBCYWNrd2FyZHNDRkcgOiBwdWJsaWMgQmFja3dhcmRzR3JhcGg8U1NBQ0ZHPiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzQ0ZHKTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCYWNrd2FyZHNDRkcoR3JhcGgmIGdyYXBoKQot
ICAgICAgICA6IEJhY2t3YXJkc0dyYXBoPENGRz4oKmdyYXBoLm1fY2ZnKQorICAgICAgICA6IEJh
Y2t3YXJkc0dyYXBoPFNTQUNGRz4oc2VsZWN0Q0ZHPFNTQUNGRz4oZ3JhcGgpKQogICAgIHsKICAg
ICB9CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2su
Y3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBAIEJhc2ljQmxvY2s6
OkJhc2ljQmxvY2soCiAgICAgOiBieXRlY29kZUJlZ2luKGJ5dGVjb2RlQmVnaW4pCiAgICAgLCBp
bmRleChOb0Jsb2NrKQogICAgICwgaXNPU1JUYXJnZXQoZmFsc2UpCisgICAgLCBpc0NhdGNoRW50
cnlwb2ludChmYWxzZSkKICAgICAsIGNmYUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91
bGRSZXZpc2l0KGZhbHNlKQogICAgICwgY2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMjIwNzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgyLDE3ICs4Miw5IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxC
YXNpY0Jsb2MKICAgICAgICAgc2l6ZV90IGkgPSBzaXplKCk7CiAgICAgICAgIHdoaWxlIChpLS0p
IHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhdChpKTsKLSAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBKdW1wOgotICAgICAgICAgICAgY2FzZSBC
cmFuY2g6Ci0gICAgICAgICAgICBjYXNlIFN3aXRjaDoKLSAgICAgICAgICAgIGNhc2UgUmV0dXJu
OgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgRGlyZWN0VGFp
bENhbGw6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKLSAgICAgICAgICAgIGNh
c2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6
CisgICAgICAgICAgICBpZiAobm9kZS0+aXNUZXJtaW5hbCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBOb2RlQW5kSW5kZXgobm9kZSwgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBiaXR0ZXIgZW5kIGNhbiBjb250YWluIFBoYW50b21z
IGFuZCB0aGUgbGlrZS4gVGhlcmUgd2lsbCBwcm9iYWJseSBvbmx5IGJlIG9uZSBvciB0d28gbm9k
ZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBUaGV5IGFyZSBhbGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBo
YXZlIGFueSBjaGVja2VkIGNoaWxkcmVuLgogICAgICAgICAgICAgY2FzZSBDaGVjazogLy8gVGhp
cyBpcyBoZXJlIGJlY2F1c2UgaXQncyBvdXIgdW5pdmVyc2FsIG5vLW9wLgogICAgICAgICAgICAg
Y2FzZSBQaGFudG9tOgpAQCAtMTg1LDYgKzE3Nyw3IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVm
Q291bnRlZDxCYXNpY0Jsb2MKICAgICBCbG9ja0luZGV4IGluZGV4OwogICAgIAogICAgIGJvb2wg
aXNPU1JUYXJnZXQ7CisgICAgYm9vbCBpc0NhdGNoRW50cnlwb2ludDsKICAgICBib29sIGNmYUhh
c1Zpc2l0ZWQ7CiAgICAgYm9vbCBjZmFTaG91bGRSZXZpc2l0OwogICAgIGJvb2wgY2ZhRm91bmRD
b25zdGFudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUu
aCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNp
bmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUu
aCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgpAQCAtMTEzMCw3ICsxMTMxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0
ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9j
a3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNp
Y0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJ
ZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhp
cyB3aWxsIGJlCiAgICAgICAgIC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQg
bmVlZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2Vk
QmxvY2tzLCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IK
QEAgLTQwNzQsNyArNDA3NSwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgLy8gdXMgdG8gdHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVz
ZSB0aGUgYWN0dWFsIGFyZ3VtZW50IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5n
IGEgdmFsdWUgd2Ugc2V0IGV4cGxpY2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1f
Z3JhcGguYmxvY2soMCkgJiYgIWlubGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywg
VmVjdG9yPE5vZGUqLCA4PigpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRz
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50
cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRB
cmd1bWVudCBub2Rlcy4gVGhleSBkb24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBh
biBvcF9lbnRlciBzbwogICAgICAgICAvLyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRP
SyA9IHRydWU7CkBAIC00MDg3LDcgKzQwOTIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChT
ZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFy
Z3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJs
b2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFy
Z3VtZW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTUxNTAsNiArNTE1NSwxMTggQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNo
OgogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX2FmdGVy
X2NhdGNoOiB7CisgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4g
V2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7CisgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFN1cHBvcnQgY2F0Y2ggaW4gdGhlIEZUTC4KKyAgICAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAg
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVy
KTsKKworICAgICAgICAgICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBhcmd1bWVudFByZWRpY3Rp
b25zKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4g
bG9jYWxQcmVkaWN0aW9uczsKKyAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50
SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWdu
ZWQ+PiBzZWVuQXJndW1lbnRzOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CisKKyAgICAgICAgICAgICAgICBib29sIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAgIGFsbFByZWRpY3Rpb25zQXJl
RW1wdHkgJj0gcHJlZGljdGlvbiA9PSBTcGVjTm9uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KG9wZXJhbmQuaXNMb2NhbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxQcmVkaWN0
aW9ucy5hcHBlbmQocHJlZGljdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3BlcmFuZC5pc0FyZ3VtZW50KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3Bl
cmFuZC50b0FyZ3VtZW50KCldID0gcHJlZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFi
bGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzZWVuQXJndW1lbnRzLmNvbnRhaW5zKGFyZ3VtZW50KSk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGFsbFByZWRpY3Rpb25z
QXJlRW1wdHkgJiYgKGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpIHx8IGxvY2FsUHJlZGljdGlv
bnMuc2l6ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNl
LCB3ZSBoYXZlbid0IGV4ZWN1dGVkIHRoaXMgY2F0Y2ggeWV0LiBMZXQncyBub3QgY29tcGlsZQor
ICAgICAgICAgICAgICAgICAgICAvLyBpdCBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNv
bXBpbGluZyB0aGlzIGFzIGFuIGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRo
aXMgYmVjYXVzZSB3aGVuIHNlYXJjaGluZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBp
dCByZWxhdGl2ZQorICAgICAgICAgICAgLy8gdG8gb3BfYWZ0ZXJfY2F0Y2guCisgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudEluZGV4OworCisgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPSB0cnVlOworICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisKKyAg
ICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVyLCBOb2RlKj4+IGxvY2Fs
c1RvU2V0OworICAgICAgICAgICAgbG9jYWxzVG9TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShi
dWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCByZXNlcnZlIG1vcmUgdGhhbiB0aGUg
bnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUgYnVmZmVyIGluY2x1ZGVz
IGFyZ3VtZW50cy4KKworICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gV2UncmUgbm90
IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxkIG5vdCBrbm93IGhvdyB0byBkbyB2
YWx1ZSByZWNvdmVyeS4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzID0gMDsK
KyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQm
IHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9m
aWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKG9w
ZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3Jh
cGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhsb2Nh
bFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAgICAgICAgICsrbnVtYmVy
T2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJv
ZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgbG9jYWxzVG9TZXQudW5j
aGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVlKSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JF
bnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRy
eSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9
IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkpOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbm93IGV4aXQgYmVjYXVzZSB3ZSd2ZSBz
ZXQgdXAgb3VyIE9TUiBleGl0IHN0YXRlIHRvIHJlY292ZXIgYW55IGxpdmUgbG9jYWxzLgorICAg
ICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9L
KTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNldCB1cCBvdXIgYXJndW1l
bnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LiBUaGlzIGhhcHBlbnMgaGVyZSBiZWNhdXNl
IHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcyB1cAorICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMg
cG9pbnQgaW4gdGhlIHByb2dyYW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0byBleGl0LgorICAgICAg
ICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAgICAgICAg
IFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0
b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1f
bnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0g
MDsgYXJndW1lbnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKythcmd1bWVudCkgewor
ICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3VmFy
aWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7Cisg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50UHJlZGljdGlvbnNb
YXJndW1lbnRdKTsKKworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1
cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2Fj
aGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0
aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNl
dEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwg
c2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2Fy
Z3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbG9jYWxzVG9TZXQpCisgICAg
ICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgcGFpci5maXJzdCwgcGFp
ci5zZWNvbmQpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7Cisg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAg
ICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIp
OwpAQCAtNjEzOCw4ICs2MjU1LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJs
b2NrKCkKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJs
b2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIoKSkpOwogICAgICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2Nr
LnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmlu
aXRlbHkgYW4gT1NSIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51
bUJsb2NrcygpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKGJsb2Nr
LnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAgcHJl
cGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAgICAgICAgICAgIH0KQEAgLTYxOTYsOCArNjMxNSw4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAgICBwYXJzZUNv
ZGVCbG9jaygpOwotCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRC
bG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKKwogICAgIG1f
Z3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFi
bGVCbG9ja3MoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChibG9j
ay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICAgICAgaWYgKG1fdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgRm91bmQgbXVzdC1oYW5kbGUgYmxvY2s6ICIsICpibG9jaywgIlxuIik7CiAgICAgICAgICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKICNpbmNs
dWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSA8d3Rm
L1NpbmdsZVJvb3RHcmFwaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTQ4LDcgKzQ5LDIwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTm9kZSByb290
KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQorICAgIE5vZGUgcm9vdCgpCisgICAgewor
ICAgICAgICAvLyBPT1BTOiBtYXliZSBtYWtlIHRoaXMgcmVsZWFzZT8KKyAgICAgICAgQVNTRVJU
KG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOwor
ICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsKKyAgICB9CisKKyAgICBMaXN0IHJvb3Rz
KCkKKyAgICB7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHJvb3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+KG1fZ3Jh
cGgpOyB9CkBAIC03MSw2ICs4NSwzMCBAQCBwcml2YXRlOgogICAgIEdyYXBoJiBtX2dyYXBoOwog
fTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGljIFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsKK3B1Ymxp
YzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFNpbmdsZVJvb3RHcmFwaDxD
Rkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7CisgICAgfQorfTsKKwordXNpbmcgU1NBQ0ZHID0g
Q0ZHOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTQ0ZHJiBz
ZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fY3Bz
Q0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwg
U1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQor
eworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBo
Lm1fc3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2Ug
U2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5l
IENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBp
bnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1l
bnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhl
IG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAg
ICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0
VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8
Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBv
aW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ld
KTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVy
YW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAogICAgICAgICBtX2dy
YXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5h
dG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAg
CiAgICAgICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAg
ICAgCkBAIC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93
bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3Jz
LT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAg
ICBtX25vZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgbV9jaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC03NzksNyArNzc5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJpY3QgZG9taW5hdGlvbiBiZWNh
dXNlIHRoaXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBvd24gYmxvY2sgaWYKICAgICAg
ICAgICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlvbiBpbiB0aGUgYmxvY2suIENs
ZWFybHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAgICAgICAgIC8vIGl0c2VsZiwg
dGhlIHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3QgZG9taW5hdGUgdXMuCi0gICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2Nr
LCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5z
dHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBJdCBzdHJpY3Rs
eSBkb21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1f
bm9kZSwgZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2Fu
ZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cmVw
bGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC5z
ZXROb2RlKGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw2ICsy
NDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2Fz
ZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRf
c2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX2FmdGVyX2NhdGNoOgogICAg
IGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAg
Y2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
MCw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAg
ICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50
cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1
Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcg
KzM3LDcgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
KEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlRG9taW5h
dG9ycygpKQorICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVTU0FEb21pbmF0b3Jz
KCkpCiAgICAgICAgICwgbV9iYWNrd2FyZHNEb21pbmF0b3JzKGdyYXBoLmVuc3VyZUJhY2t3YXJk
c0RvbWluYXRvcnMoKSkKICAgICB7CiAgICAgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIERvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKKyAgICBTU0FE
b21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgbV9iYWNr
d2FyZHNEb21pbmF0b3JzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHB1
YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5Q
cmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAgICAgIAotICAg
ICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAgICAgZm9yIChh
dXRvJiBhcmd1bWVudHNWZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLnZh
bHVlcygpKQorICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYXJndW1lbnRzVmVjdG9yKTsKIAog
ICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAg
ICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9j
a0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNh
c3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAg
VmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYgogICAgIGR1bXBIZWFkZXIo
b3V0LCBsaW5rQnVmZmVyKTsKICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2lu
KTsKICAgICAKLSAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBtX2dyYXBoLmVu
c3VyZU5hdHVyYWxMb29wcygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOwor
ICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgCiAgICAgY29uc3QgY2hh
ciogcHJlZml4ID0gIiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5UHJlZml4ID0g
IiAgICAgICAgIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5Niw3IEBAIGJvb2wgZG9lc0dDKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAg
Y2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMzIgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9taW5hdG9yczxD
Rkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgRG9taW5hdG9ycyA6IHB1
YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6RG9taW5hdG9yczxDRkc+
KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4oc2VsZWN0
Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBRG9taW5h
dG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU0RvbWluYXRvcnMgPSBEb21pbmF0
b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1ZT46OnR5cGU+CitD
UFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAg
ICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8
VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9y
c0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21p
bmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VE
b21pbmF0ZXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDExICs0MCwxMiBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICAgICAgLCBtX3Jlc3VsdCh0cnVl
KQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkKICAgICB7Ci0gICAgICAg
IGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhlZGdlLm5vZGUo
KS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9zc2FE
b21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKICAgICAg
ICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coCiAgICAgICAgICAgICAgICAg
IkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uubm9kZSgpLT5vd25lciwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk4Myw2ICsxOTgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBDaGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICBjYXNlIEV4
dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAg
ICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6CiAgICAgICAgIGNhc2Ug
Wm9tYmllSGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9y
bWF0LmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3JtYXQgeworZW51bSBGbHVz
aEZvcm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCiAg
ICAgRmx1c2hlZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiREZHSklU
Q29kZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdOYXR1cmFsTG9v
cHMuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAjaW5jbHVkZSAiREZHVmFy
aWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgi
CiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAtNzMsNyArNzIsOCBAQCBH
cmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAg
LCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1f
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9jZmcoc3RkOjptYWtlX3VuaXF1ZTxD
Rkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8U1NBQ0ZHPigqdGhp
cykpCisgICAgLCBtX2Nwc0NGRyhzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4oKnRoaXMpKQogICAg
ICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4
cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVk
UmVnaXN0ZXJpbmcpCkBAIC00MTEsNyArNDExLDggQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJl
VmFsaWQoKQogCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgY2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBNb2RlIHBo
aU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnByaW50KHBy
ZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3Jp
Z2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAi
IChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAi
XG4iKTsKKyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNv
bnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLAorICAg
ICAgICBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NS
VGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA/
ICIgKENhdGNoIEVudHJ5cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2stPmV4ZWN1
dGlvbkNvdW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnByaW50KHBy
ZWZpeCwgIiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQsICJcbiIp
OwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTQyMiwxOCAr
NDIzLDE3IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICBp
ZiAoYmxvY2stPnRlcm1pbmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAq
c3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAg
ICAgICAgICAgb3V0LnByaW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+ZWRnZUtpbmQoYmxv
Y2ssIHN1Y2Nlc3NvciksICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgb3V0
LnByaW50KCIgPGludmFsaWQ+Iik7CiAgICAgb3V0LnByaW50KCJcbiIpOwotICAgIGlmIChtX2Rv
bWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewotICAgICAgICBvdXQucHJpbnQocHJl
Zml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2Nr
KSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgbV9k
b21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwotICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+ZG9t
aW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4
LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKLSAgICB9
CisgICAgLy8gT09QUy4KKyAgICAvL2lmIChtX2RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFs
aWQoKSkgeworICAgIC8vICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwg
bV9kb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5h
dGVkQnkoYmxvY2spLCAiXG4iKTsKKyAgICAvLyAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21p
bmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hbmNlRnJvbnRpZXJPZihibG9j
ayksICJcbiIpOworICAgIC8vICAgIG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWlu
YW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVy
T2YoQmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIpOworICAgIC8vfQogICAgIGlmIChtX2JhY2t3
YXJkc0RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewogICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAiLCBtX2JhY2t3YXJkc0RvbWlu
YXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwogICAgICAgICBvdXQucHJpbnQocHJl
Zml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmJs
b2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CkBAIC00NDYsMjkgKzQ0NiwyOCBAQCB2b2lk
IEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAg
b3V0LnByaW50KCJcbiIpOwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9z
dE51bWJlcmluZy0+cHJlTnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBvc3ROdW1iZXJpbmctPnBv
c3ROdW1iZXIoYmxvY2spLCAiXG4iKTsKLSAgICBpZiAobV9uYXR1cmFsTG9vcHMpIHsKLSAgICAg
ICAgaWYgKGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9vcHMtPmhlYWRlck9m
KGJsb2NrKSkgewotICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIs
IGNvbnRhaW5zOiIpOwotICAgICAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2Nr
TGlzdDsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXplKCk7
ICsraSkKLSAgICAgICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkp
LT5pbmRleCk7Ci0gICAgICAgICAgICBzdGQ6OnNvcnQoc29ydGVkQmxvY2tMaXN0LmJlZ2luKCks
IHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc29ydGVkQmxvY2tMaXN0LnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIG91dC5w
cmludCgiICMiLCBzb3J0ZWRCbG9ja0xpc3RbaV0pOwotICAgICAgICAgICAgb3V0LnByaW50KCJc
biIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExv
b3AqPiBjb250YWluaW5nTG9vcHMgPQotICAgICAgICAgICAgbV9uYXR1cmFsTG9vcHMtPmxvb3Bz
T2YoYmxvY2spOwotICAgICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIp
OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRhaW5pbmdMb29wcy5z
aXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqY29udGFpbmluZ0xv
b3BzW2ldLT5oZWFkZXIoKSk7Ci0gICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgLy8gT09QUy4KKyAgICAvL2lmIChtX25hdHVyYWxMb29wcykgeworICAg
IC8vICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLT5oZWFk
ZXJPZihibG9jaykpIHsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBo
ZWFkZXIsIGNvbnRhaW5zOiIpOworICAgIC8vICAgICAgICBWZWN0b3I8QmxvY2tJbmRleD4gc29y
dGVkQmxvY2tMaXN0OworICAgIC8vICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9v
cC0+c2l6ZSgpOyArK2kpCisgICAgLy8gICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5k
KGxvb3AtPmF0KGkpLT5pbmRleCk7CisgICAgLy8gICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9j
a0xpc3QuYmVnaW4oKSwgc29ydGVkQmxvY2tMaXN0LmVuZCgpKTsKKyAgICAvLyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKKyAgICAv
LyAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBzb3J0ZWRCbG9ja0xpc3RbaV0pOworICAgIC8v
ICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgLy8gICAgfQorICAgIC8vICAgIAorICAgIC8v
ICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGNvbnRhaW5pbmdMb29wcyA9CisgICAgLy8g
ICAgICAgIG1fbmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsKKyAgICAvLyAgICBpZiAoIWNv
bnRhaW5pbmdMb29wcy5pc0VtcHR5KCkpIHsKKyAgICAvLyAgICAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgQ29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7CisgICAgLy8gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyArK2kpCisgICAgLy8gICAg
ICAgICAgICBvdXQucHJpbnQoIiAiLCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7Cisg
ICAgLy8gICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAvLyAgICB9CisgICAgLy99CiAgICAg
aWYgKCFibG9jay0+cGhpcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwg
IiAgUGhpIE5vZGVzOiIpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5w
aGlzLnNpemUoKTsgKytpKSB7CkBAIC01MDIsOCArNTAxLDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6
ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBz
dGF0ZTogIiwgbV91bmlmaWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVm
Q291bnRTdGF0ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5w
cmludCgiICBBcmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyks
ICJcbiIpOwotICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlz
dER1bXAobV9hcmd1bWVudHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRv
IHBhaXIgOiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgi
ICBBcmd1bWVudHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAo
cGFpci52YWx1ZSksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAg
ICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY0MSwxMCBAQCB2b2lkIEdy
YXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVS
ZWFjaGFiaWxpdHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0Owot
ICAgIHdvcmtsaXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxl
ID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRz
KSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29y
a2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0Lmlz
RW1wdHkoKSkgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0
KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGkt
LTspCkBAIC03OTgsOSArODAxLDEwIEBAIHZvaWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJsb2Nr
cygpCiAKIHZvaWQgR3JhcGg6OmludmFsaWRhdGVDRkcoKQogewotICAgIG1fZG9taW5hdG9ycyA9
IG51bGxwdHI7Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9zdE51
bWJlcmluZyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBt
X3NzYURvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0
cjsKKyAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVs
bHB0cjsKICAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg1NCwzNyBA
QCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCBy
ZXN1bHQ7CiAgICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJs
b2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRz
KQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Js
b2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxv
Y2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBp
LS07KQogICAgICAgICAgICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAg
ICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGl0
ZXJhdGluZyBvdmVyIHByZSBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAg
IC8vIGJlZm9yZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgYXV0byB2YWxpZGF0ZVJl
c3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBi
KQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
IGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29u
dmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3Jz
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BT
RG9taW5hdG9ycygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODYzLDcg
Kzg5Miw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJs
b2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAg
ICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9p
bnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwog
ICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAg
ICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpA
QCAtODc2LDYgKzkwNiwzMSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRp
b25FbmFibGVkKCkpIHsKKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8m
IGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcmV2ZXJz
ZSBwb3N0IG9yZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgICAgIC8vIGJl
Zm9yZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBi
ID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChk
b21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGkgPiBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lv
bikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5h
dG9ycygpKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMwICsx
NTI3LDQzIEBAIHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZHQXNz
ZXJ0aW9uRmFpbHVyZSgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBw
b2ludGVyRHVtcChibG9jayksICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRp
b24pOwogfQogCi1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNEb21p
bmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCit7CisgICAgUkVMRUFTRV9BU1NF
UlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX2Nw
c0RvbWluYXRvcnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8
Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3JzOworfQor
CitTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAgaWYg
KCFtX2RvbWluYXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8
RG9taW5hdG9ycz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9kb21pbmF0b3JzOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYg
KCFtX3NzYURvbWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91
bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3Jz
OwogfQogCi1QcmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJlUHJlUG9zdE51bWJlcmluZygp
CitDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogewotICAg
IGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1f
cHJlUG9zdE51bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFt
X2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgaWYg
KCFtX2Nwc05hdHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNOYXR1
cmFsTG9vcHM7CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygp
CitTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewotICAg
IGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBt
X25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0g
ICAgcmV0dXJuICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0g
U1NBKTsKKyAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVyYWxM
b29wcykKKyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5h
dHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAK
IEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtID09IFNTQSk7IC8vIFdlIGNvdWxkIGNoYW5nZSB0aGlzLCBidXQgaXQn
cyBvbmx5IHVzZWQgaW4gU1NBIGZvciBub3csIGFuZCB3ZSBkb24ndCBuZWVkIHR3byBncmFwaCBm
aWVsZHMgeWV0IGZvciB0d28gdHlwZXMgb2YgYmFja3dhcmRzIENGRy4KICAgICBpZiAoIW1fYmFj
a3dhcmRzQ0ZHKQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFj
a3dhcmRzQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1MDMs
NiArMTU3MSw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygKIAog
QmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQog
eworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2Fy
ZHNEb21pbmF0b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dh
cmRzRG9taW5hdG9yczsKQEAgLTE1MTAsNiArMTU3OSw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMm
IEdyYXBoOjplbnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBo
OjplbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9BU1NF
UlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
KQogICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTU5Nyw3IEBAIE1ldGhvZE9mR2V0
dGluZ0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFu
b2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2Nh
bCgpLnRvQXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2Rl
ID0gbV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVb
YXJndW1lbnRdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPiBjbGFzcyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBDb2RlQmxvY2s7CkBAIC01NiwxMCArNjAsMTcgQEAgY2xhc3MgQmFja3dhcmRz
Q0ZHOwogY2xhc3MgQmFja3dhcmRzRG9taW5hdG9yczsKIGNsYXNzIENGRzsKIGNsYXNzIENvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzOwotY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE5h
dHVyYWxMb29wczsKIGNsYXNzIEZsb3dJbmRleGluZzsKLWNsYXNzIE5hdHVyYWxMb29wczsKLWNs
YXNzIFByZVBvc3ROdW1iZXJpbmc7CisKK2NsYXNzIENQU0NGRzsKK3VzaW5nIFNTQUNGRyA9IENG
RzsKKwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKK3VzaW5nIFNT
QURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcHMg
PSBOYXR1cmFsTG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9IE5hdHVyYWxM
b29wczxTU0FDRkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAt
OTAxLDkgKzkxMiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3Jz
JiBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9z
dE51bWJlcmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7Cisg
ICAgQ1BTRG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRv
cnMmIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQ
U05hdHVyYWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExv
b3BzKCk7CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNr
d2FyZHNEb21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7
CkBAIC05MjEsNyArOTMzLDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7
CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQ
dHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxv
Y2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2lu
dHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1h
cDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29k
ZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxMSArOTY5LDEx
IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdl
IHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQog
ICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBI
YXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwg
dGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAg
ICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKLSAgICAKKwogICAgIFNl
Z21lbnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0
YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBv
c2l0aW9uczsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKQEAgLTk4MiwxMCAr
OTk1LDEyIEBAIHB1YmxpYzoKICAgICBIYXNoU2V0PHN0ZDo6cGFpcjxKU09iamVjdCosIFByb3Bl
cnR5T2Zmc2V0Pj4gbV9zYWZlVG9Mb2FkOwogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJ
bmZlcnJlZFR5cGU6OkRlc2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVm
PFNuaXBwZXQ+PiBtX2RvbUpJVFNuaXBwZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0
b3JzPiBtX2RvbWluYXRvcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+
IG1fcHJlUG9zdE51bWJlcmluZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBt
X25hdHVyYWxMb29wczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q1BTRG9taW5hdG9ycz4gbV9jcHNEb21pbmF0b3JzOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTU0FEb21pbmF0b3JzPiBtX3NzYURvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVf
cHRyPENQU05hdHVyYWxMb29wcz4gbV9jcHNOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNTQU5hdHVyYWxMb29wcz4gbV9zc2FOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNTQUNGRz4gbV9zc2FDRkc7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0NGRz4gbV9jcHND
Rkc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5h
dG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+IG1f
Y29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xMDA5LDYgKzEwMjQsOCBAQCBwdWJsaWM6
CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVn
Z2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGbG93SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw2
MSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3Qg
PSBtX2dyYXBoLmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwot
ICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0
YW50cyA9IGZhbHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9
IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0
ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAg
ICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVz
aEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAg
ICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwot
ICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRK
U1ZhbHVlOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUt
Pm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgIGZvciAoQmFzaWNCbG9jayog
ZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50
LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlz
aXRlZCA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZh
bHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQg
PSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJl
Q2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1
bWVudHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJn
dW1lbnQoaSkuY2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgeworICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBXaGVuIHN1cHBvcnRpbmcgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTCwg
d2UgbmVlZCB0byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAvLyB3aGF0IHdlIGRvIGhlcmU6IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAg
ICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVl
OworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3Jt
YXQpIHsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVu
dHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVh
bjoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSku
c2V0VHlwZShTcGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAg
ICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRv
cCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQg
Zm9yIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNh
c2UgRmx1c2hlZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50
KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAi
QmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRI
ZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQu
bG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNs
ZWFyKCk7Ci0gICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2Nr
SW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAo
IWJsb2NrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVl
c0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+
dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7
CisgICAgICAgIGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7Cisg
ICAgICAgICAgICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNo
YWJsZSk7CiAgICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAg
IGJsb2NrLT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNyArMzcxLDcgQEAgaW5saW5l
IGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAg
ICByZXR1cm4gY2hhbmdlZDsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBSZXR1cm46CiAg
ICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2Myw3IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoKQogICAgIGNvbW1vbi5z
aHJpbmtUb0ZpdCgpOwogICAgIG9zckVudHJ5LnNocmlua1RvRml0KCk7CiAgICAgb3NyRXhpdC5z
aHJpbmtUb0ZpdCgpOworICAgIGNhdGNoRW50cnlwb2ludHMuc2hyaW5rVG9GaXQoKTsKICAgICBz
cGVjdWxhdGlvblJlY292ZXJ5LnNocmlua1RvRml0KCk7CiAgICAgbWluaWZpZWRERkcucHJlcGFy
ZUFuZFNocmluaygpOwogICAgIHZhcmlhYmxlRXZlbnRTdHJlYW0uc2hyaW5rVG9GaXQoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjA3MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksMzIgQEAgcHVibGljOgogICAgICAgICAgICAgb3NyRW50cnksIG9zckVu
dHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0YUJ5
dGVjb2RlSW5kZXgpOwogICAgIH0KKworICAgIENhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoT1NS
RW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxDYXRjaEVudHJ5cG9pbnREYXRhLCB1bnNp
Z25lZD4oCisgICAgICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLCBjYXRjaEVudHJ5cG9pbnRzLnNp
emUoKSwgYnl0ZWNvZGVJbmRleCwKKyAgICAgICAgICAgIFtdIChjb25zdCBDYXRjaEVudHJ5cG9p
bnREYXRhKiBpdGVtKSB7IHJldHVybiBpdGVtLT5tX2J5dGVjb2RlSW5kZXg7IH0pOworICAgIH0K
KworICAgIHZvaWQgZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCkKKyAgICB7CisgICAgICAg
IHN0ZDo6c29ydChjYXRjaEVudHJ5cG9pbnRzLmJlZ2luKCksIGNhdGNoRW50cnlwb2ludHMuZW5k
KCksIFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBhLCBjb25zdCBDYXRjaEVudHJ5cG9p
bnREYXRhJiBiKSB7CisgICAgICAgICAgICByZXR1cm4gYS5tX2J5dGVjb2RlSW5kZXggPCBiLm1f
Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgfSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAg
ICB1bnNpZ25lZCBwcmV2aW91c0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBDYXRjaEVu
dHJ5cG9pbnREYXRhJiBlbnRyeXBvaW50IDogY2F0Y2hFbnRyeXBvaW50cykgeworICAgICAgICAg
ICAgQVNTRVJUKHByZXZpb3VzSW5kZXggPCBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleCk7Cisg
ICAgICAgICAgICBwcmV2aW91c0luZGV4ID0gZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXg7Cisg
ICAgICAgIH0KKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hFbnRyeXBvaW50
KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0
b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hF
bnRyeXBvaW50cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1h
Y2hpbmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAg
IAogICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7
CkBAIC0xMzIsNiArMTU4LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNv
bW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3Rv
cjxDYXRjaEVudHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRlZFZl
Y3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRp
b25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRT
dHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxOTUsOCBAQCBwdWJsaWM6CiAg
ICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVk
IG9zckVudHJ5UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisKKyAgICBNYWxsb2NQ
dHI8SlNWYWx1ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJ
VCkKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRp
YyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5
KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNW
YWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRy
eSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklU
PigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgp
CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fZ3Jh
cGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNo
T1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1
ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRT
dGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NywyMyBA
QCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAor
dm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJhc2lj
QmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZm
ZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9BU1NF
UlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBv
aW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0
Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRP
ZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENv
bXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxl
cjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVB
U0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9TUiBl
bnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29u
dHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNG
QUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURh
dGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRl
Y29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAg
ZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZh
bHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGlu
IG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZv
aWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hl
YWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Js
b2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxG
bHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2Rl
PiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1l
c3BhY2UgewogCit1c2luZyBOYXR1cmFsTG9vcCA9IFNTQU5hdHVyYWxMb29wOworCiBzdHJ1Y3Qg
TG9vcERhdGEgewogICAgIExvb3BEYXRhKCkKICAgICAgICAgOiBwcmVIZWFkZXIobnVsbHB0cikK
QEAgLTc0LDggKzc2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJh
bExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICBtX2dyYXBoLmVuc3Vy
ZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2UpIHsK
QEAgLTgzLDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+bnVtTG9vcHMoKSk7CisgICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX3Nz
YU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBGaWd1cmUg
b3V0IHRoZSBzZXQgb2YgdGhpbmdzIGVhY2ggbG9vcCB3cml0ZXMgdG8sIG5vdCBpbmNsdWRpbmcg
YmxvY2tzIHRoYXQKICAgICAgICAgLy8gYmVsb25nIHRvIGlubmVyIGxvb3BzLiBXZSBmaXggdGhp
cyBsYXRlci4KQEAgLTk4LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxv
Y2stPmNmYUhhc1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVy
YWxMb29wKiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9m
KGJsb2NrKTsKICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AtPmluZGV4KCldOwpA
QCAtMTE2LDE0ICsxMTgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBGb3IgZWFjaCBsb29wOgog
ICAgICAgICAvLyAtIElkZW50aWZ5IGl0cyBwcmUtaGVhZGVyLgogICAgICAgICAvLyAtIE1ha2Ug
c3VyZSBpdHMgb3V0ZXIgbG9vcHMga25vdyB3aGF0IGl0IGNsb2JiZXJzLgotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7
IGxvb3BJbmRleC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBt
X2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgIGZvciAodW5z
aWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsg
bG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1f
Z3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKICAgICAgICAgICAgIExv
b3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AuaW5kZXgoKV07CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGZvciAoCi0gICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9v
cCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX3Nz
YU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwogICAgICAgICAgICAgICAg
IG91dGVyTG9vcDsKLSAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJh
bExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCisgICAgICAgICAgICAgICAg
b3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29w
KCpvdXRlckxvb3ApKQogICAgICAgICAgICAgICAgIG1fZGF0YVtvdXRlckxvb3AtPmluZGV4KCld
LndyaXRlcy5hZGRBbGwoZGF0YS53cml0ZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBoZWFkZXIgPSBsb29wLmhlYWRlcigpOwpAQCAtMTM3LDcgKzEzOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaGVhZGVy
LT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogcHJlZGVjZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vzc29yc1tpXTsKLSAgICAgICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIsIHByZWRlY2Vzc29y
KSkKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRl
cyhoZWFkZXIsIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgICAgICBwcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE5MSw3ICsxOTMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxvb3BTdGFj
azsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkgewotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RM
b29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAg
ICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCkBA
IC0xOTksNyArMjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yICgKICAgICAgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogY3VycmVudCA9IGxvb3A7CiAgICAgICAgICAgICAgICAg
Y3VycmVudDsKLSAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFwaC5tX25hdHVyYWxMb29w
cy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICBjdXJyZW50
ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50
KSkKICAgICAgICAgICAgICAgICBsb29wU3RhY2suYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBSZW1lbWJlcjogdGhlIGxvb3Agc3RhY2sgaGFzIHRoZSBpbm5l
ci1tb3N0IGxvb3AgYXQgaW5kZXggMCwgc28gaWYgd2Ugd2FudApAQCAtMzE4LDcgKzMyMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIGJlY2F1c2UgbW9zdCBsb29wcyBhcmUgc21hbGwgYW5kIG1v
c3QgYmxvY2tzIGJlbG9uZyB0byBmZXcgbG9vcHMuCiAgICAgICAgIGZvciAodW5zaWduZWQgYm9k
eUluZGV4ID0gbG9vcC0+c2l6ZSgpOyBib2R5SW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIHN1YkJsb2NrID0gbG9vcC0+YXQoYm9keUluZGV4KTsKLSAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aGVhZGVyT2Yo
c3ViQmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CiAgICAgICAgICAgICBp
ZiAoIXN1Ykxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBzdWJQcmVIZWFkZXIgPSBtX2RhdGFbc3ViTG9vcC0+aW5kZXgoKV0ucHJlSGVhZGVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVBy
ZXNlcnZhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxl
UHJlc2VydmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9j
ay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9
IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkg
JiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0g
bV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9k
ZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2Fs
bEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQ
cmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIEJhc2ljQmxvY2sqIGNyZWF0ZVBy
ZUhlYWRlcihHcmFwaCYgZ3JhcGgsIEJsb2NrSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQsIEJh
c2ljQmxvY2sqIGJsb2NrKQogeworICAgIC8vIE9PUFM6IG1heWJlIHVzZSBoYXNoc2V0IGZvciB0
aGlzIGFzc2VydC4KKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250
YWlucyhibG9jaykpOyAvLyBBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIQor
CiAgICAgLy8gRklYTUU6IElmIHdlIHJ1biB0aGlzIHV0aWxpdHkgb24gU1NBIElSLCB0aGVuIHdl
IG1heSBlbmQgdXAgd2l0aCBhIGJpemFycmUgYXJyYW5nZW1lbnQgb2YKICAgICAvLyBVcHNpbG9u
cyBhbmQgUGhpcywgbGlrZToKICAgICAvLwpAQCAtNjksNyArNzIsNyBAQCBCYXNpY0Jsb2NrKiBj
cmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIHRoZSBt
YXggb2YgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBsb29wIGJvZHkncyBub24tbG9vcCBwcmVkZWNl
c3NvcnMuCiAgICAgZmxvYXQgZnJlcXVlbmN5ID0gMDsKICAgICBmb3IgKEJhc2ljQmxvY2sqIHBy
ZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycykgewotICAgICAgICBpZiAoZ3JhcGgubV9k
b21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdy
YXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5
LCBwcmVkZWNlc3Nvci0+ZXhlY3V0aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBA
QCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2Nr
LT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFz
aWNCbG9jayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5k
ZXhdOwotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHBy
ZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVz
KGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxv
Y2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29y
cy5sYXN0KCk7CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAt
MTMwLDE2ICsxMzMsMTYgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3Vy
ZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsK
KyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAg
ICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVt
TG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYg
bG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBs
b29wSW5kZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0g
bV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAg
QmFzaWNCbG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9v
bCBuZWVkc05ld1ByZUhlYWRlciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBw
cmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJl
ZGVjZXNzb3JJbmRleC0tOykgewotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vz
c29yID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCksIHByZWRlY2Vzc29yKSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNz
b3JJbmRleCA9IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVk
ZWNlc3NvckluZGV4LS07KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNz
b3IgPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhd
OworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVz
KGxvb3AuaGVhZGVyKCkubm9kZSgpLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgZXhpc3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2
NSwxNCArMTY4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBt
b3N0IHVzZWZ1bCBpZiBpdCdzIHBvc3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhl
bmNlCiAgICAgICAgICAgICAvLyBpZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1o
ZWFkZXIgZG9lc24ndCBhbGxvdyBmb3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAg
Ly8gb3JpZ2luIG9mIHRoZSBsb29wIGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUg
YSBuZXcgcHJlLWhlYWRlci4KLSAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYg
bG9vcC5oZWFkZXIoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVl
ZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhp
dE9LCiAgICAgICAgICAgICAgICAgJiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5v
cmlnaW4uZXhpdE9LKQogICAgICAgICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJl
SGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAg
ICAgIGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIo
KS5ub2RlKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRp
b25TZXQuZXhlY3V0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhp
bWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6
ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwot
ICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0g
bV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAg
ICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNB
cmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlm
IChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+
dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAg
ICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1
cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
NiArODMsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAg
Y2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVu
dHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxO
b3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsMTUgKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7
Cit1c2luZyBTU0FOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZHPjsKK3VzaW5n
IENQU05hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxDUFNDRkc+OwogCi1jbGFzcyBOYXR1
cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxM
b29wczxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmF0dXJhbExvb3BzKTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcHMo
R3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGRz4oKmdyYXBoLm1f
Y2ZnLCBncmFwaC5lbnN1cmVEb21pbmF0b3JzKCksIHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAg
ICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBo
KSwgZW5zdXJlRG9taW5hdG9yc0ZvckNGRzxDRkdLaW5kPihncmFwaCksIHZhbGlkYXRpb25FbmFi
bGVkKCkpCiAgICAgeworICAgICAgICAvLyBPT1BTOiBhZGQgc29tZSB2YWxpZGF0aW9uIHRoYXQg
Z3JhcGgncyBlbnRyeXBvaW50cyBhcmUgbm90IGluIGFueSBsb29wLgogICAgIH0KIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3
Nyw3ICsxMjc3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAg
ICAgfQogICAgIAotICAgIGJvb2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KQEAgLTEzNzIs
NiArMTM3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09
IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hE
YXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoIChp
bmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0x
NTM1LDcgKzE1MzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChoYXNIZWFwUHJlZGljdGlv
bigpKTsKICAgICAgICAgbV9vcEluZm8yID0gcHJlZGljdGlvbjsKICAgICB9Ci0gICAgCisKICAg
ICBib29sIGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpA
QCAtMTkzMCw2ICsxOTMxLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Zp
cnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JF
bnRyeUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RD
YXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAg
IH0KKworICAgIFNwZWN1bGF0ZWRUeXBlIGNhdGNoTG9jYWxQcmVkaWN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJu
IG1fb3BJbmZvMi5hczxTcGVjdWxhdGVkVHlwZT4oKTsKKyAgICB9CisgICAgCiAgICAgCiAgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2
ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFs
IG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxv
YWRpbmcgYSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZl
ci4gKi9cCiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAg
LyogVGllci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3Jv
KENoZWNrVGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdKSVRD
b2RlLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJWTUlubGluZXMuaCIKQEAgLTMzNiw2ICszMzcsNjcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5
KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQogCit2b2lkKiBwcmVw
YXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlU
b0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6
REZHSklUKTsKKyAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUo
KS0+ZGZnKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisKKyAgICBERkc6OkNhdGNo
RW50cnlwb2ludERhdGEqIGNhdGNoRW50cnlwb2ludCA9IGppdENvZGUtPmNhdGNoT1NSRW50cnlE
YXRhRm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBpZiAoIWNhdGNoRW50cnlw
b2ludCkgeworICAgICAgICAvLyBUaGlzIGNhbiBiZSBudWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3Rh
bmNlcy4gVGhlIG1vc3QgY29tbW9uIGlzIHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgdGhpcworICAg
ICAgICAvLyBhZnRlcl9jYXRjaCBhcyBhbiBlbnRyeXBvaW50IHNpbmNlIGl0IGhhZCBuZXZlciBl
eGVjdXRlZC4KKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gV2UncmUg
b25seSBhbGxvd2VkIHRvIE9TUiBlbnRlciBpZiB3ZSd2ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRp
YmxlIGFyZ3VtZW50IHR5cGVzLgorICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1
bWVudCA8IGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVudEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3Vt
ZW50KSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5yKHZpcnR1YWxSZWdpc3RlckZv
ckFyZ3VtZW50KGFyZ3VtZW50KSkuanNWYWx1ZSgpOworICAgICAgICBzd2l0Y2ggKGNhdGNoRW50
cnlwb2ludC0+bV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNhc2UgREZH
OjpGbHVzaGVkSW50MzI6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERGRzo6Rmx1c2hlZENlbGw6CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgREZHOjpGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNC
b29sZWFuKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBERkc6OkRlYWRGbHVzaDoKKyAgICAgICAgICAgIC8vIFRoaXMg
bWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5vdCBhbGl2ZS4gVGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQg
dG8gYmUgYW55IHR5cGUuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZs
dXNoZWRKU1ZhbHVlOgorICAgICAgICAgICAgLy8gQW4gYXJndW1lbnQgaXMgdHJpdmlhbGx5IGEg
SlNWYWx1ZS4KKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBmcmFtZVNpemVGb3JDaGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJl
Z2lzdGVyQ291bnRGb3JFeGVjdXRpb25BbmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5l
bnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZleGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChmcmFtZVNpemVGb3JDaGVjaykub2Zmc2V0KCldKSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgQVNTRVJUKEludGVycHJldGVyOjpnZXRPcGNvZGVJRChleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKV0udS5vcGNvZGUp
ID09IG9wX2FmdGVyX2NhdGNoKTsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBi
dWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51
LnBvaW50ZXIpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBidWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIGlmICghVmly
dHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5pc0xvY2FsKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbaW5kZXhd
ID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAg
ICArK2luZGV4OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJz
dHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3Bl
cmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBA
IGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3Ny
RW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnRE
YXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNo
aW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBh
dCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0
ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1
c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIg
dG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUg
YW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJl
cGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0
J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hP
U1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsK
ICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJE
RkdCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNp
bmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlOVF9NQVgpOwogICAgICAgICAKICAgICAg
ICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigpLgotICAgICAgICBtX2dyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAg
ICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVk
QmxvY2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICAv
LyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5v
cmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IGFyZ3VtZW50cyA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFs
dWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+
bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2Rl
ID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAg
ICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBh
bHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAg
ICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAg
ICAgICAgICAgICBvbGROb2RlID0gYXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAg
ICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAg
ICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgYXJn
dW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBs
b2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7
CkBAIC0xMzksOCArMTQxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVhdGVQ
cmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAogICAg
ICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
Z3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRy
eXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1
bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5h
ZGQobmV3Um9vdCwgYXJndW1lbnRzKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVhY2hhYmls
aXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDcgKzcy
Nyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMo
KTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dy
YXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0
b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAg
ICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29t
YmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICsz
NjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8g
SWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2
ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFz
IGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1
cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsK
KyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQ
U05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpAQCAtMzg3LDEz
ICszODYsMTQgQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAg
ICAgICBSVU5fUEhBU0UocGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24pOwogICAgICAg
ICBSVU5fUEhBU0UocGVyZm9ybVdhdGNocG9pbnRDb2xsZWN0aW9uKTsKICAgICAgICAgZHVtcEFu
ZFZlcmlmeUdyYXBoKGRmZywgIkdyYXBoIGFmdGVyIG9wdGltaXphdGlvbjoiKTsKKwogICAgICAg
ICAKICAgICAgICAgSklUQ29tcGlsZXIgZGF0YUZsb3dKSVQoZGZnKTsKICAgICAgICAgaWYgKGNv
ZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAgICAgICBkYXRhRmxv
d0pJVC5jb21waWxlRnVuY3Rpb24oKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGF0YUZs
b3dKSVQuY29tcGlsZSgpOwotICAgICAgICAKKwogICAgICAgICByZXR1cm4gREZHUGF0aDsKICAg
ICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
UG9zdE51bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0j
aWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNp
bmNsdWRlICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0
TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmlu
Zz4oZ3JhcGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0g
ICAgd29ya2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51
bWJlciA9IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChC
bG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChp
dGVtLm9yZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAg
bV9tYXBbaXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAg
ICAgIHdvcmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAg
ICAgIHdvcmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1f
cG9zdE51bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7
IH0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNp
bmcgbmFtZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgRWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZv
cndhcmRFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2Ui
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiQmFja0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRG
R0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2Us
Ci0gICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVy
aW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdy
YXBoJik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJl
cihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVt
YmVyOyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3Qg
eyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZy
b20gYSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2Yo
QmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9z
dE51bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlz
QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0
byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNT
dHJpY3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2Nl
bmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAv
LyBUaGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBz
dWNoIGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFu
eSBzdWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVk
Z2VLaW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJl
dHVybiBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8s
IGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAg
cmV0dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1i
ZXJpbmcgewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQg
bV9wb3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwot
fTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmly
c3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlw
b2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMu
CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5u
dW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1th
cmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFy
Z3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2Rl
LT5jYXRjaExvY2FsUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgog
ICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0J5dGVjb2RlVG9wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0
U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBo
LmR1bXAoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAg
ICAgIFNTQUNhbGN1bGF0b3Igc3NhQ2FsY3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0
aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTUsMTIgKzk1LDEyIEBAIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6
bmV3RGUKIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNo
aW5nRGVmKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0
dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwg
dmFyaWFibGUpOworICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9t
aW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVm
KiBTU0FDYWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFy
aWFibGUqIHZhcmlhYmxlKQogewotICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1f
ZG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRl
ZiA9IG1fZGF0YVtibG9ja10ubV9kZWZzLmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1
cm4gZGVmOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2Fs
Y3VsYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q2FsY3VsYXRvci5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAg
ICAgdm9pZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQog
ICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9t
aW5hdG9ycyk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5t
X3NzYURvbWluYXRvcnMpOwogICAgICAgICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFi
bGUgOiBtX3ZhcmlhYmxlcykgewotICAgICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZv
ckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAg
ICAgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWRE
b21pbmFuY2VGcm9udGllck9mKAogICAgICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0
aERlZnMsCiAgICAgICAgICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7
CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwg
YmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw3ICs1NCw4IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zv
cm0gPT0gVGhyZWFkZWRDUFMpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxh
Y2VtZW50cygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5tX2Nwc0NGRyA9IG51bGxwdHI7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpOyAvLyBPT1BTOiBhbGxvdyB1cyB0byBhc3NlcnQgaW4gZW5zdXJlU1NBRG9taW5h
dG9ycyB0aGF0IHdlJ3JlIGluIFNTQSBmb3JtLgogICAgICAgICAKICAgICAgICAgaWYgKHZlcmJv
c2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBTU0EgdHJhbnNmb3JtYXRp
b246XG4iKTsKQEAgLTExMCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIC8vIERlY2lkZSB3aGVyZSBQaGlzIGFyZSB0byBiZSBpbnNlcnRlZC4gVGhpcyBj
cmVhdGVzIHRoZSBQaGkncyBidXQgZG9lc24ndCBpbnNlcnQgdGhlbQotICAgICAgICAvLyB5ZXQu
IFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgdGhlbSBiZWNhdXNlIFNTQUNhbGN1
bGF0b3IgaXMgc3VjaCBhIGJyby4KKyAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cg
d2hlcmUgdG8gaW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNTQUNhbGN1bGF0b3IgdGVsbHMgdXMgdG8u
CiAgICAgICAgIG1fY2FsY3VsYXRvci5jb21wdXRlUGhpcygKICAgICAgICAgICAgIFsmXSAoU1NB
Q2FsY3VsYXRvcjo6VmFyaWFibGUqIHNzYVZhcmlhYmxlLCBCYXNpY0Jsb2NrKiBibG9jaykgLT4g
Tm9kZSogewogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBt
X3ZhcmlhYmxlRm9yU1NBSW5kZXhbc3NhVmFyaWFibGUtPmluZGV4KCldOwpAQCAtMzgxLDE4ICsz
ODIsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVhcigp
OwogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6
U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBoLm1f
YXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKSk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7
CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gREZH
IFNTQToKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NTM5NgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6
ZSgpID09IDEpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
Rmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAKLSAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7Cisg
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KGFyZ3VtZW50c1tp
XSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUpOwogICAg
ICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1h
dDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQg
dGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0
IHByb2ZpbGluZy4KKyAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0
aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQg
cHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fZm9ybSA9
IFNTQTsKQEAgLTQxNiw3ICs0MjEsMTEgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU1NBQ29u
dmVyc2lvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFNTQUNvbnZlcnNp
b25QaGFzZT4oZ3JhcGgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFncmFwaC5tX2lzSW5TU0FDb252
ZXJzaW9uKTsKKyAgICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uID0gdHJ1ZTsKKyAgICBib29s
IHJlc3VsdCA9IHJ1blBoYXNlPFNTQUNvbnZlcnNpb25QaGFzZT4oZ3JhcGgpOworICAgIGdyYXBo
Lm1faXNJblNTQUNvbnZlcnNpb24gPSBmYWxzZTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw2
ICszMjMsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAg
Y2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRy
YWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNh
c2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgog
I2luY2x1ZGUgIldhdGNoZG9nLmgiCiAKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclByaW50ZXIu
aCIKKwogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKQEAgLTYwODAsNiArNjA4MiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNl
IEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZtX2ppdC5qaXRD
b2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4
KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVs
cGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQo
dGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICNlbHNlIC8vIEVOQUJMRShG
VExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEF0UmV0dXJuOgpAQCAtNjA4OCw2ICs2MTAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJ
VCkKIAorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBV
cHNpbG9uOgpAQCAtNjExNiw3ICs2MTI5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAgY2FzZSBQaGFu
dG9tU3ByZWFkOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoKLSAgICAgICAg
REZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUiKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
NzYsNiArMTY3NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2Nr
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5
cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMy
KG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwg
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJl
Z2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOworICAgICAgICBt
X2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAgICBtX2ppdC5l
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJs
ZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxG
cmFtZSgpOwpAQCAtMTc3MCw4ICsxNzc3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tB
cmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4g
PSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAg
YXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5m
aW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBO
b2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSog
bm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAv
LyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBh
cmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NTUsMTIgKzE4NjMsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYg
KCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09T
UlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgLy8gQ3Vy
cmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQg
dGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1fb3NyRW50cnlIZWFk
cy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgaWYgKGJs
b2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAg
ICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2Ug
Y291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KKyAgICAgICAg
ICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhd
KTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTg3MSwxMCArMTg3OCwzMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJhc2ljQmxvY2sqIGJs
b2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9j
aykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdl
dCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2NrLT5pc0NhdGNoRW50
cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5ub3RpY2VPU1JF
bnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVy
KTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAg
YXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJs
b2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOwor
ICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAg
ICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0
b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVu
dHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENl
bGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1
c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVj
a2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hFbnRyeXBvaW50KCpi
bG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1v
dmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NF
UlQoYmxvY2stPmlzT1NSVGFyZ2V0KTsKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5
KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOwor
ICAgICAgICB9CiAgICAgfQorCisgICAgbV9qaXQuaml0Q29kZSgpLT5maW5hbGl6ZUNhdGNoT1NS
RW50cnlwb2ludHMoKTsKKwogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlI
ZWFkcy5zaXplKCkpOwogICAgIAogICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291
bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlv
bkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5l
bnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9v
cHMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJhc2ljIGJsb2NrIGV4ZWN1dGlv
biBjb3VudHMgYmFzZWQgb24gbG9vcCBkZXB0aC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJs
b2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkBAIC01Myw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3VudCA9IHBvdygx
MCwgbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7CisgICAgICAgICAg
ICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9v
cHMtPmxvb3BEZXB0aChibG9jaykpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBF
c3RpbWF0ZSBicmFuY2ggd2VpZ2h0cyBiYXNlZCBvbiBleGVjdXRpb24gY291bnRzLiBUaGlzIGlz
bid0IHF1aXRlIGNvcnJlY3QuIEl0J2xsCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDYgKzUwLDggQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxG
VAogICAgIHJldHVybiBmdGxXaGl0ZWxpc3Q7CiB9CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gQ1BT
TmF0dXJhbExvb3A7CisKIGNsYXNzIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogcHVibGljOgogICAgIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UoR3JhcGgmIGdy
YXBoKQpAQCAtODEsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6dXNl
T1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAg
ICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBO
YXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fbmF0dXJhbExvb3BzOworICAg
ICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgICAgICBDUFNOYXR1cmFs
TG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzOwogICAgICAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wVG9Mb29w
SGludCA9IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKG5hdHVyYWxMb29wcyk7CiAKICAg
ICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTG9vcEhpbnREZXNjcmlwdG9yPiB0aWVyVXBIaWVyYXJj
aHk7CkBAIC0xODIsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5h
dHVyYWxMb29wVG9Mb29wSGludE1hcChjb25zdCBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykK
KyAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExv
b3BUb0xvb3BIaW50TWFwKGNvbnN0IENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQogICAg
IHsKICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFs
TG9vcHNUb0xvb3BIaW50OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUu
bV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRo
aXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1
bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3Jh
cGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAg
IE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJl
ZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTggKzE5
NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhKG1heUV4
aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMgJiYgIW5vZGUtPm9yaWdpbi5leGl0T0spKTsKIAog
ICAgICAgICAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIHByZXZp
b3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRF
KAotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3JhcGgsIHByZXZpb3VzTm9kZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCi0gICAgICAgICAgICAgICAgICAg
ICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwg
bm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Ci0g
ICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAgKG5v
ZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhp
dE9LICYmIG5vZGUtPm9yaWdpbi5leGl0T0spCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBu
b2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3Jp
Z2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAg
ICAgICAgICAgIC8vTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5v
ZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFw
aCwgcHJldmlvdXNOb2RlKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCAhbm9kZS0+b3Jp
Z2luLmV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4
aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAh
PSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9W
QUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAg
ICAgICAgICAvLyAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3Jp
Z2luLmV4aXRPSykKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBF
eGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQg
IT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhh
c1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3
NCw4IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQcm9maWxlcjo6T3Jp
Z2luU3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVkIEZUTCBKSVQgY29k
ZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQp
LCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5lbnN1cmVEb21pbmF0
b3JzKCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBncmFw
aC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNTQU5hdHVyYWxM
b29wcygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpzQm9keSI7CiAgICAg
ICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFw
aC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlv
bkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJlYWR5LCBiZWdpbm5p
bmcgbG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2lu
KENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9j
aygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVt
UGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAg
ICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAg
ICAgCkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGRzo6QmFzaWNC
bG9jayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlm
ICghdGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdldCkpIHsKKyAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKG1faGlnaEJs
b2NrLCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVu
YWJsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwgKnRhcmdldCwg
IiB3aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+Y2ZhSGFzVmlz
aXRlZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYg
KCFtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJs
b2NrKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKHZh
bHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJn
dW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAg
IERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3Jl
YXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMo
SW5zdHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlos
IGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVn
aXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
OSw2ICs1NzksMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6Ogog
ICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBv
cGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODUzLDYgKzg1MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0
cnVjdGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwog
fQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7CisgICAg
Ly8gT09QUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgSklU
OjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyNCBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICAvLyBPT1BTOiBhZGQgYSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorCisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAg
IGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7
CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIp
OworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBpZiAoc2hvdWxkRW1p
dFByb2ZpbGluZygpKSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB2
b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTQsNiAr
MTUxNCwxOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAg
Q09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9T
UiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVj
LCB1aW50MzJfdCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJs
b2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVu
dCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6
OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFj
ZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKQEAgLTIyMDIsNiArMjIxNSwxMSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhy
b3coRXhlY1N0CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKIAorICAgIGlmIChleGVj
LT5ieXRlY29kZU9mZnNldCgpID09IDYyOSkgeworICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpWzY0M10udS5wb2ludGVyKTsK
KyAgICAgICAgZGF0YUxvZ0xuKCJUaHJvd2luLCBzaXplIG9mIGJ1ZmZlcjogIiwgYnVmZmVyLT5t
X3NpemUpOworICAgIH0KKwogICAgIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEV4Y2VwdGlvblZhbHVlKTsKICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBz
Y29wZSwgZXhjZXB0aW9uVmFsdWUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw2ICszMTYsNyBA
QCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0eXBlZGVmIGNoYXIq
IChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMyX3Qs
IGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91YmxlLCBpbnQzMl90
KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VVaSkoRXhl
Y1N0YXRlKiwgdWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKEpJVF9PUEVS
QVRJT04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyop
OwogdHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRPcGVyYXRpb25fRUpz
cykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcqIChKSVRfT1BFUkFU
SU9OICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKQEAgLTM5Niw2
ICszOTcsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lO
VEVSTkFMOwogI2lmIEVOQUJMRShERkdfSklUKQogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFM
OworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0
YXRlKiwgdWludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3Qs
IEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJC
eUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRp
b25zLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2MzgsNiArMTYzOCwxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9n
X3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9hZnRlcl9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsm
XSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBwcm9maWxlLm1f
cHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihw
cm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKworICAgIExMSU5UX0VORCgp
OworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19v
dmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjIwNzEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lmX2V4
Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2Vu
X3RhaWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hZnRlcl9jYXRj
aCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVy
Zmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmICFFTkFC
TEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tf
YXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk3Nyw2ICsxOTc3LDExIEBA
IF9sbGludF9vcF9jYXRjaDoKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2F0Y2hfbGVuZ3Ro
KQogCiAKK19sbGludF9vcF9hZnRlcl9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9hZnRlcl9jYXRjaCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfYWZ0
ZXJfY2F0Y2hfbGVuZ3RoKQorCisKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24o
KQogICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCkluZGV4OiBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2
ICszMzQsNyBAQAogCQk3MEVDQTYwQjFCMDI0MjY4MDA0NDk3MzkgLyogU3ltYm9sSW1wbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xJbXBsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwRUNBNjBDMUIwMjQyNjgwMDQ0OTczOSAvKiBVbmlxdWVkU3Ry
aW5nSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVkU3RyaW5n
SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTM2RDZBOTFDOTlGOEFFMDAw
RDFBRUQgLyogU21hbGxQdHJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U21hbGxQdHJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzk1MjEyMDIxRjQy
NTg4ODAwQkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTaW5nbGVSb290R3JhcGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0FGRUM2QUUxRUIyMkFDNjAwREFERTM2IC8qIFVVSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZF
QzZCMDFFQjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVVUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Mz
RjcyMzkxRDc4ODExOTAwNjc0RTI2IC8qIEJyaWdhbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnJpZ2FuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM4
LDYgKzkzOSw3IEBACiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFp
ci5oICovLAogCQkJCTE0Njk0MTk4MTZFQUIwNDEwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJDRi5j
cHAgKi8sCiAJCQkJMTQ2OTQxOTUxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpck1hYy5t
bSAqLywKKwkJCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmgg
Ki8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3MjlCIC8qIFNjb3BlLmggKi8sCiAJCQkJMEZF
Qzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3BlZExhbWJkYS5oICovLAogCQkJCTBGNjZCMjg0
MURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0JhY2t3YXJkc0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmFja3dhcmRz
R3JhcGguaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL1dURi93dGYvQmFja3dhcmRzR3Jh
cGguaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1NpbmdsZVJvb3RHcmFwaC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zOCwxMzMg
KzM5LDkgQEAgY2xhc3MgQmFja3dhcmRzR3JhcGggewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEJhY2t3YXJkc0dyYXBoKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICAvLyBXZSB1c2UgIiNlbmQiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBo
YXZlIGNyZWF0ZWQuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4g
IiNlbmQiOyB9OwotCi0gICAgY2xhc3MgTm9kZSB7Ci0gICAgcHVibGljOgotICAgICAgICBOb2Rl
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBlbmFtZSBHcmFwaDo6Tm9kZSgpKQotICAg
ICAgICAgICAgOiBtX25vZGUobm9kZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAg
c3RhdGljIE5vZGUgcm9vdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5vZGUgcmVzdWx0Owot
ICAgICAgICAgICAgcmVzdWx0Lm1fbm9kZSA9IDA7Ci0gICAgICAgICAgICByZXN1bHQubV9pc1Jv
b3QgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fbm9kZSA9PSBvdGhlci5tX25vZGUKLSAgICAgICAgICAgICAg
ICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBOb2RlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IE5vZGUoKTsgfQot
Ci0gICAgICAgIGJvb2wgaXNSb290KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUg
bm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbV9ub2RlOwotICAgICAgICBib29sIG1faXNSb290IHsgZmFs
c2UgfTsKLSAgICB9OwotCi0gICAgY2xhc3MgU2V0IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNl
dCgpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBhZGQoY29u
c3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgdHJ1ZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9zZXQuYWRkKG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja0FuZFNl
dChtX2hhc1Jvb3QsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5yZW1vdmUobm9k
ZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2Rl
JiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbV9oYXNSb290OwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LmNv
bnRhaW5zKG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9oYXNSb290
KQotICAgICAgICAgICAgICAgIG91dC5wcmludChyb290TmFtZSgpLCAiICIpOwotICAgICAgICAg
ICAgb3V0LnByaW50KG1fc2V0KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICBwcml2YXRlOgot
ICAgICAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OwotICAgICAgICBib29sIG1faGFzUm9v
dCB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgY2xh
c3MgTWFwIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE1hcChHcmFwaCYgZ3JhcGgpCi0gICAgICAg
ICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQotICAgICAgICB7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9t
YXAuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fcm9vdCA9IFQoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgMTsgfQotCi0g
ICAgICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIWluZGV4KQotICAgICAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9tYXBbaW5kZXggLSAxXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gKCpjb25zdF9jYXN0PE1hcCo+KHRoaXMpKVtpbmRleF07Ci0gICAgICAgIH0KLQotICAg
ICAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9tYXBbbm9kZS5ub2RlKCldOwotICAgICAgICB9Ci0KLSAgICAg
ICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PE1hcCo+KHRoaXMpKVtub2RlXTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6
dGVtcGxhdGUgTWFwPFQ+IG1fbWFwOwotICAgICAgICBUIG1fcm9vdDsKLSAgICB9OwotCisgICAg
dXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9
IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVz
aW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OwogICAgIHR5cGVkZWYgVmVjdG9yPE5v
ZGUsIDQ+IExpc3Q7CiAKICAgICBCYWNrd2FyZHNHcmFwaChHcmFwaCYgZ3JhcGgpCkBAIC0yNTUs
NyArMTMyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICBvdXQu
cHJpbnQoIjxudWxsPiIpOwogICAgICAgICBlbHNlIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAg
ICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCkpOworICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6
OnJvb3ROYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQucHJpbnQobV9ncmFw
aC5kdW1wKG5vZGUubm9kZSgpKSk7CiAgICAgICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvRG9taW5hdG9ycy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9E
b21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGljOgogICAg
ICAgICBMZW5nYXVlclRhcmphbiBsZW5nYXVlclRhcmphbihtX2dyYXBoKTsKICAgICAgICAgbGVu
Z2F1ZXJUYXJqYW4uY29tcHV0ZSgpOwogCi0gICAgICAgIG1fZGF0YSA9IG1fZ3JhcGgudGVtcGxh
dGUgbmV3TWFwPEJsb2NrRGF0YT4oKTsKLSAgICAKICAgICAgICAgLy8gRnJvbSBoZXJlIHdlIHdh
bnQgdG8gYnVpbGQgYSBzcGFubmluZyB0cmVlIHdpdGggYm90aCB1cHdhcmQgYW5kIGRvd253YXJk
IGxpbmtzIGFuZCB3ZSB3YW50CiAgICAgICAgIC8vIHRvIGRvIGEgc2VhcmNoIG92ZXIgdGhpcyB0
cmVlIHRvIGNvbXB1dGUgcHJlIGFuZCBwb3N0IG51bWJlcnMgdGhhdCBjYW4gYmUgdXNlZCBmb3Ig
ZG9taW5hbmNlCiAgICAgICAgIC8vIHRlc3RzLgpJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xl
Um9vdEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBo
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZp
bmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUg
eworcHVibGljOgorICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0
aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1l
KCkgeyByZXR1cm4gIiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5h
bWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDog
bV9ub2RlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhO
b2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7Cisg
ICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVl
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBv
dGhlci5tX2lzUm9vdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xl
Um9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBp
c1Jvb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKwor
ICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX2lzUm9vdCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRl
OgorICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsg
ZmFsc2UgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJv
b3RHcmFwaFNldCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+
OworcHVibGljOgorICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAg
ICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNS
b290KCkpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsK
KyAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9v
bCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9v
dCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwor
ICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBt
X3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAg
ICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmlu
dChtX3NldCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0
IG1fc2V0OworICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNp
bmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmds
ZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5l
d01hcDxUPigpKQorICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RN
YXAmJiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAg
ICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9v
dCA9IFQoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LnNpemUoKSArIDE7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsK
KyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAg
IHJldHVybiBtX21hcFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9y
W10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2Fz
dDxTaW5nbGVSb290TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRv
cltdKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkK
KyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5v
ZGUoKV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFw
Kj4odGhpcykpW25vZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3Jh
cGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+
OworICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAg
IHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3Jh
cGgmIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3Ig
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogZ3JhcGgucm9vdHMoKSkgeworICAgICAg
ICAgICAgQVNTRVJUKG1fZ3JhcGgucHJlZGVjZXNzb3JzKHJlYWxSb290KS5pc0VtcHR5KCkpOyAv
LyBPT1BTOiBkbyB3ZSB3YW50IHRoaXMgYXNzZXJ0aW9uPworICAgICAgICAgICAgbV9yb290U3Vj
Y2Vzc29yTGlzdC5hcHBlbmQocmVhbFJvb3QpOworICAgICAgICAgICAgbV9yb290U3VjY2Vzc29y
U2V0LmFkZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOb2RlIHJvb3QoKSBj
b25zdCB7IHJldHVybiBOb2RlOjpyb290KCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIE1hcDxUPihtX2dyYXBoKTsgfQorCisgICAg
TGlzdCBzdWNjZXNzb3JzKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3RTdWNjZXNzb3JMaXN0
OworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9k
ZSBub2RlIDogbV9ncmFwaC5zdWNjZXNzb3JzKG5vZGUubm9kZSgpKSkKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQobm9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAg
TGlzdCBwcmVkZWNlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIExpc3QgeyB9OworCisgICAg
ICAgIGlmIChtX3Jvb3RTdWNjZXNzb3JTZXQuY29udGFpbnMobm9kZS5ub2RlKCkpKSB7CisgICAg
ICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpLmlzRW1wdHko
KSk7CisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IHJvb3QoKSB9OworICAgICAgICB9CisKKyAg
ICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9k
ZSA6IG1fZ3JhcGgucHJlZGVjZXNzb3JzKG5vZGUubm9kZSgpKSkKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQobm9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdW5z
aWduZWQgaW5kZXgoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2dy
YXBoLmluZGV4KG5vZGUubm9kZSgpKSArIDE7CisgICAgfQorCisgICAgTm9kZSBub2RlKHVuc2ln
bmVkIGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAg
IHJldHVybiByb290KCk7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm5vZGUoaW5kZXggLSAxKTsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBudW1Ob2RlcygpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9ncmFwaC5udW1Ob2RlcygpICsgMTsKKyAgICB9CisKKyAgICBDU3RyaW5nIGR1bXAo
Tm9kZSBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0Owor
ICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICBvdXQucHJpbnQoIjxudWxsPiIpOworICAg
ICAgICBlbHNlIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6
OnJvb3ROYW1lKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQobV9ncmFw
aC5kdW1wKG5vZGUubm9kZSgpKSk7CisgICAgICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7Cisg
ICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtTm9kZXMoKTsgKytpKSB7CisgICAgICAg
ICAgICBOb2RlIG5vZGUgPSB0aGlzLT5ub2RlKGkpOworICAgICAgICAgICAgaWYgKCFub2RlKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgb3V0LnByaW50KGR1bXAobm9k
ZSksICI6XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAgIFByZWRzOiAiKTsKKyAgICAg
ICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBwcmVkZWNl
c3NvciA6IHByZWRlY2Vzc29ycyhub2RlKSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29t
bWEsIGR1bXAocHJlZGVjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAg
ICAgICAgICAgIG91dC5wcmludCgiICAgIFN1Y2NzOiAiKTsKKyAgICAgICAgICAgIGNvbW1hID0g
Q29tbWFQcmludGVyKCk7CisgICAgICAgICAgICBmb3IgKE5vZGUgc3VjY2Vzc29yIDogc3VjY2Vz
c29ycyhub2RlKSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGR1bXAoc3VjY2Vz
c29yKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgIH0KKyAgICB9CisK
K3ByaXZhdGU6CisgICAgR3JhcGgmIG1fZ3JhcGg7CisgICAgTGlzdCBtX3Jvb3RTdWNjZXNzb3JM
aXN0OworICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9yb290U3VjY2Vzc29yU2V0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U2luZ2xlUm9vdEdyYXBoOworCisjZW5k
aWYgLy8gV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318148</attachid>
            <date>2017-08-15 12:39:46 -0700</date>
            <delta_ts>2017-08-15 12:46:24 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>143305</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2Nyw2ICszNjgs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZCwgND4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUs
MTAgKzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAg
ICAgICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNU
b1NraXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Y2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBw
ZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0
aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNv
ZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFmdGVyQ2F0Y2hJbmRp
Y2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGJ5dGVjb2Rl
TGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJvZmlsZXM7CisgICAg
ICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRjaEluZGljZXMpIHsK
KyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3Mu
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5kZXgpOworICAgICAg
ICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOworICAgICAgICAgICAg
bGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fscy5iaXRDb3VudCgp
KTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGxp
dmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsK
KworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsr
aSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5k
ID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNb
YWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7CisgICAgICAg
ICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNhdGNoUHJvZmlsZXMp
OworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQo
dGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0
aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29kZUJs
b2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5k
Q291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMg
PSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMg
ZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1
bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVlUHJv
ZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJvZmls
ZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwxMiBAQCB2b2lkIENv
ZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9maWxl
QnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBw
cm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAg
ICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKQEAgLTI3
NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9y
CiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNv
ZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9
IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKKyAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOworICAgICAgICBpZiAo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9mZnNldCkgeworICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChmb3VuZCk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVz
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
cj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxl
LCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxl
VmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zm
c2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNl
dCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0K
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBp
bnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9m
aWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsK
Kworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkK
KyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1vcmUgc3R1ZmYgdGhh
biB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGUgb3VyIHZhbHVlIHByb2ZpbGVzCisgICAg
ICAgIC8vIHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0g
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9m
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5k
T3BlcmFuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAg
ICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1
ZmZlci5nZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxv
Y1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTYxLDYgKzM5NjEsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2F0Y2goUmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bj
b2RlKG9wX2FmdGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2Fs
U2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNyw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xODM4LDcgKzE4MzksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0aW9uYWwgdGhpbmdz
LgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcuaAkocmV2aXNp
b24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dy
YXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dyYXBoPFNT
QUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NGRyk7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ0ZHKEdyYXBoJiBn
cmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAg
ICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+KGdyYXBoKSkKICAg
ICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNp
Y0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQog
ICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXND
YXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICwg
Y2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNv
dW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAgICAgICB3aGls
ZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAgICAgICAgICAg
IGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAgICAgICBjYXNl
IFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIERp
cmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFVucmVh
Y2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQ
aGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3Ig
dHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2ls
bCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNhc2UgQ2hlY2s6
IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9j
ayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsKICAgICAKICAg
ICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9pbnQ7CiAgICAgYm9v
bCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29sIGNm
YUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJy
YXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiREZHQ0ZH
LmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhp
dFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAsNyArMTEzMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3Qg
YmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0
d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0
b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0
aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxv
Y2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91
bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3
YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50
IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0
byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9j
ayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50
QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFy
Z3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVt
aXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0
b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlw
ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRv
R3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5
cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTUwLDYgKzUxNTUsMTE4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBv
cF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRy
dWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBv
cF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBm
cmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAg
ICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUu
cG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQ
cmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRl
ZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBX
VEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0Fy
ZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0
aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
UHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19j
YXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25z
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5k
LnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rp
b25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1
bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVk
aWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFBy
ZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0
aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNv
bXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAg
ICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRl
ZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICAvLyBX
ZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJlIHRvIE9TUiBlbnRlciwg
d2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2FmdGVyX2NhdGNoLgorICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
KworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+
PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRo
YW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBp
bmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdl
J3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cg
dG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2Fs
cyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJn
dW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBh
ZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcElu
Zm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICAr
K251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJ
bmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1Rv
U2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJlY2F1c2Ug
d2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZlIGxvY2Fs
cy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3Vy
IGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUg
YmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0
byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJy
YXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJn
dW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0
KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmly
c3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0
Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAg
ICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpS
ZWd1bGFyKTsKQEAgLTYxMzgsOCArNjI1NSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBp
cyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJs
b2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MTk2LDEw
ICs2MzE1LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAg
ICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1f
dW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsK
KwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxs
VW5yZWFjaGFibGVCbG9ja3MoKTsKKworICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQU0NGRz4obV9ncmFwaCk7CiAgICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTYyMTAsNyAr
NjMzMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygw
KS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFy
YW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRlclNsb3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50
cnlCeXRlY29kZUluZGV4KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJc
biIpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2Rl
IHJvb3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBt
X2dyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9j
aygwKTsKKyAgICB9CisKKyAgICBMaXN0IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVz
dWx0OworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dHMpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01h
cCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBw
cml2YXRlOgogICAgIEdyYXBoJiBtX2dyYXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGlj
IFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsKK3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBo
KQorICAgICAgICA6IFNpbmdsZVJvb3RHcmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7
CisgICAgICAgIEFTU0VSVChncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsK
KwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+
Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGdyYXBoLm1fY3BzQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RD
RkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsK
KyAgICByZXR1cm4gKmdyYXBoLm1fc3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1l
bnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNl
ZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0g
b25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBh
bmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92
ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNp
emUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVh
ZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRp
bWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAg
ICAgIAogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0lu
UHJlT3JkZXIoKTsKICAgICAgICAgCkBAIC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWVbaV07Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykp
IHsKICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAg
ICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC03NzksNyArNzc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJp
Y3QgZG9taW5hdGlvbiBiZWNhdXNlIHRoaXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBv
d24gYmxvY2sgaWYKICAgICAgICAgICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlv
biBpbiB0aGUgYmxvY2suIENsZWFybHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAg
ICAgICAgIC8vIGl0c2VsZiwgdGhlIHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3Qg
ZG9taW5hdGUgdXMuCi0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmlj
dGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9zc2FEb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgICBJdCBzdHJpY3RseSBkb21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0
ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Js
b2NrKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0
b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaC0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaC5zZXROb2RlKGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0Nyw2ICsyNDcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlECiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKICAgICBj
YXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9w
X2FmdGVyX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRf
cmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAg
Y2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgog
ICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBtX2RvbWluYXRvcnMo
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpKQorICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9iYWNrd2FyZHNEb21pbmF0b3JzKGdy
YXBoLmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKSkKICAgICB7CiAgICAgfQpAQCAtNzUsNyAr
NzUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERvbWluYXRvcnMmIG1fZG9t
aW5hdG9yczsKKyAgICBTU0FEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CiAgICAgQmFja3dhcmRz
RG9taW5hdG9ycyYgbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6
IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9j
ayk7CiAgICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRz
KTsKKyAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNWZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLnZhbHVlcygpKQorICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYXJn
dW1lbnRzVmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVj
ayBjbGVhbi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBo
Lm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDggKzk1LDggQEAgVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2Vt
YgogICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKICAgICBhcHBlbmQocmVzdWx0LCBv
dXQsIHByZXZpb3VzT3JpZ2luKTsKICAgICAKLSAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMo
KTsKLSAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgIG1fZ3JhcGguZW5zdXJl
Q1BTRG9taW5hdG9ycygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAg
ICAgCiAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRp
c2Fzc2VtYmx5UHJlZml4ID0gIiAgICAgICAgIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5Niw3IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9t
SlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5y
ZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RP
U1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21p
bmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21p
bmF0b3JzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDE2ICszNSwzMiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIERvbWluYXRvcnMg
OiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGRz4gewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tp
bmQ+CitjbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9taW5hdG9yczxDRkdLaW5kPiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9taW5hdG9ycyk7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9ycyhHcmFwaCYgZ3JhcGgpCi0gICAg
ICAgIDogV1RGOjpEb21pbmF0b3JzPENGRz4oKmdyYXBoLm1fY2ZnKQorICAgICAgICA6IFdURjo6
RG9taW5hdG9yczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpKQogICAgIHsKICAg
ICB9CiB9OwogCit1c2luZyBTU0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNp
bmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQs
IENQU0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0RvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNG
b3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVDUFNEb21pbmF0
b3JzKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FE
b21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBy
ZXR1cm4gZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCShyZXZpc2lvbiAyMjA3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsMTEgKzQwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Jsb2NrKGJsb2Nr
KQogICAgICAgICAsIG1fcmVzdWx0KHRydWUpCiAgICAgeworICAgICAgICBBU1NFUlQoZ3JhcGgu
bV9mb3JtID09IFNTQSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgb3BlcmF0b3IoKShOb2RlKiwg
RWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fZG9taW5h
dG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CisgICAgICAgIGJv
b2wgcmVzdWx0ID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhlZGdlLm5vZGUo
KS0+b3duZXIsIG1fYmxvY2spOwogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgaWYgIiwgZWRnZSwgIiBpbiAiLCAq
ZWRnZS5ub2RlKCktPm93bmVyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgzLDYgKzE5ODMs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5y
ZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNh
c2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNh
c2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51
bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZs
dXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5o
IgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1i
ZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVk
ZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVE
dW1wLmgiCkBAIC03Myw3ICs3Miw3IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4p
CiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1fY29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2sp
CiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAg
LCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMpKQorICAgICwgbV9zc2FDRkcoc3Rk
OjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkKICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgw
KQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1
cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3RhcnRlZFJlZ2lzdGVyaW5nKQpAQCAtNDA5LDkg
KzQwOCwxMyBAQCBib29sIEdyYXBoOjp0ZXJtaW5hbHNBcmVWYWxpZCgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3N0YXRpYyBCYXNpY0Jsb2NrKiB1bmJveExvb3BOb2RlKGNvbnN0IENQU0NGRzo6
Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlKCk7IH0KK3N0YXRpYyBCYXNpY0Jsb2NrKiB1
bmJveExvb3BOb2RlKEJhc2ljQmxvY2sqIGJsb2NrKSB7IHJldHVybiBibG9jazsgfQorCiB2b2lk
IEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJl
Zml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBNb2RlIHBoaU5vZGVEdW1wTW9kZSwg
RHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIs
ICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBj
b250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJs
b2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCAiXG4iKTsKKyAgICBvdXQu
cHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0
KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLAorICAgICAgICBibG9jay0+aXNS
ZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NS
IHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA/ICIgKENhdGNoIEVudHJ5
cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2stPmV4ZWN1dGlvbkNvdW50ID09IGJs
b2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRXhlY3V0
aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQsICJcbiIpOwogICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTQyMiwxOCArNDI1LDI2IEBAIHZvaWQg
R3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICBpZiAoYmxvY2stPnRlcm1p
bmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3Vj
Y2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqc3VjY2Vzc29yKTsKLSAg
ICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+ZWRnZUtpbmQoYmxvY2ssIHN1Y2Nlc3Nvciks
ICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgb3V0LnByaW50KCIgPGludmFs
aWQ+Iik7CiAgICAgb3V0LnByaW50KCJcbiIpOwotICAgIGlmIChtX2RvbWluYXRvcnMgJiYgdGVy
bWluYWxzQXJlVmFsaWQoKSkgewotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0
ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7Ci0gICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgbV9kb21pbmF0b3JzLT5ibG9j
a3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hbmNlRnJvbnRpZXJP
ZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBE
b21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+aXRlcmF0ZWREb21pbmFuY2VGcm9u
dGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsKKworICAgIGF1dG8gcHJpbnREb21p
bmF0b3JzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIERvbWluYXRlZCBieTogIiwgZG9taW5hdG9ycy5kb21pbmF0b3JzT2YoYmxvY2spLCAi
XG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBkb21pbmF0
b3JzLmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludChw
cmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjogIiwgZG9taW5hdG9ycy5kb21pbmFuY2VGcm9u
dGllck9mKGJsb2NrKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJh
dGVkIERvbWluYW5jZSBGcm9udGllcjogIiwKKyAgICAgICAgICAgIGRvbWluYXRvcnMuaXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxkZWNs
dHlwZShkb21pbmF0b3JzKT46OnR5cGU6Okxpc3QgeyBibG9jayB9KSwgIlxuIik7CisgICAgfTsK
KworICAgIGlmICh0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CisgICAgICAgIGlmIChtX3NzYURvbWlu
YXRvcnMpCisgICAgICAgICAgICBwcmludERvbWluYXRvcnMoKm1fc3NhRG9taW5hdG9ycyk7Cisg
ICAgICAgIGVsc2UgaWYgKG1fY3BzRG9taW5hdG9ycykKKyAgICAgICAgICAgIHByaW50RG9taW5h
dG9ycygqbV9jcHNEb21pbmF0b3JzKTsKICAgICB9CisKICAgICBpZiAobV9iYWNrd2FyZHNEb21p
bmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwgbV9iYWNrd2FyZHNEb21pbmF0b3JzLT5k
b21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAg
QmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2FyZHNEb21pbmF0b3JzLT5ibG9ja3NEb21p
bmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5ICs0NTcsMzMgQEAgdm9pZCBHcmFwaDo6
ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAgICB9CiAgICAgICAgIG91dC5wcmlu
dCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5nOiAiLCBtX3ByZVBvc3ROdW1iZXJp
bmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wb3N0TnVtYmVy
KGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJhbExvb3BzKSB7Ci0gICAgICAgIGlmIChj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykp
IHsKKworICAgIGF1dG8gcHJpbnROYXR1cmFsTG9vcHMgPSBbJl0gKGF1dG8mIG5hdHVyYWxMb29w
cykgeworICAgICAgICBpZiAoY29uc3QgYXV0byogbG9vcCA9IG5hdHVyYWxMb29wcy0+aGVhZGVy
T2YoYmxvY2spKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBMb29wIGhlYWRl
ciwgY29udGFpbnM6Iik7CiAgICAgICAgICAgICBWZWN0b3I8QmxvY2tJbmRleD4gc29ydGVkQmxv
Y2tMaXN0OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxvb3AtPnNpemUo
KTsgKytpKQotICAgICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQobG9vcC0+YXQo
aSktPmluZGV4KTsKKyAgICAgICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKHVuYm94
TG9vcE5vZGUobG9vcC0+YXQoaSkpLT5pbmRleCk7CiAgICAgICAgICAgICBzdGQ6OnNvcnQoc29y
dGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlzdC5lbmQoKSk7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc29ydGVkQmxvY2tMaXN0LnNpemUoKTsgKytpKQog
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBzb3J0ZWRCbG9ja0xpc3RbaV0pOwogICAg
ICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBW
ZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5nTG9vcHMgPQotICAgICAgICAgICAg
bV9uYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOworICAgICAgICBhdXRvIGNvbnRhaW5pbmdM
b29wcyA9IG5hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CiAgICAgICAgIGlmICghY29udGFp
bmluZ0xvb3BzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAg
Q29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIG91
dC5wcmludCgiICIsICpjb250YWluaW5nTG9vcHNbaV0tPmhlYWRlcigpKTsKKyAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAiLCAqdW5ib3hMb29wTm9kZShjb250YWluaW5nTG9vcHNbaV0tPmhl
YWRlcigpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgICAgIH0KLSAgICB9
CisgICAgfTsKKworICAgIGlmIChtX3NzYU5hdHVyYWxMb29wcykKKyAgICAgICAgcHJpbnROYXR1
cmFsTG9vcHMobV9zc2FOYXR1cmFsTG9vcHMpOworICAgIGVsc2UgaWYgKG1fY3BzTmF0dXJhbExv
b3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29wcyhtX2Nwc05hdHVyYWxMb29wcyk7CisKICAg
ICBpZiAoIWJsb2NrLT5waGlzLmlzRW1wdHkoKSkgewogICAgICAgICBvdXQucHJpbnQocHJlZml4
LCAiICBQaGkgTm9kZXM6Iik7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2st
PnBoaXMuc2l6ZSgpOyArK2kpIHsKQEAgLTUwMiw4ICs1MTcsMTAgQEAgdm9pZCBHcmFwaDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwogICAgIG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0
ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBGb3JtOiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9u
IHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3RhdGUsICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9y
ZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBpZiAobV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0
LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRz
KSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBs
aXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIpOworICAgIGVsc2UgeworICAgICAgICBmb3IgKGF1
dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJndW1lbnRzKQorICAgICAgICAgICAgb3V0LnByaW50
KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwgcGFpci5rZXktPmluZGV4LCAiOiAiLCBsaXN0RHVt
cChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAgfQogICAgIG91dC5wcmludCgiXG4iKTsKICAgICAK
ICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CkBAIC02NDAsOCArNjU3LDEwIEBAIHZvaWQg
R3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMKIHZvaWQgR3JhcGg6OmRldGVybWlu
ZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxNj4gd29ya2xpc3Q7
Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsKLSAgICBibG9jaygwKS0+aXNSZWFjaGFi
bGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2lu
dHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgICAgICB3
b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAgfQogICAgIHdoaWxlICghd29ya2xpc3Qu
aXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxh
c3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsg
aS0tOykKQEAgLTc5OCw5ICs4MTcsMTAgQEAgdm9pZCBHcmFwaDo6a2lsbFVucmVhY2hhYmxlQmxv
Y2tzKCkKIAogdm9pZCBHcmFwaDo6aW52YWxpZGF0ZUNGRygpCiB7Ci0gICAgbV9kb21pbmF0b3Jz
ID0gbnVsbHB0cjsKLSAgICBtX25hdHVyYWxMb29wcyA9IG51bGxwdHI7Ci0gICAgbV9wcmVQb3N0
TnVtYmVyaW5nID0gbnVsbHB0cjsKKyAgICBtX2Nwc0RvbWluYXRvcnMgPSBudWxscHRyOworICAg
IG1fc3NhRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxs
cHRyOworICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKICAgICBtX2NvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsKICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBu
dWxscHRyOwogICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0cjsKQEAgLTg1MCwxMiArODcwLDM3
IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5QcmVPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0
IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2go
YmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2lu
dHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2lj
QmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChi
bG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7
IGktLTspCiAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKGJsb2NrLT5zdWNjZXNzb3IoaSkpOwog
ICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4g
aXRlcmF0aW5nIG92ZXIgcHJlIG9yZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAg
ICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgorICAgICAgICBhdXRvIHZhbGlkYXRl
UmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAgICAgICAgaWYgKCFhKQorICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGog
PSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAgICAgICAgIGlmICghYiB8fCBhID09
IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaSA8IGopOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3JtID09IFNTQSB8fCBtX2lzSW5TU0FD
b252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZVNTQURvbWluYXRv
cnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVD
UFNEb21pbmF0b3JzKCkpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC04NjMs
NyArOTA4LDggQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAg
QmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0Owot
ICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlw
b2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7
CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAg
ICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6
CkBAIC04NzYsNiArOTIyLDMxIEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIo
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAodmFsaWRh
dGlvbkVuYWJsZWQoKSkgeworICAgICAgICBhdXRvIHZhbGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0
byYgZG9taW5hdG9ycykgeworICAgICAgICAgICAgLy8gV2hlbiBpdGVyYXRpbmcgb3ZlciByZXZl
cnNlIHBvc3Qgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5hdG9ycworICAgICAgICAgICAgLy8g
YmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAgICAgICAgaWYgKCFhKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBq
IDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAgICAgICAgIGlmICghYiB8fCBhID09IGIpCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoaSA+IGopOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3JtID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJz
aW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZVNTQURvbWluYXRvcnMoKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVDUFNEb21p
bmF0b3JzKCkpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE0NzIsMzAg
KzE1NDMsNDMgQEAgdm9pZCBHcmFwaDo6bG9nQXNzZXJ0aW9uRmFpbHVyZSgKICAgICBsb2dERkdB
c3NlcnRpb25GYWlsdXJlKCp0aGlzLCB0b0NTdHJpbmcoIldoaWxlIGhhbmRsaW5nIGJsb2NrICIs
IHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuXG4iKSwgZmlsZSwgbGluZSwgZnVuY3Rpb24sIGFzc2Vy
dGlvbik7CiB9CiAKLURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVEb21pbmF0b3JzKCkKK0NQU0Rv
bWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3JzKCkKK3sKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBpZiAoIW1f
Y3BzRG9taW5hdG9ycykKKyAgICAgICAgbV9jcHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0dXJuICptX2Nwc0RvbWluYXRvcnM7Cit9
CisKK1NTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKCkKIHsKLSAgICBp
ZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxEb21pbmF0b3JzPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX2RvbWluYXRvcnM7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBp
ZiAoIW1fc3NhRG9taW5hdG9ycykKKyAgICAgICAgbV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NzYURvbWluYXRv
cnM7CiB9CiAKLVByZVBvc3ROdW1iZXJpbmcmIEdyYXBoOjplbnN1cmVQcmVQb3N0TnVtYmVyaW5n
KCkKK0NQU05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQU05hdHVyYWxMb29wcygpCiB7Ci0g
ICAgaWYgKCFtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG1fcHJlUG9zdE51bWJlcmluZyA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJlUG9zdE51bWJlcmluZz4oKnRoaXMpOwotICAgIHJldHVybiAq
bV9wcmVQb3N0TnVtYmVyaW5nOworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYg
IW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBp
ZiAoIW1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBtX2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0dXJuICptX2Nwc05h
dHVyYWxMb29wczsKIH0KIAotTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlTmF0dXJhbExvb3Bz
KCkKK1NTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNTQU5hdHVyYWxMb29wcygpCiB7Ci0g
ICAgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIGlmICghbV9uYXR1cmFsTG9vcHMpCi0gICAgICAg
IG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
LSAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9
PSBTU0EpOworICAgIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBpZiAoIW1fc3NhTmF0dXJh
bExvb3BzKQorICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NB
TmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0dXJuICptX3NzYU5hdHVyYWxMb29wczsKIH0K
IAogQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKCkKIHsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgLy8gV2UgY291bGQgY2hhbmdlIHRoaXMsIGJ1dCBp
dCdzIG9ubHkgdXNlZCBpbiBTU0EgZm9yIG5vdywgYW5kIHdlIGRvbid0IG5lZWQgdHdvIGdyYXBo
IGZpZWxkcyB5ZXQgZm9yIHR3byB0eXBlcyBvZiBiYWNrd2FyZHMgQ0ZHLgogICAgIGlmICghbV9i
YWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxC
YWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwpAQCAtMTUw
Myw2ICsxNTg3LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKAog
CiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygp
CiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3
YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNr
d2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTk1LDcgQEAgQmFja3dhcmRzRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3Jh
cGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2Nv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3ICsxNjEzLDcgQEAgTWV0aG9kT2ZH
ZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAgICAgICAgICBpZiAo
IW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxv
Y2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5v
ZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFy
Z3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1
ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2
aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwxNyBAQCBjbGFzcyBCYWNrd2Fy
ZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZHOwogY2xhc3MgQ29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3Mg
TmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0dXJhbExvb3BzOwot
Y2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZHOwordXNpbmcgU1NBQ0ZHID0g
Q0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OwordXNpbmcg
U1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxMb29w
cyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0dXJhbExvb3BzID0gTmF0dXJh
bExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGbG93TWFwOwogCkBA
IC05MDEsOSArOTEyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRGVidWdnZXJFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAotICAgIERvbWluYXRv
cnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5nJiBlbnN1cmVQcmVQ
b3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1cmFsTG9vcHMoKTsK
KyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgU1NBRG9taW5h
dG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05hdHVyYWxMb29wcyYgZW5zdXJl
Q1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3BzJiBlbnN1cmVTU0FOYXR1cmFs
TG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NGRygpOwogICAgIEJh
Y2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKTsKICAgICBDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMo
KTsKQEAgLTkyMSw3ICs5MzMsOCBAQCBwdWJsaWM6CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9j
azsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJl
ZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNC
bG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBv
aW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNo
TWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5j
b2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDExICs5Njks
MTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQg
d2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRl
CiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAg
IEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50cnlwb2ludFRvQXJn
dW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NB
LCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4K
ICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAg
U2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NE
YXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50
UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9uPiBtX3RyYW5zaXRpb25zOwpAQCAtOTgyLDEw
ICs5OTUsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJv
cGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXks
IEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxS
ZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWlu
YXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmlu
Zz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+
IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nw
c0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21p
bmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4g
bV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAyNCw4IEBAIHB1Ymxp
YzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVi
dWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlv
bmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkz
LDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9v
dCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7
Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29u
c3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFk
ID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0
YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAg
ICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZs
dXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAg
ICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07
Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hl
ZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgZm9yIChCYXNpY0Jsb2Nr
KiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9p
bnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNW
aXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0g
ZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVh
ZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1
cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5h
cmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Cisg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUgRlRM
LCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgIC8vIHdoYXQgd2UgZG8gaGVyZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAg
ICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAgICAgICAgICAg
ICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFs
dWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChu
b2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0g
bm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZv
cm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25s
eSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29s
ZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2Rl
VG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1h
dCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAg
Y2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1l
bnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFy
Z3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0
SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIs
ICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNB
dEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVh
ZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSku
Y2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxv
Y2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlm
ICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50
LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsK
KyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVh
Y2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAg
ICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw3ICszNzEsNyBAQCBpbmxp
bmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAg
ICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNlIFJldHVybjoK
ICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9u
LnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0
LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAg
IHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVw
YXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3Ny
RW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRh
Qnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hP
U1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVu
c2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMu
c2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlw
b2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAg
fQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAgICAg
ICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5l
bmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlw
b2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIu
bV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENhdGNo
RW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAg
ICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsK
KyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsK
KyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9p
bnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZl
Y3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRj
aEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwg
bWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAg
ICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAg
IHsKQEAgLTEzMiw2ICsxNTgsNyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRhdGEg
Y29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVj
dG9yPENhdGNoRW50cnlwb2ludERhdGE+IGNhdGNoRW50cnlwb2ludHM7CiAgICAgU2VnbWVudGVk
VmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxh
dGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVu
dFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwpAQCAtMTY4LDYgKzE5NSw4IEBAIHB1YmxpYzoK
ICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX29zckVudHJ5QmxvY2s7CiAgICAgdW5zaWdu
ZWQgb3NyRW50cnlSZXRyeTsKICAgICBib29sIGFiYW5kb25PU1JFbnRyeTsKKworICAgIE1hbGxv
Y1B0cjxKU1ZhbHVlPiBjYXRjaE9TUkVudHJ5QnVmZmVyOwogI2VuZGlmIC8vIEVOQUJMRShGVExf
SklUKQogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDkgQEAgc3Rh
dGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIHsKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxK
U1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVu
dHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVK
SVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjksOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
KCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9n
cmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgIG1faml0Q29kZS0+Y2F0
Y2hPU1JFbnRyeUJ1ZmZlciA9IE1hbGxvY1B0cjxKU1ZhbHVlPjo6bWFsbG9jKHNpemVvZihKU1Zh
bHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpKTsKKwogICAgIHNl
dFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwxNCArNTU3LDIz
IEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0KICNlbmRpZgog
Cit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9jayYgYmFz
aWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1
ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sKKyAgICBSRUxF
QVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKyAgICBSRUxFQVNFX0FT
U0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8vIEFuIGVudHJ5
cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFibGUuCisgICAgbV9qaXRDb2RlLT5hcHBlbmRD
YXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNl
dE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisKIHZvaWQgSklU
Q29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBp
bGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgUkVM
RUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworCiAgICAgLy8gT1NS
IGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNoYWJsZSBieSBj
b250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9m
Q0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAgIE9TUkVudHJ5
RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNpY0Jsb2NrLmJ5
dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0gICAgCisKICAg
ICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZQYXN0
VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVkIHZhbHVlczog
aW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4cGVjdGVkCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
dm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2Nr
SGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2lj
QmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9y
PEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5h
bWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVj
dCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRy
KQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1
cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAg
ICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5z
dXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkg
ewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0
dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGlu
ZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0
aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFi
bG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0
dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0
dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29w
T2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07
CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6
CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFr
ZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZv
ciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMo
KTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9
IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygp
OyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0g
bV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAg
TG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZm9yICgKLSAgICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJM
b29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwor
ICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAg
ICAgb3V0ZXJMb29wOwotICAgICAgICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1
cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAg
ICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxv
b3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgo
KV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFk
ZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNz
b3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5h
dGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgICAgIHByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0
YWNrOwogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9z
dExvb3BPZihibG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1f
Z3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAg
ICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAK
QEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAg
ICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAg
ICBjdXJyZW50OwotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExv
b3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJl
bnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJl
bnQpKQogICAgICAgICAgICAgICAgIGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlu
bmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQg
bW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBi
b2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFz
aWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJP
ZihzdWJCbG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1f
Z3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAg
IGlmICghc3ViTG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFk
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxl
UHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFi
bGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIg
QEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJs
b2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50
ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50
KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2Rl
LT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVu
ZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBu
b2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVD
YWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRl
UHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwg
QmFzaWNCbG9jayogYmxvY2spCiB7CisgICAgLy8gT09QUzogbWF5YmUgdXNlIGhhc2hzZXQgZm9y
IHRoaXMgYXNzZXJ0LgorICAgIFJFTEVBU0VfQVNTRVJUKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNv
bnRhaW5zKGJsb2NrKSk7IC8vIEFuIGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3Ah
CisKICAgICAvLyBGSVhNRTogSWYgd2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4g
d2UgbWF5IGVuZCB1cCB3aXRoIGEgYml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2ls
b25zIGFuZCBQaGlzLCBsaWtlOgogICAgIC8vCkBAIC02OSw3ICs3Miw3IEBAIEJhc2ljQmxvY2sq
IGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhl
IG1heCBvZiB0aGUgZnJlcXVlbmNpZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRl
Y2Vzc29ycy4KICAgICBmbG9hdCBmcmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5t
X2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAo
Z3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1heChmcmVxdWVu
Y3ksIHByZWRlY2Vzc29yLT5leGVjdXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAzLDcgKzEwNiw3
IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAKICAgICBm
b3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxv
Y2stPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAgICAgICBC
YXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJ
bmRleF07Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywg
cHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0
ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBi
bG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+cHJlZGVjZXNz
b3JzLmxhc3QoKTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7CkBA
IC0xMzAsMTYgKzEzMywxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsK
LSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5z
dXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5u
dW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29w
JiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwotICAgICAg
ICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7
IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExvb3AmIGxvb3Ag
PSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBi
b29sIG5lZWRzTmV3UHJlSGVhZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBw
cmVkZWNlc3NvckluZGV4LS07KSB7Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IgPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5o
ZWFkZXIoKSwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNl
c3NvckluZGV4ID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHBy
ZWRlY2Vzc29ySW5kZXgtLTspIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciA9IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRl
eF07CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0
ZXMobG9vcC5oZWFkZXIoKS5ub2RlKCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgewog
ICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAt
MTY1LDE0ICsxNjgsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gQSBwcmUtaGVhZGVyIGlz
IG1vc3QgdXNlZnVsIGlmIGl0J3MgcG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0ZXJtaW5hbC4g
SGVuY2UKICAgICAgICAgICAgIC8vIGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhpc3RpbmcgcHJl
LWhlYWRlciBkb2Vzbid0IGFsbG93IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAgICAgICAgICAg
ICAvLyBvcmlnaW4gb2YgdGhlIGxvb3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hvdWxkIGNyZWF0
ZSBhIG5ldyBwcmUtaGVhZGVyLgotICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAm
JiBsb29wLmhlYWRlcigpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgaWYgKCFu
ZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLm5vZGUoKS0+YXQoMCktPm9yaWdpbi5l
eGl0T0sKICAgICAgICAgICAgICAgICAmJiAhZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCkt
Pm9yaWdpbi5leGl0T0spCiAgICAgICAgICAgICAgICAgbmVlZHNOZXdQcmVIZWFkZXIgPSB0cnVl
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjcmVhdGVQ
cmVIZWFkZXIobV9ncmFwaCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkpOworICAgICAg
ICAgICAgY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRl
cigpLm5vZGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBtX2luc2Vy
dGlvblNldC5leGVjdXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7
Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9
PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAg
ICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5p
c0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVy
LT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAg
ICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0g
Y3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Myw2ICs4Myw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAg
ICBjYXNlIEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NS
RW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNh
bE5vdDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCShyZXZpc2lv
biAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8Q0ZHPiBOYXR1cmFsTG9v
cDsKLQotY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3BzPENGRz4g
ewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJs
aWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE5hdHVyYWxMb29wcyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgTmF0dXJhbExvb3BzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29w
czxDRkc+KCpncmFwaC5tX2NmZywgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpLCB2YWxpZGF0aW9u
RW5hYmxlZCgpKQorICAgICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGR0tpbmQ+KHNlbGVjdENG
RzxDRkdLaW5kPihncmFwaCksIGVuc3VyZURvbWluYXRvcnNGb3JDRkc8Q0ZHS2luZD4oZ3JhcGgp
LCB2YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgIHsKICAgICB9CiB9OwogCit1c2luZyBTU0FOYXR1
cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxMb29w
ID0gV1RGOjpOYXR1cmFsTG9vcDxDUFNDRkc+OworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNT
d2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG9wKCkgPT0gU3dpdGNoOwogICAgIH0KQEAgLTEzNzIsNiArMTM3Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6
ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2Nr
OwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAgICAgICBjYXNlIDA6
CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTM1LDcgKzE1MzYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChoYXNIZWFwUHJlZGljdGlvbigpKTsKICAgICAgICAgbV9vcEluZm8y
ID0gcHJlZGljdGlvbjsKICAgICB9Ci0gICAgCisKICAgICBib29sIGhhc0NlbGxPcGVyYW5kKCkK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpAQCAtMTkzMCw2ICsxOTMxLDE5IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7
CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRUeXBl
IGNhdGNoTG9jYWxQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4
dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxTcGVjdWxhdGVk
VHlwZT4oKTsKKyAgICB9CisgICAgCiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRv
IHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcgYSBsb2NhbCAqL1wKICAgICAv
KiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9cCiAgICAgbWFjcm8oRXh0cmFj
dE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKEV4dHJhY3RDYXRjaExv
Y2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGllci11cCBjaGVja3MgZnJvbSB0
aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNrVGllclVwSW5Mb29wLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9k
ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTMzNiw2
ICszMzcsNjcgQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAg
IHJldHVybiBzY3JhdGNoOwogfQogCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3Rh
dGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQor
eworICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgUkVMRUFTRV9BU1NFUlQo
Y29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKyAgICBERkc6OkpJVENv
ZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoaml0Q29kZSk7CisKKyAgICBERkc6OkNhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoRW50
cnlwb2ludCA9IGppdENvZGUtPmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleChieXRl
Y29kZUluZGV4KTsKKyAgICBpZiAoIWNhdGNoRW50cnlwb2ludCkgeworICAgICAgICAvLyBUaGlz
IGNhbiBiZSBudWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy4gVGhlIG1vc3QgY29tbW9uIGlz
IHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgdGhpcworICAgICAgICAvLyBhZnRlcl9jYXRjaCBhcyBh
biBlbnRyeXBvaW50IHNpbmNlIGl0IGhhZCBuZXZlciBleGVjdXRlZC4KKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgLy8gV2UncmUgb25seSBhbGxvd2VkIHRvIE9TUiBlbnRl
ciBpZiB3ZSd2ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRpYmxlIGFyZ3VtZW50IHR5cGVzLgorICAg
IGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoRW50cnlwb2ludC0+
bV9hcmd1bWVudEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBleGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkuanNW
YWx1ZSgpOworICAgICAgICBzd2l0Y2ggKGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVudEZvcm1h
dHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6Cisg
ICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9v
bGVhbjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6
OkRlYWRGbHVzaDoKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5v
dCBhbGl2ZS4gVGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQgdG8gYmUgYW55IHR5cGUuCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAg
ICAgLy8gQW4gYXJndW1lbnQgaXMgdHJpdmlhbGx5IGEgSlNWYWx1ZS4KKyAgICAgICAgICAgIGJy
ZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JD
aGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25B
bmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZl
eGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVj
aykub2Zmc2V0KCldKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKElu
dGVycHJldGVyOjpnZXRPcGNvZGVJRChleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClb
ZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKV0udS5vcGNvZGUpID09IG9wX2FmdGVyX2NhdGNoKTsKKyAg
ICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kJiBwcm9maWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9v
cGVyYW5kKS5pc0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGppdENvZGUt
PmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbaW5kZXhdID0gZXhlYy0+dW5jaGVja2VkUihwcm9m
aWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4OworICAgIH0pOworCisg
ICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBv
aW50LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUg
IkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYv
Qml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JF
bnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5k
ZXg7CiB9CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5
dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBX
ZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFy
Z3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcg
YXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3Jt
YXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRo
ZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyBy
ZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSos
IENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJl
dHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBD
IHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAw
OyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlw
b2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZH
QmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja0luc2VydGlvblNldC5oIgor
I2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAt
NTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5k
ZXggIT0gVUlOVF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVBy
ZUhlYWRlcigpLgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBDb2RlQmxv
Y2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIApAQCAtMTEy
LDE2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgog
ICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAg
ICBWZWN0b3I8Tm9kZSosIDg+IG5ld0FyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAoaW50
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2Fy
Z3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNB
dEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAg
ICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3Vt
ZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBt
X2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICBvbGROb2RlID0g
bmV3QXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNw
ZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGRO
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbmV3QXJndW1lbnRzW2FyZ3VtZW50
XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2Fs
IDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzksOCArMTQx
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIobV9ncmFw
aCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRpb25T
ZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBv
aW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1swXSA9IG5l
d1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xlYXIoKTsK
KyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9vdCwgbmV3
QXJndW1lbnRzKTsKKworICAgICAgICBtX2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1
ZTxDUFNDRkc+KG1fZ3JhcGgpOworCiAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHko
KTsKICAgICAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKKwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsNyArNzI3LDcg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3JhcGguY29tcHV0ZVJlZkNvdW50cygpOwog
ICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGgu
ZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMo
KTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIHBl
cmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAgbV9jb21iaW5l
ZExpdmVuZXNzID0gQ29tYmluZWRMaXZlbmVzcyhtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDkgKzM2Niw4
IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAvLyBJZiB3
ZSdyZSBkb2luZyB2YWxpZGF0aW9uLCB0aGVuIHJ1biBzb21lIGFuYWx5c2VzLCB0byBnaXZlIHRo
ZW0gYW4gb3Bwb3J0dW5pdHkKICAgICAvLyB0byBzZWxmLXZhbGlkYXRlLiBOb3cgaXMgYXMgZ29v
ZCBhIHRpbWUgYXMgYW55IHRvIGRvIHRoaXMuCiAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkp
IHsKLSAgICAgICAgZGZnLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgZGZnLmVuc3VyZU5h
dHVyYWxMb29wcygpOwotICAgICAgICBkZmcuZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOworICAg
ICAgICBkZmcuZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBkZmcuZW5zdXJlQ1BTTmF0
dXJhbExvb3BzKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2RlKSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHJldmlz
aW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJl
cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNp
bmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRlICJERkdCbG9ja1dvcmtsaXN0
LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkK
LXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3JhcGgpOwotICAgIAotICAgIFBv
c3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChncmFwaC5i
bG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9IDA7Ci0gICAgdW5zaWduZWQg
bmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29y
a2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7Ci0gICAgICAgIGNh
c2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3ByZU51
bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdvcmtsaXN0LnB1c2hQb3N0KGl0
ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGl0ZW0u
bm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goc3VjY2Vz
c29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlBvc3Q6
Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51bWJlciA9IG5leHRQb3N0TnVt
YmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotUHJlUG9z
dE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQotfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzo6REZHOwot
Ci12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRWRnZUtpbmQga2luZCkKLXsK
LSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRFZGdlOgotICAgICAgICBvdXQu
cHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyb3NzRWRn
ZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFja0VkZ2UiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
aAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQ
b3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRl
ICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQot
ZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAgQ3Jvc3NFZGdlLAotICAgIEJh
Y2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7Ci0gICAgflByZVBvc3ROdW1i
ZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29u
c3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9Ci0gICAgdW5zaWduZWQgcG9z
dE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1f
cG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBzdHJpY3QgYW5jZXN0b3Igb2Yg
dG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNC
bG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJlTnVtYmVyKGZyb20pIDwg
cHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJlcihmcm9tKSA+IHBvc3ROdW1i
ZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBm
cm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmcm9tID09
IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0gICAgfQotICAgIAotICAgIGJv
b2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8p
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RBbmNlc3Rvck9mKHRvLCBmcm9t
KTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9t
LCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0FuY2VzdG9y
T2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlzIHdpbGwgZ2l2ZSBhIGJvZ3Vz
IGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVkZ2UuIElmIHlvdSB3YW50IHRv
IGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNoIGVkZ2UsIHlvdSBoYXZlIHRv
IGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5kKEJhc2ljQmxvY2sqIGZyb20s
IEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaWN0RGVzY2Vu
ZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBGb3J3YXJkRWRnZTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20pKQotICAgICAgICAgICAgcmV0
dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIENyb3NzRWRnZTsKLSAgICB9
Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcgewotICAgICAgICB1bnNpZ25l
ZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0TnVtYmVyOwotICAgIH07Ci0K
LSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJs
b2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8g
dGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMg
ZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4g
cG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1
bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9j
aygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBz
dGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykg
ewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2so
KS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAgICAgICAgICAgICBpZiAoIXBy
b2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFj
Y2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRjaExvY2FsUHJlZGljdGlvbigp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBSZXNvbHZl
U2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAgICBjYXNlIEdldER5bmFtaWNW
YXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5dGVjb2RlVG9wKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5n
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3Vy
ZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIFNTQUNhbGN1bGF0b3Igc3NhQ2Fs
Y3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dy
YXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxh
dG9yLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTIgKzk1LDEyIEBAIFNT
QUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUKIAogU1NBQ2FsY3VsYXRvcjo6
RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVmKEJhc2ljQmxvY2sqIGJsb2Nr
LCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1f
Z3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOworICAgIHJldHVybiBy
ZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9jayksIHZh
cmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpyZWFjaGlu
Z0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAg
IGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jaykp
IHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlk
b20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1fZGF0YVtibG9ja10ubV9kZWZz
LmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVmOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCShyZXZpc2lvbiAy
MjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9pZCBjb21wdXRlUGhpcyhjb25z
dCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9ycyk7CisgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMpOwogICAgICAg
ICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBtX3ZhcmlhYmxlcykgewotICAg
ICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAgICAgbV9ncmFwaC5tX3NzYURvbWluYXRv
cnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAogICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMsCiAgICAgICAgICAgICAgICAg
WyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2spOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2
aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJz
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsKICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVudHMoKTsKLSAgICAgICAgbV9n
cmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBudWxs
cHRyOworICAgICAgICBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICAg
ICAgbV9ncmFwaC5tX2Nwc0RvbWluYXRvcnMgPSBudWxscHRyOworICAgICAgICBtX2dyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKTsgLy8gT09QUzogYWxsb3cgdXMgdG8gYXNzZXJ0IGluIGVuc3Vy
ZVNTQURvbWluYXRvcnMgdGhhdCB3ZSdyZSBpbiBTU0EgZm9ybS4KICAgICAgICAgCiAgICAgICAg
IGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRy
YW5zZm9ybWF0aW9uOlxuIik7CkBAIC0xMTAsNyArMTEzLDcgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0
ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAg
ICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVz
ZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBs
YXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRl
bGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAg
ICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayog
YmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAg
LTM4MSwxOCArMzg0LDIyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhl
YWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
c2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXpl
KCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUo
KTsgaS0tOykgeworCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9p
bnRzIGluIERGRyBTU0E6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVu
dHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChh
cmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChu
b2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3Jt
YXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNb
aV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsg
Ly8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVm
aXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAv
LyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZp
dCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5tX2Zvcm0gPSBTU0E7CkBAIC00MTYsNyArNDIzLDEyIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVy
Zm9ybVNTQUNvbnZlcnNpb24oR3JhcGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxT
U0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9p
c0luU1NBQ29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IHRydWU7
CisgICAgYm9vbCByZXN1bHQgPSBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBncmFw
aC5tX2lzSW5TU0FDb252ZXJzaW9uID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMs
NiArMzIzLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAg
IGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBj
YXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwODAsNiArNjA4MCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZtX2pp
dC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0KClbbm9kZS0+Y2F0Y2hPU1JFbnRy
eUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEND
YWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVS
ZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICNlbHNlIC8vIEVO
QUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEF0UmV0dXJuOgpAQCAtNjExNiw3ICs2MTI2LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUGhhbnRvbUNyZWF0ZVJlc3Q6CiAgICAg
Y2FzZSBQaGFudG9tU3ByZWFkOgogICAgIGNhc2UgUGhhbnRvbU5ld0FycmF5V2l0aFNwcmVhZDoK
LSAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJVbmV4cGVjdGVkIG5vZGUi
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2NzYsNiArMTY3NiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Vy
cmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+aXND
YXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwor
ICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAg
ICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExv
ZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNW
YWxpZENhbGxGcmFtZSgpOwpAQCAtMTc3MCw4ICsxNzc3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAg
bV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUp
OwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewot
ICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAg
ICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAg
ICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBm
b3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NTUsMTIgKzE4
NjMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAgICAg
IEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAg
ICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJs
b2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAg
ICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBj
b3VsZCBhZGQgdGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1fb3Ny
RW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsK
KyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9s
aW5lcy4gV2UgY291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4K
KyAgICAgICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Js
b2NrSW5kZXhdKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTg3MSwxMCArMTg3OCwzMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJhc2lj
QmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAg
aWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5p
c09TUlRhcmdldCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2NrLT5p
c0NhdGNoRW50cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5u
b3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBs
aW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAg
ICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0ZXIt
PnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1hdHM7
CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1
bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1lbnQg
OiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1bWVu
dC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0g
Rmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3Jt
YXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1h
dHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFk
Rmx1c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hFbnRy
eXBvaW50KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZm
ZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBBU1NFUlQoYmxvY2stPmlzT1NSVGFyZ2V0KTsKKyAgICAgICAgICAgIG1faml0Lm5vdGlj
ZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtC
dWZmZXIpOworICAgICAgICB9CiAgICAgfQorCisgICAgbV9qaXQuaml0Q29kZSgpLT5maW5hbGl6
ZUNhdGNoT1NSRW50cnlwb2ludHMoKTsKKwogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4ID09IG1f
b3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIAogICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25F
bmFibGVkKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhl
Y3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NyArNDUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNO
YXR1cmFsTG9vcHMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJhc2ljIGJsb2Nr
IGV4ZWN1dGlvbiBjb3VudHMgYmFzZWQgb24gbG9vcCBkZXB0aC4KICAgICAgICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7
CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2spCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3Vu
dCA9IHBvdygxMCwgbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7Cisg
ICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9jcHNO
YXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBFc3RpbWF0ZSBicmFuY2ggd2VpZ2h0cyBiYXNlZCBvbiBleGVjdXRpb24gY291bnRz
LiBUaGlzIGlzbid0IHF1aXRlIGNvcnJlY3QuIEl0J2xsCkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAg
ICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGll
clVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVsaXN0JiBlbnN1
cmVHbG9iYWxGVAogICAgIHJldHVybiBmdGxXaGl0ZWxpc3Q7CiB9CiAKK3VzaW5nIE5hdHVyYWxM
b29wID0gQ1BTTmF0dXJhbExvb3A7CisKIGNsYXNzIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogcHVibGljOgogICAgIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2Uo
R3JhcGgmIGdyYXBoKQpAQCAtODEsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0
aW9uczo6dXNlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNv
bXBpbGU7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwot
ICAgICAgICBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fbmF0dXJhbExv
b3BzOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgICAgICBD
UFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fY3BzTmF0dXJhbExvb3Bz
OwogICAgICAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxM
b29wVG9Mb29wSGludCA9IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKG5hdHVyYWxMb29w
cyk7CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTG9vcEhpbnREZXNjcmlwdG9yPiB0aWVy
VXBIaWVyYXJjaHk7CkBAIC0xODIsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVk
PiBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChjb25zdCBOYXR1cmFsTG9vcHMmIG5hdHVy
YWxMb29wcykKKyAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxk
TmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKGNvbnN0IENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExv
b3BzKQogICAgIHsKICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVk
PiBuYXR1cmFsTG9vcHNUb0xvb3BIaW50OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMCArMTM0LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAhaXRl
ci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJl
IGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUuCi0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAg
ICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZv
ciBTZXRBcmd1bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpOwogCiAgICAgICAgICAg
ICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJp
YWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTUsMTggKzE5NSwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCAhKG1heUV4aXQobV9ncmFwaCwgbm9kZSkgPT0gRXhpdHMgJiYgIW5vZGUtPm9yaWdpbi5leGl0
T0spKTsKIAogICAgICAgICAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHByZXZpb3VzTm9kZSA9IGJsb2NrLT5hdChpIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIWNsb2JiZXJzRXhpdFN0YXRlKG1fZ3JhcGgsIHByZXZpb3VzTm9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCi0gICAgICAgICAg
ICAgICAgICAgICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9y
RXhpdCk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAg
ICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgISghcHJldmlvdXNOb2RlLT5v
cmlnaW4uZXhpdE9LICYmIG5vZGUtPm9yaWdpbi5leGl0T0spCi0gICAgICAgICAgICAgICAgICAg
ICAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwg
bm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Cisg
ICAgICAgICAgICAgICAgICAgIC8vTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAx
KTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAvLyAgICAhY2xvYmJlcnNFeGl0U3Rh
dGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCAh
bm9kZS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5v
cCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4u
Zm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAg
ICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAg
ICAgICAgICAgICAgICAgICAvLyAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYg
bm9kZS0+b3JpZ2luLmV4aXRPSykKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+
b3AoKSA9PSBFeGl0T0sKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2lu
LmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwg
IW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw4ICs3NCw4IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQcm9m
aWxlcjo6T3JpZ2luU3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVkIEZU
TCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRDb2Rl
OjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5lbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAg
ICAgICBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNT
QU5hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0g
IiAgICAiOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpzQm9k
eSI7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAg
ICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2VD
b21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJlYWR5
LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBO
b2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBh
dXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9n
cmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxv
Y2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0g
bV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVu
dHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwog
ICAgICAgICAgICAgCkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERG
Rzo6QmFzaWNCbG9jayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAg
ICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdl
dCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVz
KG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VDb21w
aWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwg
KnRhcmdldCwgIiB3aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+
Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRlOgog
ICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgaWYgKCFtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCks
IG1faGlnaEJsb2NrKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9t
aW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2Zv
cndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3Mp
CiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVy
X2NhdGNoKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVf
T1Aob3BfY3JlYXRlX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1
bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJh
cmdzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfY3JlYXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3RvX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKQEAgLTc5NSw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FWlosIGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNp
emVfdCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRP
cGVyYXRpb25fRVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlv
bl9FSiwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oU19KSVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwNzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3OSw2ICs1NzksMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBKSVQ6OgogICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1l
KCk7CisgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RUpTIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9u
IDIyMDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODUzLDYgKzg1MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
YXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwg
cmVnVDApOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiop
Cit7CisgICAgLy8gT09QUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
IHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyNCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICAvLyBPT1BTOiBhZGQgYSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorCisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZz
ZXQpOworICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5W
YWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJu
VmFsdWVHUFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBpZiAo
c2hvdWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAg
fQorfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1MTQsNiArMTUxNCwxOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVy
YXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9E
RkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0K
KworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0
YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisg
ICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5y
ZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9
IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1p
emVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHR5cGVkZWYgY2hh
ciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJ
T04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0
eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0
ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9K
SVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBj
aGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50
MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9K
SVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0
cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUq
LCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRP
cGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk2LDYgKzM5Nyw3IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYg
RU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJf
dCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFs
dWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsx
NjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBM
TElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2Nh
dGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
Kj4ocGNbMV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVj
a2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVy
YW5kKS5qc1ZhbHVlKCkpOworICAgIH0pOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9y
KFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYg
KzEyNiw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3Vu
Y2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZN
KiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRl
cm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShW
TSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIy
MDcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc3LDYgKzE5NzcsMTEgQEAgX2xsaW50X29wX2Nh
dGNoOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50
X29wX2FmdGVyX2NhdGNoOgorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2FmdGVyX2NhdGNoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9hZnRlcl9jYXRjaF9sZW5n
dGgpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzEzKQorKysgU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJ
CTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFs
bFB0clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEg
LyogU2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNp
bmdsZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFF
QjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkw
MERBREUzNiAvKiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5
MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
cmlnYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAK
IAkJCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJ
MTQ2OTQxOTgxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkx
NDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5
NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1
MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5
MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEEx
RDNGIC8qIFNlY29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3Jh
cGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZp
c2lvbiAyMjA3MTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNp
bmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFz
cyBCYWNrd2FyZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3Jh
cGgpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVz
ZSAiI2VuZCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4K
LSAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0K
LSAgICBjbGFzcyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3Jh
cGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1f
bm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSBy
b290KCkKLSAgICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICBy
ZXN1bHQubV9ub2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290
ID09IG90aGVyLm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9v
bCBpc1Jvb3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7
Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFw
aDo6Tm9kZSBtX25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07
Ci0KLSAgICBjbGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAg
ewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2Rl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJl
dHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBy
ZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUu
aXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwg
ZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBtX2hhc1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5u
b2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAg
ICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQo
bV9zZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVu
YW1lIEdyYXBoOjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsK
LSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAg
IHB1YmxpYzoKLSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAo
Z3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwot
ICAgICAgICAgICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3Bl
cmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21h
cFtpbmRleCAtIDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0
X2Nhc3Q8TWFwKj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJh
dG9yW10oY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUu
aXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJl
dHVybiBtX21hcFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBv
cGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8
VD4gbV9tYXA7Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0g
U2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdy
YXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2lu
Z2xlUm9vdE1hcDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsK
IAogICAgIEJhY2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+
Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJp
bnQocm9vdE5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5u
b2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0
b3JzLmgJKHJldmlzaW9uIDIyMDcxMykKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAg
IHVzaW5nIExpc3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3Jh
cGgmIGdyYXBoLCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3Jh
cGgpCiAgICAgICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkp
CkBAIC00Nyw4ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1
ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAot
ICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0g
ICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJl
ZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAg
ICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9z
dCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0
cy4KQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VG
cm9udGllck9mKGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAg
ewogICAgICAgICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJP
ZigKICAgICAgICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8v
IFVzZWZ1bCBmb3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9t
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBz
ZXQ7CiAgICAgICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1w
bCgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAg
ICAgCi0gICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2Yo
Y29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3Jh
cGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29u
c3QKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBm
b3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSAr
NzEyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgog
ICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAot
ICAgICAgICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikgY29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikgY29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmts
aXN0ID0gZnJvbTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxl
ICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9k
ZSBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJ
bkRvbWluYW5jZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9v
dEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUg
V1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lu
Y2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgewor
cHVibGljOgorICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMg
cm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkg
eyByZXR1cm4gIiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUg
R3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9u
b2RlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2Rl
IHJvb3QoKQorICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAg
ICAgIHJlc3VsdC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX25vZGUgPT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhl
ci5tX2lzUm9vdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9v
dEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jv
b3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAg
IHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2lzUm9vdCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFs
c2UgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RH
cmFwaFNldCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+Owor
cHVibGljOgorICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBi
b29sIGFkZChjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290
KCkpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAg
ICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCBy
ZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgp
KQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAg
ICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29s
IGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jv
b3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3Nl
dC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAg
ICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludCht
X3NldCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1f
c2V0OworICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJv
b3RNYXAoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01h
cDxUPigpKQorICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAm
JiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAg
LCBtX3Jvb3QoV1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9
IFQoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNp
emUoKSArIDE7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAg
ICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJl
dHVybiBtX21hcFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10o
c2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxT
aW5nbGVSb290TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltd
KGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAg
ICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUo
KV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4o
dGhpcykpW25vZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6
OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+Owor
ICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVz
aW5nIExpc3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgm
IGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5
cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAg
ICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7Cisg
ICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAg
ICAgICBtX3Jvb3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlQobV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUg
cm9vdCgpIGNvbnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9
CisKKyAgICBMaXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGFzc2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgp
KQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3Qg
cmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBo
LnN1Y2Nlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2Rl
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29y
cyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0
ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4g
TGlzdCB7IH07CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2Rl
Lm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2Rl
Lm5vZGUoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07
CisgICAgICAgIH0KKworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFt
ZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQor
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAg
ICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWlu
ZGV4KQorICAgICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgu
bm9kZShpbmRleCAtIDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKwor
ICAgIENTdHJpbmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQ
cmludFN0cmVhbSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiPG51bGw+Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAg
ICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91
dC50b0NTdHJpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2Rlcygp
OyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAg
ICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBv
dXQucHJpbnQoZHVtcChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAg
UHJlZHM6ICIpOworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAg
Zm9yIChOb2RlIHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAg
ICAgIG91dC5wcmludChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0
LnByaW50KCJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAg
ICAgICAgICAgY29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBz
dWNjZXNzb3IgOiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgZHVtcChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAg
ICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0
SXNDb25zaXN0ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAg
ICAvLyBXZSBleHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGls
ZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0
aGUgY29uc3RydWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBp
dHMgcm9vdHMoKQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1
c2VyIHdpbGwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExp
c3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUg
cmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBo
LnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNj
ZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJv
b3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlz
dCA9PSBtX3Jvb3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBt
X2dyYXBoOworICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFw
aDo6U2V0IG1fcm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1
c2luZyBXVEY6OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3Jh
cGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318150</attachid>
            <date>2017-08-15 12:46:24 -0700</date>
            <delta_ts>2017-08-15 14:03:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>143344</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDc1MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2OCw2ICszNjks
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZCwgND4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUs
MTAgKzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAg
ICAgICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNU
b1NraXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Y2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBw
ZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0
aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNv
ZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFmdGVyQ2F0Y2hJbmRp
Y2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGJ5dGVjb2Rl
TGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJvZmlsZXM7CisgICAg
ICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRjaEluZGljZXMpIHsK
KyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3Mu
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5kZXgpOworICAgICAg
ICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOworICAgICAgICAgICAg
bGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fscy5iaXRDb3VudCgp
KTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGxp
dmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsK
KworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsr
aSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5k
ID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNb
YWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7CisgICAgICAg
ICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNhdGNoUHJvZmlsZXMp
OworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQo
dGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0
aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29kZUJs
b2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5k
Q291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMg
PSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMg
ZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1
bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVlUHJv
ZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJvZmls
ZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwxMiBAQCB2b2lkIENv
ZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9maWxl
QnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBw
cm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAg
ICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKQEAgLTI3
NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9y
CiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNv
ZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9
IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKKyAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOworICAgICAgICBpZiAo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9mZnNldCkgeworICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChmb3VuZCk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVz
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
cj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxl
LCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxl
VmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zm
c2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNl
dCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0K
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBp
bnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9m
aWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsK
Kworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkK
KyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1vcmUgc3R1ZmYgdGhh
biB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGUgb3VyIHZhbHVlIHByb2ZpbGVzCisgICAg
ICAgIC8vIHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0g
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9m
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5k
T3BlcmFuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAg
ICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1
ZmZlci5nZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxv
Y1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTcwLDYgKzM5NzAsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2F0Y2goUmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bj
b2RlKG9wX2FmdGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2Fs
U2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0aW9uYWwgdGhpbmdz
LgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcuaAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dy
YXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dyYXBoPFNT
QUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NGRyk7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ0ZHKEdyYXBoJiBn
cmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAg
ICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+KGdyYXBoKSkKICAg
ICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNp
Y0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQog
ICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXND
YXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICwg
Y2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNv
dW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAgICAgICB3aGls
ZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAgICAgICAgICAg
IGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAgICAgICBjYXNl
IFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIERp
cmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFVucmVh
Y2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQ
aGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3Ig
dHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2ls
bCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNhc2UgQ2hlY2s6
IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9j
ayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsKICAgICAKICAg
ICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9pbnQ7CiAgICAgYm9v
bCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29sIGNm
YUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJy
YXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiREZHQ0ZH
LmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhp
dFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAsNyArMTEzMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3Qg
YmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0
d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0
b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0
aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxv
Y2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91
bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3
YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50
IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0
byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9j
ayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50
QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFy
Z3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVt
aXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0
b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlw
ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRv
R3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5
cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTU3LDYgKzUxNjIsMTE4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBv
cF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRy
dWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBv
cF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBm
cmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAg
ICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUu
cG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQ
cmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRl
ZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBX
VEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0Fy
ZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0
aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
UHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19j
YXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25z
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5k
LnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rp
b25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1
bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVk
aWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFBy
ZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0
aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNv
bXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAg
ICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRl
ZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICAvLyBX
ZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJlIHRvIE9TUiBlbnRlciwg
d2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2FmdGVyX2NhdGNoLgorICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
KworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+
PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRo
YW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBp
bmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdl
J3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cg
dG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2Fs
cyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJn
dW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBh
ZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcElu
Zm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICAr
K251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJ
bmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1Rv
U2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJlY2F1c2Ug
d2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZlIGxvY2Fs
cy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3Vy
IGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUg
YmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0
byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJy
YXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJn
dW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0
KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmly
c3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0
Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAg
ICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpS
ZWd1bGFyKTsKQEAgLTYxNTIsOCArNjI2OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBp
cyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJs
b2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjEwLDEw
ICs2MzI5LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAg
ICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1f
dW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsK
KwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxs
VW5yZWFjaGFibGVCbG9ja3MoKTsKKworICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQU0NGRz4obV9ncmFwaCk7CiAgICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTYyMjQsNyAr
NjM0NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygw
KS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFy
YW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRlclNsb3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50
cnlCeXRlY29kZUluZGV4KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJc
biIpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2Rl
IHJvb3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBt
X2dyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9j
aygwKTsKKyAgICB9CisKKyAgICBMaXN0IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVz
dWx0OworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dHMpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01h
cCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBw
cml2YXRlOgogICAgIEdyYXBoJiBtX2dyYXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGlj
IFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsKK3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBo
KQorICAgICAgICA6IFNpbmdsZVJvb3RHcmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7
CisgICAgICAgIEFTU0VSVChncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsK
KwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+
Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGdyYXBoLm1fY3BzQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RD
RkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsK
KyAgICByZXR1cm4gKmdyYXBoLm1fc3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1l
bnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNl
ZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0g
b25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBh
bmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92
ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNp
emUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVh
ZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRp
bWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAg
ICAgIAogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0lu
UHJlT3JkZXIoKTsKICAgICAgICAgCkBAIC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWVbaV07Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykp
IHsKICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAg
ICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC03NzksNyArNzc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJp
Y3QgZG9taW5hdGlvbiBiZWNhdXNlIHRoaXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBv
d24gYmxvY2sgaWYKICAgICAgICAgICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlv
biBpbiB0aGUgYmxvY2suIENsZWFybHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAg
ICAgICAgIC8vIGl0c2VsZiwgdGhlIHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3Qg
ZG9taW5hdGUgdXMuCi0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmlj
dGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9zc2FEb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgICBJdCBzdHJpY3RseSBkb21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0
ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Js
b2NrKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0
b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaC0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaC5zZXROb2RlKGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0OSw2ICsyNDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlECiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRf
cGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2FzZSBvcF9hZnRlcl9jYXRj
aDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3Ro
OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNiArMTQxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpKQogICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1cmVC
YWNrd2FyZHNEb21pbmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7Cisg
ICAgU1NBRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMm
IG1fYmFja3dhcmRzRG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
OCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJs
b2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAg
ICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAg
IGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rv
cik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAu
CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3Mo
KTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5
NSw4IEBAIFZlY3RvcjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBkdW1w
SGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91
c09yaWdpbik7CiAgICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgbV9n
cmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRv
cnMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAgIGNv
bnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVBy
ZWZpeCA9ICIgICAgICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0
OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgor
ICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJl
dHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRv
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwxNiArMzUsMzIgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdU
Rjo6RG9taW5hdG9yczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3Mg
RG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6
RG9taW5hdG9yczxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8
Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKIAor
dXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU0RvbWlu
YXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2
YWx1ZT46OnR5cGU+CitDUFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBo
JiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5hdG9ycyYg
ZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBo
LmVuc3VyZVNTQURvbWluYXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDExICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICAgICAg
LCBtX3Jlc3VsdCh0cnVlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9ybSA9PSBT
U0EpOwogICAgIH0KICAgICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkK
ICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJlc3VsdCA9
IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBt
X2Jsb2NrKTsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgIkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uubm9kZSgp
LT5vd25lciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5NCw2ICsxOTk0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBDaGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgog
ICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6
CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3Jt
YXQgeworZW51bSBGbHVzaEZvcm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBG
bHVzaGVkSW50MzIsCiAgICAgRmx1c2hlZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRl
ICJERkdOYXR1cmFsTG9vcHMuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAj
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRl
Y29kZUxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAt
NzMsNyArNzIsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9w
bGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9w
cm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9jZmcoc3Rk
OjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlx
dWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1f
Zml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0
aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTQwOSw5ICs0MDgsMTMgQEAg
Ym9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCitz
dGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9kZShjb25zdCBDUFNDRkc6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUubm9kZSgpOyB9CitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9k
ZShCYXNpY0Jsb2NrKiBibG9jaykgeyByZXR1cm4gYmxvY2s7IH0KKwogdm9pZCBHcmFwaDo6ZHVt
cEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNC
bG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0
KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIg
KCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIp
OiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JU
YXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZp
eCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2lu
LnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8g
IiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6
ICIiLCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAi
IiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0
aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDog
IiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00MjIsMTggKzQyNSwyNiBAQCB2b2lkIEdyYXBoOjpkdW1w
QmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBp
ZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBt
X3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAg
IG91dC5wcmludCgiXG4iKTsKLSAgICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZh
bGlkKCkpIHsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBt
X2RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVk
QnkoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNl
IEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAi
XG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZy
b250aWVyOiAiLCBtX2RvbWluYXRvcnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9j
a0xpc3QoMSwgYmxvY2spKSwgIlxuIik7CisKKyAgICBhdXRvIHByaW50RG9taW5hdG9ycyA9IFsm
XSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21p
bmF0ZWQgYnk6ICIsIGRvbWluYXRvcnMuZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgZG9taW5hdG9ycy5ibG9ja3NE
b21pbmF0ZWRCeShibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBE
b21pbmFuY2UgRnJvbnRpZXI6ICIsIGRvbWluYXRvcnMuZG9taW5hbmNlRnJvbnRpZXJPZihibG9j
ayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFu
Y2UgRnJvbnRpZXI6ICIsCisgICAgICAgICAgICBkb21pbmF0b3JzLml0ZXJhdGVkRG9taW5hbmNl
RnJvbnRpZXJPZih0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZG9taW5h
dG9ycyk+Ojp0eXBlOjpMaXN0IHsgYmxvY2sgfSksICJcbiIpOworICAgIH07CisKKyAgICBpZiAo
dGVybWluYWxzQXJlVmFsaWQoKSkgeworICAgICAgICBpZiAobV9zc2FEb21pbmF0b3JzKQorICAg
ICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX3NzYURvbWluYXRvcnMpOworICAgICAgICBlbHNl
IGlmIChtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWluYXRvcnMoKm1fY3Bz
RG9taW5hdG9ycyk7CiAgICAgfQorCiAgICAgaWYgKG1fYmFja3dhcmRzRG9taW5hdG9ycyAmJiB0
ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3
YXJkcyBkb21pbmF0ZXMgYnk6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+ZG9taW5hdG9yc09m
KGJsb2NrKSwgIlxuIik7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBk
b21pbmF0ZXM6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxv
Y2spLCAiXG4iKTsKQEAgLTQ0NiwyOSArNDU3LDMzIEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hl
YWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1i
ZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJc
biIpOwotICAgIGlmIChtX25hdHVyYWxMb29wcykgewotICAgICAgICBpZiAoY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisKKyAgICBh
dXRvIHByaW50TmF0dXJhbExvb3BzID0gWyZdIChhdXRvJiBuYXR1cmFsTG9vcHMpIHsKKyAgICAg
ICAgaWYgKGNvbnN0IGF1dG8qIGxvb3AgPSBuYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5z
OiIpOwogICAgICAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7
CisgICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZCh1bmJveExvb3BOb2RlKGxv
b3AtPmF0KGkpKS0+aW5kZXgpOwogICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKICAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nTG9vcHMgPSBuYXR1
cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwogICAgICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcg
bG9vcCBoZWFkZXJzOiIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
LCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnVuYm94TG9vcE5vZGUoY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSkpOwog
ICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICB9Ci0gICAgfQorICAgIH07CisK
KyAgICBpZiAobV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1f
c3NhTmF0dXJhbExvb3BzKTsKKyAgICBlbHNlIGlmIChtX2Nwc05hdHVyYWxMb29wcykKKyAgICAg
ICAgcHJpbnROYXR1cmFsTG9vcHMobV9jcHNOYXR1cmFsTG9vcHMpOworCiAgICAgaWYgKCFibG9j
ay0+cGhpcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5v
ZGVzOiIpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUo
KTsgKytpKSB7CkBAIC01MDIsOCArNTE3LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4
cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwg
bV91bmlmaWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0
ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBB
cmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwot
ICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9h
cmd1bWVudHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1
ZSksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSog
bGFzdE5vZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY1NywxMCBAQCB2b2lkIEdyYXBoOjpoYW5k
bGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxp
dHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmts
aXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBw
ZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03
OTgsOSArODE3LDEwIEBAIHZvaWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZv
aWQgR3JhcGg6OmludmFsaWRhdGVDRkcoKQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7
Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9
IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBt
X3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg3MCwzNyBAQCBCbG9ja0xp
c3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAg
ICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAg
ICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9j
ayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAg
ICAgICAgICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBv
dmVyIHByZSBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgIC8vIGJlZm9y
ZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBb
Jl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBh
ID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJl
c3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0g
cmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21p
bmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikK
KyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9y
cygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODYzLDcgKzkwOCw4IEBA
IEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCBy
ZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlz
dC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNo
IChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtODc2LDYg
KzkyMiwzMSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkpIHsKKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRv
cnMpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcmV2ZXJzZSBwb3N0IG9y
ZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlu
Z3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVz
dWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5z
aXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0
W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3Jz
LmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGkgPiBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAg
ICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsK
KyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMwICsxNTQzLDQzIEBA
IHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFp
bHVyZSgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVt
cChibG9jayksICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQog
Ci1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBH
cmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRv
cnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5h
dG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21p
bmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWlu
YXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9y
cz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9kb21pbmF0b3JzOworICAgIFJFTEVBU0VfQVNTRVJU
KG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX3NzYURv
bWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NB
RG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1Q
cmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogewotICAgIGlmICghbV9w
cmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51
bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX2Nwc05h
dHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7
CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCitTU0FOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewotICAgIGVuc3VyZURv
bWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxM
b29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0gICAgcmV0dXJu
ICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKKyAg
ICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykKKyAg
ICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29w
cz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJk
c0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9mb3JtID09IFNTQSk7IC8vIFdlIGNvdWxkIGNoYW5nZSB0aGlzLCBidXQgaXQncyBvbmx5IHVz
ZWQgaW4gU1NBIGZvciBub3csIGFuZCB3ZSBkb24ndCBuZWVkIHR3byBncmFwaCBmaWVsZHMgeWV0
IGZvciB0d28gdHlwZXMgb2YgYmFja3dhcmRzIENGRy4KICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZH
KQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZH
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1MDMsNiArMTU4Nyw3
IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygKIAogQmFja3dhcmRz
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0
b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
Y2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5h
dG9yczsKQEAgLTE1MTAsNiArMTU5NSw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjpl
bnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1cmVD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQogICAgICAg
ICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTYxMyw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5sb2Nh
bCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9hcmd1
bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJndW1lbnRd
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDc1
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBDb2RlQmxvY2s7CkBAIC01NiwxMCArNjAsMTcgQEAgY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xh
c3MgQmFja3dhcmRzRG9taW5hdG9yczsKIGNsYXNzIENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzOwotY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29w
czsKIGNsYXNzIEZsb3dJbmRleGluZzsKLWNsYXNzIE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBv
c3ROdW1iZXJpbmc7CisKK2NsYXNzIENQU0NGRzsKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNp
bmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRv
cnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFs
TG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FD
Rkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAtOTAxLDkgKzkx
MiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVE
b21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmlu
ZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9t
aW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRvcnMmIGVuc3Vy
ZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxM
b29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAg
ICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21p
bmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05MjEs
NyArOTMzLDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29k
ZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNC
bG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBt
X2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAg
VmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVk
SlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVl
SGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxMSArOTY5LDExIEBAIHB1Ymxp
YzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0
aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVm
ZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJh
c2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAg
ICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0
aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9y
PEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZl
Y3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBT
ZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsK
ICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKQEAgLTk4MiwxMCArOTk1LDEyIEBA
IHB1YmxpYzoKICAgICBIYXNoU2V0PHN0ZDo6cGFpcjxKU09iamVjdCosIFByb3BlcnR5T2Zmc2V0
Pj4gbV9zYWZlVG9Mb2FkOwogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5
cGU6OkRlc2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+
PiBtX2RvbUpJVFNuaXBwZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3JzPiBtX2Rv
bWluYXRvcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9z
dE51bWJlcmluZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25hdHVyYWxM
b29wczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q1BTRG9taW5hdG9ycz4gbV9jcHNEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
U0FEb21pbmF0b3JzPiBtX3NzYURvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU05h
dHVyYWxMb29wcz4gbV9jcHNOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQU5h
dHVyYWxMb29wcz4gbV9zc2FOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQUNG
Rz4gbV9zc2FDRkc7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0NGRz4gbV9jcHNDRkc7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9yczsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+IG1fY29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xMDA5LDYgKzEwMjQsOCBAQCBwdWJsaWM6CiAgICAgUmVm
Q291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxl
ZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93
SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxB
YnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw2MSBAQCBzdGF0
aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBo
LmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3Qt
PmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZh
bHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVy
ZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9
IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+
dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52
YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBm
b3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAg
ICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2lu
dCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91
bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZh
bHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1
cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0
YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsg
KytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSku
Y2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
aGVuIHN1cHBvcnRpbmcgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTCwgd2UgbmVlZCB0
byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAvLyB3aGF0IHdlIGRvIGhlcmU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBmb3Jt
YXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShT
cGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZs
dXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3Vt
ZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hl
ZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5
cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVz
aGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5z
ZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZs
dXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNl
dFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1l
bnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNo
IGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSku
Y2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0g
ICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBt
X2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5u
dW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRU
YWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAg
IGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAgICAgICAg
ICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAg
ICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5j
ZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNyArMzcxLDcgQEAgaW5saW5lIGJvb2wgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShi
YXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4g
Y2hhbmdlZDsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBU
YWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw3IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoKQogICAgIGNvbW1vbi5zaHJpbmtUb0Zp
dCgpOwogICAgIG9zckVudHJ5LnNocmlua1RvRml0KCk7CiAgICAgb3NyRXhpdC5zaHJpbmtUb0Zp
dCgpOworICAgIGNhdGNoRW50cnlwb2ludHMuc2hyaW5rVG9GaXQoKTsKICAgICBzcGVjdWxhdGlv
blJlY292ZXJ5LnNocmlua1RvRml0KCk7CiAgICAgbWluaWZpZWRERkcucHJlcGFyZUFuZFNocmlu
aygpOwogICAgIHZhcmlhYmxlRXZlbnRTdHJlYW0uc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
NiArNjksMzIgQEAgcHVibGljOgogICAgICAgICAgICAgb3NyRW50cnksIG9zckVudHJ5LnNpemUo
KSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5k
ZXgpOwogICAgIH0KKworICAgIENhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoT1NSRW50cnlEYXRh
Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxDYXRjaEVudHJ5cG9pbnREYXRhLCB1bnNpZ25lZD4oCisg
ICAgICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLCBjYXRjaEVudHJ5cG9pbnRzLnNpemUoKSwgYnl0
ZWNvZGVJbmRleCwKKyAgICAgICAgICAgIFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhKiBp
dGVtKSB7IHJldHVybiBpdGVtLT5tX2J5dGVjb2RlSW5kZXg7IH0pOworICAgIH0KKworICAgIHZv
aWQgZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCkKKyAgICB7CisgICAgICAgIHN0ZDo6c29y
dChjYXRjaEVudHJ5cG9pbnRzLmJlZ2luKCksIGNhdGNoRW50cnlwb2ludHMuZW5kKCksIFtdIChj
b25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBhLCBjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBi
KSB7CisgICAgICAgICAgICByZXR1cm4gYS5tX2J5dGVjb2RlSW5kZXggPCBiLm1fYnl0ZWNvZGVJ
bmRleDsKKyAgICAgICAgfSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB1bnNpZ25l
ZCBwcmV2aW91c0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBDYXRjaEVudHJ5cG9pbnRE
YXRhJiBlbnRyeXBvaW50IDogY2F0Y2hFbnRyeXBvaW50cykgeworICAgICAgICAgICAgQVNTRVJU
KHByZXZpb3VzSW5kZXggPCBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAg
ICBwcmV2aW91c0luZGV4ID0gZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0K
KyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hFbnRyeXBvaW50KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hG
b3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hFbnRyeXBvaW50
cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2Rl
T2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBAIC0xMzIs
NiArMTU4LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAg
ICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVu
dHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6
Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVy
eT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFy
aWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgV3JpdGVC
YXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5
UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisKKyAgICBNYWxsb2NQdHI8SlNWYWx1
ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVt
aXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgp
CiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAg
ICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1h
bGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAg
IG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7
CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlC
dWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1f
Z3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29k
ZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NywyMyBAQCB2b2lkKiBK
SVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRD
b21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJ
VENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3Rv
cjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
YmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNC
bG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5
IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBv
aW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hl
YWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpu
b3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwg
YmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJU
KCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBu
b3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93
IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0
ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5
ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2lu
LCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1f
ZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVh
ZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90
b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNl
T1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1h
dD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
KCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2Ugewog
Cit1c2luZyBOYXR1cmFsTG9vcCA9IFNTQU5hdHVyYWxMb29wOworCiBzdHJ1Y3QgTG9vcERhdGEg
ewogICAgIExvb3BEYXRhKCkKICAgICAgICAgOiBwcmVIZWFkZXIobnVsbHB0cikKQEAgLTc0LDgg
Kzc2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxs
cHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7
CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICBtX2dyYXBoLmVuc3VyZUNvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKQEAgLTgzLDcg
Kzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
bnVtTG9vcHMoKSk7CisgICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+bnVtTG9vcHMoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBz
ZXQgb2YgdGhpbmdzIGVhY2ggbG9vcCB3cml0ZXMgdG8sIG5vdCBpbmNsdWRpbmcgYmxvY2tzIHRo
YXQKICAgICAgICAgLy8gYmVsb25nIHRvIGlubmVyIGxvb3BzLiBXZSBmaXggdGhpcyBsYXRlci4K
QEAgLTk4LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2stPmNmYUhh
c1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBs
b29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsK
ICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AtPmluZGV4KCldOwpAQCAtMTE2LDE0
ICsxMTgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBGb3IgZWFjaCBsb29wOgogICAgICAgICAv
LyAtIElkZW50aWZ5IGl0cyBwcmUtaGVhZGVyLgogICAgICAgICAvLyAtIE1ha2Ugc3VyZSBpdHMg
b3V0ZXIgbG9vcHMga25vdyB3aGF0IGl0IGNsb2JiZXJzLgotICAgICAgICBmb3IgKHVuc2lnbmVk
IGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRl
eC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9v
cEluZGV4ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4
LS07KSB7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKICAgICAgICAgICAgIExvb3BEYXRhJiBk
YXRhID0gbV9kYXRhW2xvb3AuaW5kZXgoKV07CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAoCi0gICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwogICAgICAgICAgICAgICAgIG91dGVyTG9v
cDsKLSAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5p
bm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCisgICAgICAgICAgICAgICAgb3V0ZXJMb29w
ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxv
b3ApKQogICAgICAgICAgICAgICAgIG1fZGF0YVtvdXRlckxvb3AtPmluZGV4KCldLndyaXRlcy5h
ZGRBbGwoZGF0YS53cml0ZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBoZWFkZXIgPSBsb29wLmhlYWRlcigpOwpAQCAtMTM3LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaGVhZGVyLT5wcmVkZWNl
c3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vzc29yc1tpXTsKLSAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIsIHByZWRlY2Vzc29yKSkKKyAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIs
IHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgICAgICBwcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE5MSw3ICsxOTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxvb3BTdGFjazsKICAgICAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkgewotICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxv
Y2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFs
b29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0xOTksNyAr
MjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yICgKICAgICAgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogY3VycmVudCA9IGxvb3A7CiAgICAgICAgICAgICAgICAgY3VycmVudDsK
LSAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJN
b3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFw
aC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKICAgICAg
ICAgICAgICAgICBsb29wU3RhY2suYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBSZW1lbWJlcjogdGhlIGxvb3Agc3RhY2sgaGFzIHRoZSBpbm5lci1tb3N0IGxv
b3AgYXQgaW5kZXggMCwgc28gaWYgd2Ugd2FudApAQCAtMzE4LDcgKzMyMCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIGJlY2F1c2UgbW9zdCBsb29wcyBhcmUgc21hbGwgYW5kIG1vc3QgYmxvY2tz
IGJlbG9uZyB0byBmZXcgbG9vcHMuCiAgICAgICAgIGZvciAodW5zaWduZWQgYm9keUluZGV4ID0g
bG9vcC0+c2l6ZSgpOyBib2R5SW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1
YkJsb2NrID0gbG9vcC0+YXQoYm9keUluZGV4KTsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBzdWJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2sp
OworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CiAgICAgICAgICAgICBpZiAoIXN1Ykxv
b3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBz
dWJQcmVIZWFkZXIgPSBtX2RhdGFbc3ViTG9vcC0+aW5kZXgoKV0ucHJlSGVhZGVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xp
dmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7
Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9
PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAg
ICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5p
c0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVy
LT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5h
ZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihH
cmFwaCYgZ3JhcGgsIEJsb2NrSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQsIEJhc2ljQmxvY2sq
IGJsb2NrKQogeworICAgIC8vIE9PUFM6IG1heWJlIHVzZSBoYXNoc2V0IGZvciB0aGlzIGFzc2Vy
dC4KKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9j
aykpOyAvLyBBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIQorCiAgICAgLy8g
RklYTUU6IElmIHdlIHJ1biB0aGlzIHV0aWxpdHkgb24gU1NBIElSLCB0aGVuIHdlIG1heSBlbmQg
dXAgd2l0aCBhIGJpemFycmUgYXJyYW5nZW1lbnQgb2YKICAgICAvLyBVcHNpbG9ucyBhbmQgUGhp
cywgbGlrZToKICAgICAvLwpAQCAtNjksNyArNzIsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVI
ZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIHRoZSBtYXggb2YgdGhl
IGZyZXF1ZW5jaWVzIG9mIHRoZSBsb29wIGJvZHkncyBub24tbG9vcCBwcmVkZWNlc3NvcnMuCiAg
ICAgZmxvYXQgZnJlcXVlbmN5ID0gMDsKICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29y
IDogYmxvY2stPnByZWRlY2Vzc29ycykgewotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3Jz
LT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3Bz
RG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNl
c3Nvci0+ZXhlY3V0aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBCYXNpY0Js
b2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNl
c3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAg
ICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBw
cmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRl
Y2Vzc29yc1twcmVkZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7
CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsx
MzMsMTYgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAo
dW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsg
bG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29w
SW5kZXggPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgt
LTspIHsKKyAgICAgICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5t
X2Nwc05hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogZXhpc3RpbmdQcmVIZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05l
d1ByZUhlYWRlciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3Nv
ckluZGV4ID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJ
bmRleC0tOykgewotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9v
cC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHBy
ZWRlY2Vzc29yKSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9
IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3Nvcklu
ZGV4LS07KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29w
LmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCkubm9kZSgpLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgZXhpc3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY4
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1
bCBpZiBpdCdzIHBvc3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAg
ICAgICAgICAvLyBpZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9l
c24ndCBhbGxvdyBmb3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2lu
IG9mIHRoZSBsb29wIGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJl
LWhlYWRlci4KLSAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFk
ZXIoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVI
ZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAg
ICAgICAgICAgICAgJiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhp
dE9LKQogICAgICAgICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0
ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhl
Y3V0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAg
Ym9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50
VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9k
ZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9j
a0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBA
QCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBJbnQ1
MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAg
Y2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Ci0KLWNsYXNz
IE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0
dXJhbExvb3BzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9v
cHMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxM
b29wcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3Jh
cGgubV9jZmcsIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkK
KyAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4o
Z3JhcGgpLCBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlv
bkVuYWJsZWQoKSkKICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBTmF0dXJhbExvb3AgPSBX
VEY6Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0
dXJhbExvb3A8Q1BTQ0ZHPjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAg
ICBib29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3
aXRjaDsKICAgICB9CkBAIC0xMzcyLDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAg
fQorCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgaWYgKGlzSnVtcCgpKQpAQCAtMTU0MSw2ICsxNTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKG9wKCkgPT0gSWRlbnRpdHlXaXRoUHJvZmlsZSk7CiAgICAgICAgIHJldHVybiBtX29w
SW5mby5hczxTcGVjdWxhdGVkVHlwZT4oKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9T
UkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFj
dENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7Cisg
ICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hMb2NhbFByZWRpY3Rpb24oKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1
cm4gbV9vcEluZm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigpOworICAgIH0KICAgICAKICAgICBib29s
IGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CkBAIC0xOTM2LDYgKzE5NDksMTkgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9
CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hM
b2NhbFByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENh
dGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigp
OworICAgIH0KKyAgICAKICAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
KCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZU
TC4gSW5kaWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlh
YmxlIGZyb20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50
cnlMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5v
ZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcg
dG8gdGhlIEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3Bw
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw2
NyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJu
IHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAg
aWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0
Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChq
aXRDb2RlKTsKKworICAgIERGRzo6Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50
ID0gaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5k
ZXgpOworICAgIGlmICghY2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJl
IG51bGwgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3
ZSBkaWRuJ3QgY29tcGlsZSB0aGlzCisgICAgICAgIC8vIGFmdGVyX2NhdGNoIGFzIGFuIGVudHJ5
cG9pbnQgc2luY2UgaXQgaGFkIG5ldmVyIGV4ZWN1dGVkLgorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBvbmx5IGFsbG93ZWQgdG8gT1NSIGVudGVyIGlmIHdl
J3ZlIHByb3ZlbiB3ZSBoYXZlIGNvbXBhdGlibGUgYXJndW1lbnQgdHlwZXMuCisgICAgZm9yICh1
bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgY2F0Y2hFbnRyeXBvaW50LT5tX2FyZ3Vt
ZW50Rm9ybWF0cy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGV4ZWMtPnIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7
CisgICAgICAgIHN3aXRjaCAoY2F0Y2hFbnRyeXBvaW50LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1
bWVudF0pIHsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlm
ICghdmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAg
ICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgor
ICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Jvb2xlYW4oKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6RGVhZEZs
dXNoOgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZl
LiBUaGVyZWZvcmUsIGl0J3MgYWxsb3dlZCB0byBiZSBhbnkgdHlwZS4KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAvLyBB
biBhcmd1bWVudCBpcyB0cml2aWFsbHkgYSBKU1ZhbHVlLgorICAgICAgICAgICAgYnJlYWs7IAor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0g
aml0Q29kZS0+Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQo
KTsKKyAgICBpZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJl
Z2lzdGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZz
ZXQoKV0pKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQoSW50ZXJwcmV0
ZXI6OmdldE9wY29kZUlEKGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5i
eXRlY29kZU9mZnNldCgpXS51Lm9wY29kZSkgPT0gb3BfYWZ0ZXJfY2F0Y2gpOworICAgIFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIqPihleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClbZXhl
Yy0+Ynl0ZWNvZGVPZmZzZXQoKSArIDFdLnUucG9pbnRlcik7CisgICAgdW5zaWduZWQgaW5kZXgg
PSAwOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHBy
b2ZpbGUpIHsKKyAgICAgICAgaWYgKCFWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQp
LmlzTG9jYWwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaml0Q29kZS0+Y2F0Y2hP
U1JFbnRyeUJ1ZmZlci5nZXQoKVtpbmRleF0gPSBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9v
cGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisKKyAgICByZXR1
cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5cG9pbnQtPm1f
bWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1
c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0
YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0K
IAorc3RydWN0IENhdGNoRW50cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJ
bmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8vIFdlIHVzZSB0
aGlzIHdoZW4gZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUgYXJndW1lbnRz
CisgICAgLy8gYXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmluZyBhdCBhIGNh
dGNoIGJsb2NrLgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Cit9
OworCiAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQgdGhlIE9TUiBl
bnRyeSB0aHVuayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlzIHJldHVybnMg
bnVsbCwgaXQgbWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMgcmV0dXJuZWQs
IHdlIGNhbid0IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUgUEMgdG8ganVt
cCB0by4KK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBwcmVwYXJlT1NS
RW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJERkdCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVk
ZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBAIC01NCw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVJbmRleCAhPSBV
SU5UX01BWCk7CiAgICAgICAgIAogICAgICAgICAvLyBOZWVkZWQgYnkgY3JlYXRlUHJlSGVhZGVy
KCkuCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVCbG9jayogYmFz
ZWxpbmUgPSBtX2dyYXBoLm1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgCkBAIC0xMTIsMTYgKzEx
MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhlcmUuCiAgICAgICAg
IG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisgICAgICAgIFZlY3Rv
cjxOb2RlKiwgOD4gbmV3QXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yIChpbnQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQp
IHsKICAgICAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5h
cmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsKICAgICAgICAg
ICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJndW1lbnQgZXZl
biBpZiBpdCdzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9IG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBuZXdBcmd1
bWVudHNbYXJndW1lbnRdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUs
IFNldEFyZ3VtZW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2Fy
Z3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBuZXdBcmd1bWVudHNbYXJndW1lbnRdID0gbm9k
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNl
bGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKQEAgLTEzOSw4ICsxNDEsMTcgQEAg
cHVibGljOgogICAgICAgICAgICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBpbnNl
cnRpb25TZXQsIHRhcmdldCkpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlvblNldC5leGVj
dXRlKCk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNp
emUoKSA9PSAxKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0gbmV3Um9vdDsK
KyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigpOworICAgICAg
ICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBuZXdBcmd1bWVu
dHMpOworCisgICAgICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NG
Rz4obV9ncmFwaCk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAg
ICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVj
dEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw3ICs3MjcsNyBAQCBwcml2
YXRlOgogICAgIHsKICAgICAgICAgbV9ncmFwaC5jb21wdXRlUmVmQ291bnRzKCk7CiAgICAgICAg
IG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVE
b21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAg
ICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAgcGVyZm9ybU9T
UkF2YWlsYWJpbGl0eUFuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBtX2NvbWJpbmVkTGl2ZW5l
c3MgPSBDb21iaW5lZExpdmVuZXNzKG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsOSArMzY2LDggQEAgUGxh
bjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIC8vIElmIHdlJ3JlIGRv
aW5nIHZhbGlkYXRpb24sIHRoZW4gcnVuIHNvbWUgYW5hbHlzZXMsIHRvIGdpdmUgdGhlbSBhbiBv
cHBvcnR1bml0eQogICAgIC8vIHRvIHNlbGYtdmFsaWRhdGUuIE5vdyBpcyBhcyBnb29kIGEgdGlt
ZSBhcyBhbnkgdG8gZG8gdGhpcy4KICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewotICAg
ICAgICBkZmcuZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBkZmcuZW5zdXJlTmF0dXJhbExv
b3BzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7CisgICAgICAgIGRm
Zy5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNOYXR1cmFsTG9v
cHMoKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKG1vZGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIw
NzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJE
RkdQcmVQb3N0TnVtYmVyaW5nLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUg
IkRGR0Jsb2NrTWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrV29ya2xpc3QuaCIKLSNp
bmNsdWRlICJERkdHcmFwaC5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0K
LVByZVBvc3ROdW1iZXJpbmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBoKQotewotICAg
IG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7Ci0gICAgCi0gICAgUG9zdE9yZGVy
QmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGdyYXBoLmJsb2NrKDAp
KTsKLSAgICB1bnNpZ25lZCBuZXh0UHJlTnVtYmVyID0gMDsKLSAgICB1bnNpZ25lZCBuZXh0UG9z
dE51bWJlciA9IDA7Ci0gICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5w
b3AoKSkgewotICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAgY2FzZSBWaXNp
dE9yZGVyOjpQcmU6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcHJlTnVtYmVyID0g
bmV4dFByZU51bWJlcisrOwotICAgICAgICAgICAgd29ya2xpc3QucHVzaFBvc3QoaXRlbS5ub2Rl
KTsKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogaXRlbS5ub2RlLT5z
dWNjZXNzb3JzKCkpCi0gICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzdWNjZXNzb3IpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UG9zdDoKLSAgICAg
ICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wb3N0TnVtYmVyID0gbmV4dFBvc3ROdW1iZXIrKzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1QcmVQb3N0TnVtYmVy
aW5nOjp+UHJlUG9zdE51bWJlcmluZygpIHsgfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KLXZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBFZGdlS2luZCBraW5kKQotewotICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgRm9yd2FyZEVkZ2U6Ci0gICAgICAgIG91dC5wcmludCgi
Rm9yd2FyZEVkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3Jvc3NFZGdlOgotICAg
ICAgICBvdXQucHJpbnQoIkNyb3NzRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBC
YWNrRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJCYWNrRWRnZSIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCShyZXZp
c2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkRGR0Js
b2NrTWFwLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1lbnVtIEVk
Z2VLaW5kIHsKLSAgICBGb3J3YXJkRWRnZSwKLSAgICBDcm9zc0VkZ2UsCi0gICAgQmFja0VkZ2UK
LX07Ci0KLWNsYXNzIFByZVBvc3ROdW1iZXJpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFByZVBvc3ROdW1iZXJpbmcpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGlj
OgotICAgIFByZVBvc3ROdW1iZXJpbmcoR3JhcGgmKTsKLSAgICB+UHJlUG9zdE51bWJlcmluZygp
OwotCi0gICAgdW5zaWduZWQgcHJlTnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJl
dHVybiBtX21hcFtibG9ja10ubV9wcmVOdW1iZXI7IH0KLSAgICB1bnNpZ25lZCBwb3N0TnVtYmVy
KEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wb3N0TnVt
YmVyOyB9Ci0gICAgCi0gICAgLy8gSXMgZnJvbSBhIHN0cmljdCBhbmNlc3RvciBvZiB0bz8KLSAg
ICBib29sIGlzU3RyaWN0QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0
bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcmVOdW1iZXIoZnJvbSkgPCBwcmVOdW1i
ZXIodG8pCi0gICAgICAgICAgICAmJiBwb3N0TnVtYmVyKGZyb20pID4gcG9zdE51bWJlcih0byk7
Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJh
c2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyb20gPT0gdG8gfHwg
aXNTdHJpY3RBbmNlc3Rvck9mKGZyb20sIHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1N0
cmljdERlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdEFuY2VzdG9yT2YodG8sIGZyb20pOwotICAg
IH0KLSAgICAKLSAgICBib29sIGlzRGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2lj
QmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQW5jZXN0b3JPZih0bywg
ZnJvbSk7Ci0gICAgfQotICAgIAotICAgIC8vIFRoaXMgd2lsbCBnaXZlIGEgYm9ndXMgYW5zd2Vy
IGlmIHRoZXJlIGlzIGFjdHVhbGx5IG5vIHN1Y2ggZWRnZS4gSWYgeW91IHdhbnQgdG8gZGV0ZXJt
aW5lCi0gICAgLy8gaWYgdGhlcmUgaXMgYW55IHN1Y2ggZWRnZSwgeW91IGhhdmUgdG8gZG8gaXQg
eW91cnNlbGYuCi0gICAgRWRnZUtpbmQgZWRnZUtpbmQoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNC
bG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpY3REZXNjZW5kYW50T2Yo
dG8sIGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEZvcndhcmRFZGdlOwotICAgICAgICAKLSAg
ICAgICAgaWYgKGlzQW5jZXN0b3JPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gQmFj
a0VkZ2U7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gQ3Jvc3NFZGdlOwotICAgIH0KLSAgICAK
LXByaXZhdGU6Ci0gICAgc3RydWN0IE51bWJlcmluZyB7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJl
TnVtYmVyOwotICAgICAgICB1bnNpZ25lZCBtX3Bvc3ROdW1iZXI7Ci0gICAgfTsKLQotICAgIEJs
b2NrTWFwPE51bWJlcmluZz4gbV9tYXA7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
Ci0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OkRGRzo6RWRnZUtpbmQpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsMTYgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2soKS0+
bV9sb2NrKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2Ugb25seSBkbyB0aGlzIGZv
ciB0aGUgYXJndW1lbnRzIGF0IHRoZSBmaXJzdCBibG9jay4gVGhlIGFyZ3VtZW50cyBmcm9tCisg
ICAgICAgICAgICAvLyBvdGhlciBlbnRyeXBvaW50cyBoYXZlIGFscmVhZHkgYmVlbiBwb3B1bGF0
ZWQgd2l0aCB0aGVpciBwcmVkaWN0aW9ucy4KKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+
dmFsdWU7CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8IHN0YXRpY19j
YXN0PHNpemVfdD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7ICsrYXJnKSB7CiAgICAg
ICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gcHJvZmlsZWRCbG9jaygpLT52YWx1
ZVByb2ZpbGVGb3JBcmd1bWVudChhcmcpOwogICAgICAgICAgICAgICAgIGlmICghcHJvZmlsZSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVk
aWN0KAorCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obG9ja2VyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzI1LDYgKzcyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmNhdGNoTG9jYWxQcmVkaWN0aW9uKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFJlc29sdmVTY29wZUZv
ckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6CiAgICAgICAgIGNhc2UgR2V0RHluYW1pY1Zhcjogewog
ICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVUb3ApOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0
U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CiAKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgU1NBQ2FsY3VsYXRvciBzc2FDYWxjdWxhdG9y
KG1fZ3JhcGgpOwogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3Bw
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNh
bGN1bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMiArOTUsMTIgQEAgU1NBQ2FsY3Vs
YXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpuZXdEZQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNT
QUNhbGN1bGF0b3I6Om5vbkxvY2FsUmVhY2hpbmdEZWYoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlh
YmxlKiB2YXJpYWJsZSkKIHsKLSAgICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5t
X2RvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CisgICAgcmV0dXJuIHJlYWNoaW5n
RGVmQXRUYWlsKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUp
OwogfQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6OnJlYWNoaW5nRGVmQXRU
YWlsKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgZm9yICg7
IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgeworICAg
IGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9j
aykpIHsKICAgICAgICAgaWYgKERlZiogZGVmID0gbV9kYXRhW2Jsb2NrXS5tX2RlZnMuZ2V0KHZh
cmlhYmxlKSkKICAgICAgICAgICAgIHJldHVybiBkZWY7CiAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgJKHJldmlzaW9uIDIyMDc1MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgUGhpSW5zZXJ0aW9uRnVuY3Rvcj4KICAgICB2b2lkIGNvbXB1dGVQaGlzKGNvbnN0IFBoaUlu
c2VydGlvbkZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG51bGxwdHIsIG1fZ3JhcGgubV9kb21pbmF0b3JzKTsKKyAgICAgICAgREZHX0FTU0VSVCht
X2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycyk7CiAgICAgICAgIAogICAg
ICAgICBmb3IgKFZhcmlhYmxlJiB2YXJpYWJsZSA6IG1fdmFyaWFibGVzKSB7Ci0gICAgICAgICAg
ICBtX2dyYXBoLm1fZG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YoCisgICAgICAgICAgICBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+Zm9y
QWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCiAgICAgICAgICAg
ICAgICAgdmFyaWFibGUubV9ibG9ja3NXaXRoRGVmcywKICAgICAgICAgICAgICAgICBbJl0gKEJh
c2ljQmxvY2sqIGJsb2NrKSAtPiBib29sIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhp
Tm9kZSA9IGZ1bmN0b3IoJnZhcmlhYmxlLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpOwogICAgICAgICAK
ICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50cygpOwotICAgICAgICBtX2dyYXBoLmVu
c3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IG51bGxwdHI7Cisg
ICAgICAgIG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgICAgICBtX2dy
YXBoLm1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NB
RG9taW5hdG9ycygpOyAvLyBPT1BTOiBhbGxvdyB1cyB0byBhc3NlcnQgaW4gZW5zdXJlU1NBRG9t
aW5hdG9ycyB0aGF0IHdlJ3JlIGluIFNTQSBmb3JtLgogICAgICAgICAKICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBTU0EgdHJhbnNmb3Jt
YXRpb246XG4iKTsKQEAgLTExMCw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIERlY2lkZSB3aGVyZSBQaGlzIGFyZSB0byBiZSBpbnNlcnRlZC4gVGhp
cyBjcmVhdGVzIHRoZSBQaGkncyBidXQgZG9lc24ndCBpbnNlcnQgdGhlbQotICAgICAgICAvLyB5
ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgdGhlbSBiZWNhdXNlIFNTQUNh
bGN1bGF0b3IgaXMgc3VjaCBhIGJyby4KKyAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtu
b3cgd2hlcmUgdG8gaW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNTQUNhbGN1bGF0b3IgdGVsbHMgdXMg
dG8uCiAgICAgICAgIG1fY2FsY3VsYXRvci5jb21wdXRlUGhpcygKICAgICAgICAgICAgIFsmXSAo
U1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHNzYVZhcmlhYmxlLCBCYXNpY0Jsb2NrKiBibG9jaykg
LT4gTm9kZSogewogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUg
PSBtX3ZhcmlhYmxlRm9yU1NBSW5kZXhbc3NhVmFyaWFibGUtPmluZGV4KCldOwpAQCAtMzgxLDE4
ICszODQsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVh
cigpOwogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9j
azo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKSk7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07
KSB7CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4g
REZHIFNTQToKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTM5NgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMu
c2l6ZSgpID09IDEpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAg
ICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAKLSAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7
CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KGFyZ3VtZW50
c1tpXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUpOwog
ICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZv
cm1hdDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNv
cmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBl
eGl0IHByb2ZpbGluZy4KKyAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29y
ZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4
aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fZm9y
bSA9IFNTQTsKQEAgLTQxNiw3ICs0MjMsMTIgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU1NB
Q29udmVyc2lvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFNTQUNvbnZl
cnNpb25QaGFzZT4oZ3JhcGgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFncmFwaC5tX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uID0gdHJ1ZTsKKyAgICBi
b29sIHJlc3VsdCA9IHJ1blBoYXNlPFNTQUNvbnZlcnNpb25QaGFzZT4oZ3JhcGgpOworICAgIFJF
TEVBU0VfQVNTRVJUKGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJ
blNTQUNvbnZlcnNpb24gPSBmYWxzZTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUs
NyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NS
RW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjA4NSw2ICs2MDg1LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgSlNWYWx1ZSogcHRyID0gJm1faml0LmppdENv
ZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgo
KV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVt
cEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0
ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogI2Vsc2UgLy8gRU5BQkxFKEZU
TF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVw
QXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OTMsNiArMTY5
MywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsK
KyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0Lmdy
YXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
KyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0
TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50Ojpy
ZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpA
QCAtMTc4Nyw4ICsxNzk0LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5
cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3Jp
Z2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJn
dW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0
LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0
LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2Rl
ID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFy
Z3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJn
dW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMu
CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NzIsMTIgKzE4ODAsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdl
IGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQotICAg
ICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQo
bV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc09T
UlRhcmdldCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRk
IHRoZW0KKyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KKyAgICAgICAgICAgIG1fb3Ny
RW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIApAQCAtMTg4OCwxMCArMTg5NSwzMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9q
aXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKKyAgICAg
ICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxv
Y2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgYXV0byBpdGVy
ID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAg
ICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAg
ICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1
bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3Ip
IHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmbHVzaEZv
cm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1
c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFs
dWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5k
KGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hFbnRyeXBvaW50KCpibG9jaywgbV9v
c3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1l
bnRGb3JtYXRzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2st
PmlzT1NSVGFyZ2V0KTsKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywg
bV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICB9
CiAgICAgfQorCisgICAgbV9qaXQuaml0Q29kZSgpLT5maW5hbGl6ZUNhdGNoT1NSRW50cnlwb2lu
dHMoKTsKKwogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXpl
KCkpOwogICAgIAogICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0
aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1
cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJhc2ljIGJsb2NrIGV4ZWN1dGlvbiBjb3VudHMg
YmFzZWQgb24gbG9vcCBkZXB0aC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFw
aC5tX25hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7CisgICAgICAgICAgICBibG9jay0+
ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3BE
ZXB0aChibG9jaykpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBi
cmFuY2ggd2VpZ2h0cyBiYXNlZCBvbiBleGVjdXRpb24gY291bnRzLiBUaGlzIGlzbid0IHF1aXRl
IGNvcnJlY3QuIEl0J2xsCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAg
ICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYg
KzUwLDggQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxGVAogICAgIHJl
dHVybiBmdGxXaGl0ZWxpc3Q7CiB9CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gQ1BTTmF0dXJhbExv
b3A7CisKIGNsYXNzIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
cHVibGljOgogICAgIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQpAQCAt
ODEsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlU
b0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAgIAot
ICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBOYXR1cmFsTG9v
cHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fbmF0dXJhbExvb3BzOworICAgICAgICBtX2dy
YXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgICAgICBDUFNOYXR1cmFsTG9vcHMmIG5h
dHVyYWxMb29wcyA9ICptX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzOwogICAgICAgICBIYXNoTWFw
PGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wVG9Mb29wSGludCA9IGJ1
aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKG5hdHVyYWxMb29wcyk7CiAKICAgICAgICAgSGFz
aE1hcDx1bnNpZ25lZCwgTG9vcEhpbnREZXNjcmlwdG9yPiB0aWVyVXBIaWVyYXJjaHk7CkBAIC0x
ODIsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxMb29w
VG9Mb29wSGludE1hcChjb25zdCBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKKyAgICBIYXNo
TWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BI
aW50TWFwKGNvbnN0IENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQogICAgIHsKICAgICAg
ICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcHNUb0xv
b3BIaW50OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNCwxMCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9hcnJheU1v
ZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAg
ICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3Rp
bmcgZm9yIFNldEFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3
ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQg
YW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5jb250YWlucyhibG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmln
aW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChvcmlnaW4uZXhpdE9LKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigp
LCBHZXRMb2NhbCwgb3JpZ2luLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTggKzE5NSwxOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhKG1heUV4aXQobV9ncmFw
aCwgbm9kZSkgPT0gRXhpdHMgJiYgIW5vZGUtPm9yaWdpbi5leGl0T0spKTsKIAogICAgICAgICAg
ICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9
IGJsb2NrLT5hdChpIC0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAotICAgICAg
ICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIWNsb2Ji
ZXJzRXhpdFN0YXRlKG1fZ3JhcGgsIHByZXZpb3VzTm9kZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHx8ICFub2RlLT5vcmlnaW4uZXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBu
b2RlLT5vcCgpID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3Jp
Z2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIFZBTElEQVRFKAotICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgISghcHJldmlvdXNOb2RlLT5vcmlnaW4uZXhpdE9LICYmIG5v
ZGUtPm9yaWdpbi5leGl0T0spCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcCgp
ID09IEV4aXRPSwotICAgICAgICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4
aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CisgICAgICAgICAgICAgICAgICAg
IC8vTm9kZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgLy9WQUxJREFURSgKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAg
ICAgICAgICAgICAgICAgICAvLyAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlv
dXNOb2RlKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCAhbm9kZS0+b3JpZ2luLmV4aXRP
SworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcCgpID09IEV4aXRPSworICAg
ICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91
c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAgICAgICAgICAgICAgICAgICAgLy9WQUxJREFURSgK
KyAgICAgICAgICAgICAgICAgICAgLy8gICAgKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAv
LyAgICAhKCFwcmV2aW91c05vZGUtPm9yaWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRP
SykKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3AoKSA9PSBFeGl0T0sKKyAg
ICAgICAgICAgICAgICAgICAgLy8gICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlv
dXNOb2RlLT5vcmlnaW4uZm9yRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVy
ZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw4IEBAIHZv
aWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2so
KSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVkIEZUTCBKSVQgY29kZSBmb3IgIiwg
Q29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLCAiLCBpbnN0
cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCks
ICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0g
ICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBncmFwaC5lbnN1cmVT
U0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwog
ICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpzQm9keSI7CiAgICAgICAgIAotICAg
ICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVT
U0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQo
KSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJlYWR5LCBiZWdpbm5pbmcgbG93ZXJp
bmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAg
bV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmln
aW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBt
X2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZh
bHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVy
cygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50
c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgICAg
ICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCkBAIC00
NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGRzo6QmFzaWNCbG9jayogdGFy
Z2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghdGFyZ2V0
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9k
b21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdldCkpIHsKKyAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJn
ZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwgKnRhcmdldCwgIiB3aWxsIGJh
aWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+Y2ZhSGFzVmlzaXRlZCA9IGZh
bHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2dyYXBo
Lm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKKyAg
ICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2Nr
KCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9P
UChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMp
CiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX3Ro
aXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5zdHJ1Y3Rp
b24qKTsKQEAgLTc5Niw2ICs3OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGludCwgaW50
MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpLCB1aW50
MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRp
b25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw2ICs1Nzks
MTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVyYXRpb24s
IHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUzLDYgKzg1MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiog
Y3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7CisgICAgLy8gT09QUwor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
YXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyNCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfYWZ0
ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICAvLyBPT1BT
OiBhZGQgYSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorCisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gc2tp
cE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOworICAgIHNr
aXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIq
IGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmls
ZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
JnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB2b2lkIEpJVDo6
ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTUsNiArMTUxNSwxOSBA
QCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NL
X0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQi
KSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJf
dCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRp
bWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOworICAg
IGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+
KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5
dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5
VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjA3
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzE3LDYgKzMxNyw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04g
KlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9u
X0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRf
T1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMy
X3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShF
eGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElP
TiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNs
b3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSko
RXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BF
UkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlw
ZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNT
dGF0ZSosIGludDMyX3QpOwpAQCAtMzk3LDYgKzM5OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhF
eGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3Rh
dGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwog
I2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5wb2ludGVy
KTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6
OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOwor
ICAgIH0pOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1
cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxs
RnJhbWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxG
cmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3Rp
ZnlfcHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUq
KSBXVEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0
dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVyKikgV1RG
X0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTc3LDYgKzE5NzcsMTEgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIGRpc3BhdGNo
KGNvbnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2FmdGVyX2NhdGNoOgor
ICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVyX2NhdGNoKQorICAg
IGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9hZnRlcl9jYXRjaF9sZW5ndGgpCisKKwogX2xsaW50X29w
X2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxv
Z3VlKCkKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjIwNzUxKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgw
MDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAy
NDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyog
VVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2Fu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFB
RkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAw
MjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAy
NEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJE
NjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcy
OUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVk
TGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3Bw
ICovLApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBT
b3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhO
b2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIg
dG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5
cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewot
ICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsK
LSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUm
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90
aGVyLm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVy
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci0gICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0g
ICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQg
ewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tB
bmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9k
ZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYg
bm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAg
ICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJv
b3ROYW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9z
ZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAg
TWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3
TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290
ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5k
ZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykp
W2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYg
bm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5v
ZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5v
ZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nh
c3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6
Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAg
IFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9k
ZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFw
aD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dy
YXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlm
ICghbm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2Ug
aWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7Cisg
ICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAg
cmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIy
MDc1MSkKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBH
cmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBl
bmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNl
bGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9k
YXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBA
IHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7
CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBt
X2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZy
b20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJk
IGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJj
aCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2Fu
IGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25z
dCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAg
ICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExp
c3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxC
bG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZy
b20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0
aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAg
IHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0g
ICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFs
bEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUg
R3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3Jh
cGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERv
bWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAg
IHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJh
dGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToK
ICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxv
Y2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBl
bmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAg
ICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAg
ICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0
LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVy
T2ZJbXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFw
aF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5v
ZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdl
IHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0
ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290Ijsg
fTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9
IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgewor
ICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAg
ICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUg
PSAwOworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhO
b2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIu
bV9ub2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQor
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNp
bmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpO
b2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAg
ICAgIHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBo
OjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNp
bmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmds
ZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2Rl
JiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0
LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYg
bm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0
dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQu
cmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5v
ZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5v
ZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6
OnJvb3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAgfQorICAg
IAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9o
YXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdy
YXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RH
cmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBo
KQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAg
ICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAg
OiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShv
dGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7Cisg
ICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAg
IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkK
KyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAt
IDFdOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhp
cykpW2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUp
CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBt
X3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAg
Y29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAg
IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBt
X21hcDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xh
c3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290
R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNp
bmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNp
bmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5n
IE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8
Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6
IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2Rl
IHJlYWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFw
aC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RT
dWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNz
b3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3Vj
Y2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0
dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8
VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nl
c3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29u
c2lzdGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0
dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBm
b3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5u
b2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAg
aWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAg
ICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAg
ICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2Rl
IDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5v
ZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3Jh
cGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAg
cmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChO
b2RlIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7Cisg
ICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAg
ICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6
cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBo
LmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAg
ICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAg
ICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2Rl
KSwgIjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAg
ICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vz
c29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAg
ICAgICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBD
b21tYVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNz
b3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNz
b3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKwor
cHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29u
c3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhl
IHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3
ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElm
IGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAg
ICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEg
bmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxp
c3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBo
LnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFs
Um9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChy
ZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNp
emUoKSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNz
b3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3Qg
bV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nl
c3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJv
b3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318169</attachid>
            <date>2017-08-15 14:03:21 -0700</date>
            <delta_ts>2017-08-15 14:24:51 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>143076</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDc1MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2OCw2ICszNjks
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZCwgND4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUs
MTAgKzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAg
ICAgICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNU
b1NraXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Y2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBw
ZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0
aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNv
ZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFmdGVyQ2F0Y2hJbmRp
Y2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGJ5dGVjb2Rl
TGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJvZmlsZXM7CisgICAg
ICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRjaEluZGljZXMpIHsK
KyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3Mu
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5kZXgpOworICAgICAg
ICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOworICAgICAgICAgICAg
bGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fscy5iaXRDb3VudCgp
KTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGxp
dmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsK
KworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsr
aSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5k
ID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNb
YWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7CisgICAgICAg
ICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNhdGNoUHJvZmlsZXMp
OworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQo
dGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0
aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29kZUJs
b2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5k
Q291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMg
PSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMg
ZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1
bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVlUHJv
ZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJvZmls
ZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwxMiBAQCB2b2lkIENv
ZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9maWxl
QnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBw
cm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAg
ICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKQEAgLTI3
NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9y
CiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNv
ZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9
IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKKyAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOworICAgICAgICBpZiAo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9mZnNldCkgeworICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChmb3VuZCk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVz
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
cj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxl
LCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxl
VmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zm
c2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNl
dCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0K
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBp
bnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9m
aWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsK
Kworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkK
KyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1vcmUgc3R1ZmYgdGhh
biB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGUgb3VyIHZhbHVlIHByb2ZpbGVzCisgICAg
ICAgIC8vIHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0g
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9m
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5k
T3BlcmFuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAg
ICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1
ZmZlci5nZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxv
Y1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTcwLDYgKzM5NzAsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2F0Y2goUmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bj
b2RlKG9wX2FmdGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2Fs
U2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0aW9uYWwgdGhpbmdz
LgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcuaAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dy
YXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dyYXBoPFNT
QUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NGRyk7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ0ZHKEdyYXBoJiBn
cmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAg
ICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+KGdyYXBoKSkKICAg
ICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNp
Y0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQog
ICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXND
YXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICwg
Y2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNv
dW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAgICAgICB3aGls
ZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAgICAgICAgICAg
IGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAgICAgICBjYXNl
IFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIERp
cmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFVucmVh
Y2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQ
aGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3Ig
dHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2ls
bCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNhc2UgQ2hlY2s6
IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9j
ayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsKICAgICAKICAg
ICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9pbnQ7CiAgICAgYm9v
bCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29sIGNm
YUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJy
YXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiREZHQ0ZH
LmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhp
dFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAsNyArMTEzMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3Qg
YmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0
d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0
b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0
aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxv
Y2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91
bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3
YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50
IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0
byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9j
ayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50
QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFy
Z3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVt
aXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0
b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlw
ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRv
R3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5
cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTU3LDYgKzUxNjIsMTE4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBv
cF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRy
dWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBv
cF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBm
cmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAg
ICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUu
cG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQ
cmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRl
ZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBX
VEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0Fy
ZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0
aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
UHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19j
YXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25z
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5k
LnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rp
b25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1
bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVk
aWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFBy
ZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0
aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNv
bXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAg
ICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRl
ZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICAvLyBX
ZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJlIHRvIE9TUiBlbnRlciwg
d2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2FmdGVyX2NhdGNoLgorICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
KworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+
PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRo
YW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBp
bmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdl
J3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cg
dG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2Fs
cyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJn
dW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBh
ZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcElu
Zm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICAr
K251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJ
bmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1Rv
U2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJlY2F1c2Ug
d2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZlIGxvY2Fs
cy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3Vy
IGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUg
YmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0
byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJy
YXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJn
dW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0
KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmly
c3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0
Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAg
ICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpS
ZWd1bGFyKTsKQEAgLTYxNTIsOCArNjI2OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBp
cyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJs
b2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjEwLDEw
ICs2MzI5LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAg
ICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1f
dW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsK
KwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxs
VW5yZWFjaGFibGVCbG9ja3MoKTsKKworICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQU0NGRz4obV9ncmFwaCk7CiAgICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTYyMjQsNyAr
NjM0NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygw
KS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFy
YW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRlclNsb3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50
cnlCeXRlY29kZUluZGV4KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJc
biIpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2Rl
IHJvb3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBt
X2dyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9j
aygwKTsKKyAgICB9CisKKyAgICBMaXN0IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVz
dWx0OworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dHMpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01h
cCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBw
cml2YXRlOgogICAgIEdyYXBoJiBtX2dyYXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGlj
IFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsKK3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBo
KQorICAgICAgICA6IFNpbmdsZVJvb3RHcmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7
CisgICAgICAgIEFTU0VSVChncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsK
KwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+
Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGdyYXBoLm1fY3BzQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RD
RkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsK
KyAgICByZXR1cm4gKmdyYXBoLm1fc3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1l
bnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNl
ZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0g
b25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBh
bmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92
ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNp
emUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVh
ZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRp
bWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAg
ICAgIAogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0lu
UHJlT3JkZXIoKTsKICAgICAgICAgCkBAIC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWVbaV07Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykp
IHsKICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAg
ICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC03NzksNyArNzc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJp
Y3QgZG9taW5hdGlvbiBiZWNhdXNlIHRoaXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBv
d24gYmxvY2sgaWYKICAgICAgICAgICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlv
biBpbiB0aGUgYmxvY2suIENsZWFybHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAg
ICAgICAgIC8vIGl0c2VsZiwgdGhlIHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3Qg
ZG9taW5hdGUgdXMuCi0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmlj
dGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9zc2FEb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgICBJdCBzdHJpY3RseSBkb21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0
ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Js
b2NrKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0
b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaC0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaC5zZXROb2RlKGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0OSw2ICsyNDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlECiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRf
cGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2FzZSBvcF9hZnRlcl9jYXRj
aDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3Ro
OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNiArMTQxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpKQogICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1cmVC
YWNrd2FyZHNEb21pbmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7Cisg
ICAgU1NBRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMm
IG1fYmFja3dhcmRzRG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
OCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJs
b2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAg
ICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAg
IGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rv
cik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAu
CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3Mo
KTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5
NSw4IEBAIFZlY3RvcjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBkdW1w
SGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91
c09yaWdpbik7CiAgICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgbV9n
cmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRv
cnMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAgIGNv
bnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVBy
ZWZpeCA9ICIgICAgICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0
OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgor
ICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJl
dHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRv
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwxNiArMzUsMzIgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdU
Rjo6RG9taW5hdG9yczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3Mg
RG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6
RG9taW5hdG9yczxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8
Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKIAor
dXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU0RvbWlu
YXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2
YWx1ZT46OnR5cGU+CitDUFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBo
JiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5hdG9ycyYg
ZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBo
LmVuc3VyZVNTQURvbWluYXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDExICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICAgICAg
LCBtX3Jlc3VsdCh0cnVlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9ybSA9PSBT
U0EpOwogICAgIH0KICAgICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkK
ICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJlc3VsdCA9
IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBt
X2Jsb2NrKTsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgIkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uubm9kZSgp
LT5vd25lciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5NCw2ICsxOTk0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBDaGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgog
ICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6
CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3Jt
YXQgeworZW51bSBGbHVzaEZvcm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBG
bHVzaGVkSW50MzIsCiAgICAgRmx1c2hlZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRl
ICJERkdOYXR1cmFsTG9vcHMuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAj
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRl
Y29kZUxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAt
NzMsNyArNzIsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9w
bGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9w
cm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9jZmcoc3Rk
OjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlx
dWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1f
Zml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0
aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTQwOSw5ICs0MDgsMTMgQEAg
Ym9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCitz
dGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9kZShjb25zdCBDUFNDRkc6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUubm9kZSgpOyB9CitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9k
ZShCYXNpY0Jsb2NrKiBibG9jaykgeyByZXR1cm4gYmxvY2s7IH0KKwogdm9pZCBHcmFwaDo6ZHVt
cEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNC
bG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0
KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIg
KCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIp
OiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JU
YXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZp
eCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2lu
LnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8g
IiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6
ICIiLCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAi
IiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0
aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDog
IiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00MjIsMTggKzQyNSwyNiBAQCB2b2lkIEdyYXBoOjpkdW1w
QmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBp
ZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBt
X3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAg
IG91dC5wcmludCgiXG4iKTsKLSAgICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZh
bGlkKCkpIHsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBt
X2RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVk
QnkoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNl
IEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAi
XG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZy
b250aWVyOiAiLCBtX2RvbWluYXRvcnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9j
a0xpc3QoMSwgYmxvY2spKSwgIlxuIik7CisKKyAgICBhdXRvIHByaW50RG9taW5hdG9ycyA9IFsm
XSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21p
bmF0ZWQgYnk6ICIsIGRvbWluYXRvcnMuZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgZG9taW5hdG9ycy5ibG9ja3NE
b21pbmF0ZWRCeShibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBE
b21pbmFuY2UgRnJvbnRpZXI6ICIsIGRvbWluYXRvcnMuZG9taW5hbmNlRnJvbnRpZXJPZihibG9j
ayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFu
Y2UgRnJvbnRpZXI6ICIsCisgICAgICAgICAgICBkb21pbmF0b3JzLml0ZXJhdGVkRG9taW5hbmNl
RnJvbnRpZXJPZih0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZG9taW5h
dG9ycyk+Ojp0eXBlOjpMaXN0IHsgYmxvY2sgfSksICJcbiIpOworICAgIH07CisKKyAgICBpZiAo
dGVybWluYWxzQXJlVmFsaWQoKSkgeworICAgICAgICBpZiAobV9zc2FEb21pbmF0b3JzKQorICAg
ICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX3NzYURvbWluYXRvcnMpOworICAgICAgICBlbHNl
IGlmIChtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWluYXRvcnMoKm1fY3Bz
RG9taW5hdG9ycyk7CiAgICAgfQorCiAgICAgaWYgKG1fYmFja3dhcmRzRG9taW5hdG9ycyAmJiB0
ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3
YXJkcyBkb21pbmF0ZXMgYnk6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+ZG9taW5hdG9yc09m
KGJsb2NrKSwgIlxuIik7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBk
b21pbmF0ZXM6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxv
Y2spLCAiXG4iKTsKQEAgLTQ0NiwyOSArNDU3LDMzIEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hl
YWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1i
ZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJc
biIpOwotICAgIGlmIChtX25hdHVyYWxMb29wcykgewotICAgICAgICBpZiAoY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisKKyAgICBh
dXRvIHByaW50TmF0dXJhbExvb3BzID0gWyZdIChhdXRvJiBuYXR1cmFsTG9vcHMpIHsKKyAgICAg
ICAgaWYgKGNvbnN0IGF1dG8qIGxvb3AgPSBuYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5z
OiIpOwogICAgICAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7
CisgICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZCh1bmJveExvb3BOb2RlKGxv
b3AtPmF0KGkpKS0+aW5kZXgpOwogICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKICAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nTG9vcHMgPSBuYXR1
cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwogICAgICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcg
bG9vcCBoZWFkZXJzOiIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
LCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnVuYm94TG9vcE5vZGUoY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSkpOwog
ICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICB9Ci0gICAgfQorICAgIH07CisK
KyAgICBpZiAobV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1f
c3NhTmF0dXJhbExvb3BzKTsKKyAgICBlbHNlIGlmIChtX2Nwc05hdHVyYWxMb29wcykKKyAgICAg
ICAgcHJpbnROYXR1cmFsTG9vcHMobV9jcHNOYXR1cmFsTG9vcHMpOworCiAgICAgaWYgKCFibG9j
ay0+cGhpcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5v
ZGVzOiIpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUo
KTsgKytpKSB7CkBAIC01MDIsOCArNTE3LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4
cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwg
bV91bmlmaWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0
ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBB
cmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwot
ICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9h
cmd1bWVudHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1
ZSksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSog
bGFzdE5vZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY1NywxMCBAQCB2b2lkIEdyYXBoOjpoYW5k
bGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxp
dHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmts
aXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBw
ZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03
OTgsOSArODE3LDEwIEBAIHZvaWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZv
aWQgR3JhcGg6OmludmFsaWRhdGVDRkcoKQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7
Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9
IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBt
X3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg3MCwzNyBAQCBCbG9ja0xp
c3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAg
ICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAg
ICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9j
ayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAg
ICAgICAgICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBv
dmVyIHByZSBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgIC8vIGJlZm9y
ZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBb
Jl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBh
ID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJl
c3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0g
cmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21p
bmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikK
KyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9y
cygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODYzLDcgKzkwOCw4IEBA
IEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCBy
ZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlz
dC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNo
IChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtODc2LDYg
KzkyMiwzMSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkpIHsKKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRv
cnMpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcmV2ZXJzZSBwb3N0IG9y
ZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlu
Z3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVz
dWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5z
aXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0
W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3Jz
LmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGkgPiBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAg
ICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsK
KyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMwICsxNTQzLDQzIEBA
IHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFp
bHVyZSgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVt
cChibG9jayksICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQog
Ci1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBH
cmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRv
cnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5h
dG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21p
bmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWlu
YXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9y
cz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9kb21pbmF0b3JzOworICAgIFJFTEVBU0VfQVNTRVJU
KG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX3NzYURv
bWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NB
RG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1Q
cmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogewotICAgIGlmICghbV9w
cmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51
bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX2Nwc05h
dHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7
CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCitTU0FOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewotICAgIGVuc3VyZURv
bWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxM
b29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0gICAgcmV0dXJu
ICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKKyAg
ICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykKKyAg
ICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29w
cz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJk
c0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9mb3JtID09IFNTQSk7IC8vIFdlIGNvdWxkIGNoYW5nZSB0aGlzLCBidXQgaXQncyBvbmx5IHVz
ZWQgaW4gU1NBIGZvciBub3csIGFuZCB3ZSBkb24ndCBuZWVkIHR3byBncmFwaCBmaWVsZHMgeWV0
IGZvciB0d28gdHlwZXMgb2YgYmFja3dhcmRzIENGRy4KICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZH
KQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZH
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1MDMsNiArMTU4Nyw3
IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygKIAogQmFja3dhcmRz
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0
b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
Y2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5h
dG9yczsKQEAgLTE1MTAsNiArMTU5NSw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjpl
bnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1cmVD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQogICAgICAg
ICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTYxMyw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5sb2Nh
bCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9hcmd1
bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJndW1lbnRd
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDc1
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBDb2RlQmxvY2s7CkBAIC01NiwxMCArNjAsMTcgQEAgY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xh
c3MgQmFja3dhcmRzRG9taW5hdG9yczsKIGNsYXNzIENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzOwotY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29w
czsKIGNsYXNzIEZsb3dJbmRleGluZzsKLWNsYXNzIE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBv
c3ROdW1iZXJpbmc7CisKK2NsYXNzIENQU0NGRzsKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNp
bmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRv
cnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFs
TG9vcHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FD
Rkc+OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAtOTAxLDkgKzkx
MiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVE
b21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmlu
ZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9t
aW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRvcnMmIGVuc3Vy
ZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxM
b29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAg
ICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21p
bmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05MjEs
NyArOTMzLDggQEAgcHVibGljOgogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29k
ZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNC
bG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBt
X2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAg
VmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVk
SlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVl
SGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxMSArOTY5LDExIEBAIHB1Ymxp
YzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0
aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVm
ZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJh
c2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAg
ICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0
aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9y
PEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZl
Y3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBT
ZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsK
ICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKQEAgLTk4MiwxMCArOTk1LDEyIEBA
IHB1YmxpYzoKICAgICBIYXNoU2V0PHN0ZDo6cGFpcjxKU09iamVjdCosIFByb3BlcnR5T2Zmc2V0
Pj4gbV9zYWZlVG9Mb2FkOwogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5
cGU6OkRlc2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+
PiBtX2RvbUpJVFNuaXBwZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3JzPiBtX2Rv
bWluYXRvcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9z
dE51bWJlcmluZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25hdHVyYWxM
b29wczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q1BTRG9taW5hdG9ycz4gbV9jcHNEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
U0FEb21pbmF0b3JzPiBtX3NzYURvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU05h
dHVyYWxMb29wcz4gbV9jcHNOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQU5h
dHVyYWxMb29wcz4gbV9zc2FOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQUNG
Rz4gbV9zc2FDRkc7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0NGRz4gbV9jcHNDRkc7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9yczsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+IG1fY29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xMDA5LDYgKzEwMjQsOCBAQCBwdWJsaWM6CiAgICAgUmVm
Q291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxl
ZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93
SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxB
YnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw2MSBAQCBzdGF0
aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBo
LmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3Qt
PmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZh
bHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVy
ZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9
IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+
dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52
YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBm
b3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAg
ICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2lu
dCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91
bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZh
bHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1
cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0
YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsg
KytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSku
Y2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
aGVuIHN1cHBvcnRpbmcgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTCwgd2UgbmVlZCB0
byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAvLyB3aGF0IHdlIGRvIGhlcmU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBmb3Jt
YXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShT
cGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZs
dXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3Vt
ZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hl
ZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5
cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVz
aGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5z
ZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZs
dXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNl
dFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1l
bnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNo
IGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSku
Y2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0g
ICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBt
X2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5u
dW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRU
YWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAg
IGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAgICAgICAg
ICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAg
ICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5j
ZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNyArMzcxLDcgQEAgaW5saW5lIGJvb2wgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShi
YXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4g
Y2hhbmdlZDsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBU
YWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw3IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoKQogICAgIGNvbW1vbi5zaHJpbmtUb0Zp
dCgpOwogICAgIG9zckVudHJ5LnNocmlua1RvRml0KCk7CiAgICAgb3NyRXhpdC5zaHJpbmtUb0Zp
dCgpOworICAgIGNhdGNoRW50cnlwb2ludHMuc2hyaW5rVG9GaXQoKTsKICAgICBzcGVjdWxhdGlv
blJlY292ZXJ5LnNocmlua1RvRml0KCk7CiAgICAgbWluaWZpZWRERkcucHJlcGFyZUFuZFNocmlu
aygpOwogICAgIHZhcmlhYmxlRXZlbnRTdHJlYW0uc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
NiArNjksMzIgQEAgcHVibGljOgogICAgICAgICAgICAgb3NyRW50cnksIG9zckVudHJ5LnNpemUo
KSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5k
ZXgpOwogICAgIH0KKworICAgIENhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoT1NSRW50cnlEYXRh
Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxDYXRjaEVudHJ5cG9pbnREYXRhLCB1bnNpZ25lZD4oCisg
ICAgICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLCBjYXRjaEVudHJ5cG9pbnRzLnNpemUoKSwgYnl0
ZWNvZGVJbmRleCwKKyAgICAgICAgICAgIFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhKiBp
dGVtKSB7IHJldHVybiBpdGVtLT5tX2J5dGVjb2RlSW5kZXg7IH0pOworICAgIH0KKworICAgIHZv
aWQgZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCkKKyAgICB7CisgICAgICAgIHN0ZDo6c29y
dChjYXRjaEVudHJ5cG9pbnRzLmJlZ2luKCksIGNhdGNoRW50cnlwb2ludHMuZW5kKCksIFtdIChj
b25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBhLCBjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBi
KSB7CisgICAgICAgICAgICByZXR1cm4gYS5tX2J5dGVjb2RlSW5kZXggPCBiLm1fYnl0ZWNvZGVJ
bmRleDsKKyAgICAgICAgfSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB1bnNpZ25l
ZCBwcmV2aW91c0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBDYXRjaEVudHJ5cG9pbnRE
YXRhJiBlbnRyeXBvaW50IDogY2F0Y2hFbnRyeXBvaW50cykgeworICAgICAgICAgICAgQVNTRVJU
KHByZXZpb3VzSW5kZXggPCBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAg
ICBwcmV2aW91c0luZGV4ID0gZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0K
KyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hFbnRyeXBvaW50KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hG
b3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hFbnRyeXBvaW50
cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2Rl
T2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBAIC0xMzIs
NiArMTU4LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAg
ICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVu
dHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6
Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVy
eT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFy
aWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgV3JpdGVC
YXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5
UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisKKyAgICBNYWxsb2NQdHI8SlNWYWx1
ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVt
aXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgp
CiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAg
ICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1h
bGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAg
IG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7
CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlC
dWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1f
Z3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29k
ZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NywyMyBAQCB2b2lkKiBK
SVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRD
b21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJ
VENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3Rv
cjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
YmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNC
bG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5
IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBv
aW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hl
YWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpu
b3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwg
YmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJU
KCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBu
b3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93
IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0
ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5
ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2lu
LCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1f
ZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVh
ZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90
b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNl
T1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1h
dD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
KCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2Ugewog
Cit1c2luZyBOYXR1cmFsTG9vcCA9IFNTQU5hdHVyYWxMb29wOworCiBzdHJ1Y3QgTG9vcERhdGEg
ewogICAgIExvb3BEYXRhKCkKICAgICAgICAgOiBwcmVIZWFkZXIobnVsbHB0cikKQEAgLTc0LDgg
Kzc2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxs
cHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7
CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICBtX2dyYXBoLmVuc3VyZUNvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKQEAgLTgzLDcg
Kzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
bnVtTG9vcHMoKSk7CisgICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+bnVtTG9vcHMoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBz
ZXQgb2YgdGhpbmdzIGVhY2ggbG9vcCB3cml0ZXMgdG8sIG5vdCBpbmNsdWRpbmcgYmxvY2tzIHRo
YXQKICAgICAgICAgLy8gYmVsb25nIHRvIGlubmVyIGxvb3BzLiBXZSBmaXggdGhpcyBsYXRlci4K
QEAgLTk4LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2stPmNmYUhh
c1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBs
b29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsK
ICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AtPmluZGV4KCldOwpAQCAtMTE2LDE0
ICsxMTgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBGb3IgZWFjaCBsb29wOgogICAgICAgICAv
LyAtIElkZW50aWZ5IGl0cyBwcmUtaGVhZGVyLgogICAgICAgICAvLyAtIE1ha2Ugc3VyZSBpdHMg
b3V0ZXIgbG9vcHMga25vdyB3aGF0IGl0IGNsb2JiZXJzLgotICAgICAgICBmb3IgKHVuc2lnbmVk
IGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRl
eC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9v
cEluZGV4ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4
LS07KSB7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKICAgICAgICAgICAgIExvb3BEYXRhJiBk
YXRhID0gbV9kYXRhW2xvb3AuaW5kZXgoKV07CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAoCi0gICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwogICAgICAgICAgICAgICAgIG91dGVyTG9v
cDsKLSAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5p
bm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCisgICAgICAgICAgICAgICAgb3V0ZXJMb29w
ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxv
b3ApKQogICAgICAgICAgICAgICAgIG1fZGF0YVtvdXRlckxvb3AtPmluZGV4KCldLndyaXRlcy5h
ZGRBbGwoZGF0YS53cml0ZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBoZWFkZXIgPSBsb29wLmhlYWRlcigpOwpAQCAtMTM3LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaGVhZGVyLT5wcmVkZWNl
c3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vzc29yc1tpXTsKLSAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIsIHByZWRlY2Vzc29yKSkKKyAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIs
IHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgICAgICBwcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE5MSw3ICsxOTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxvb3BTdGFjazsKICAgICAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkgewotICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxv
Y2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFs
b29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0xOTksNyAr
MjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yICgKICAgICAgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogY3VycmVudCA9IGxvb3A7CiAgICAgICAgICAgICAgICAgY3VycmVudDsK
LSAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJN
b3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFw
aC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKICAgICAg
ICAgICAgICAgICBsb29wU3RhY2suYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBSZW1lbWJlcjogdGhlIGxvb3Agc3RhY2sgaGFzIHRoZSBpbm5lci1tb3N0IGxv
b3AgYXQgaW5kZXggMCwgc28gaWYgd2Ugd2FudApAQCAtMzE4LDcgKzMyMCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIGJlY2F1c2UgbW9zdCBsb29wcyBhcmUgc21hbGwgYW5kIG1vc3QgYmxvY2tz
IGJlbG9uZyB0byBmZXcgbG9vcHMuCiAgICAgICAgIGZvciAodW5zaWduZWQgYm9keUluZGV4ID0g
bG9vcC0+c2l6ZSgpOyBib2R5SW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1
YkJsb2NrID0gbG9vcC0+YXQoYm9keUluZGV4KTsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBzdWJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2sp
OworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CiAgICAgICAgICAgICBpZiAoIXN1Ykxv
b3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBz
dWJQcmVIZWFkZXIgPSBtX2RhdGFbc3ViTG9vcC0+aW5kZXgoKV0ucHJlSGVhZGVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xp
dmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7
Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9
PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAg
ICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5p
c0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVy
LT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5h
ZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihH
cmFwaCYgZ3JhcGgsIEJsb2NrSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQsIEJhc2ljQmxvY2sq
IGJsb2NrKQogeworICAgIC8vIE9PUFM6IG1heWJlIHVzZSBoYXNoc2V0IGZvciB0aGlzIGFzc2Vy
dC4KKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9j
aykpOyAvLyBBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIQorCiAgICAgLy8g
RklYTUU6IElmIHdlIHJ1biB0aGlzIHV0aWxpdHkgb24gU1NBIElSLCB0aGVuIHdlIG1heSBlbmQg
dXAgd2l0aCBhIGJpemFycmUgYXJyYW5nZW1lbnQgb2YKICAgICAvLyBVcHNpbG9ucyBhbmQgUGhp
cywgbGlrZToKICAgICAvLwpAQCAtNjksNyArNzIsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVI
ZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIHRoZSBtYXggb2YgdGhl
IGZyZXF1ZW5jaWVzIG9mIHRoZSBsb29wIGJvZHkncyBub24tbG9vcCBwcmVkZWNlc3NvcnMuCiAg
ICAgZmxvYXQgZnJlcXVlbmN5ID0gMDsKICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29y
IDogYmxvY2stPnByZWRlY2Vzc29ycykgewotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3Jz
LT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3Bz
RG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNl
c3Nvci0+ZXhlY3V0aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBCYXNpY0Js
b2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNl
c3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAg
ICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBw
cmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRl
Y2Vzc29yc1twcmVkZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7
CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsx
MzMsMTYgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAo
dW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsg
bG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29w
SW5kZXggPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgt
LTspIHsKKyAgICAgICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5t
X2Nwc05hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogZXhpc3RpbmdQcmVIZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05l
d1ByZUhlYWRlciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3Nv
ckluZGV4ID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJ
bmRleC0tOykgewotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9v
cC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHBy
ZWRlY2Vzc29yKSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9
IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3Nvcklu
ZGV4LS07KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29w
LmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCkubm9kZSgpLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgZXhpc3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY4
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1
bCBpZiBpdCdzIHBvc3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAg
ICAgICAgICAvLyBpZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9l
c24ndCBhbGxvdyBmb3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2lu
IG9mIHRoZSBsb29wIGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJl
LWhlYWRlci4KLSAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFk
ZXIoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVI
ZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAg
ICAgICAgICAgICAgJiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhp
dE9LKQogICAgICAgICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0
ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhl
Y3V0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAg
Ym9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50
VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9k
ZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9j
a0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBA
QCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBJbnQ1
MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAg
Y2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Ci0KLWNsYXNz
IE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0
dXJhbExvb3BzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9v
cHMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxM
b29wcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3Jh
cGgubV9jZmcsIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkK
KyAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4o
Z3JhcGgpLCBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlv
bkVuYWJsZWQoKSkKICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBTmF0dXJhbExvb3AgPSBX
VEY6Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0
dXJhbExvb3A8Q1BTQ0ZHPjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAg
ICBib29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3
aXRjaDsKICAgICB9CkBAIC0xMzcyLDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAg
fQorCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgaWYgKGlzSnVtcCgpKQpAQCAtMTU0MSw2ICsxNTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKG9wKCkgPT0gSWRlbnRpdHlXaXRoUHJvZmlsZSk7CiAgICAgICAgIHJldHVybiBtX29w
SW5mby5hczxTcGVjdWxhdGVkVHlwZT4oKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9T
UkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFj
dENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7Cisg
ICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hMb2NhbFByZWRpY3Rpb24oKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1
cm4gbV9vcEluZm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigpOworICAgIH0KICAgICAKICAgICBib29s
IGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CkBAIC0xOTM2LDcgKzE5NDksNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0K
LSAgICAKKwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1Ig
ZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwg
Ki9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1h
Y3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRy
YWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hl
Y2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcElu
TG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1
ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgi
CkBAIC0zMzYsNiArMzM3LDY3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4
ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50
cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVB
U0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAg
REZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAg
IFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRh
KiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAg
ICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0
IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndCBjb21waWxlIHRoaXMKKyAgICAgICAgLy8gYWZ0ZXJf
Y2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0
byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0
eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVu
dHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1
bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJn
dW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMy
OgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNo
ZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6
Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1
bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBl
LgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToK
KyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAg
ICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJh
bWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9y
RXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBh
Y2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVT
aXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9hZnRlcl9j
YXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2ludGVyKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihw
cm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW2luZGV4XSA9IGV4ZWMtPnVuY2hl
Y2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAg
ICB9KTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNh
dGNoRW50cnlwb2ludC0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIK
KyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5j
bHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWdu
ZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9i
eXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAgdW5z
aWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7
CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHBy
b3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3Jl
IGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2Fy
Z3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZm
ZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2Uu
IElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYg
bnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBp
dCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0
YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5l
IHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkg
eyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tJbnNlcnRp
b25TZXQuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUGhh
c2UuaCIKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChi
eXRlY29kZUluZGV4ICE9IFVJTlRfTUFYKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5lZWRlZCBi
eSBjcmVhdGVQcmVIZWFkZXIoKS4KLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7
CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZSA9IG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrOwogICAgICAg
ICAKQEAgLTExMiwxNiArMTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3Mg
dG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBuZXdBcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAg
ICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRl
cnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xk
Tm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUg
YSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBv
bGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
b2xkTm9kZSA9IG5ld0FyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBt
X2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBP
cEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIG5ld0FyZ3VtZW50
c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwg
PSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAt
MTM5LDggKzE0MSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVh
ZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAg
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBo
Lm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2lu
dHNbMF0gPSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmNsZWFyKCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5l
d1Jvb3QsIG5ld0FyZ3VtZW50cyk7CisKKyAgICAgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVh
Y2hhYmlsaXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3
LDcgKzcyNyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZD
b3VudHMoKTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwog
ICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAg
IG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
Niw5ICszNjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAg
ICAgLy8gSWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywg
dG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93
IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9u
RW5hYmxlZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRm
Zy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJp
bmcoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVu
c3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdf
SklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxv
Y2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFw
aCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAg
ICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1
c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAg
IHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIg
aXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewot
ICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9k
ZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5w
dXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5w
dXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9y
ZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBu
ZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBK
U0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5k
IGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAg
ICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVy
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgi
Ci0jaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRn
ZSwKLSAgICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5Q
cmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayog
YmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVu
c2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFw
W2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFu
Y2VzdG9yIG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZy
b20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJl
cihmcm9tKSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkg
PiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFz
aWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gZnJvbSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAg
ICAKLSAgICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2lj
QmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JP
Zih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNC
bG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
aXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdp
dmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5
b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5
b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Js
b2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0
cmljdERlc2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVk
Z2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAg
ICAgICAgIHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0Vk
Z2U7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAg
ICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsK
LSAgICB9OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBw
dWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
cHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBX
ZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUg
YXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxy
ZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAgICAgICAg
YXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1f
Z3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0g
MDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygp
KTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9m
aWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2Zp
bGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjUsNiArNzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Y2F0Y2hMb2NhbFBy
ZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICAgICAgY2FzZSBH
ZXREeW5hbWljVmFyOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZVRv
cCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0
YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9n
cmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBTU0FDYWxjdWxh
dG9yIHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRp
b25TZXQobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNh
bGN1bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ2FsY3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEyICs5
NSwxMiBAQCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0RlCiAKIFNTQUNh
bGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZihCYXNpY0Js
b2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiByZWFjaGluZ0Rl
ZkF0VGFpbChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKKyAg
ICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20o
YmxvY2spLCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRv
cjo6cmVhY2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJs
ZSkKIHsKLSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmlk
b20oYmxvY2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9zc2FEb21p
bmF0b3JzLT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBtX2RhdGFbYmxv
Y2tdLm1fZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRlZjsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxj
dWxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZvaWQgY29tcHV0
ZVBoaXMoY29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRvcnMpOworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FEb21pbmF0b3Jz
KTsKICAgICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDogbV92YXJpYWJs
ZXMpIHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBy
dW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1fZ3JhcGgubV9z
c2FEb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRp
ZXJPZigKICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZzLAogICAgICAg
ICAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2NrKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsMTAgQEAg
cHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRl
ZENQUyk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFyUmVwbGFjZW1lbnRzKCk7Ci0g
ICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLm1fY3Bz
Q0ZHID0gbnVsbHB0cjsKKyAgICAgICAgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcyA9IG51bGxw
dHI7CisgICAgICAgIG1fZ3JhcGgubV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7IC8vIE9PUFM6IGFsbG93IHVzIHRvIGFzc2Vy
dCBpbiBlbnN1cmVTU0FEb21pbmF0b3JzIHRoYXQgd2UncmUgaW4gU1NBIGZvcm0uCiAgICAgICAg
IAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVm
b3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRv
IGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0
aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0
aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQu
IFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2Fs
Y3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAog
ICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJh
c2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5k
ZXgoKV07CkBAIC0zODEsMTggKzM4NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+
dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtl
X3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1
bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3Vt
ZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtdWx0aXBs
ZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3Jh
cGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+
dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50
cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBp
LS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsK
IAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBo
Lm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFw
cGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0Rh
dGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1l
bnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tp
XSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9y
IHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgYXJndW1lbnRzW2ld
ID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3Ig
dGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQyMywxMiBAQCBwcml2YXRlOgog
CiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICByZXR1cm4g
cnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQo
IWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJblNTQUNvbnZlcnNp
b24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNl
PihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7
CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzI1LDYgKzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAg
ICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1
cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
MjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDg1LDYgKzYwODUsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICBKU1ZhbHVlKiBw
dHIgPSAmbV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW25vZGUtPmNh
dGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Cisg
ICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0
LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiksIHRlbXBHUFIpOworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAj
ZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTY5Myw2ICsxNjkzLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJy
ZW50QmxvY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0Nh
dGNoRW50cnlwb2ludCkgeworICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIobV9qaXQuZ3JhcGgoKS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7Cisg
ICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAg
IG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9n
KFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1Zh
bGlkQ2FsbEZyYW1lKCk7CkBAIC0xNzg3LDggKzE3OTQsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBt
X29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7
CiAKKyAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQobV9qaXQuZ3JhcGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0g
ICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAg
ICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBhcmd1bWVudCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZv
ciBzdWNoIGFyZ3VtZW50cy4KICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg3MiwxMiArMTg4
MCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAg
ICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxv
Y2stPmlzT1NSVGFyZ2V0KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAg
ICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNv
dWxkIGFkZCB0aGVtCi0gICAgICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JF
bnRyeUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAg
ICBpZiAoYmxvY2stPmlzT1NSVGFyZ2V0IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xp
bmVzLiBXZSBjb3VsZCBhZGQgdGhlbQorICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgor
ICAgICAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxv
Y2tJbmRleF0pOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xODg4LDEwICsxODk1LDMwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNC
bG9jayogYmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBp
ZiAoIWJsb2NrKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlz
T1NSVGFyZ2V0KQorICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlz
Q2F0Y2hFbnRyeXBvaW50KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5v
dGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxp
bmtCdWZmZXIpOworICAgICAgICBpZiAoYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAg
ICAgICAgICBhdXRvIGl0ZXIgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQoYmxvY2spOworICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+
dmFsdWU7CisgICAgICAgICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsK
KyAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3Vt
ZW50c1ZlY3Rvci5zaXplKCkpOworICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6
IGFyZ3VtZW50c1ZlY3RvcikgeworICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgewor
ICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBG
bHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1h
dCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0
cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRG
bHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5
cG9pbnQoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZl
ciwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIEFTU0VSVChibG9jay0+aXNPU1JUYXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNl
T1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1
ZmZlcik7CisgICAgICAgIH0KICAgICB9CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXpl
Q2F0Y2hPU1JFbnRyeXBvaW50cygpOworCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9v
c3JFbnRyeUhlYWRzLnNpemUoKSk7CiAgICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVu
YWJsZWQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVj
dXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBt
X2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05h
dHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sg
ZXhlY3V0aW9uIGNvdW50cyBiYXNlZCBvbiBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50
ID0gcG93KDEwLCBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAg
ICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05h
dHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIC8vIEVzdGltYXRlIGJyYW5jaCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMu
IFRoaXMgaXNuJ3QgcXVpdGUgY29ycmVjdC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgIGFwcGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3Vy
ZUdsb2JhbEZUCiAgICAgcmV0dXJuIGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExv
b3AgPSBDUFNOYXR1cmFsTG9vcDsKKwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShH
cmFwaCYgZ3JhcGgpCkBAIC04MSw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRp
b25zOjp1c2VPU1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29t
cGlsZTsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0g
ICAgICAgIE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9v
cHM7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQ
U05hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7
CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExv
b3BUb0xvb3BIaW50ID0gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3Bz
KTsKIAogICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJV
cEhpZXJhcmNoeTsKQEAgLTE4Miw3ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+
IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJh
bExvb3BzKQorICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGRO
YXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9v
cHMpCiAgICAgewogICAgICAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+
IG5hdHVyYWxMb29wc1RvTG9vcEhpbnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVy
LT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUg
ZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9y
IFNldEFyZ3VtZW50cyBhdCBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NF
UlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAg
ICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlh
YmxlLT5wcmVkaWN0aW9uKCksIEdldExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
NSwxOCArMTk1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSks
ICEobWF5RXhpdChtX2dyYXBoLCBub2RlKSA9PSBFeGl0cyAmJiAhbm9kZS0+b3JpZ2luLmV4aXRP
SykpOwogCiAgICAgICAgICAgICAgICAgaWYgKGkpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9k
ZSogcHJldmlvdXNOb2RlID0gYmxvY2stPmF0KGkgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAgICAgICAobm9kZSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAhY2xvYmJlcnNFeGl0U3RhdGUobV9ncmFwaCwgcHJldmlvdXNOb2RlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgfHwgIW5vZGUtPm9yaWdpbi5leGl0T0sKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAg
ICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JF
eGl0KTsKLSAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAobm9kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAhKCFwcmV2aW91c05vZGUtPm9y
aWdpbi5leGl0T0sgJiYgbm9kZS0+b3JpZ2luLmV4aXRPSykKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHx8IG5vZGUtPm9wKCkgPT0gRXhpdE9LCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBu
b2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKKyAg
ICAgICAgICAgICAgICAgICAgLy9Ob2RlKiBwcmV2aW91c05vZGUgPSBibG9jay0+YXQoaSAtIDEp
OworICAgICAgICAgICAgICAgICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAv
LyAgICAobm9kZSksCisgICAgICAgICAgICAgICAgICAgIC8vICAgICFjbG9iYmVyc0V4aXRTdGF0
ZShtX2dyYXBoLCBwcmV2aW91c05vZGUpCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8ICFu
b2RlLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9w
KCkgPT0gRXhpdE9LCisgICAgICAgICAgICAgICAgICAgIC8vICAgIHx8IG5vZGUtPm9yaWdpbi5m
b3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOworICAgICAgICAgICAgICAg
ICAgICAvL1ZBTElEQVRFKAorICAgICAgICAgICAgICAgICAgICAvLyAgICAobm9kZSksCisgICAg
ICAgICAgICAgICAgICAgIC8vICAgICEoIXByZXZpb3VzTm9kZS0+b3JpZ2luLmV4aXRPSyAmJiBu
b2RlLT5vcmlnaW4uZXhpdE9LKQorICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5v
cCgpID09IEV4aXRPSworICAgICAgICAgICAgICAgICAgICAvLyAgICB8fCBub2RlLT5vcmlnaW4u
Zm9yRXhpdCAhPSBwcmV2aW91c05vZGUtPm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
bm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDggKzc0LDggQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2Zp
bGVyOjpPcmlnaW5TdGFjaygpLAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRM
IEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6
OkZUTEpJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSwgIjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKTsKLSAgICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAg
ICAgIGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAi
ICAgICI7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUw
LDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5
IjsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNv
bXBpbGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHks
IGJlZ2lubmluZyBsb3dlcmluZy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICBtX25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5v
ZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1
dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dy
YXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9j
aygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50
c1tpXTsKICAgICAgICAgICAgIG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAg
ICAgICAgICAgICAKQEAgLTQ0Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZH
OjpCYXNpY0Jsb2NrKiB0YXJnZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAg
ICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0
KSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMo
bV9oaWdoQmxvY2ssIHRhcmdldCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBp
bGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAq
dGFyZ2V0LCAiIHdpbGwgYmFpbCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5j
ZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0xNDQxNCw3ICsxNDQxNSw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwg
bV9oaWdoQmxvY2spKQorICAgICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21p
bmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90YWlsX2NhbGxfZm9y
d2FyZF9hcmd1bWVudHMpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3RfdmFyYXJncykK
ICAgICAgICAgREVGSU5FX09QKG9wX2NhdGNoKQorICAgICAgICBERUZJTkVfT1Aob3BfYWZ0ZXJf
Y2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9P
UChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3Vt
ZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFy
Z3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9jcmVhdGVfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
dG9fdGhpcyhJbnN0cnVjdGlvbiopOwpAQCAtNzk2LDYgKzc5Nyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VaWiwgaW50LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6
ZV90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FVWksIHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9u
X0VKLCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihTX0pJVE9wZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA3NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTc5LDYgKzU3OSwxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0KIAorQUxXQVlTX0lO
TElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVVpIG9wZXJhdGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUo
KTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiBBTFdBWVNfSU5MSU5F
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9F
SlMgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgc2l6ZV90IGFyZzIpCiB7CiAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NTMsNiArODUzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCBy
ZWdUMCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2FmdGVyX2NhdGNoKEluc3RydWN0aW9uKikK
K3sKKyAgICAvLyBPT1BTCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwog
dm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9hc3NlcnQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDI0IEBA
IHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIC8vIE9PUFM6IGFkZCBhIGppdCBmYXN0IHBhdGggZm9yIHRoaXMuCisKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNl
dCk7CisgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZh
bHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5W
YWx1ZUdQUik7CisgICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChz
aG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCwgcmVnVDApOworICAgICAgICAgICAgZW1pdFZh
bHVlUHJvZmlsaW5nU2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9
Cit9CisKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUxNSw2ICsxNTE1LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RG
RyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQor
CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3Rh
dGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAg
ICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJl
cGxhY2VtZW50KCk7CisgICAgaWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0g
SklUQ29kZTo6REZHSklUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjaGFyKj4oREZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6
ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDcgQEAgdHlwZWRlZiBjaGFy
KiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElP
TiAqUF9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5
cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRl
KiwgaW50NjRfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJ
VE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNo
YXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQz
Ml90KTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJ
VE9wZXJhdGlvbl9FQ2xpKShFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3Ry
aW5nSW1wbCogKEpJVF9PUEVSQVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSos
IEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9w
ZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CkBAIC0zOTcsNiArMzk4LDcgQEAgdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBF
TkFCTEUoREZHX0pJVCkKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk9wdGltaXplKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90
KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUluZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1
ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUq
LCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYgKzE2
MzgsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExM
SU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0
Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIq
PihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNr
ZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJh
bmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3Io
Vk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiAr
MTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5j
YXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYWZ0ZXJfY2F0Y2gpOwogZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0q
LCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZN
KiwgUmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIw
NzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NzcsNiArMTk3NywxMSBAQCBfbGxpbnRfb3BfY2F0
Y2g6CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCitfbGxpbnRf
b3BfYWZ0ZXJfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
YWZ0ZXJfY2F0Y2gpCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2FmdGVyX2NhdGNoX2xlbmd0
aCkKKworCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjaGVja1N3
aXRjaFRvSklURm9yRXBpbG9ndWUoKQpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDcgQEAKIAkJ
NzBFQ0E2MEIxQjAyNDI2ODAwNDQ5NzM5IC8qIFN5bWJvbEltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MEVDQTYwQzFCMDI0MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlZFN0cmluZ0ltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkzNkQ2QTkxQzk5RjhBRTAwMEQxQUVEIC8qIFNtYWxs
UHRyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYWxsUHRyU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAv
KiBTaW5nbGVSb290R3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lu
Z2xlUm9vdEdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkFFMUVC
MjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVVSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRUM2QjAxRUIyMkI1OTAw
REFERTM2IC8qIFVVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VVVJRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y3MjM5MUQ3ODgxMTkw
MDY3NEUyNiAvKiBCcmlnYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJy
aWdhbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzOCw2ICs5MzksNyBAQAog
CQkJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkx
NDY5NDE5ODE2RUFCMDQxMDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwICovLAogCQkJCTE0
Njk0MTk1MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCisJCQkJNzk1
MjEyMDIxRjQyNTg4ODAwQkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovLAogCQkJCTFBMzUy
NEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLAogCQkJCTBGRUM4NEIwMUJEQUNEMzkw
MDgwRkY3NCAvKiBTY29wZWRMYW1iZGEuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFE
M0YgLyogU2Vjb25kcy5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFw
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHJldmlz
aW9uIDIyMDc1MSkKKysrIFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzgsMTMzICszOSw5IEBAIGNsYXNz
IEJhY2t3YXJkc0dyYXBoIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNHcmFw
aCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gV2UgdXNl
ICIjZW5kIiB0byByZWZlciB0byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgot
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjZW5kIjsgfTsKLQot
ICAgIGNsYXNzIE5vZGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgTm9kZSh0eXBlbmFtZSBHcmFw
aDo6Tm9kZSBub2RlID0gdHlwZW5hbWUgR3JhcGg6Ok5vZGUoKSkKLSAgICAgICAgICAgIDogbV9u
b2RlKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBOb2RlIHJv
b3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBOb2RlIHJlc3VsdDsKLSAgICAgICAgICAgIHJl
c3VsdC5tX25vZGUgPSAwOwotICAgICAgICAgICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCi0gICAgICAgICAgICAgICAgJiYgbV9pc1Jvb3Qg
PT0gb3RoZXIubV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBOb2RlKCk7IH0KLQotICAgICAgICBib29s
IGlzUm9vdCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2lzUm9vdDsK
LSAgICAgICAgfQotCi0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpOb2RlIG1fbm9kZTsKLSAgICAgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Ci0gICAgfTsK
LQotICAgIGNsYXNzIFNldCB7Ci0gICAgcHVibGljOgotICAgICAgICBTZXQoKQotICAgICAgICB7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJvb2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBjaGVja0FuZFNldChtX2hhc1Jvb3QsIHRydWUpOwotICAgICAgICAgICAgcmV0
dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHJl
bW92ZShjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBm
YWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1faGFzUm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5v
ZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1faGFzUm9vdCkKLSAgICAgICAgICAg
ICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSwgIiAiKTsKLSAgICAgICAgICAgIG91dC5wcmludCht
X3NldCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5h
bWUgR3JhcGg6OlNldCBtX3NldDsKLSAgICAgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9Owot
ICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGNsYXNzIE1hcCB7Ci0gICAg
cHVibGljOgotICAgICAgICBNYXAoR3JhcGgmIGdyYXBoKQotICAgICAgICAgICAgOiBtX21hcChn
cmFwaC50ZW1wbGF0ZSBuZXdNYXA8VD4oKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBjbGVhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fbWFwLmNsZWFyKCk7Ci0g
ICAgICAgICAgICBtX3Jvb3QgPSBUKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KLQotICAgICAgICBUJiBvcGVy
YXRvcltdKHNpemVfdCBpbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFpbmRleCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFw
W2luZGV4IC0gMV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3Rf
Y2FzdDxNYXAqPih0aGlzKSlbaW5kZXhdOwotICAgICAgICB9Ci0KLSAgICAgICAgVCYgb3BlcmF0
b3JbXShjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0
dXJuIG1fbWFwW25vZGUubm9kZSgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFQmIG9w
ZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICgqY29uc3RfY2FzdDxNYXAqPih0aGlzKSlbbm9kZV07Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxU
PiBtX21hcDsKLSAgICAgICAgVCBtX3Jvb3Q7Ci0gICAgfTsKLQorICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3Jh
cGhTZXQ8R3JhcGg+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5n
bGVSb290TWFwPFQsIEdyYXBoPjsKICAgICB0eXBlZGVmIFZlY3RvcjxOb2RlLCA0PiBMaXN0Owog
CiAgICAgQmFja3dhcmRzR3JhcGgoR3JhcGgmIGdyYXBoKQpAQCAtMjU1LDcgKzEzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgb3V0LnByaW50KCI8bnVsbD4i
KTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgIG91dC5wcmlu
dChyb290TmFtZSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5v
ZGUoKSkpOwogICAgICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwpJbmRleDogU291cmNlL1dU
Ri93dGYvRG9taW5hdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRv
cnMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIHRl
bXBsYXRlPHR5cGVuYW1lIEdyYXBoPgogY2xhc3MgRG9taW5hdG9ycyB7CiBwdWJsaWM6CisgICAg
dXNpbmcgTGlzdCA9IHR5cGVuYW1lIEdyYXBoOjpMaXN0OworCiAgICAgRG9taW5hdG9ycyhHcmFw
aCYgZ3JhcGgsIGJvb2wgc2VsZkNoZWNrID0gZmFsc2UpCiAgICAgICAgIDogbV9ncmFwaChncmFw
aCkKICAgICAgICAgLCBtX2RhdGEoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPEJsb2NrRGF0YT4oKSkK
QEAgLTQ3LDggKzQ5LDYgQEAgcHVibGljOgogICAgICAgICBMZW5nYXVlclRhcmphbiBsZW5nYXVl
clRhcmphbihtX2dyYXBoKTsKICAgICAgICAgbGVuZ2F1ZXJUYXJqYW4uY29tcHV0ZSgpOwogCi0g
ICAgICAgIG1fZGF0YSA9IG1fZ3JhcGgudGVtcGxhdGUgbmV3TWFwPEJsb2NrRGF0YT4oKTsKLSAg
ICAKICAgICAgICAgLy8gRnJvbSBoZXJlIHdlIHdhbnQgdG8gYnVpbGQgYSBzcGFubmluZyB0cmVl
IHdpdGggYm90aCB1cHdhcmQgYW5kIGRvd253YXJkIGxpbmtzIGFuZCB3ZSB3YW50CiAgICAgICAg
IC8vIHRvIGRvIGEgc2VhcmNoIG92ZXIgdGhpcyB0cmVlIHRvIGNvbXB1dGUgcHJlIGFuZCBwb3N0
IG51bWJlcnMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZG9taW5hbmNlCiAgICAgICAgIC8vIHRlc3Rz
LgpAQCAtMjQwLDcgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZy
b250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7
CiAgICAgICAgIGZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9m
KAogICAgICAgICAgICAgZnJvbSwKQEAgLTI1NSw3ICsyNTUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZnVsIGZvciBjb21wdXRpbmcgcHJ1bmVkIFNTQSBmb3JtLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKLSAgICAgICAgY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20s
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgICAgIGNvbnN0IExpc3QmIGZyb20sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IHNl
dDsKICAgICAgICAgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBs
KApAQCAtMjY3LDcgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0pOwogICAgIH0KICAg
ICAKLSAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IGl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihj
b25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSkgY29uc3QKKyAgICB0eXBlbmFtZSBHcmFw
aDo6U2V0IGl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCBMaXN0JiBmcm9tKSBjb25z
dAogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCByZXN1bHQ7CiAgICAgICAgIGZv
ckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTcxMiw5ICs3
MTIsOSBAQCBwcml2YXRlOgogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAg
ICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCi0g
ICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKSBjb25zdAorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKSBjb25zdAogICAgIHsKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6Okxpc3Qgd29ya2xp
c3QgPSBmcm9tOworICAgICAgICBMaXN0IHdvcmtsaXN0ID0gZnJvbTsKICAgICAgICAgd2hpbGUg
KCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpOb2Rl
IGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgICAgIGZvckFsbEJsb2Nrc0lu
RG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290
R3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMxMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdURl9TaW5nbGVSb290R3JhcGhfaAorI2RlZmluZSBX
VEZfU2luZ2xlUm9vdEdyYXBoX2gKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5j
bHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoTm9kZSB7Citw
dWJsaWM6CisgICAgLy8gV2UgdXNlICIjcm9vdCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyBy
b290IHdlIGhhdmUgY3JlYXRlZC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7
IHJldHVybiAiI3Jvb3QiOyB9OworCisgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSh0eXBlbmFtZSBH
cmFwaDo6Tm9kZSBub2RlID0gdHlwZW5hbWUgR3JhcGg6Ok5vZGUoKSkKKyAgICAgICAgOiBtX25v
ZGUobm9kZSkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIFNpbmdsZVJvb3RHcmFwaE5vZGUg
cm9vdCgpCisgICAgeworICAgICAgICBTaW5nbGVSb290R3JhcGhOb2RlIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fbm9kZSA9IDA7CisgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fbm9kZSA9PSBvdGhlci5tX25vZGUKKyAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVy
Lm1faXNSb290OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaW5nbGVSb290
R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gKnRoaXMgIT0gU2luZ2xlUm9vdEdyYXBoTm9kZSgpOyB9CisKKyAgICBib29sIGlzUm9v
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7CisgICAgfQorCisgICAg
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
IW1faXNSb290KTsKKyAgICAgICAgcmV0dXJuIG1fbm9kZTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUgbV9ub2RlOworICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxz
ZSB9OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdy
YXBoU2V0IHsKKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47Citw
dWJsaWM6CisgICAgU2luZ2xlUm9vdEdyYXBoU2V0KCkgPSBkZWZhdWx0OworICAgIAorICAgIGJv
b2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3Qo
KSkKKyAgICAgICAgICAgIHJldHVybiBjaGVja0FuZFNldChtX2hhc1Jvb3QsIHRydWUpOworICAg
ICAgICByZXR1cm4gbV9zZXQuYWRkKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIHJl
bW92ZShjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBmYWxzZSk7CisgICAg
ICAgIHJldHVybiBtX3NldC5yZW1vdmUobm9kZS5ub2RlKCkpOworICAgIH0KKworICAgIGJvb2wg
Y29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9v
dCgpKQorICAgICAgICAgICAgcmV0dXJuIG1faGFzUm9vdDsKKyAgICAgICAgcmV0dXJuIG1fc2V0
LmNvbnRhaW5zKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2hhc1Jvb3QpCisgICAgICAgICAg
ICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSwgIiAiKTsKKyAgICAgICAgb3V0LnByaW50KG1f
c2V0KTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9z
ZXQ7CisgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9OworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290TWFwIHsKKyAgICB1c2luZyBO
b2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CitwdWJsaWM6CisgICAgU2luZ2xlUm9v
dE1hcChHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFw
PFQ+KCkpCisgICAgeworICAgIH0KKworICAgIFNpbmdsZVJvb3RNYXAoU2luZ2xlUm9vdE1hcCYm
IG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQorICAgICAgICAs
IG1fcm9vdChXVEZNb3ZlKG90aGVyLm1fcm9vdCkpCisgICAgeworICAgIH0KKworICAgIHZvaWQg
Y2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9tYXAuY2xlYXIoKTsKKyAgICAgICAgbV9yb290ID0g
VCgpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6
ZSgpICsgMTsgfQorCisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCisgICAgeworICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKKyAgICAgICAgcmV0
dXJuIG1fbWFwW2luZGV4IC0gMV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PFNp
bmdsZVJvb3RNYXAqPih0aGlzKSlbaW5kZXhdOworICAgIH0KKworICAgIFQmIG9wZXJhdG9yW10o
Y29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIG1fcm9vdDsKKyAgICAgICAgcmV0dXJuIG1fbWFwW25vZGUubm9kZSgp
XTsKKyAgICB9CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PFNpbmdsZVJvb3RNYXAqPih0
aGlzKSlbbm9kZV07CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6
dGVtcGxhdGUgTWFwPFQ+IG1fbWFwOworICAgIFQgbV9yb290OworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGggeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNpbmdsZVJvb3RHcmFwaCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisKKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47Cisg
ICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CisgICAgdXNp
bmcgTGlzdCA9IFZlY3RvcjxOb2RlLCA0PjsKKworICAgIFNpbmdsZVJvb3RHcmFwaChHcmFwaCYg
Z3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgICAgIGZvciAodHlw
ZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgICAgIG1fcm9vdFN1Y2Nlc3Nvckxpc3QuYXBwZW5kKHJlYWxSb290KTsKKyAgICAgICAg
ICAgIG1fcm9vdFN1Y2Nlc3NvclNldC5hZGQocmVhbFJvb3QpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVChtX3Jvb3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgfQorCisgICAgTm9kZSBy
b290KCkgY29uc3QgeyByZXR1cm4gTm9kZTo6cm9vdCgpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBNYXA8VD4obV9ncmFwaCk7IH0K
KworICAgIExpc3Qgc3VjY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICByZXR1cm4gbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICAgICAgTGlzdCBy
ZXN1bHQ7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1fZ3JhcGgu
c3VjY2Vzc29ycyhub2RlLm5vZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIExpc3QgcHJlZGVjZXNzb3Jz
KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBhc3NlcnRJc0NvbnNpc3Rl
bnQoKTsKKworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBM
aXN0IHsgfTsKKworICAgICAgICBpZiAobV9yb290U3VjY2Vzc29yU2V0LmNvbnRhaW5zKG5vZGUu
bm9kZSgpKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgucHJlZGVjZXNzb3JzKG5vZGUu
bm9kZSgpKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIExpc3QgeyByb290KCkgfTsK
KyAgICAgICAgfQorCisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1l
IEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbV9ncmFwaC5pbmRleChub2RlLm5vZGUoKSkgKyAxOworICAgIH0KKworICAg
IE5vZGUgbm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaW5k
ZXgpCisgICAgICAgICAgICByZXR1cm4gcm9vdCgpOworICAgICAgICByZXR1cm4gbV9ncmFwaC5u
b2RlKGluZGV4IC0gMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtTm9kZXMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubnVtTm9kZXMoKSArIDE7CisgICAgfQorCisg
ICAgQ1N0cmluZyBkdW1wKE5vZGUgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ1By
aW50U3RyZWFtIG91dDsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgb3V0LnByaW50
KCI8bnVsbD4iKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
b3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOworICAgICAgICByZXR1cm4gb3V0
LnRvQ1N0cmluZygpOworICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU5vZGVzKCk7
ICsraSkgeworICAgICAgICAgICAgTm9kZSBub2RlID0gdGhpcy0+bm9kZShpKTsKKyAgICAgICAg
ICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG91
dC5wcmludChkdW1wKG5vZGUpLCAiOlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICBQ
cmVkczogIik7CisgICAgICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAgICAgICAgICBm
b3IgKE5vZGUgcHJlZGVjZXNzb3IgOiBwcmVkZWNlc3NvcnMobm9kZSkpCisgICAgICAgICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCBkdW1wKHByZWRlY2Vzc29yKSk7CisgICAgICAgICAgICBvdXQu
cHJpbnQoIlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICBTdWNjczogIik7CisgICAg
ICAgICAgICBjb21tYSA9IENvbW1hUHJpbnRlcigpOworICAgICAgICAgICAgZm9yIChOb2RlIHN1
Y2Nlc3NvciA6IHN1Y2Nlc3NvcnMobm9kZSkpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCBkdW1wKHN1Y2Nlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAg
ICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnRJ
c0NvbnNpc3RlbnQoKSBjb25zdAorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAg
IC8vIFdlIGV4cGVjdCB0aGUgcm9vdHMoKSBmdW5jdGlvbiB0byBiZSBpZGVtcG90ZW50IHdoaWxl
IHdlJ3JlIGFsaXZlIHNvIHdlIGNhbiBjYWNoZQorICAgICAgICAvLyB0aGUgcmVzdWx0IGluIHRo
ZSBjb25zdHJ1Y3Rvci4gSWYgYSB1c2VyIG9mIHRoaXMgY2hhbmdlcyB0aGUgcmVzdWx0IG9mIGl0
cyByb290cygpCisgICAgICAgIC8vIGZ1bmN0aW9uLCBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlIHVz
ZXIgd2lsbCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KKyAgICAgICAgTGlz
dCByb290U3VjY2Vzc29yTGlzdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBy
ZWFsUm9vdCA6IG1fZ3JhcGgucm9vdHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgu
cHJlZGVjZXNzb3JzKHJlYWxSb290KS5pc0VtcHR5KCkpOworICAgICAgICAgICAgcm9vdFN1Y2Nl
c3Nvckxpc3QuYXBwZW5kKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocm9v
dFN1Y2Nlc3Nvckxpc3Quc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0
ID09IG1fcm9vdFN1Y2Nlc3Nvckxpc3QpOworI2VuZGlmCisgICAgfQorCisgICAgR3JhcGgmIG1f
Z3JhcGg7CisgICAgTGlzdCBtX3Jvb3RTdWNjZXNzb3JMaXN0OworICAgIHR5cGVuYW1lIEdyYXBo
OjpTZXQgbV9yb290U3VjY2Vzc29yU2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3Vz
aW5nIFdURjo6U2luZ2xlUm9vdEdyYXBoOworCisjZW5kaWYgLy8gV1RGX1NpbmdsZVJvb3RHcmFw
aF9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318173</attachid>
            <date>2017-08-15 14:24:51 -0700</date>
            <delta_ts>2017-08-15 15:33:20 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>141583</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDc1MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6IHsKKyAgICAgICAgdm9p
ZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CisgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImFmdGVyX2NhdGNoIik7CisgICAgICAgIG91dC5wcmlu
dGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3Ro
cm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQsICJ0aHJvdyIs
IHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVu
dF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0
Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2FmdGVyX2Nh
dGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvdyIs
ICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3dfc3RhdGlj
X2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWJ1
ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3Vu
cmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTM2OCw2ICszNjks
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqCiAgICAgY2FzZSBv
cF95aWVsZDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAg
IGNhc2Ugb3BfYWZ0ZXJfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29k
ZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VY
VEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09E
RVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rv
cjx1bnNpZ25lZCwgND4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUs
MTAgKzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAg
ICAgICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNU
b1NraXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Y2FzZSBvcF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRjaEluZGljZXMuYXBw
ZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0
aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNv
ZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFmdGVyQ2F0Y2hJbmRp
Y2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGJ5dGVjb2Rl
TGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJvZmlsZXM7CisgICAg
ICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRjaEluZGljZXMpIHsK
KyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3Mu
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5kZXgpOworICAgICAg
ICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOworICAgICAgICAgICAg
bGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fscy5iaXRDb3VudCgp
KTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGxp
dmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAg
ICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsK
KworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsr
aSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5k
ID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNb
YWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7CisgICAgICAg
ICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0K
KworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNhdGNoUHJvZmlsZXMp
OworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQo
dGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0
aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29kZUJs
b2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5k
Q291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMg
PSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMg
ZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1
bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVlUHJv
ZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldEZyb21B
bGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJvZmls
ZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwxMiBAQCB2b2lkIENv
ZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAgICBudW1iZXJPZkxp
dmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9maWxl
QnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBw
cm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAg
ICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKQEAgLTI3
NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9y
CiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNv
ZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9
IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKKyAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOworICAgICAgICBpZiAo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9mZnNldCkgeworICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChmb3VuZCk7
CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92YWx1ZVByb2ZpbGVz
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
cj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFyZUNhc2VQcm9maWxl
LCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PEFycmF5QWxsb2Nh
dGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAgQXJyYXlQcm9maWxl
VmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0
LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXQKIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zm
c2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNl
dCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBW
YWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0K
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4IEBAIGlubGluZSBp
bnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4gcmFyZUNhc2VQcm9m
aWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9vcGVyYW5kOworfTsK
Kworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBtX3NpemUoc2l6ZSkK
KyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1vcmUgc3R1ZmYgdGhh
biB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGUgb3VyIHZhbHVlIHByb2ZpbGVzCisgICAg
ICAgIC8vIHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0g
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9m
KFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5k
T3BlcmFuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAg
ICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1
ZmZlci5nZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxv
Y1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTcwLDYgKzM5NzAsOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2F0Y2goUmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICBlbWl0T3Bj
b2RlKG9wX2FmdGVyX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2Fs
U2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0aW9uYWwgdGhpbmdz
LgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcuaAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNDRkcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dy
YXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3YXJkc0dyYXBoPFNT
QUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NGRyk7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRzQ0ZHKEdyYXBoJiBn
cmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAg
ICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+KGdyYXBoKSkKICAg
ICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBCYXNp
Y0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRlY29kZUJlZ2luKQog
ICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQorICAgICwgaXND
YXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICwg
Y2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNv
dW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwogICAgICAgICB3aGls
ZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0gICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoKLSAgICAgICAgICAg
IGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAgICAgICAgICBjYXNl
IFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIERp
cmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Ci0gICAgICAg
ICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFVucmVh
Y2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBjYW4gY29udGFpbiBQ
aGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25seSBiZSBvbmUgb3Ig
dHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5vLW9wcyBhbmQgd2ls
bCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAgIGNhc2UgQ2hlY2s6
IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBuby1vcC4KICAgICAg
ICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9j
ayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRleDsKICAgICAKICAg
ICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9pbnQ7CiAgICAgYm9v
bCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKICAgICBib29sIGNm
YUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJy
YXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCisjaW5jbHVkZSAiREZHQ0ZH
LmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhp
dFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKQEAgLTExMzAsNyArMTEzMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3Qg
YmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0
d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0
b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0
aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxv
Y2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91
bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3
YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50
IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0
byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9j
ayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50
QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFy
Z3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRB
cmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVt
aXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0
b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAg
bV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDkyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlw
ZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRv
R3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5
cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50
LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTU3LDYgKzUxNjIsMTE4IEBA
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBv
cF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRy
dWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBv
cF9hZnRlcl9jYXRjaDogeworICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBm
cmFtZXMuIFdlIHdvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9hZnRlcl9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2FmdGVyX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAg
ICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUu
cG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQ
cmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRl
ZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBX
VEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0Fy
ZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0
aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fs
UHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19j
YXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25z
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5k
LnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rp
b25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1l
bnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1
bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVk
aWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFBy
ZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0
aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNv
bXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAg
ICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0Y2gpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRl
ZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICAvLyBX
ZSBkbyB0aGlzIGJlY2F1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHdoZXJlIHRvIE9TUiBlbnRlciwg
d2UgZG8gaXQgcmVsYXRpdmUKKyAgICAgICAgICAgIC8vIHRvIG9wX2FmdGVyX2NhdGNoLgorICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
KworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+
PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRo
YW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBp
bmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdl
J3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cg
dG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2Fs
cyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJn
dW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBh
ZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcElu
Zm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICAr
K251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJ
bmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1Rv
U2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJlY2F1c2Ug
d2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZlIGxvY2Fs
cy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3Vy
IGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUg
YmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0
byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJy
YXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJn
dW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0
KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmly
c3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfYWZ0ZXJfY2F0
Y2gpOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAg
ICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpS
ZWd1bGFyKTsKQEAgLTYxNTIsOCArNjI2OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBp
cyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJs
b2NrcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVu
ZChibG9jay5wdHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjEwLDEw
ICs2MzI5LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAg
ICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1f
dW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsK
KwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxs
VW5yZWFjaGFibGVCbG9ja3MoKTsKKworICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENQU0NGRz4obV9ncmFwaCk7CiAgICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTYyMjQsNyAr
NjM0NSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDAp
LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygw
KS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwog
ICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFy
YW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRlclNsb3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50
cnlCeXRlY29kZUluZGV4KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJc
biIpOwogICAgICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2Rl
IHJvb3QoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBt
X2dyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9j
aygwKTsKKyAgICB9CisKKyAgICBMaXN0IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVz
dWx0OworICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dHMpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01h
cCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBw
cml2YXRlOgogICAgIEdyYXBoJiBtX2dyYXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGlj
IFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsKK3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBo
KQorICAgICAgICA6IFNpbmdsZVJvb3RHcmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7
CisgICAgICAgIEFTU0VSVChncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsK
KwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+
Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKGdyYXBoLm1fY3BzQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RD
RkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsK
KyAgICByZXR1cm4gKmdyYXBoLm1fc3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAg
ICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1l
bnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNl
ZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0g
b25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBh
bmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92
ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNp
emUoKTsgaS0tOykKLSAgICAgICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVh
ZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRp
bWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0
ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAg
ICAgIAogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0lu
UHJlT3JkZXIoKTsKICAgICAgICAgCkBAIC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAg
ICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWVbaV07Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykp
IHsKICAgICAgICAgICAgICAgICBtX25vZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAg
ICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC03NzksNyArNzc5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJp
Y3QgZG9taW5hdGlvbiBiZWNhdXNlIHRoaXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBv
d24gYmxvY2sgaWYKICAgICAgICAgICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlv
biBpbiB0aGUgYmxvY2suIENsZWFybHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAg
ICAgICAgIC8vIGl0c2VsZiwgdGhlIHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3Qg
ZG9taW5hdGUgdXMuCi0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmlj
dGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9zc2FEb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgICBJdCBzdHJpY3RseSBkb21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0
ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Js
b2NrKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0
b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaC0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaC5zZXROb2RlKGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0OSw2ICsyNDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlECiAgICAgY2FzZSBvcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRf
cGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgY2FzZSBvcF9hZnRlcl9jYXRj
aDoKICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3Ro
OgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNiArMTQxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENo
ZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw3ICszNyw3IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpKQogICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1cmVC
YWNrd2FyZHNEb21pbmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7Cisg
ICAgU1NBRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMm
IG1fYmFja3dhcmRzRG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMs
OCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJs
b2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAgICAg
ICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAgICAg
IGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1ZlY3Rv
cik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4tdXAu
CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3Mo
KTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5
NSw4IEBAIFZlY3RvcjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBkdW1w
SGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2aW91
c09yaWdpbik7CiAgICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgbV9n
cmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRv
cnMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAgIGNv
bnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJseVBy
ZWZpeCA9ICIgICAgICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVja2V0
OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxlOgor
ICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJl
dHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRv
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwxNiArMzUsMzIgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdU
Rjo6RG9taW5hdG9yczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3Mg
RG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6
RG9taW5hdG9yczxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8
Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKIAor
dXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU0RvbWlu
YXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2
YWx1ZT46OnR5cGU+CitDUFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBo
JiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5hdG9ycyYg
ZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBo
LmVuc3VyZVNTQURvbWluYXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwog
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDExICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICAgICAg
LCBtX3Jlc3VsdCh0cnVlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9ybSA9PSBT
U0EpOwogICAgIH0KICAgICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRnZSkK
ICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJlc3VsdCA9
IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBt
X2Jsb2NrKTsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coCiAg
ICAgICAgICAgICAgICAgIkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uubm9kZSgp
LT5vd25lciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5NCw2ICsxOTk0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBDaGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgog
ICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhpbnQ6
CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3Jt
YXQgeworZW51bSBGbHVzaEZvcm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBG
bHVzaGVkSW50MzIsCiAgICAgRmx1c2hlZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRl
ICJERkdOYXR1cmFsTG9vcHMuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAj
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRl
Y29kZUxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAt
NzMsNyArNzIsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9w
bGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9w
cm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9jZmcoc3Rk
OjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlx
dWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1f
Zml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0
aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTQwOSw5ICs0MDgsMTMgQEAg
Ym9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCitz
dGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9kZShjb25zdCBDUFNDRkc6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUubm9kZSgpOyB9CitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9k
ZShCYXNpY0Jsb2NrKiBibG9jaykgeyByZXR1cm4gYmxvY2s7IH0KKwogdm9pZCBHcmFwaDo6ZHVt
cEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNC
bG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0
KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIg
KCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIp
OiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JU
YXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZp
eCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2lu
LnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8g
IiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6
ICIiLCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAi
IiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0
aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDog
IiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00MjIsMTggKzQyNSwyNiBAQCB2b2lkIEdyYXBoOjpkdW1w
QmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBp
ZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBt
X3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAg
IG91dC5wcmludCgiXG4iKTsKLSAgICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZh
bGlkKCkpIHsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBt
X2RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVk
QnkoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNl
IEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAi
XG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZy
b250aWVyOiAiLCBtX2RvbWluYXRvcnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9j
a0xpc3QoMSwgYmxvY2spKSwgIlxuIik7CisKKyAgICBhdXRvIHByaW50RG9taW5hdG9ycyA9IFsm
XSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21p
bmF0ZWQgYnk6ICIsIGRvbWluYXRvcnMuZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgZG9taW5hdG9ycy5ibG9ja3NE
b21pbmF0ZWRCeShibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBE
b21pbmFuY2UgRnJvbnRpZXI6ICIsIGRvbWluYXRvcnMuZG9taW5hbmNlRnJvbnRpZXJPZihibG9j
ayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFu
Y2UgRnJvbnRpZXI6ICIsCisgICAgICAgICAgICBkb21pbmF0b3JzLml0ZXJhdGVkRG9taW5hbmNl
RnJvbnRpZXJPZih0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZG9taW5h
dG9ycyk+Ojp0eXBlOjpMaXN0IHsgYmxvY2sgfSksICJcbiIpOworICAgIH07CisKKyAgICBpZiAo
dGVybWluYWxzQXJlVmFsaWQoKSkgeworICAgICAgICBpZiAobV9zc2FEb21pbmF0b3JzKQorICAg
ICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX3NzYURvbWluYXRvcnMpOworICAgICAgICBlbHNl
IGlmIChtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWluYXRvcnMoKm1fY3Bz
RG9taW5hdG9ycyk7CiAgICAgfQorCiAgICAgaWYgKG1fYmFja3dhcmRzRG9taW5hdG9ycyAmJiB0
ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3
YXJkcyBkb21pbmF0ZXMgYnk6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+ZG9taW5hdG9yc09m
KGJsb2NrKSwgIlxuIik7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBk
b21pbmF0ZXM6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxv
Y2spLCAiXG4iKTsKQEAgLTQ0NiwyOSArNDU3LDMzIEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hl
YWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1i
ZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJc
biIpOwotICAgIGlmIChtX25hdHVyYWxMb29wcykgewotICAgICAgICBpZiAoY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisKKyAgICBh
dXRvIHByaW50TmF0dXJhbExvb3BzID0gWyZdIChhdXRvJiBuYXR1cmFsTG9vcHMpIHsKKyAgICAg
ICAgaWYgKGNvbnN0IGF1dG8qIGxvb3AgPSBuYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5z
OiIpOwogICAgICAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7
CisgICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZCh1bmJveExvb3BOb2RlKGxv
b3AtPmF0KGkpKS0+aW5kZXgpOwogICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKICAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nTG9vcHMgPSBuYXR1
cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwogICAgICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcg
bG9vcCBoZWFkZXJzOiIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
LCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnVuYm94TG9vcE5vZGUoY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSkpOwog
ICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICB9Ci0gICAgfQorICAgIH07CisK
KyAgICBpZiAobV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1f
c3NhTmF0dXJhbExvb3BzKTsKKyAgICBlbHNlIGlmIChtX2Nwc05hdHVyYWxMb29wcykKKyAgICAg
ICAgcHJpbnROYXR1cmFsTG9vcHMobV9jcHNOYXR1cmFsTG9vcHMpOworCiAgICAgaWYgKCFibG9j
ay0+cGhpcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5v
ZGVzOiIpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUo
KTsgKytpKSB7CkBAIC01MDIsOCArNTE3LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4
cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwg
bV91bmlmaWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0
ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBB
cmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwot
ICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9h
cmd1bWVudHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1
ZSksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSog
bGFzdE5vZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY1NywxMCBAQCB2b2lkIEdyYXBoOjpoYW5k
bGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxp
dHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmts
aXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBw
ZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03
OTgsOSArODE3LDEwIEBAIHZvaWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZv
aWQgR3JhcGg6OmludmFsaWRhdGVDRkcoKQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7
Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9
IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBt
X3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg3MCwzNyBAQCBCbG9ja0xp
c3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAg
ICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAg
ICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9j
ayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAg
ICAgICAgICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBv
dmVyIHByZSBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgIC8vIGJlZm9y
ZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBb
Jl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBh
ID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJl
c3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0g
cmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21p
bmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikK
KyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9y
cygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODYzLDcgKzkwOCw4IEBA
IEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCBy
ZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlz
dC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNo
IChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtODc2LDYg
KzkyMiwzMSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkpIHsKKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRv
cnMpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcmV2ZXJzZSBwb3N0IG9y
ZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlu
Z3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVz
dWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5z
aXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0
W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3Jz
LmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGkgPiBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAg
ICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsK
KyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMwICsxNTQzLDQzIEBA
IHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFp
bHVyZSgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVt
cChibG9jayksICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQog
Ci1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBH
cmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRv
cnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5h
dG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21p
bmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWlu
YXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9y
cz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9kb21pbmF0b3JzOworICAgIFJFTEVBU0VfQVNTRVJU
KG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX3NzYURv
bWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NB
RG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1Q
cmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogewotICAgIGlmICghbV9w
cmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51
bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX2Nwc05h
dHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7
CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCitTU0FOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewotICAgIGVuc3VyZURv
bWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxM
b29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0gICAgcmV0dXJu
ICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKKyAg
ICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykKKyAg
ICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29w
cz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJk
c0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9mb3JtID09IFNTQSk7IC8vIFdlIGNvdWxkIGNoYW5nZSB0aGlzLCBidXQgaXQncyBvbmx5IHVz
ZWQgaW4gU1NBIGZvciBub3csIGFuZCB3ZSBkb24ndCBuZWVkIHR3byBncmFwaCBmaWVsZHMgeWV0
IGZvciB0d28gdHlwZXMgb2YgYmFja3dhcmRzIENGRy4KICAgICBpZiAoIW1fYmFja3dhcmRzQ0ZH
KQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzQ0ZH
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1MDMsNiArMTU4Nyw3
IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygKIAogQmFja3dhcmRz
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNEb21pbmF0
b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
Y2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9taW5h
dG9yczsKQEAgLTE1MTAsNiArMTU5NSw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjpl
bnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1cmVD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQogICAgICAg
ICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTYxMyw3IEBAIE1ldGhvZE9mR2V0dGluZ0FWYWx1
ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5sb2Nh
bCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9hcmd1
bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJndW1lbnRd
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSkKQEAgLTE2OTgsNiArMTc4NCwxMyBAQCBib29sIEdyYXBoOjpjYW5Eb0Zhc3RTcHJlYWQoTm9k
ZSogbm9kZSwgCiAgICAgcmV0dXJuIGFsbEdvb2Q7CiB9CiAKK3ZvaWQgR3JhcGg6OmNsZWFyQ1BT
Q0ZHRGF0YSgpCit7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fY3Bz
RG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNDRkcgPSBudWxscHRyOworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxv
Y2s7CkBAIC01NiwxMCArNjAsMTcgQEAgY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xhc3MgQmFja3dh
cmRzRG9taW5hdG9yczsKIGNsYXNzIENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzOwotY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBEb21p
bmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNz
IEZsb3dJbmRleGluZzsKLWNsYXNzIE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBvc3ROdW1iZXJp
bmc7CisKK2NsYXNzIENQU0NGRzsKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNpbmcgQ1BTRG9t
aW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21p
bmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8Q1BT
Q0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FDRkc+OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAtOTAxLDkgKzkxMiwxMCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3Jz
KCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOwotICAg
IE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9taW5hdG9ycyYg
ZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRvcnMmIGVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxMb29wcygpOwor
ICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgQmFja3dh
cmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBl
bnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05MTYsMTIgKzkyOCwx
NSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc1Njb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2hhc0RlYnVnZ2VyRW5hYmxlZCB8fCBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQogICAg
IGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2Vz
RXZhbCgpOyB9CiAKKyAgICB2b2lkIGNsZWFyQ1BTQ0ZHRGF0YSgpOworCiAgICAgVk0mIG1fdm07
CiAgICAgUGxhbiYgbV9wbGFuOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29k
ZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNC
bG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBt
X2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAg
VmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVk
SlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVl
SGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxMSArOTcxLDExIEBAIHB1Ymxp
YzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0
aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVm
ZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJh
c2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAg
ICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0
aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9y
PEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZl
Y3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBT
ZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsK
ICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKQEAgLTk4MiwxMCArOTk3LDEyIEBA
IHB1YmxpYzoKICAgICBIYXNoU2V0PHN0ZDo6cGFpcjxKU09iamVjdCosIFByb3BlcnR5T2Zmc2V0
Pj4gbV9zYWZlVG9Mb2FkOwogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5
cGU6OkRlc2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+
PiBtX2RvbUpJVFNuaXBwZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3JzPiBtX2Rv
bWluYXRvcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9z
dE51bWJlcmluZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25hdHVyYWxM
b29wczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q1BTRG9taW5hdG9ycz4gbV9jcHNEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
U0FEb21pbmF0b3JzPiBtX3NzYURvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU05h
dHVyYWxMb29wcz4gbV9jcHNOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQU5h
dHVyYWxMb29wcz4gbV9zc2FOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQUNG
Rz4gbV9zc2FDRkc7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0NGRz4gbV9jcHNDRkc7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9yczsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+IG1fY29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xMDA5LDYgKzEwMjYsOCBAQCBwdWJsaWM6CiAgICAgUmVm
Q291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxl
ZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJf
dD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93
SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxB
YnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw2MSBAQCBzdGF0
aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3Ry
YWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBo
LmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3Qt
PmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZh
bHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVy
ZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9
IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+
dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52
YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBm
b3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAg
ICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwot
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2lu
dCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91
bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZh
bHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1
cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0
YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsg
KytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSku
Y2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAg
aWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
aGVuIHN1cHBvcnRpbmcgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTCwgd2UgbmVlZCB0
byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAvLyB3aGF0IHdlIGRvIGhlcmU6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBmb3Jt
YXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAg
ICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShT
cGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZs
dXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50
cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3Vt
ZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hl
ZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5
cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVz
aGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5z
ZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZs
dXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNl
dFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1l
bnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNo
IGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSku
Y2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0g
ICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBt
X2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5u
dW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRU
YWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAg
IGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAgICAgICAg
ICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAg
ICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJsb2NrLT5j
ZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNyArMzcxLDcgQEAgaW5saW5lIGJvb2wgSW5Q
bGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZShi
YXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICByZXR1cm4g
Y2hhbmdlZDsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBSZXR1cm46CiAgICAgY2FzZSBU
YWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw3IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoKQogICAgIGNvbW1vbi5zaHJpbmtUb0Zp
dCgpOwogICAgIG9zckVudHJ5LnNocmlua1RvRml0KCk7CiAgICAgb3NyRXhpdC5zaHJpbmtUb0Zp
dCgpOworICAgIGNhdGNoRW50cnlwb2ludHMuc2hyaW5rVG9GaXQoKTsKICAgICBzcGVjdWxhdGlv
blJlY292ZXJ5LnNocmlua1RvRml0KCk7CiAgICAgbWluaWZpZWRERkcucHJlcGFyZUFuZFNocmlu
aygpOwogICAgIHZhcmlhYmxlRXZlbnRTdHJlYW0uc2hyaW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
NiArNjksMzIgQEAgcHVibGljOgogICAgICAgICAgICAgb3NyRW50cnksIG9zckVudHJ5LnNpemUo
KSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5k
ZXgpOwogICAgIH0KKworICAgIENhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoT1NSRW50cnlEYXRh
Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxDYXRjaEVudHJ5cG9pbnREYXRhLCB1bnNpZ25lZD4oCisg
ICAgICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLCBjYXRjaEVudHJ5cG9pbnRzLnNpemUoKSwgYnl0
ZWNvZGVJbmRleCwKKyAgICAgICAgICAgIFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhKiBp
dGVtKSB7IHJldHVybiBpdGVtLT5tX2J5dGVjb2RlSW5kZXg7IH0pOworICAgIH0KKworICAgIHZv
aWQgZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCkKKyAgICB7CisgICAgICAgIHN0ZDo6c29y
dChjYXRjaEVudHJ5cG9pbnRzLmJlZ2luKCksIGNhdGNoRW50cnlwb2ludHMuZW5kKCksIFtdIChj
b25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBhLCBjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBi
KSB7CisgICAgICAgICAgICByZXR1cm4gYS5tX2J5dGVjb2RlSW5kZXggPCBiLm1fYnl0ZWNvZGVJ
bmRleDsKKyAgICAgICAgfSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB1bnNpZ25l
ZCBwcmV2aW91c0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBDYXRjaEVudHJ5cG9pbnRE
YXRhJiBlbnRyeXBvaW50IDogY2F0Y2hFbnRyeXBvaW50cykgeworICAgICAgICAgICAgQVNTRVJU
KHByZXZpb3VzSW5kZXggPCBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAg
ICBwcmV2aW91c0luZGV4ID0gZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0K
KyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hFbnRyeXBvaW50KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hG
b3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hFbnRyeXBvaW50
cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2Rl
T2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAogICAgIHVu
c2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBAIC0xMzIs
NiArMTU4LDcgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAg
ICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVu
dHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6
Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVy
eT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFy
aWFibGVFdmVudFN0cmVhbTsKQEAgLTE2OCw2ICsxOTUsOCBAQCBwdWJsaWM6CiAgICAgV3JpdGVC
YXJyaWVyPENvZGVCbG9jaz4gbV9vc3JFbnRyeUJsb2NrOwogICAgIHVuc2lnbmVkIG9zckVudHJ5
UmV0cnk7CiAgICAgYm9vbCBhYmFuZG9uT1NSRW50cnk7CisKKyAgICBNYWxsb2NQdHI8SlNWYWx1
ZT4gY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVt
aXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgp
CiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAg
ICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1h
bGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAg
IG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7
CkBAIC00MjYsNiArNDI5LDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlC
dWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1f
Z3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29k
ZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NywyMyBAQCB2b2lkKiBK
SVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRD
b21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJ
VENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3Rv
cjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQo
YmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNC
bG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5
IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBv
aW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hl
YWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpu
b3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwg
YmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJU
KCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBu
b3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93
IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0
ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5
ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2lu
LCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1f
ZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVh
ZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90
b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNl
T1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1h
dD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
KCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2Ugewog
Cit1c2luZyBOYXR1cmFsTG9vcCA9IFNTQU5hdHVyYWxMb29wOworCiBzdHJ1Y3QgTG9vcERhdGEg
ewogICAgIExvb3BEYXRhKCkKICAgICAgICAgOiBwcmVIZWFkZXIobnVsbHB0cikKQEAgLTc0LDgg
Kzc2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxs
cHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7
CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICBtX2dyYXBoLmVuc3VyZUNvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKQEAgLTgzLDcg
Kzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
bnVtTG9vcHMoKSk7CisgICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+bnVtTG9vcHMoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBz
ZXQgb2YgdGhpbmdzIGVhY2ggbG9vcCB3cml0ZXMgdG8sIG5vdCBpbmNsdWRpbmcgYmxvY2tzIHRo
YXQKICAgICAgICAgLy8gYmVsb25nIHRvIGlubmVyIGxvb3BzLiBXZSBmaXggdGhpcyBsYXRlci4K
QEAgLTk4LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2stPmNmYUhh
c1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBs
b29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsK
ICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AtPmluZGV4KCldOwpAQCAtMTE2LDE0
ICsxMTgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBGb3IgZWFjaCBsb29wOgogICAgICAgICAv
LyAtIElkZW50aWZ5IGl0cyBwcmUtaGVhZGVyLgogICAgICAgICAvLyAtIE1ha2Ugc3VyZSBpdHMg
b3V0ZXIgbG9vcHMga25vdyB3aGF0IGl0IGNsb2JiZXJzLgotICAgICAgICBmb3IgKHVuc2lnbmVk
IGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRl
eC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9v
cEluZGV4ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4
LS07KSB7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKICAgICAgICAgICAgIExvb3BEYXRhJiBk
YXRhID0gbV9kYXRhW2xvb3AuaW5kZXgoKV07CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZv
ciAoCi0gICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwogICAgICAgICAgICAgICAgIG91dGVyTG9v
cDsKLSAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5p
bm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCisgICAgICAgICAgICAgICAgb3V0ZXJMb29w
ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxv
b3ApKQogICAgICAgICAgICAgICAgIG1fZGF0YVtvdXRlckxvb3AtPmluZGV4KCldLndyaXRlcy5h
ZGRBbGwoZGF0YS53cml0ZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBoZWFkZXIgPSBsb29wLmhlYWRlcigpOwpAQCAtMTM3LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaGVhZGVyLT5wcmVkZWNl
c3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vzc29yc1tpXTsKLSAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIsIHByZWRlY2Vzc29yKSkKKyAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIs
IHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgICAgICBwcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE5MSw3ICsxOTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxvb3BTdGFjazsKICAgICAg
ICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sg
OiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkgewotICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxv
Y2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFs
b29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0xOTksNyAr
MjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yICgKICAgICAgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogY3VycmVudCA9IGxvb3A7CiAgICAgICAgICAgICAgICAgY3VycmVudDsK
LSAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJN
b3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFw
aC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKICAgICAg
ICAgICAgICAgICBsb29wU3RhY2suYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBSZW1lbWJlcjogdGhlIGxvb3Agc3RhY2sgaGFzIHRoZSBpbm5lci1tb3N0IGxv
b3AgYXQgaW5kZXggMCwgc28gaWYgd2Ugd2FudApAQCAtMzE4LDcgKzMyMCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIGJlY2F1c2UgbW9zdCBsb29wcyBhcmUgc21hbGwgYW5kIG1vc3QgYmxvY2tz
IGJlbG9uZyB0byBmZXcgbG9vcHMuCiAgICAgICAgIGZvciAodW5zaWduZWQgYm9keUluZGV4ID0g
bG9vcC0+c2l6ZSgpOyBib2R5SW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1
YkJsb2NrID0gbG9vcC0+YXQoYm9keUluZGV4KTsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBzdWJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2sp
OworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CiAgICAgICAgICAgICBpZiAoIXN1Ykxv
b3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBz
dWJQcmVIZWFkZXIgPSBtX2RhdGFbc3ViTG9vcC0+aW5kZXgoKV0ucHJlSGVhZGVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xp
dmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7
Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9
PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAg
ICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5p
c0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVy
LT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+
b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5h
ZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihH
cmFwaCYgZ3JhcGgsIEJsb2NrSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQsIEJhc2ljQmxvY2sq
IGJsb2NrKQogeworICAgIC8vIE9PUFM6IG1heWJlIHVzZSBoYXNoc2V0IGZvciB0aGlzIGFzc2Vy
dC4KKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9j
aykpOyAvLyBBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIQorCiAgICAgLy8g
RklYTUU6IElmIHdlIHJ1biB0aGlzIHV0aWxpdHkgb24gU1NBIElSLCB0aGVuIHdlIG1heSBlbmQg
dXAgd2l0aCBhIGJpemFycmUgYXJyYW5nZW1lbnQgb2YKICAgICAvLyBVcHNpbG9ucyBhbmQgUGhp
cywgbGlrZToKICAgICAvLwpAQCAtNjksNyArNzIsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVI
ZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIHRoZSBtYXggb2YgdGhl
IGZyZXF1ZW5jaWVzIG9mIHRoZSBsb29wIGJvZHkncyBub24tbG9vcCBwcmVkZWNlc3NvcnMuCiAg
ICAgZmxvYXQgZnJlcXVlbmN5ID0gMDsKICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29y
IDogYmxvY2stPnByZWRlY2Vzc29ycykgewotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3Jz
LT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3Bz
RG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNl
c3Nvci0+ZXhlY3V0aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBCYXNpY0Js
b2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNl
c3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAg
ICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBw
cmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRl
Y2Vzc29yc1twcmVkZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7
CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsx
MzMsMTYgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAo
dW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsg
bG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29w
SW5kZXggPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgt
LTspIHsKKyAgICAgICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5t
X2Nwc05hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogZXhpc3RpbmdQcmVIZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05l
d1ByZUhlYWRlciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3Nv
ckluZGV4ID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJ
bmRleC0tOykgewotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9v
cC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHBy
ZWRlY2Vzc29yKSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9
IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3Nvcklu
ZGV4LS07KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29w
LmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCkubm9kZSgpLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgZXhpc3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY4
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1
bCBpZiBpdCdzIHBvc3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAg
ICAgICAgICAvLyBpZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9l
c24ndCBhbGxvdyBmb3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2lu
IG9mIHRoZSBsb29wIGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJl
LWhlYWRlci4KLSAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFk
ZXIoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVI
ZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAg
ICAgICAgICAgICAgJiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhp
dE9LKQogICAgICAgICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0
ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhl
Y3V0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAg
Ym9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50
VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9k
ZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9j
a0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBA
QCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBJbnQ1
MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAg
Y2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsMTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Ci0KLWNsYXNz
IE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRl
IDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0
dXJhbExvb3BzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9v
cHMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxM
b29wcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3Jh
cGgubV9jZmcsIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkK
KyAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4o
Z3JhcGgpLCBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlv
bkVuYWJsZWQoKSkKICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBTmF0dXJhbExvb3AgPSBX
VEY6Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0
dXJhbExvb3A8Q1BTQ0ZHPjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAg
ICBib29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3
aXRjaDsKICAgICB9CkBAIC0xMzcyLDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAg
fQorCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAg
ICAgaWYgKGlzSnVtcCgpKQpAQCAtMTU0MSw2ICsxNTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKG9wKCkgPT0gSWRlbnRpdHlXaXRoUHJvZmlsZSk7CiAgICAgICAgIHJldHVybiBtX29w
SW5mby5hczxTcGVjdWxhdGVkVHlwZT4oKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9T
UkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFj
dENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7Cisg
ICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hMb2NhbFByZWRpY3Rpb24oKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1
cm4gbV9vcEluZm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigpOworICAgIH0KICAgICAKICAgICBib29s
IGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CkBAIC0xOTM2LDcgKzE5NDksNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0K
LSAgICAKKwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1Ig
ZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwg
Ki9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1h
Y3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRy
YWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hl
Y2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcElu
TG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1
ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgi
CkBAIC0zMzYsNiArMzM3LDY3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4
ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50
cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVB
U0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAg
REZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAg
IFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRh
KiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2Rl
SW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAg
ICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0
IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndCBjb21waWxlIHRoaXMKKyAgICAgICAgLy8gYWZ0ZXJf
Y2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0
byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0
eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVu
dHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+cih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1
bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJn
dW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMy
OgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNo
ZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6
Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1
bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBl
LgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToK
KyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAg
ICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJh
bWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9y
RXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBh
Y2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVT
aXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9hZnRlcl9j
YXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2ludGVyKTsKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihw
cm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLmdldCgpW2luZGV4XSA9IGV4ZWMtPnVuY2hl
Y2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAg
ICB9KTsKKworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNh
dGNoRW50cnlwb2ludC0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIK
KyNpbmNsdWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5j
bHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWdu
ZWQgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9i
eXRlY29kZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAgdW5z
aWduZWQgbV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7
CisgICAgLy8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHBy
b3ZlIHRoZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3Jl
IGVudGVyaW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2Fy
Z3VtZW50Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZm
ZXIgdGhhdCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2Uu
IElmIHRoaXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShF
eGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYg
bnVsbCBpcyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBp
dCdzIHRoZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0
YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5l
IHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkg
eyByZXR1cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tJbnNlcnRp
b25TZXQuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2lu
Y2x1ZGUgIkRGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUGhh
c2UuaCIKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChi
eXRlY29kZUluZGV4ICE9IFVJTlRfTUFYKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5lZWRlZCBi
eSBjcmVhdGVQcmVIZWFkZXIoKS4KLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7
CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAg
ICAgQ29kZUJsb2NrKiBiYXNlbGluZSA9IG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrOwogICAgICAg
ICAKQEAgLTExMiwxNiArMTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3Mg
dG8gaGVyZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAg
ICAKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiBuZXdBcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAg
ICBmb3IgKGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRl
cnMoKTsgKythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+
dmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xk
Tm9kZSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUg
YSBTZXRBcmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBv
bGROb2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
b2xkTm9kZSA9IG5ld0FyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBt
X2dyYXBoLCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBP
cEluZm8ob2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIG5ld0FyZ3VtZW50
c1thcmd1bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwg
PSAwOyBsb2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAt
MTM5LDggKzE0MSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVh
ZGVyKG1fZ3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAg
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBo
Lm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2lu
dHNbMF0gPSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmNsZWFyKCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5l
d1Jvb3QsIG5ld0FyZ3VtZW50cyk7CisKKyAgICAgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVh
Y2hhYmlsaXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3
LDcgKzcyNyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZD
b3VudHMoKTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwog
ICAgICAgICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAg
IG1fY29tYmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
Niw5ICszNjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAg
ICAgLy8gSWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywg
dG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93
IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9u
RW5hYmxlZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRm
Zy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJp
bmcoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVu
c3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdf
SklUKQotCi0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxv
Y2tXb3JrbGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFw
aCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAg
ICAKLSAgICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1
c2goZ3JhcGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAg
IHVuc2lnbmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIg
aXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewot
ICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9k
ZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5w
dXNoUG9zdChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5w
dXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9y
ZGVyOjpQb3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBu
ZXh0UG9zdE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBK
U0M6OkRGRzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5k
IGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAg
ICAgICAgb3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVy
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgi
Ci0jaW5jbHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgot
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRn
ZSwKLSAgICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5Q
cmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayog
YmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVu
c2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFw
W2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFu
Y2VzdG9yIG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZy
b20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJl
cihmcm9tKSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkg
PiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFz
aWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gZnJvbSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAg
ICAKLSAgICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2lj
QmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JP
Zih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNC
bG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
aXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdp
dmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5
b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5
b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Js
b2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0
cmljdERlc2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVk
Z2U7Ci0gICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAg
ICAgICAgIHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0Vk
Z2U7Ci0gICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAg
ICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsK
LSAgICB9OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25JbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBw
dWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
cHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBX
ZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUg
YXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxy
ZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAgICAgICAg
YXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1f
Z3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0g
MDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygp
KTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9m
aWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2Zp
bGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjUsNiArNzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
IHsKKyAgICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Y2F0Y2hMb2NhbFBy
ZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICAgICAgY2FzZSBH
ZXREeW5hbWljVmFyOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZVRv
cCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0
YWNrU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9n
cmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBTU0FDYWxjdWxh
dG9yIHNzYUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRp
b25TZXQobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNh
bGN1bGF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ2FsY3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEyICs5
NSwxMiBAQCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0RlCiAKIFNTQUNh
bGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZihCYXNpY0Js
b2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiByZWFjaGluZ0Rl
ZkF0VGFpbChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKKyAg
ICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20o
YmxvY2spLCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRv
cjo6cmVhY2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJs
ZSkKIHsKLSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmlk
b20oYmxvY2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9zc2FEb21p
bmF0b3JzLT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBtX2RhdGFbYmxv
Y2tdLm1fZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRlZjsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxj
dWxhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZvaWQgY29tcHV0
ZVBoaXMoY29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRvcnMpOworICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FEb21pbmF0b3Jz
KTsKICAgICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDogbV92YXJpYWJs
ZXMpIHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBy
dW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1fZ3JhcGgubV9z
c2FEb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRp
ZXJPZigKICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZzLAogICAgICAg
ICAgICAgICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2NrKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVk
Q1BTKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVudHMoKTsKLSAg
ICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguY2xlYXJD
UFNDRkdEYXRhKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBo
IGJlZm9yZSBTU0EgdHJhbnNmb3JtYXRpb246XG4iKTsKQEAgLTExMCw3ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIERlY2lkZSB3aGVyZSBQaGlzIGFy
ZSB0byBiZSBpbnNlcnRlZC4gVGhpcyBjcmVhdGVzIHRoZSBQaGkncyBidXQgZG9lc24ndCBpbnNl
cnQgdGhlbQotICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNl
cnQgdGhlbSBiZWNhdXNlIFNTQUNhbGN1bGF0b3IgaXMgc3VjaCBhIGJyby4KKyAgICAgICAgLy8g
eWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNT
QUNhbGN1bGF0b3IgdGVsbHMgdXMgdG8uCiAgICAgICAgIG1fY2FsY3VsYXRvci5jb21wdXRlUGhp
cygKICAgICAgICAgICAgIFsmXSAoU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHNzYVZhcmlhYmxl
LCBCYXNpY0Jsb2NrKiBibG9jaykgLT4gTm9kZSogewogICAgICAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX3ZhcmlhYmxlRm9yU1NBSW5kZXhbc3NhVmFyaWFibGUt
PmluZGV4KCldOwpAQCAtMzgxLDE4ICszODIsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgYmxv
Y2stPnZhbHVlc0F0SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6
bWFrZV91bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1f
YXJndW1lbnRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9h
cmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbXVs
dGlwbGUgZW50cnlwb2ludHMgaW4gREZHIFNTQToKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBhdXRvJiBhcmd1bWVu
dHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygw
KSktPnZhbHVlOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShhcmd1
bWVudHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUo
KTsgaS0tOykgewogICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFs
dWU7CiAKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9n
cmFwaC5tX2FyZ3VtZW50c1tpXSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVu
dE1hcHBpbmcuZ2V0KGFyZ3VtZW50c1tpXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG5vZGUpOwogICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nl
c3NEYXRhKCktPmZvcm1hdDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2Fy
Z3VtZW50Rm9ybWF0c1tpXSA9IGZvcm1hdDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVu
dHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRz
IGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KKyAgICAgICAgICAgIGFyZ3VtZW50
c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMg
Zm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBtX2dyYXBoLm1fZm9ybSA9IFNTQTsKQEAgLTQxNiw3ICs0MjEsMTIgQEAgcHJpdmF0
ZToKIAogYm9vbCBwZXJmb3JtU1NBQ29udmVyc2lvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0
dXJuIHJ1blBoYXNlPFNTQUNvbnZlcnNpb25QaGFzZT4oZ3JhcGgpOworICAgIFJFTEVBU0VfQVNT
RVJUKCFncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBncmFwaC5tX2lzSW5TU0FDb252
ZXJzaW9uID0gdHJ1ZTsKKyAgICBib29sIHJlc3VsdCA9IHJ1blBoYXNlPFNTQUNvbnZlcnNpb25Q
aGFzZT4oZ3JhcGgpOworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1faXNJblNTQUNvbnZlcnNp
b24pOworICAgIGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24gPSBmYWxzZTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwNzUxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNSw2ICszMjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6
CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExv
Y2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0
UmV0dXJuOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA4NSw2ICs2MDg1LDE2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKworICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgSlNWYWx1
ZSogcHRyID0gJm1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKVtub2Rl
LT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBt
X2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAg
ICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoK
ICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2OTMsNiArMTY5MywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3VycmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+
aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygp
OworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAg
ICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFu
ZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRI
YXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTc4Nyw4ICsxNzk0LDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAg
ICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRy
dWUpOwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkg
ewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAg
ICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNr
cyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4NzIsMTIg
KzE4ODAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsK
ICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
IWJsb2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAg
ICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBX
ZSBjb3VsZCBhZGQgdGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1f
b3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAg
ICAgICAgaWYgKGJsb2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQp
IHsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFt
cG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBi
ZS4KKyAgICAgICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygp
W2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTg4OCwxMCArMTg5NSwz
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAg
ICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2Nr
LT5pc09TUlRhcmdldCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2Nr
LT5pc0NhdGNoRW50cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2pp
dC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4Kytd
LCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0
ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1h
dHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShh
cmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1l
bnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQp
IHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1
bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQg
PT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hG
b3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZv
cm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChE
ZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hF
bnRyeXBvaW50KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtC
dWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBBU1NFUlQoYmxvY2stPmlzT1NSVGFyZ2V0KTsKKyAgICAgICAgICAgIG1faml0Lm5v
dGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxp
bmtCdWZmZXIpOworICAgICAgICB9CiAgICAgfQorCisgICAgbV9qaXQuaml0Q29kZSgpLT5maW5h
bGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKTsKKwogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4ID09
IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIAogICAgIGlmICh2ZXJib3NlQ29tcGlsYXRp
b25FbmFibGVkKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAg
ICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVD
UFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJhc2ljIGJs
b2NrIGV4ZWN1dGlvbiBjb3VudHMgYmFzZWQgb24gbG9vcCBkZXB0aC4KICAgICAgICAgZm9yIChC
bG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07
KSB7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2spCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25D
b3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7
CisgICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9j
cHNOYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBFc3RpbWF0ZSBicmFuY2ggd2VpZ2h0cyBiYXNlZCBvbiBleGVjdXRpb24gY291
bnRzLiBUaGlzIGlzbid0IHF1aXRlIGNvcnJlY3QuIEl0J2xsCkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVsaXN0JiBl
bnN1cmVHbG9iYWxGVAogICAgIHJldHVybiBmdGxXaGl0ZWxpc3Q7CiB9CiAKK3VzaW5nIE5hdHVy
YWxMb29wID0gQ1BTTmF0dXJhbExvb3A7CisKIGNsYXNzIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgogICAgIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhh
c2UoR3JhcGgmIGdyYXBoKQpAQCAtODEsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
T3B0aW9uczo6dXNlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNh
bkNvbXBpbGU7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygp
OwotICAgICAgICBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fbmF0dXJh
bExvb3BzOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgICAg
ICBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fY3BzTmF0dXJhbExv
b3BzOwogICAgICAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVy
YWxMb29wVG9Mb29wSGludCA9IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKG5hdHVyYWxM
b29wcyk7CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTG9vcEhpbnREZXNjcmlwdG9yPiB0
aWVyVXBIaWVyYXJjaHk7CkBAIC0xODIsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2ln
bmVkPiBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChjb25zdCBOYXR1cmFsTG9vcHMmIG5h
dHVyYWxMb29wcykKKyAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1
aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKGNvbnN0IENQU05hdHVyYWxMb29wcyYgbmF0dXJh
bExvb3BzKQogICAgIHsKICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2ln
bmVkPiBuYXR1cmFsTG9vcHNUb0xvb3BIaW50OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMCArMTM0LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAh
aXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5
IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUu
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5n
IGZvciBTZXRBcmd1bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpOwogCiAgICAgICAg
ICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2
YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw4
IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2lu
U3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVkIEZUTCBKSVQgY29kZSBm
b3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLCAi
LCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNv
dW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5lbnN1cmVEb21pbmF0b3Jz
KCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNTQU5hdHVyYWxMb29w
cygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpzQm9keSI7CiAgICAgICAg
IAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVu
YWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJlYWR5LCBiZWdpbm5pbmcg
bG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENv
ZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1bWVu
dHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygw
KSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFy
YW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2Fy
Z3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAg
ICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAg
CkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGRzo6QmFzaWNCbG9j
ayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICgh
dGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdldCkpIHsKKyAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKG1faGlnaEJsb2Nr
LCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJs
ZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwgKnRhcmdldCwgIiB3
aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+Y2ZhSGFzVmlzaXRl
ZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFt
X2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2Nr
KSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVl
LmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERF
RklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX2FmdGVyX2NhdGNoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRl
X3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NvbnN0cnVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY3Jl
YXRlX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX3RoaXMoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTc5Niw2ICs3OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGlu
dCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVp
LCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
U19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0
ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw2
ICs1NzksMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAg
IHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVy
YXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIHNpemVfdCBhcmcyKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODUzLDYgKzg1MywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVj
dGlvbiogY3VyCiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9hZnRlcl9jYXRjaChJbnN0cnVjdGlvbiopCit7CisgICAgLy8g
T09QUworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgSklUOjpl
bWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfYXNzZXJ0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1MywyNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfYWZ0ZXJfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICAv
LyBPT1BTOiBhZGQgYSBqaXQgZmFzdCBwYXRoIGZvciB0aGlzLgorCisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1
dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7Cisg
ICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwor
ICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIq
PihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKyAgICBpZiAoc2hvdWxkRW1pdFBy
b2ZpbGluZygpKSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvZmlsZS5tX29wZXJhbmQsIHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB2b2lk
IEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2Fzc2VydCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTUsNiArMTUx
NSwxOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09E
RUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBm
YWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1
aW50MzJfdCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2Nr
KiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgp
OworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRG
R0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1l
bnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lv
biAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNyw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVS
QVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3Bl
cmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIq
IChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3Qs
IGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09Q
RVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBl
ZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25f
RUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChK
SVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyop
OwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVop
KEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk3LDYgKzM5OCw3IEBAIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25E
ZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19K
SVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShF
eGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVS
TkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwg
VW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5B
TDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsK
IH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbMV0udS5w
b2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
JiBwcm9maWxlKSB7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVl
KCkpOworICAgIH0pOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJv
dG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRv
cENhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2Fu
ZF9ub3RpZnlfcHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2FmdGVyX2NhdGNoKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhS
ZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxs
RnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQpCiBleHRlcm4gIkMiIFNsb3dQ
YXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9lbnRyeShWTSosIFJlZ2lzdGVy
KikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTc3LDYgKzE5NzcsMTEgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIGRp
c3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAorX2xsaW50X29wX2FmdGVyX2Nh
dGNoOgorICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2FmdGVyX2NhdGNo
KQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9hZnRlcl9jYXRjaF9sZW5ndGgpCisKKwogX2xs
aW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZv
ckVwaWxvZ3VlKCkKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBCMUIw
MjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2
MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9v
dEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFw
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURF
MzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBV
VUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyog
QnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5
NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVB
QjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFB
RkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4
ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZG
MDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyog
U2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29u
ZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA3NTEp
CisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYv
R3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNH
cmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8g
cmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBO
b2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9k
ZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2RlKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAg
ICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9ub2Rl
ID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2Rl
ID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1f
aXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUm
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0K
LQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25v
ZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFz
cyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5h
ZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29uc3Qg
Tm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAg
ICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jv
b3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0LnBy
aW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpT
ZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxh
dGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xl
YXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAgICAg
bV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXpl
X3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFd
OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4o
dGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3Qg
Tm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtu
b2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNv
bnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNv
bnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHBy
aXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0g
ICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdy
YXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBo
PjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxU
LCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3
YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAg
IGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUo
KSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAg
ICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWlu
YXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlz
aW9uIDIyMDc1MSkKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExpc3Qg
PSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBi
b29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAg
ICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0
OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9n
cmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2Rh
dGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAg
IC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGgg
dXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBh
IHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRo
YXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3
ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJP
Zihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNv
bnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBm
b3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAg
ICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3Ig
Y29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVy
T2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAg
IGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3
ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlw
ZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5h
bWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVy
YXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAg
ICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJ
bkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJp
dmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9y
QWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBjb25z
dCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29u
c3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29u
c3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsK
KyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xpc3Qu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdv
cmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZy
b250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJv
b3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9H
cmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgorICAg
IC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZl
IGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNy
b290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUg
bm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisg
ICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAg
IHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5t
X25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290
R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0g
b3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsK
KyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlz
ICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1lIEdy
YXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7
CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1l
IEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7Cisg
ICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAg
IFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChjb25z
dCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAg
ICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
IG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29uc3Qg
Tm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1cm4g
bV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNv
bnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAg
ICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhu
b2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnByaW50
KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAg
fQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJv
b2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmds
ZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgm
IGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAg
IHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAg
ICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RG
TW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAg
ICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9
CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0K
KworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtp
bmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFw
Kj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUm
IG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJl
dHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAgfQor
CisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25vZGVd
OworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1h
cDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBo
PgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5n
bGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisg
ICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNl
dCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBW
ZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAg
ICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBo
OjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBt
X3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RT
dWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9y
b290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0
IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0
IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2Vy
dElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAg
ICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0OworICAg
ICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMo
bm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2Rl
JiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAg
ICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisK
KyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNF
bXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0K
KworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9k
ZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUo
dW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAg
ICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAt
IDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcg
ZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBv
dXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7
CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQo
Tm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludCht
X2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmco
KTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAg
ICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5v
ZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVt
cChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOwor
ICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHBy
ZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIp
OworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29t
bWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBz
dWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChz
dWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAg
IH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50
KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBleHBl
Y3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2
ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0
b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQor
ICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3Jl
YXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nl
c3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBt
X2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29y
cyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFw
cGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JM
aXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RT
dWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOworICAg
IExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9v
dFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNp
bmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318185</attachid>
            <date>2017-08-15 15:33:20 -0700</date>
            <delta_ts>2017-08-15 17:58:53 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>142405</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDc1MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04NjkzLDcgKzg2ODcsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODUsNyArMTA0NzgsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICB2
b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jYXRjaCIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcCIsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBv
cF90aHJvdzogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
cHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAidGhy
b3ciLCByMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsx
MzIsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9w
YXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9m
aWxlX2NhdGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90
aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3df
c3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNl
IG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDoKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtMzY4
LDYgKzM2OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bfbm9wOgogICAgIGNhc2Ugb3BfdW5yZWFjaGFi
bGU6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BD
T0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5U
X09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hF
TFBFUl9PUENPREVTCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksOCBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGluc3RydWN0
aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAgIH07CiAK
KyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGFmdGVyQ2F0Y2hJbmRpY2VzOworCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsK
IApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgUwogICAgICAgICAgICAgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRj
aEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAg
aSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2Vu
ZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFm
dGVyQ2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMmIGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJv
ZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRj
aEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVj
b2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5k
ZXgpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOwor
ICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fs
cy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0g
KHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBl
bmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkK
KyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5k
cy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVz
LT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClb
aV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9p
bnN0cnVjdGlvbnNbYWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0
KCk7CisgICAgICAgICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNh
dGNoUHJvZmlsZXMpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2Rl
QmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRp
ZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFBy
ZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsK
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1i
ZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxl
c0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1i
ZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJv
ZmlsZXMgYXJlIGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1i
ZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1w
bGVzID0gcHJvZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwx
MiBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAg
ICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChh
dXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVC
dWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAg
IG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9j
a2VyKTsKQEAgLTI3NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFs
dWVQcm9maWxlRm9yCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMo
KVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2Zp
bGUqIHJlc3VsdCA9IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0u
dS5wcm9maWxlOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0gZmFsc2U7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyAr
K2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOwor
ICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9mZnNldCkg
eworICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFT
U0VSVChmb3VuZCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIENvZGVC
bG9jazo6dmFsaWRhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1
bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92
YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFy
ZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5
PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAg
QXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxl
V2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJv
ZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50
IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihi
eXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29k
ZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4
IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4g
cmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9v
cGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAg
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBt
X3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1v
cmUgc3R1ZmYgdGhhbiB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGVzZSB2YWx1ZSBwcm9m
aWxlcworICAgICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBt
X2J1ZmZlciA9IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6
ZSAqIHNpemVvZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdl
dCgpW2ldKSBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rpb24+CisgICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVu
Y3Rpb24obV9idWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsK
KyAgICBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA3NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3MCw2ICszOTcwLDkgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisg
ICAgZW1pdE9wY29kZShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVy
KGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9T
UkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0
aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
IGNhc2UgUmV0dXJuOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHND
RkcuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGlj
IEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3
YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NG
Ryk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRz
Q0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5t
X2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+
KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRl
Y29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNl
KQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZh
bHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3Rh
bnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNC
bG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwog
ICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoK
LSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAg
ICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAg
ICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFy
Z3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAg
ICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBj
YW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25s
eSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5v
LW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAg
IGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBu
by1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1
Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRl
eDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9p
bnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsK
ICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIK
ICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIK
KyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNs
dWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIK
QEAgLTExMzAsNyArMTEzMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9j
ayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAog
ICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRl
Y29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFy
Z2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxv
Y2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUg
aGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtl
ZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIg
d2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc0LDcgKzQwNzUsMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNr
IGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNz
ZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5
LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVD
YWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9y
PE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
KwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3Qg
ZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8g
ZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4Nyw3ICs0MDky
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBO
b2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJs
ZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJn
dW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFy
Z3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01MTU3LDYgKzUxNjIsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9o
YXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOiB7CisgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBh
bnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2Ugd29uJ3QgdHJlYXQgdGhpcyBhcyBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Byb2ZpbGVfY2F0
Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3Bs
YW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0
aGUgRlRMLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wcm9maWxl
X2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
Y3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZl
Y3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7
CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7Cisg
ICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsK
KworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAg
ICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUu
bV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwor
ICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24g
PT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rp
b24pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJn
dW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9
IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVu
dFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRl
ZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAg
Ly8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfcHJvZmlsZV9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNvbXBpbGluZyB0aGlzIGFzIGFu
IGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB3aGVuIHNl
YXJjaGluZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBpdCByZWxhdGl2ZQorICAgICAg
ICAgICAgLy8gdG8gb3BfcHJvZmlsZV9jYXRjaC4KKyAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT5ieXRlY29kZUJlZ2luID0gbV9jdXJyZW50SW5kZXg7CisKKyAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA9IHRydWU7CisgICAgICAgICAgICBtX2dyYXBoLm1f
ZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxWaXJ0dWFsUmVnaXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7CisgICAgICAg
ICAgICBsb2NhbHNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+bV9zaXplKTsg
Ly8gTm90ZTogVGhpcyB3aWxsIHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgbG9jYWxz
IHdlIHNlZSBiZWxvdyBiZWNhdXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1lbnRzLgorCisg
ICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dlZCB0byBleGl0
IGhlcmUgc2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJlY292ZXJ5Lgor
ICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAgICAgICAgYnVm
ZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsK
KyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0FyZ3VtZW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5pc0xvY2FsKCkp
OworICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gYWRkVG9HcmFwaChFeHRyYWN0Q2F0Y2hM
b2NhbCwgT3BJbmZvKG51bWJlck9mTG9jYWxzKSwgT3BJbmZvKGxvY2FsUHJlZGljdGlvbnNbbnVt
YmVyT2ZMb2NhbHNdKSk7CisgICAgICAgICAgICAgICAgKytudW1iZXJPZkxvY2FsczsKKyAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1fb3BlcmFuZCks
IHZhbHVlKTsKKyAgICAgICAgICAgICAgICBsb2NhbHNUb1NldC51bmNoZWNrZWRBcHBlbmQoc3Rk
OjptYWtlX3BhaXIob3BlcmFuZCwgdmFsdWUpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsKKyAgICAgICAg
ICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gc3RkOjptYXgobnVtYmVy
T2ZMb2NhbHMsICptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSk7CisKKyAgICAg
ICAgICAgIC8vIFdlIGNhbiBub3cgZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBvdXIgT1NSIGV4
aXQgc3RhdGUgdG8gcmVjb3ZlciBhbnkgbGl2ZSBsb2NhbHMuCisgICAgICAgICAgICBtX2V4aXRP
SyA9IHRydWU7IAorICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgLy8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93IHRoYXQgaXQn
cyBzYWZlIHRvIGV4aXQuIFRoaXMgaGFwcGVucyBoZXJlIGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5
cGUgY2hlY2tzIHVwCisgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyBwb2ludCBpbiB0aGUgcHJv
Z3JhbSwgc28gaXQgbXVzdCBiZSBzYWZlIHRvIGV4aXQuCisgICAgICAgICAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRC
bG9jaywgVmVjdG9yPE5vZGUqLCA4PigpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgVmVjdG9yPE5vZGUqLCA4
PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAg
ICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOwor
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGFy
Z3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEo
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyaWFibGUtPnByZWRpY3QoYXJndW1lbnRQcmVkaWN0aW9uc1thcmd1bWVudF0pOworCisg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdG
YWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOworICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKKworICAgICAgICAgICAg
ICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5m
byh2YXJpYWJsZSkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFi
bGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7Cisg
ICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJn
dW1lbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBsb2NhbHNUb1NldCkKKyAgICAgICAgICAgICAgICBzZXRM
b2NhbChjdXJyZW50Q29kZU9yaWdpbigpLCBwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CisKKyAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Byb2ZpbGVfY2F0Y2gpOworICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxNTIsOCAr
NjI2OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVu
bGlua2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0
YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9j
ayhXVEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxv
Y2soKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjEwLDEwICs2MzI5LDEyIEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwot
CiAgICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGlu
ZVN0YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKKwogICAgIG1fZ3JhcGguZGV0ZXJt
aW5lUmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsK
KworICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4obV9ncmFw
aCk7CiAgICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJs
b2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9n
cmFwaC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTYyMjQsNyArNjM0NSw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
bnVtYmVyT2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51
bWJlck9mQXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51
bWJlck9mQXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwogICAgIG1fZ3JhcGgubV9sb2NhbFZh
cnMgPSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFt
ZXRlclNsb3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNl
LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
RkFQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5
dGVjb2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRlY29kZUluZGV4KQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAg
ICAgICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIEZv
dW5kIG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
REZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5n
bGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00
OCw3ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsg
cmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNvbnZl
cnNpb24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsKKyAgICB9CisKKyAgICBM
aXN0IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEJsb2NrTWFw
PFQ+KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBwcml2YXRlOgogICAgIEdyYXBoJiBt
X2dyYXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGljIFNpbmdsZVJvb3RHcmFwaDxDRkc+
IHsKK3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFNpbmdsZVJv
b3RHcmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFw
aC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsKKwordXNpbmcgU1NBQ0ZHID0gQ0ZH
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxl
Y3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fY3BzQ0ZH
KTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NB
Q0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1f
c3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0
QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENv
ZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0
ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRz
CiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90
aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAg
ICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGlt
ZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Js
b2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9k
ZSosIDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50
LT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsK
KyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5k
S2luZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBo
LmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9y
cygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAg
ICAgICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAgICAg
CkBAIC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAg
ICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVy
LCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5k
b21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBt
X25vZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC03NzksNyArNzc5LDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJpY3QgZG9taW5hdGlvbiBiZWNhdXNl
IHRoaXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBvd24gYmxvY2sgaWYKICAgICAgICAg
ICAgIC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlvbiBpbiB0aGUgYmxvY2suIENsZWFy
bHksIHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAgICAgICAgIC8vIGl0c2VsZiwgdGhl
IHRoaW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3QgZG9taW5hdGUgdXMuCi0gICAgICAg
ICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBt
X2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5zdHJp
Y3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBJdCBzdHJpY3RseSBk
b21pbmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+
dmFsdWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRv
cnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlk
YXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cmVwbGFj
ZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC5zZXRO
b2RlKGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDks
NyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBv
cF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNh
c2Ugb3BfY2F0Y2g6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogICAgIGNhc2Ugb3BfY3Jl
YXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFu
dG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAg
ICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlh
dGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xh
c3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKEdyYXBoJiBncmFw
aCkKLSAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpKQorICAg
ICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCkpCiAgICAgICAg
ICwgbV9iYWNrd2FyZHNEb21pbmF0b3JzKGdyYXBoLmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMo
KSkKICAgICB7CiAgICAgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIERvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKKyAgICBTU0FEb21pbmF0b3JzJiBt
X2RvbWluYXRvcnM7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgbV9iYWNrd2FyZHNEb21pbmF0
b3JzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5j
cHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENF
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQog
ICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAgICAgIAotICAgICAgICBjbGVhblZh
cmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVu
dHNWZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLnZhbHVlcygpKQorICAg
ICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYXJndW1lbnRzVmVjdG9yKTsKIAogICAgICAgICAvLyBK
dXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3Bw
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAgVmVjdG9yPERpc2Fz
c2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYgogICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVm
ZmVyKTsKICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKICAgICAKLSAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIG1fZ3JhcGgu
ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgCiAgICAgY29uc3QgY2hhciogcHJlZml4ID0g
IiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5UHJlZml4ID0gIiAgICAgICAgIjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIy
MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVt
cHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0
Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDc1MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM1LDE2ICszNSwzMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLWNsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGRz4g
ewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBEb21pbmF0b3JzIDogcHVibGlj
IFdURjo6RG9taW5hdG9yczxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9t
aW5hdG9ycyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9t
aW5hdG9ycyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGRz4oKmdy
YXBoLm1fY2ZnKQorICAgICAgICA6IFdURjo6RG9taW5hdG9yczxDRkdLaW5kPihzZWxlY3RDRkc8
Q0ZHS2luZD4oZ3JhcGgpKQogICAgIHsKICAgICB9CiB9OwogCit1c2luZyBTU0FEb21pbmF0b3Jz
ID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8
Q1BTQ0ZHPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0Rv
bWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJl
dHVybiBncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBT
U0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9y
Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9y
cygpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWlu
YXRlcy5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0VkZ2VEb21pbmF0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQogICAgICAgICAsIG1fcmVzdWx0KHRydWUpCiAg
ICAgeworICAgICAgICBBU1NFUlQoZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgb3BlcmF0b3IoKShOb2RlKiwgRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgYm9v
bCByZXN1bHQgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5v
d25lciwgbV9ibG9jayk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX3NzYURvbWlu
YXRvcnMtPmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOwogICAgICAgICBp
ZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAiQ2hl
Y2tpbmcgaWYgIiwgZWRnZSwgIiBpbiAiLCAqZWRnZS5ub2RlKCktPm93bmVyLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTk0LDYgKzE5OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENo
ZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAg
IGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21i
aWVIaW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
aAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVz
aEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9y
bWF0IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBG
bHVzaGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
cmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2Rl
LmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5o
IgotI2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJs
ZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNp
bmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCkBAIC03Myw3ICs3Miw3IEBAIEdyYXBo
OjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1f
Y29kZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4o
KnRoaXMpKQorICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkK
ICAgICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9y
ZUZpeHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3Rh
cnRlZFJlZ2lzdGVyaW5nKQpAQCAtNDA5LDkgKzQwOCwxMyBAQCBib29sIEdyYXBoOjp0ZXJtaW5h
bHNBcmVWYWxpZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBCYXNpY0Jsb2NrKiB1
bmJveExvb3BOb2RlKGNvbnN0IENQU0NGRzo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2Rl
KCk7IH0KK3N0YXRpYyBCYXNpY0Jsb2NrKiB1bmJveExvb3BOb2RlKEJhc2ljQmxvY2sqIGJsb2Nr
KSB7IHJldHVybiBibG9jazsgfQorCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9k
ZUR1bXBNb2RlIHBoaU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAg
b3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2Nr
LT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hh
YmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJn
ZXQpIiA6ICIiLCAiXG4iKTsKKyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2Nr
LCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQp
LCAiKToiLAorICAgICAgICBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwg
YmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNo
RW50cnlwb2ludCA/ICIgKENhdGNoIEVudHJ5cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAo
YmxvY2stPmV4ZWN1dGlvbkNvdW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9u
Q291bnQsICJcbiIpOwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsK
QEAgLTQyMiwxOCArNDI1LDI2IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0
cmVhbSYKICAgICBpZiAoYmxvY2stPnRlcm1pbmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQu
cHJpbnQoIiAiLCAqc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJp
bmcpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+
ZWRnZUtpbmQoYmxvY2ssIHN1Y2Nlc3NvciksICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UK
ICAgICAgICAgb3V0LnByaW50KCIgPGludmFsaWQ+Iik7CiAgICAgb3V0LnByaW50KCJcbiIpOwot
ICAgIGlmIChtX2RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewotICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5h
dG9yc09mKGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWlu
YXRlczogIiwgbV9kb21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwot
ICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9t
aW5hdG9ycy0+ZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5h
dG9ycy0+aXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAi
XG4iKTsKKworICAgIGF1dG8gcHJpbnREb21pbmF0b3JzID0gWyZdIChhdXRvJiBkb21pbmF0b3Jz
KSB7CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgZG9taW5h
dG9ycy5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgRG9taW5hdGVzOiAiLCBkb21pbmF0b3JzLmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwg
IlxuIik7CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjog
IiwgZG9taW5hdG9ycy5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7CisgICAgICAg
IG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwKKyAg
ICAgICAgICAgIGRvbWluYXRvcnMuaXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShkb21pbmF0b3JzKT46OnR5cGU6Okxpc3Qg
eyBibG9jayB9KSwgIlxuIik7CisgICAgfTsKKworICAgIGlmICh0ZXJtaW5hbHNBcmVWYWxpZCgp
KSB7CisgICAgICAgIGlmIChtX3NzYURvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWlu
YXRvcnMoKm1fc3NhRG9taW5hdG9ycyk7CisgICAgICAgIGVsc2UgaWYgKG1fY3BzRG9taW5hdG9y
cykKKyAgICAgICAgICAgIHByaW50RG9taW5hdG9ycygqbV9jcHNEb21pbmF0b3JzKTsKICAgICB9
CisKICAgICBpZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkp
IHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTog
IiwgbV9iYWNrd2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNr
d2FyZHNEb21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2
LDI5ICs0NTcsMzMgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgog
ICAgICAgICB9CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJl
UG9zdE51bWJlcmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVt
YmVyaW5nOiAiLCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9w
cmVQb3N0TnVtYmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0
dXJhbExvb3BzKSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0
dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKKworICAgIGF1dG8gcHJpbnROYXR1cmFsTG9v
cHMgPSBbJl0gKGF1dG8mIG5hdHVyYWxMb29wcykgeworICAgICAgICBpZiAoY29uc3QgYXV0byog
bG9vcCA9IG5hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CiAgICAgICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBMb29wIGhlYWRlciwgY29udGFpbnM6Iik7CiAgICAgICAgICAgICBW
ZWN0b3I8QmxvY2tJbmRleD4gc29ydGVkQmxvY2tMaXN0OwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIHNvcnRl
ZEJsb2NrTGlzdC5hcHBlbmQobG9vcC0+YXQoaSktPmluZGV4KTsKKyAgICAgICAgICAgICAgICBz
b3J0ZWRCbG9ja0xpc3QuYXBwZW5kKHVuYm94TG9vcE5vZGUobG9vcC0+YXQoaSkpLT5pbmRleCk7
CiAgICAgICAgICAgICBzdGQ6OnNvcnQoc29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJs
b2NrTGlzdC5lbmQoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc29y
dGVkQmxvY2tMaXN0LnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMi
LCBzb3J0ZWRCbG9ja0xpc3RbaV0pOwogICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250
YWluaW5nTG9vcHMgPQotICAgICAgICAgICAgbV9uYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2sp
OworICAgICAgICBhdXRvIGNvbnRhaW5pbmdMb29wcyA9IG5hdHVyYWxMb29wcy0+bG9vcHNPZihi
bG9jayk7CiAgICAgICAgIGlmICghY29udGFpbmluZ0xvb3BzLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUo
KTsgKytpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIsICpjb250YWluaW5nTG9vcHNb
aV0tPmhlYWRlcigpKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqdW5ib3hMb29w
Tm9kZShjb250YWluaW5nTG9vcHNbaV0tPmhlYWRlcigpKSk7CiAgICAgICAgICAgICBvdXQucHJp
bnQoIlxuIik7CiAgICAgICAgIH0KLSAgICB9CisgICAgfTsKKworICAgIGlmIChtX3NzYU5hdHVy
YWxMb29wcykKKyAgICAgICAgcHJpbnROYXR1cmFsTG9vcHMobV9zc2FOYXR1cmFsTG9vcHMpOwor
ICAgIGVsc2UgaWYgKG1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29w
cyhtX2Nwc05hdHVyYWxMb29wcyk7CisKICAgICBpZiAoIWJsb2NrLT5waGlzLmlzRW1wdHkoKSkg
ewogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQaGkgTm9kZXM6Iik7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpIHsKQEAgLTUwMiw4
ICs1MTcsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwogICAg
IG91dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBGb3Jt
OiAiLCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3RhdGUs
ICI7IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBpZiAo
bV9mb3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6ICIs
IGxpc3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAgICBv
dXQucHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIpOwor
ICAgIGVsc2UgeworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJndW1l
bnRzKQorICAgICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwgcGFp
ci5rZXktPmluZGV4LCAiOiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAgfQog
ICAgIG91dC5wcmludCgiXG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7
CkBAIC02NDAsOCArNjU3LDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8
QmFzaWMKIHZvaWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9y
PEJhc2ljQmxvY2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDAp
KTsKLSAgICBibG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9j
ayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNS
ZWFjaGFibGUgPSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7Cisg
ICAgfQogICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTc5OCw5ICs4MTcsMTAgQEAgdm9p
ZCBHcmFwaDo6a2lsbFVucmVhY2hhYmxlQmxvY2tzKCkKIAogdm9pZCBHcmFwaDo6aW52YWxpZGF0
ZUNGRygpCiB7Ci0gICAgbV9kb21pbmF0b3JzID0gbnVsbHB0cjsKLSAgICBtX25hdHVyYWxMb29w
cyA9IG51bGxwdHI7Ci0gICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gbnVsbHB0cjsKKyAgICBtX2Nw
c0RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fc3NhRG9taW5hdG9ycyA9IG51bGxwdHI7Cisg
ICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fc3NhTmF0dXJhbExvb3BzID0g
bnVsbHB0cjsKICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsKICAg
ICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzQ0ZHID0g
bnVsbHB0cjsKQEAgLTg1MCwxMiArODcwLDM3IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Q
cmVPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0IHdv
cmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9j
ayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50
cnlwb2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkp
IHsKICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCiAgICAgICAgICAgICB3b3JrbGlzdC5w
dXNoKGJsb2NrLT5zdWNjZXNzb3IoaSkpOwogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKSB7CisgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcHJlIG9yZGVyLCB3ZSBz
aG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWlu
YXRlLgorICAgICAgICBhdXRvIHZhbGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9y
cykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7
ICsraSkgeworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAg
ICAgICAgICAgICAgaWYgKCFhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7
CisgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAg
ICAgICAgICAgICAgIGlmICghYiB8fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEs
IGIpKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA8IGopOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAo
bV9mb3JtID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRh
dGVSZXN1bHRzKGVuc3VyZVNTQURvbWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC04NjMsNyArOTA4LDggQEAgQmxvY2tMaXN0IEdyYXBoOjpi
bG9ja3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3Jk
ZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOwor
ICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAg
IHdvcmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0
ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAg
ICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC04NzYsNiArOTIyLDMxIEBAIEJsb2NrTGlz
dCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBhdXRv
IHZhbGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICAgICAg
Ly8gV2hlbiBpdGVyYXRpbmcgb3ZlciByZXZlcnNlIHBvc3Qgb3JkZXIsIHdlIHNob3VsZCBzZWUg
ZG9taW5hdG9ycworICAgICAgICAgICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAg
ICAgICAgaWYgKCFhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAg
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAg
ICAgICAgIGlmICghYiB8fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA+IGopOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3Jt
ID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1
bHRzKGVuc3VyZVNTQURvbWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZh
bGlkYXRlUmVzdWx0cyhlbnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KKwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTE0NzIsMzAgKzE1NDMsNDMgQEAgdm9pZCBHcmFwaDo6bG9nQXNz
ZXJ0aW9uRmFpbHVyZSgKICAgICBsb2dERkdBc3NlcnRpb25GYWlsdXJlKCp0aGlzLCB0b0NTdHJp
bmcoIldoaWxlIGhhbmRsaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuXG4iKSwg
ZmlsZSwgbGluZSwgZnVuY3Rpb24sIGFzc2VydGlvbik7CiB9CiAKLURvbWluYXRvcnMmIEdyYXBo
OjplbnN1cmVEb21pbmF0b3JzKCkKK0NQU0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21p
bmF0b3JzKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5T
U0FDb252ZXJzaW9uKTsKKyAgICBpZiAoIW1fY3BzRG9taW5hdG9ycykKKyAgICAgICAgbV9jcHNE
b21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAg
cmV0dXJuICptX2Nwc0RvbWluYXRvcnM7Cit9CisKK1NTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1
cmVTU0FEb21pbmF0b3JzKCkKIHsKLSAgICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9k
b21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7Ci0gICAgcmV0
dXJuICptX2RvbWluYXRvcnM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSB8fCBt
X2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykKKyAgICAgICAg
bV9zc2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7
CisgICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKLVByZVBvc3ROdW1iZXJpbmcmIEdy
YXBoOjplbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCkKK0NQU05hdHVyYWxMb29wcyYgR3JhcGg6OmVu
c3VyZUNQU05hdHVyYWxMb29wcygpCiB7Ci0gICAgaWYgKCFtX3ByZVBvc3ROdW1iZXJpbmcpCi0g
ICAgICAgIG1fcHJlUG9zdE51bWJlcmluZyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlUG9zdE51bWJl
cmluZz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9wcmVQb3N0TnVtYmVyaW5nOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGVu
c3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBpZiAoIW1fY3BzTmF0dXJhbExvb3BzKQorICAgICAg
ICBtX2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExvb3BzPigq
dGhpcyk7CisgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29wczsKIH0KIAotTmF0dXJhbExvb3Bz
JiBHcmFwaDo6ZW5zdXJlTmF0dXJhbExvb3BzKCkKK1NTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVu
c3VyZVNTQU5hdHVyYWxMb29wcygpCiB7Ci0gICAgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIGlm
ICghbV9uYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3Vu
aXF1ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOworICAgIGVuc3VyZVNTQURvbWluYXRv
cnMoKTsKKyAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBtX3NzYU5hdHVyYWxM
b29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0
dXJuICptX3NzYU5hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzQ0ZHKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgLy8g
V2UgY291bGQgY2hhbmdlIHRoaXMsIGJ1dCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EgZm9yIG5vdywg
YW5kIHdlIGRvbid0IG5lZWQgdHdvIGdyYXBoIGZpZWxkcyB5ZXQgZm9yIHR3byB0eXBlcyBvZiBi
YWNrd2FyZHMgQ0ZHLgogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dh
cmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1
cm4gKm1fYmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2ICsxNTg3LDcgQEAgQmFja3dhcmRzQ0ZHJiBH
cmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFj
a3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsx
NTk1LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAo
IW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAt
MTUyNyw3ICsxNjEzLDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0
aAogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAg
ICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpAQCAtMTY5OCw2ICsxNzg0
LDEzIEBAIGJvb2wgR3JhcGg6OmNhbkRvRmFzdFNwcmVhZChOb2RlKiBub2RlLCAKICAgICByZXR1
cm4gYWxsR29vZDsKIH0KIAordm9pZCBHcmFwaDo6Y2xlYXJDUFNDRkdEYXRhKCkKK3sKKyAgICBt
X2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0
cjsKKyAgICBtX2Nwc0NGRyA9IG51bGxwdHI7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVz
cGFjZSBXVEYgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsK
K30KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwx
NyBAQCBjbGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xh
c3MgQ0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0
b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xh
c3MgTmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZH
OwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9y
czxDUFNDRkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3Vz
aW5nIENQU05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0
dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBGbG93TWFwOwogCkBAIC05MDEsOSArOTEyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aGFzRGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7
IH0KIAotICAgIERvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVt
YmVyaW5nJiBlbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1
cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3Jz
KCk7CisgICAgU1NBRG9taW5hdG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05h
dHVyYWxMb29wcyYgZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3Bz
JiBlbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3
YXJkc0NGRygpOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWlu
YXRvcnMoKTsKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXMoKTsKQEAgLTkxNiwxMiArOTI4LDE1IEBAIHB1YmxpYzoKICAgICBi
b29sIG5lZWRzU2NvcGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFi
bGVkIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRU
aGlzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZv
aWQgY2xlYXJDUFNDRkdEYXRhKCk7CisKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRC
bG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tz
OworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3Rv
cjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1f
dmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1
ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3pl
blZhbHVlTWFwOwpAQCAtOTU2LDExICs5NzEsMTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8g
SWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwg
dGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8
Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxO
b2RlKiwgOD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywg
dGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxh
dGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJn
dW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNz
RGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1
bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9u
PiBtX3RyYW5zaXRpb25zOwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVibGljOgogICAgIEhhc2hT
ZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAg
ICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9p
bmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBt
X2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3Nh
RG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05h
dHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5h
dHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFj
a3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRz
RG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsK
QEAgLTEwMDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291
bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNF
eGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9u
IHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGlu
Z0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fi
c3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1
ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6
ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9v
dC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZh
bHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2Zh
U3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAg
cm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNo
ZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVu
dChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYg
KG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9h
cmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAg
ICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAg
ICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9y
bWF0KCk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5
cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwor
ICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5
cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNm
YVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1
cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9p
bnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAg
IGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAg
ICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0g
PT0gU1NBKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0
aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUgRlRMLCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAg
ICAgICAgIC8vIHdoYXQgd2UgZG8gaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHNbaV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2lu
dCktPnZhbHVlW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZs
dXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVz
aGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAg
ICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9n
cmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBo
LCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
c3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAg
ICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4p
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAg
ICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVj
Q2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToK
LSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVu
dCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7
Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICBy
b290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7
ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxv
Y2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsr
aSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFy
KCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dy
YXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhl
IGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwog
ICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNo
b3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxz
ZTsKQEAgLTM2NCw3ICszNzEsNyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNh
c2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAg
ICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2Ug
RGlyZWN0VGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2Rl
OjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnku
c2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRy
eXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9G
aXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVF
dmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAog
ICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAg
Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2Vh
cmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50
cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAg
ICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0t
Pm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NS
RW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMu
YmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2lu
dERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJl
dHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAw
OworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBj
YXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVu
dHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBl
bnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5z
aWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZv
cm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5
cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJn
dW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhp
dChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiwxMCArMTU4LDEzIEBAIHByaXZh
dGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6T1NS
RW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0
Y2hFbnRyeXBvaW50czsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JF
eGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVj
b3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07
CiAgICAgREZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZHOworICAgIE1hbGxvY1B0cjxKU1Zh
bHVlPiBjYXRjaE9TUkVudHJ5QnVmZmVyOworCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgdWlu
dDhfdCBuZXZlckV4ZWN1dGVkRW50cnkgeyAxIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklU
Q28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50
cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAo
Km1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9m
Q29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CkBAIC00MjYsNiArNDI5LDkgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbigpCiB7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQor
ICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSBNYWxsb2NQdHI8SlNWYWx1
ZT46Om1hbGxvYyhzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRj
aE9TUkVudHJ5KSk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgp
OwogCkBAIC01NTEsMTQgKzU1NywyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91
YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRy
eXBvaW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hl
YWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVu
dEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlw
b2ludCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhh
c1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgor
ICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVC
ZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9y
bWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2Nr
JiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRy
eXBvaW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBk
ZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFz
aWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JF
bnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJs
b2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Js
b2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4
IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdp
bGwgaGF2ZSBhbiBleHBlY3RlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJ
VENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGlj
ZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVh
ZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwog
ICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3BhY2UgewogCit1c2luZyBOYXR1cmFsTG9vcCA9IFNT
QU5hdHVyYWxMb29wOworCiBzdHJ1Y3QgTG9vcERhdGEgewogICAgIExvb3BEYXRhKCkKICAgICAg
ICAgOiBwcmVIZWFkZXIobnVsbHB0cikKQEAgLTc0LDggKzc2LDggQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBT
U0EpOwogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJl
U1NBRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQU5hdHVyYWxMb29wcygp
OwogICAgICAgICBtX2dyYXBoLmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAK
ICAgICAgICAgaWYgKHZlcmJvc2UpIHsKQEAgLTgzLDcgKzg1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZGF0
YS5yZXNpemUobV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKSk7CisgICAgICAgIG1f
ZGF0YS5yZXNpemUobV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBzZXQgb2YgdGhpbmdzIGVhY2ggbG9vcCB3
cml0ZXMgdG8sIG5vdCBpbmNsdWRpbmcgYmxvY2tzIHRoYXQKICAgICAgICAgLy8gYmVsb25nIHRv
IGlubmVyIGxvb3BzLiBXZSBmaXggdGhpcyBsYXRlci4KQEAgLTk4LDcgKzEwMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGlmICghYmxvY2stPmNmYUhhc1Zpc2l0ZWQpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29w
KiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsK
KyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVy
YWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKICAgICAgICAgICAgIGlmICghbG9vcCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIExvb3BEYXRhJiBkYXRhID0g
bV9kYXRhW2xvb3AtPmluZGV4KCldOwpAQCAtMTE2LDE0ICsxMTgsMTQgQEAgcHVibGljOgogICAg
ICAgICAvLyBGb3IgZWFjaCBsb29wOgogICAgICAgICAvLyAtIElkZW50aWZ5IGl0cyBwcmUtaGVh
ZGVyLgogICAgICAgICAvLyAtIE1ha2Ugc3VyZSBpdHMgb3V0ZXIgbG9vcHMga25vdyB3aGF0IGl0
IGNsb2JiZXJzLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9u
YXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgewotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJ
bmRleCk7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX3NzYU5h
dHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmxvb3AobG9v
cEluZGV4KTsKICAgICAgICAgICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AuaW5kZXgo
KV07CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAoCi0gICAgICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVy
TW9zdE91dGVyTG9vcChsb29wKTsKKyAgICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCog
b3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29w
KGxvb3ApOwogICAgICAgICAgICAgICAgIG91dGVyTG9vcDsKLSAgICAgICAgICAgICAgICBvdXRl
ckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVy
TG9vcCkpCisgICAgICAgICAgICAgICAgb3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxvb3ApKQogICAgICAgICAgICAgICAgIG1f
ZGF0YVtvdXRlckxvb3AtPmluZGV4KCldLndyaXRlcy5hZGRBbGwoZGF0YS53cml0ZXMpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBoZWFkZXIgPSBsb29wLmhlYWRlcigp
OwpAQCAtMTM3LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gaGVhZGVyLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vz
c29yc1tpXTsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyhoZWFkZXIsIHByZWRlY2Vzc29yKSkKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5t
X3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIsIHByZWRlY2Vzc29yKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICBwcmVIZWFkZXIgPSBwcmVk
ZWNlc3NvcjsKQEAgLTE5MSw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3Rvcjxjb25z
dCBOYXR1cmFsTG9vcCo+IGxvb3BTdGFjazsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7
CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3Jk
ZXIoKSkgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3Qg
TmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RM
b29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgCkBAIC0xOTksNyArMjAxLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgZm9yICgKICAgICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogY3VycmVudCA9
IGxvb3A7CiAgICAgICAgICAgICAgICAgY3VycmVudDsKLSAgICAgICAgICAgICAgICBjdXJyZW50
ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkK
KyAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5u
ZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKICAgICAgICAgICAgICAgICBsb29wU3RhY2suYXBw
ZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZW1lbWJlcjogdGhl
IGxvb3Agc3RhY2sgaGFzIHRoZSBpbm5lci1tb3N0IGxvb3AgYXQgaW5kZXggMCwgc28gaWYgd2Ug
d2FudApAQCAtMzE4LDcgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGJlY2F1c2UgbW9z
dCBsb29wcyBhcmUgc21hbGwgYW5kIG1vc3QgYmxvY2tzIGJlbG9uZyB0byBmZXcgbG9vcHMuCiAg
ICAgICAgIGZvciAodW5zaWduZWQgYm9keUluZGV4ID0gbG9vcC0+c2l6ZSgpOyBib2R5SW5kZXgt
LTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YkJsb2NrID0gbG9vcC0+YXQoYm9keUlu
ZGV4KTsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9ncmFwaC5t
X25hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0
dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5oZWFkZXJPZihz
dWJCbG9jayk7CiAgICAgICAgICAgICBpZiAoIXN1Ykxvb3ApCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBzdWJQcmVIZWFkZXIgPSBtX2RhdGFbc3Vi
TG9vcC0+aW5kZXgoKV0ucHJlSGVhZGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDEsNyArMTAxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBp
c1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9k
ZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9y
ZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5m
aW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgpLnRv
QXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNh
bGxGcmFtZTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAg
ICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFBy
ZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgsIEJsb2NrSW5zZXJ0
aW9uU2V0JiBpbnNlcnRpb25TZXQsIEJhc2ljQmxvY2sqIGJsb2NrKQogeworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIWdyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spLCAiQW4gZW50
cnlwb2ludCBzaG91bGQgbm90IGJlIGluIGEgbG9vcCIpOworCiAgICAgLy8gRklYTUU6IElmIHdl
IHJ1biB0aGlzIHV0aWxpdHkgb24gU1NBIElSLCB0aGVuIHdlIG1heSBlbmQgdXAgd2l0aCBhIGJp
emFycmUgYXJyYW5nZW1lbnQgb2YKICAgICAvLyBVcHNpbG9ucyBhbmQgUGhpcywgbGlrZToKICAg
ICAvLwpAQCAtNjksNyArNzEsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgm
IGdyYXBoCiAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIHRoZSBtYXggb2YgdGhlIGZyZXF1ZW5jaWVz
IG9mIHRoZSBsb29wIGJvZHkncyBub24tbG9vcCBwcmVkZWNlc3NvcnMuCiAgICAgZmxvYXQgZnJl
cXVlbmN5ID0gMDsKICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnBy
ZWRlY2Vzc29ycykgewotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMo
YmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+
ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNlc3Nvci0+ZXhlY3V0
aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDUsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQ
cmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3Nv
ckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgp
OyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3Ig
PSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICBpZiAoZ3Jh
cGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAg
aWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3Nvcikp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29yc1twcmVk
ZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7CiAgICAgICAgIGJs
b2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsxMzIsMTYgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJl
RG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAg
ICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1
cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9v
cEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07
KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1
cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0
aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dy
YXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAg
ICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxM
b29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQ
cmVIZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05ld1ByZUhlYWRlciA9
IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gbG9v
cC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgewot
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS0+
cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHByZWRlY2Vzc29yKSkK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVy
KCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLm5v
ZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCkubm9kZSgp
LCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAgZXhp
c3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY3LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1bCBpZiBpdCdzIHBv
c3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAgICAgICAgICAvLyBp
ZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9lc24ndCBhbGxvdyBm
b3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2luIG9mIHRoZSBsb29w
IGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJlLWhlYWRlci4KLSAg
ICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS0+YXQoMCkt
Pm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9v
cC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAgICAgICAgICAgICAg
JiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhpdE9LKQogICAgICAg
ICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5z
ZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlciht
X2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw3ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFp
c1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEu
b3BlcmFuZChvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBFeGl0TW9kZSBt
YXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBj
YXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBF
eHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlX
cml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
MTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdHlwZWRl
ZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Ci0KLWNsYXNzIE5hdHVyYWxMb29w
cyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBD
RkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3BzPENG
R0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9vcHMpOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxMb29wcyhHcmFwaCYg
Z3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3JhcGgubV9jZmcsIGdy
YXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgOiBX
VEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpLCBlbnN1
cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkK
ICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxM
b29wPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8Q1BT
Q0ZHPjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIw
NzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0g
QnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dp
dGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9
CkBAIC0xMzcyLDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1
cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCiAgICAgICAg
IHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVt
cCgpKQpAQCAtMTU0MSw2ICsxNTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG9wKCkg
PT0gSWRlbnRpdHlXaXRoUHJvZmlsZSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTcGVj
dWxhdGVkVHlwZT4oKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgo
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwp
OworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQorCisgICAg
U3BlY3VsYXRlZFR5cGUgY2F0Y2hMb2NhbFByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8y
LmFzPFNwZWN1bGF0ZWRUeXBlPigpOworICAgIH0KICAgICAKICAgICBib29sIGhhc0NlbGxPcGVy
YW5kKCkKICAgICB7CkBAIC0xOTM2LDcgKzE5NDksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KLSAgICAKKwogICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJU
KGhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0
aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyog
dmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RP
U1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhl
IERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11
c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR05vZGUu
aCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCkBAIC0zMzYsNiAr
MzM3LDY3IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICBy
ZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRl
KiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sK
KyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNv
ZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2Rl
KiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNT
RVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5
cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNv
ZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBj
YW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0
aGF0IHdlIGRpZG4ndCBjb21waWxlIHRoaXMKKyAgICAgICAgLy8gcHJvZmlsZV9jYXRjaCBhcyBh
biBlbnRyeXBvaW50IHNpbmNlIGl0IGhhZCBuZXZlciBleGVjdXRlZC4KKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgLy8gV2UncmUgb25seSBhbGxvd2VkIHRvIE9TUiBlbnRl
ciBpZiB3ZSd2ZSBwcm92ZW4gd2UgaGF2ZSBjb21wYXRpYmxlIGFyZ3VtZW50IHR5cGVzLgorICAg
IGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGNhdGNoRW50cnlwb2ludC0+
bV9hcmd1bWVudEZvcm1hdHMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBleGVjLT5yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkuanNW
YWx1ZSgpOworICAgICAgICBzd2l0Y2ggKGNhdGNoRW50cnlwb2ludC0+bV9hcmd1bWVudEZvcm1h
dHNbYXJndW1lbnRdKSB7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSW50MzI6CisgICAgICAg
ICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZENlbGw6Cisg
ICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkQm9v
bGVhbjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNCb29sZWFuKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6
OkRlYWRGbHVzaDoKKyAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhlIGFyZ3VtZW50IGlzIG5v
dCBhbGl2ZS4gVGhlcmVmb3JlLCBpdCdzIGFsbG93ZWQgdG8gYmUgYW55IHR5cGUuCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRKU1ZhbHVlOgorICAgICAgICAg
ICAgLy8gQW4gYXJndW1lbnQgaXMgdHJpdmlhbGx5IGEgSlNWYWx1ZS4KKyAgICAgICAgICAgIGJy
ZWFrOyAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBmcmFtZVNpemVGb3JD
aGVjayA9IGppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVjdXRpb25B
bmRFeGl0KCk7CisgICAgaWYgKFVOTElLRUxZKCF2bS5lbnN1cmVTdGFja0NhcGFjaXR5Rm9yKCZl
eGVjLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVNpemVGb3JDaGVj
aykub2Zmc2V0KCldKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKElu
dGVycHJldGVyOjpnZXRPcGNvZGVJRChleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKClb
ZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKV0udS5vcGNvZGUpID09IG9wX3Byb2ZpbGVfY2F0Y2gpOwor
ICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSArIDFdLnUucG9pbnRlcik7CisgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgaWYgKCFWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5t
X29wZXJhbmQpLmlzTG9jYWwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaml0Q29k
ZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci5nZXQoKVtpbmRleF0gPSBleGVjLT51bmNoZWNrZWRSKHBy
b2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAgICsraW5kZXg7CisgICAgfSk7CisK
KyAgICByZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5
cG9pbnQtPm1fbWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVk
ZSAiREZHRmx1c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0
Zi9CaXRWZWN0b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9T
UkVudHJ5RGF0YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJ
bmRleDsKIH0KIAorc3RydWN0IENhdGNoRW50cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1f
Ynl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8v
IFdlIHVzZSB0aGlzIHdoZW4gZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUg
YXJndW1lbnRzCisgICAgLy8gYXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmlu
ZyBhdCBhIGNhdGNoIGJsb2NrLgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZv
cm1hdHM7Cit9OworCiAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQg
dGhlIE9TUiBlbnRyeSB0aHVuayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlz
IHJldHVybnMgbnVsbCwgaXQgbWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRl
KiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMg
cmV0dXJuZWQsIHdlIGNhbid0IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUg
UEMgdG8ganVtcCB0by4KK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBw
cmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJu
IDA7IH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJE
RkdCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmgi
CisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBA
IC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVJ
bmRleCAhPSBVSU5UX01BWCk7CiAgICAgICAgIAogICAgICAgICAvLyBOZWVkZWQgYnkgY3JlYXRl
UHJlSGVhZGVyKCkuCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVC
bG9jayogYmFzZWxpbmUgPSBtX2dyYXBoLm1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgCkBAIC0x
MTIsMTYgKzExMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhlcmUu
CiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisgICAg
ICAgIFZlY3RvcjxOb2RlKiwgOD4gbmV3QXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yIChp
bnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsr
YXJndW1lbnQpIHsKICAgICAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxl
c0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJn
dW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9
IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgIG9sZE5vZGUg
PSBuZXdBcmd1bWVudHNbYXJndW1lbnRdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwg
U3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9s
ZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBuZXdBcmd1bWVudHNbYXJndW1l
bnRdID0gbm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9j
YWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKQEAgLTEzOSw4ICsx
NDEsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dy
YXBoLCBpbnNlcnRpb25TZXQsIHRhcmdldCkpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlv
blNldC5leGVjdXRlKCk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0g
bmV3Um9vdDsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigp
OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBu
ZXdBcmd1bWVudHMpOworCisgICAgICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5p
cXVlPENQU0NGRz4obV9ncmFwaCk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0
eSgpOwogICAgICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw3ICs3Mjcs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9ncmFwaC5jb21wdXRlUmVmQ291bnRzKCk7
CiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFw
aC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9y
cygpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAg
cGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBtX2NvbWJp
bmVkTGl2ZW5lc3MgPSBDb21iaW5lZExpdmVuZXNzKG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsOSArMzY2
LDggQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIC8vIElm
IHdlJ3JlIGRvaW5nIHZhbGlkYXRpb24sIHRoZW4gcnVuIHNvbWUgYW5hbHlzZXMsIHRvIGdpdmUg
dGhlbSBhbiBvcHBvcnR1bml0eQogICAgIC8vIHRvIHNlbGYtdmFsaWRhdGUuIE5vdyBpcyBhcyBn
b29kIGEgdGltZSBhcyBhbnkgdG8gZG8gdGhpcy4KICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkgewotICAgICAgICBkZmcuZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBkZmcuZW5zdXJl
TmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Cisg
ICAgICAgIGRmZy5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNO
YXR1cmFsTG9vcHMoKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKG1vZGUpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2
aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVt
YmVyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQot
I2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrV29ya2xp
c3QuaCIKLSNpbmNsdWRlICJERkdHcmFwaC5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7Ci0KLVByZVBvc3ROdW1iZXJpbmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBo
KQotewotICAgIG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7Ci0gICAgCi0gICAg
UG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGdyYXBo
LmJsb2NrKDApKTsKLSAgICB1bnNpZ25lZCBuZXh0UHJlTnVtYmVyID0gMDsKLSAgICB1bnNpZ25l
ZCBuZXh0UG9zdE51bWJlciA9IDA7Ci0gICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3
b3JrbGlzdC5wb3AoKSkgewotICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAg
Y2FzZSBWaXNpdE9yZGVyOjpQcmU6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcHJl
TnVtYmVyID0gbmV4dFByZU51bWJlcisrOwotICAgICAgICAgICAgd29ya2xpc3QucHVzaFBvc3Qo
aXRlbS5ub2RlKTsKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogaXRl
bS5ub2RlLT5zdWNjZXNzb3JzKCkpCi0gICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzdWNj
ZXNzb3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UG9z
dDoKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wb3N0TnVtYmVyID0gbmV4dFBvc3RO
dW1iZXIrKzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1QcmVQ
b3N0TnVtYmVyaW5nOjp+UHJlUG9zdE51bWJlcmluZygpIHsgfQotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7
Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBFZGdlS2luZCBraW5kKQot
ewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgRm9yd2FyZEVkZ2U6Ci0gICAgICAgIG91
dC5wcmludCgiRm9yd2FyZEVkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3Jvc3NF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkNyb3NzRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBCYWNrRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJCYWNrRWRnZSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgotI2luY2x1
ZGUgIkRGR0Jsb2NrTWFwLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewot
Ci1lbnVtIEVkZ2VLaW5kIHsKLSAgICBGb3J3YXJkRWRnZSwKLSAgICBDcm9zc0VkZ2UsCi0gICAg
QmFja0VkZ2UKLX07Ci0KLWNsYXNzIFByZVBvc3ROdW1iZXJpbmcgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFByZVBvc3ROdW1iZXJpbmcpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIFByZVBvc3ROdW1iZXJpbmcoR3JhcGgmKTsKLSAgICB+UHJlUG9zdE51
bWJlcmluZygpOwotCi0gICAgdW5zaWduZWQgcHJlTnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBj
b25zdCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wcmVOdW1iZXI7IH0KLSAgICB1bnNpZ25lZCBw
b3N0TnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9ja10u
bV9wb3N0TnVtYmVyOyB9Ci0gICAgCi0gICAgLy8gSXMgZnJvbSBhIHN0cmljdCBhbmNlc3RvciBv
ZiB0bz8KLSAgICBib29sIGlzU3RyaWN0QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcmVOdW1iZXIoZnJvbSkg
PCBwcmVOdW1iZXIodG8pCi0gICAgICAgICAgICAmJiBwb3N0TnVtYmVyKGZyb20pID4gcG9zdE51
bWJlcih0byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNBbmNlc3Rvck9mKEJhc2ljQmxvY2sq
IGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyb20g
PT0gdG8gfHwgaXNTdHJpY3RBbmNlc3Rvck9mKGZyb20sIHRvKTsKLSAgICB9Ci0gICAgCi0gICAg
Ym9vbCBpc1N0cmljdERlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0
bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdEFuY2VzdG9yT2YodG8sIGZy
b20pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzRGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZy
b20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQW5jZXN0
b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIC8vIFRoaXMgd2lsbCBnaXZlIGEgYm9n
dXMgYW5zd2VyIGlmIHRoZXJlIGlzIGFjdHVhbGx5IG5vIHN1Y2ggZWRnZS4gSWYgeW91IHdhbnQg
dG8gZGV0ZXJtaW5lCi0gICAgLy8gaWYgdGhlcmUgaXMgYW55IHN1Y2ggZWRnZSwgeW91IGhhdmUg
dG8gZG8gaXQgeW91cnNlbGYuCi0gICAgRWRnZUtpbmQgZWRnZUtpbmQoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpY3REZXNj
ZW5kYW50T2YodG8sIGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEZvcndhcmRFZGdlOwotICAg
ICAgICAKLSAgICAgICAgaWYgKGlzQW5jZXN0b3JPZih0bywgZnJvbSkpCi0gICAgICAgICAgICBy
ZXR1cm4gQmFja0VkZ2U7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gQ3Jvc3NFZGdlOwotICAg
IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgc3RydWN0IE51bWJlcmluZyB7Ci0gICAgICAgIHVuc2ln
bmVkIG1fcHJlTnVtYmVyOwotICAgICAgICB1bnNpZ25lZCBtX3Bvc3ROdW1iZXI7Ci0gICAgfTsK
LQotICAgIEJsb2NrTWFwPE51bWJlcmluZz4gbV9tYXA7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OkRGRzo6RWRnZUtpbmQpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsMTYgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVk
QmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2Ugb25seSBk
byB0aGlzIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBmaXJzdCBibG9jay4gVGhlIGFyZ3VtZW50
cyBmcm9tCisgICAgICAgICAgICAvLyBvdGhlciBlbnRyeXBvaW50cyBoYXZlIGFscmVhZHkgYmVl
biBwb3B1bGF0ZWQgd2l0aCB0aGVpciBwcmVkaWN0aW9ucy4KKyAgICAgICAgICAgIGF1dG8mIGFy
Z3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJs
b2NrKDApKS0+dmFsdWU7CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8
IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7ICsrYXJn
KSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gcHJvZmlsZWRCbG9j
aygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmcpOwogICAgICAgICAgICAgICAgIGlmICgh
cHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5wcmVkaWN0KAorCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzI1LDYgKzcyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmNhdGNoTG9jYWxQcmVkaWN0aW9u
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFJlc29s
dmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6CiAgICAgICAgIGNhc2UgR2V0RHluYW1p
Y1ZhcjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVUb3ApOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5z
dXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgU1NBQ2FsY3VsYXRvciBzc2FD
YWxjdWxhdG9yKG1fZ3JhcGgpOwogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1f
Z3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1
bGF0b3IuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNhbGN1bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMiArOTUsMTIgQEAg
U1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpuZXdEZQogCiBTU0FDYWxjdWxhdG9y
OjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5vbkxvY2FsUmVhY2hpbmdEZWYoQmFzaWNCbG9jayogYmxv
Y2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwo
bV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CisgICAgcmV0dXJu
IHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwg
dmFyaWFibGUpOwogfQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6OnJlYWNo
aW5nRGVmQXRUYWlsKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0g
ICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2Nr
KSkgeworICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
aWRvbShibG9jaykpIHsKICAgICAgICAgaWYgKERlZiogZGVmID0gbV9kYXRhW2Jsb2NrXS5tX2Rl
ZnMuZ2V0KHZhcmlhYmxlKSkKICAgICAgICAgICAgIHJldHVybiBkZWY7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgUGhpSW5zZXJ0aW9uRnVuY3Rvcj4KICAgICB2b2lkIGNvbXB1dGVQaGlzKGNv
bnN0IFBoaUluc2VydGlvbkZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9kb21pbmF0b3JzKTsKKyAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycyk7CiAgICAg
ICAgIAogICAgICAgICBmb3IgKFZhcmlhYmxlJiB2YXJpYWJsZSA6IG1fdmFyaWFibGVzKSB7Ci0g
ICAgICAgICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVy
YXRlZERvbWluYW5jZUZyb250aWVyT2YoCisgICAgICAgICAgICBtX2dyYXBoLm1fc3NhRG9taW5h
dG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCiAg
ICAgICAgICAgICAgICAgdmFyaWFibGUubV9ibG9ja3NXaXRoRGVmcywKICAgICAgICAgICAgICAg
ICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBib29sIHsKICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogcGhpTm9kZSA9IGZ1bmN0b3IoJnZhcmlhYmxlLCBibG9jayk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDggQEAgcHVibGljOgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CiAg
ICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFyUmVwbGFjZW1lbnRzKCk7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmNsZWFyQ1BTQ0ZHRGF0
YSgpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUg
U1NBIHRyYW5zZm9ybWF0aW9uOlxuIik7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUg
aW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0K
LSAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0g
YmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ug
d2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxh
dG9yIHRlbGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAg
ICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNC
bG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgp
XTsKQEAgLTM4MSwxOCArMzgyLDIyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRz
LnNpemUoKTsgaS0tOykgeworCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVu
dHJ5cG9pbnRzIGluIERGRyBTU0E6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5t
X2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1
ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNp
emUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0g
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9h
cmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5n
LmdldChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChub2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgp
LT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZv
cm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0g
bm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhl
IGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBu
b2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUg
YmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
bV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkBAIC00MTYsNyArNDIxLDEyIEBAIHByaXZhdGU6CiAKIGJv
b2wgcGVyZm9ybVNTQUNvbnZlcnNpb24oR3JhcGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5Q
aGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3Jh
cGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9
IHRydWU7CisgICAgYm9vbCByZXN1bHQgPSBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdy
YXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAg
ICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjUsNiArMzI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dAogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNh
c2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAg
ICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoK
ICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MzcsNiArNTYzNywyMyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHVucmVhY2hhYmxlKG5vZGUp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0YWcodGhp
cyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBwYXlsb2FkKHRoaXMpOworCisgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRhZ0dQUiA9IHRhZy5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRHUFIgPSBwYXlsb2FkLmdwcigpOworCisgICAgICAg
IEpTVmFsdWUqIHB0ciA9ICZtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIuZ2V0
KClbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBUYWdPZmZzZXQpLCB0YWdHUFIpOwor
ICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIsIFBheWxv
YWRPZmZzZXQpLCBwYXlsb2FkR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0YWdHUFIsIHBh
eWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIExhc3RO
b2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlz
aW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OTcsNiArNTk5NywxNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDaGVja1N1YkNs
YXNzKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6
IHsKKyAgICAgICAgSlNWYWx1ZSogcHRyID0gJm1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRy
eUJ1ZmZlci5nZXQoKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7
CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRl
bXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBH
UFIpLCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAjaWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBj
YXNlIENoZWNrVGllclVwSW5Mb29wOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNh
bGxUaWVyVXAgPSBtX2ppdC5icmFuY2hBZGQzMigKQEAgLTYwODUsNiArNjA5NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKwogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVj
a1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OTMsNiArMTY5MywxMyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBpZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRy
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBD
Q2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNh
dmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQu
Y29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9z
dHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBt
X2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTc4Nyw4ICsxNzk0LDkgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9j
dXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENv
ZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgo
KS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52
YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2Fy
Z3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAg
aWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9u
J3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTE4NzIsMTIgKzE4ODAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NS
RW50cmllcygpCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9j
ayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5
IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQg
YmUuCi0gICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Js
b2NrSW5kZXhdKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXND
YXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZl
IE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8v
IGhlcmUgaWYgbmVlZCBiZS4KKyAgICAgICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9q
aXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAt
MTg4OCwxMCArMTg5NSwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhM
aW5rCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9j
a0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JU
YXJnZXQgJiYgIWJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tv
c3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNo
RW50cnlwb2ludCkgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9qaXQuZ3JhcGgoKS5tX2Vu
dHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgIGF1dG8mIGFyZ3Vt
ZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVjdG9yPEZsdXNoRm9ybWF0
PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAo
Tm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hG
b3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSW50MzIg
fHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEJv
b2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOworICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNoRm9ybWF0KTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVu
Y2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9q
aXQubm90aWNlQ2F0Y2hFbnRyeXBvaW50KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVudHJ5
SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzT1NSVGFyZ2V0KTsKKyAgICAg
ICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRzW29zckVu
dHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICB9CiAgICAgfQorCisgICAgbV9qaXQu
aml0Q29kZSgpLT5maW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKTsKKwogICAgIEFTU0VSVChv
c3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwogICAgIAogICAgIGlmICh2
ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRF
c3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4o
KQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIEVz
dGltYXRlIGJhc2ljIGJsb2NrIGV4ZWN1dGlvbiBjb3VudHMgYmFzZWQgb24gbG9vcCBkZXB0aC4K
ICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2Nrcygp
OyBibG9ja0luZGV4LS07KSB7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGlmICghYmxvY2spCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGJs
b2NrLT5leGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9v
cERlcHRoKGJsb2NrKSk7CisgICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3co
MTAsIG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBicmFuY2ggd2VpZ2h0cyBiYXNlZCBv
biBleGVjdXRpb24gY291bnRzLiBUaGlzIGlzbid0IHF1aXRlIGNvcnJlY3QuIEl0J2xsCkBAIC04
MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhcHBseUNvdW50cyhkYXRhLT5m
YWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Rp
ZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIy
MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgc3RhdGljIEZ1bmN0
aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxGVAogICAgIHJldHVybiBmdGxXaGl0ZWxpc3Q7CiB9
CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gQ1BTTmF0dXJhbExvb3A7CisKIGNsYXNzIFRpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgogICAgIFRpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQpAQCAtODEsOCArODMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAgICAg
bGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3Vy
ZU5hdHVyYWxMb29wcygpOwotICAgICAgICBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICpt
X2dyYXBoLm1fbmF0dXJhbExvb3BzOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxM
b29wcygpOworICAgICAgICBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBo
Lm1fY3BzTmF0dXJhbExvb3BzOwogICAgICAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwg
dW5zaWduZWQ+IG5hdHVyYWxMb29wVG9Mb29wSGludCA9IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BI
aW50TWFwKG5hdHVyYWxMb29wcyk7CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTG9vcEhp
bnREZXNjcmlwdG9yPiB0aWVyVXBIaWVyYXJjaHk7CkBAIC0xODIsNyArMTg0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgSGFzaE1hcDxjb25zdCBOYXR1
cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChjb25zdCBO
YXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKKyAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29w
KiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKGNvbnN0IENQU05hdHVy
YWxMb29wcyYgbmF0dXJhbExvb3BzKQogICAgIHsKICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1
cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcHNUb0xvb3BIaW50OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMCAr
MTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5t
X3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5
IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBh
dCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2lu
ZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9j
aykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3Jp
Z2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2Fs
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3NTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQ
cm9maWxlcjo6T3JpZ2luU3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVk
IEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRD
b2RlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwor
ICAgICAgICBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3Vy
ZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4
ID0gIiAgICAiOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpz
Qm9keSI7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJv
c2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJl
YWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4g
PSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAg
ICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
bV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1
bWVudHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
OwogICAgICAgICAgICAgCkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IERGRzo6QmFzaWNCbG9jayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAg
ICAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRh
cmdldCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5h
dGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VD
b21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sg
IiwgKnRhcmdldCwgIiB3aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdl
dC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2Nr
KCksIG1faGlnaEJsb2NrKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFy
Z3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX3By
b2ZpbGVfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERF
RklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0
X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2NhdGNoKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTYsNiArNzk3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0UpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUywgR1BS
UmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1w
bCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzksNiArNTc5LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogfQogCitB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50MzJfdCBhcmcxKQoreworICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOworICAgIHVwZGF0ZVRvcENh
bGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3Bl
cmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBzaXplX3QgYXJnMikKIHsKICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIy
MDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MzIsNiArMTUzMiwzMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91bnJlYWNo
YWJsZShJbnN0cnVjdGlvCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3BfcHJvZmlsZV9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0aGUgcHJvY2VzcyBvZiBk
b2luZyBPU1IgZW50cnksIGluY2x1ZGluZworICAgIC8vIGFyZ3VtZW50IHR5cGUgcHJvb2ZzLCBz
dG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lw
T1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tp
cE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciog
YnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgICAgICBKU1ZhbHVlUmVn
cyByZWdzKHJlZ1QwKTsKKyNlbHNlCisgICAgICAgICAgICBKU1ZhbHVlUmVncyByZWdzKHJlZ1Qx
LCByZWdUMCk7CisjZW5kaWYKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJv
ZmlsZS5tX29wZXJhbmQsIHJlZ3MpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0
ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIwNzUxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTUxNSw2ICsxNTE1LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVU
b0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwog
fQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVj
U3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisK
KyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCkt
PnJlcGxhY2VtZW50KCk7CisgICAgaWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkg
IT0gSklUQ29kZTo6REZHSklUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRp
bWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTcsNiArMzE3LDcgQEAgdHlwZWRlZiBj
aGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJB
VElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsK
IHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0
YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQ
X0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVm
IGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVp
bnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0
X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYg
U3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0
ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJ
VE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CkBAIC0zOTcsNiArMzk4LDcgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNp
ZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQz
Ml90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNW
YWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3Rh
dGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxs
KikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4LDYg
KzE2MzgsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAg
IExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmls
ZV9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcio+KHBjWzFdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1f
b3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKworICAgIExMSU5UX0VORCgpOworfQorCiBl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19l
cnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Niw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lmX2V4Y2VwdGlvbl9p
c191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwpOwor
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX2NhdGNoKTsKIGV4
dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vy
cm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CiAjaWYgIUVOQUJMRShKSVQp
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF9zdGFja19jaGVja19hdF92bV9l
bnRyeShWTSosIFJlZ2lzdGVyKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDIyMDc1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc3LDYgKzE5NzcsMTEgQEAgX2xsaW50
X29wX2NhdGNoOgogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRjaF9sZW5ndGgpCiAKIAor
X2xsaW50X29wX3Byb2ZpbGVfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcHJvZmls
ZV9jYXRjaF9sZW5ndGgpCisKKwogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzUxKQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYg
KzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJp
bmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBE
MUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
bWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1
ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVD
NkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNG
NzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mzgs
NiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWly
LmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNw
cCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1t
ICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAq
LywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVD
ODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQx
REM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYv
QmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNH
cmFwaC5oCShyZXZpc2lvbiAyMjA3NTEpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFw
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyAr
MzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhh
dmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAi
I2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUo
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAg
ICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9v
dCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAg
ICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0K
LSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBu
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0
eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxz
ZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0
KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25z
dCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAg
ICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0
KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2Rl
Lm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUm
IG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29u
dGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3Qp
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290
IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFz
cyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAg
ICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21h
cC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAg
ICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAg
IHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYg
b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAg
ICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAg
ICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0
ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1
c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0g
U2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNp
bmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9k
ZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3
ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5w
cmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAg
ICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6
cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBo
LmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDc1MSkKKysrIFNvdXJjZS9XVEYvd3RmL0Rv
bWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNw
YWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewog
cHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERv
bWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6
IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxC
bG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJU
YXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNv
bXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9j
a0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEg
c3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ug
d2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRl
IHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAg
ICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0
ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJv
bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVi
bGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJ
dGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBo
OjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0
JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUg
R3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VG
cm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9
KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5j
ZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAg
dHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlz
dCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0
OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwo
CkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAg
ICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFt
ZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBm
b3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93
dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xl
Um9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdy
YXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBo
X2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RH
cmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRo
ZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5v
ZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisg
ICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVS
b290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jv
b3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lz
Um9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisg
ICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290Owor
ICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQor
Citwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1f
aXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNz
IFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5v
ZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsK
KyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290
LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQor
CisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwg
ZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9
CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBp
ZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAg
IHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290
KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAg
IG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBH
cmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7
CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgor
ICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRl
bXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNp
bmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFw
KSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAg
ICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7
CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgq
Y29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBU
JiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21h
cFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBO
b2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5n
bGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlw
ZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5v
ZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3Jh
cGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290
R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAg
ICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygp
KSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlz
RW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9v
dCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0K
KworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+
KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7Cisg
ICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5v
ZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0
IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNz
ZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAg
ICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5j
b250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRl
Y2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0
IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAg
Zm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9k
ZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsK
KyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5v
ZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAx
OworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAg
ICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAg
ICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAg
ICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUo
aSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0
LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwor
ICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQor
ICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAg
ICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3Vj
Y3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAg
IGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRl
bXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhl
IHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhl
IHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3Rl
ZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3Mu
CisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUg
R3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290
U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0
eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9T
aW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318208</attachid>
            <date>2017-08-15 17:58:53 -0700</date>
            <delta_ts>2017-08-15 18:38:22 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>144637</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04Njk4LDcgKzg2OTIsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODcsNyArMTA0ODAsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICB2
b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jYXRjaCIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcCIsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBv
cF90aHJvdzogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
cHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAidGhy
b3ciLCByMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsx
NDIsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9w
YXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9m
aWxlX2NhdGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90
aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3df
c3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNl
IG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDoKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtMzY4
LDYgKzM2OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bfbm9wOgogICAgIGNhc2Ugb3BfdW5yZWFjaGFi
bGU6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BD
T0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5U
X09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hF
TFBFUl9PUENPREVTCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksOCBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGluc3RydWN0
aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAgIH07CiAK
KyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGFmdGVyQ2F0Y2hJbmRpY2VzOworCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsK
IApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgUwogICAgICAgICAgICAgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRj
aEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAg
aSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2Vu
ZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFm
dGVyQ2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMmIGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJv
ZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRj
aEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVj
b2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5k
ZXgpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOwor
ICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fs
cy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0g
KHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBl
bmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkK
KyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5k
cy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVz
LT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClb
aV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9p
bnN0cnVjdGlvbnNbYWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0
KCk7CisgICAgICAgICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNh
dGNoUHJvZmlsZXMpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2Rl
QmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRp
ZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFBy
ZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsK
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1i
ZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxl
c0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1i
ZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJv
ZmlsZXMgYXJlIGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1i
ZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1w
bGVzID0gcHJvZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwx
MiBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAg
ICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChh
dXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVC
dWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAg
IG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9j
a2VyKTsKQEAgLTI3NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFs
dWVQcm9maWxlRm9yCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMo
KVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2Zp
bGUqIHJlc3VsdCA9IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0u
dS5wcm9maWxlOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0gZmFsc2U7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyAr
K2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOwor
ICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9mZnNldCkg
eworICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFT
U0VSVChmb3VuZCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIENvZGVC
bG9jazo6dmFsaWRhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1
bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92
YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFy
ZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5
PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAg
QXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxl
V2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJv
ZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50
IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihi
eXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29k
ZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4
IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4g
cmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9v
cGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAg
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBt
X3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1v
cmUgc3R1ZmYgdGhhbiB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGVzZSB2YWx1ZSBwcm9m
aWxlcworICAgICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBt
X2J1ZmZlciA9IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6
ZSAqIHNpemVvZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdl
dCgpW2ldKSBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rpb24+CisgICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVu
Y3Rpb24obV9idWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsK
KyAgICBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3MCw2ICszOTcwLDkgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisg
ICAgZW1pdE9wY29kZShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVy
KGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9T
UkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0
aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
IGNhc2UgUmV0dXJuOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHND
RkcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGlj
IEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3
YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NG
Ryk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRz
Q0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5t
X2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+
KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRl
Y29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNl
KQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZh
bHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3Rh
bnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNC
bG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwog
ICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoK
LSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAg
ICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAg
ICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFy
Z3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAg
ICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBj
YW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25s
eSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5v
LW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAg
IGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBu
by1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1
Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRl
eDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9p
bnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsK
ICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIK
ICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIK
KyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNs
dWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIK
QEAgLTExMzEsNyArMTEzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9j
ayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAog
ICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRl
Y29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFy
Z2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxv
Y2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUg
aGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtl
ZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIg
d2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc1LDcgKzQwNzYsMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNr
IGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNz
ZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5
LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVD
YWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9y
PE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
KwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3Qg
ZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8g
ZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4OCw3ICs0MDkz
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBO
b2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJs
ZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJn
dW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFy
Z3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01MTYxLDYgKzUxNjYsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9o
YXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOiB7CisgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBh
bnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2UgZG9uJ3QgdHJlYXQgdGhpcyBhcyBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Byb2ZpbGVfY2F0
Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3Bs
YW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0
aGUgRlRMLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wcm9maWxl
X2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
Y3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZl
Y3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7
CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7Cisg
ICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsK
KworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAg
ICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUu
bV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwor
ICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24g
PT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rp
b24pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJn
dW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9
IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVu
dFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRl
ZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAg
Ly8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfcHJvZmlsZV9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNvbXBpbGluZyB0aGlzIGFzIGFu
IGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB3aGVuIHNl
YXJjaGluZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBpdCByZWxhdGl2ZQorICAgICAg
ICAgICAgLy8gdG8gdGhlIGJ5dGVjb2RlIG9mZnNldCBvZiBvcF9wcm9maWxlX2NhdGNoLgorICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
KworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+
PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRo
YW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBp
bmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdl
J3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cg
dG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2Fs
cyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJn
dW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBh
ZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcElu
Zm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICAr
K251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJ
bmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1Rv
U2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJlY2F1c2Ug
d2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZlIGxvY2Fs
cy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3Vy
IGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUg
YmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0
byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJy
YXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJn
dW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0
KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmly
c3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHJvZmlsZV9j
YXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NhbGw6CiAg
ICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6
OlJlZ3VsYXIpOwpAQCAtNjE1Niw4ICs2MjczLDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91
bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIoKSkpOwogICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBw
ZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2Nr
IGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm51bUJsb2NrcygpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVt
QmxvY2tzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5pc09TUlRhcmdldCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBw
ZW5kKGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAgICAgICAgICAgICAg
ICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAgICAgICAgICAgIH0KQEAgLTYyMTQs
MTAgKzYzMzMsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAog
ICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMp
OworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtp
bGxVbnJlYWNoYWJsZUJsb2NrcygpOworCisgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKICAgICAKICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwpAQCAtNjIyOCw3
ICs2MzQ5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBBU1NFUlQo
YmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IG1fZ3JhcGguYmxvY2so
MCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICAgICAgQVNTRVJUKGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSBtX2dyYXBoLmJsb2Nr
KDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgfQotICAgIAor
CiAgICAgbV9ncmFwaC5tX2xvY2FsVmFycyA9IG1fbnVtTG9jYWxzOwogICAgIG1fZ3JhcGgubV9w
YXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1ldGVyU2xvdHM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5vc3JF
bnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKG1fdmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVzdC1oYW5kbGUgYmxvY2s6ICIsICpibG9jaywg
IlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdCbG9ja01h
cElubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCisjaW5jbHVkZSA8d3RmL1NpbmdsZVJvb3RHcmFwaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTQ4LDcgKzQ5LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgTm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQorICAgIE5v
ZGUgcm9vdCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBIHx8
IG1fZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmJs
b2NrKDApOworICAgIH0KKworICAgIExpc3Qgcm9vdHMoKQorICAgIHsKKyAgICAgICAgTGlzdCBy
ZXN1bHQ7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogcm9vdCA6IG1fZ3JhcGgubV9lbnRyeXBv
aW50cykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocm9vdCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBNYXA8VD4gbmV3
TWFwKCkgeyByZXR1cm4gQmxvY2tNYXA8VD4obV9ncmFwaCk7IH0KQEAgLTcxLDYgKzg0LDMxIEBA
IHByaXZhdGU6CiAgICAgR3JhcGgmIG1fZ3JhcGg7CiB9OwogCitjbGFzcyBDUFNDRkcgOiBwdWJs
aWMgU2luZ2xlUm9vdEdyYXBoPENGRz4geworcHVibGljOgorICAgIENQU0NGRyhHcmFwaCYgZ3Jh
cGgpCisgICAgICAgIDogU2luZ2xlUm9vdEdyYXBoPENGRz4oKmdyYXBoLm1fc3NhQ0ZHKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpKTsKKyAgICB9Cit9
OworCit1c2luZyBTU0FDRkcgPSBDRkc7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1
ZT46OnR5cGU+CitDUFNDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoZ3JhcGgubV9jcHNDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9jcHNDRkc7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FDRkcmIHNlbGVj
dENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9zc2FDRkcp
OworICAgIHJldHVybiAqZ3JhcGgubV9zc2FDRkc7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1
bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNh
c2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMg
LSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2Us
IGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIg
b3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMu
c2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRI
ZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMp
IHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0
VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tz
SW5QcmVPcmRlcigpOwogICAgICAgICAKQEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2Nr
KSkgewogICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAg
ICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0
cmljdCBkb21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3Vy
IG93biBibG9jayBpZgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0
aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAg
ICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24n
dCBkb21pbmF0ZSB1cy4KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3Ry
aWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFw
aC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewog
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlk
YXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1f
YmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWlu
YXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoLnNldE5vZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZToKICAgICBjYXNlIG9wX2dl
dF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX3Byb2ZpbGVf
Y2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xl
bmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4
dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2Fz
ZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5z
dXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3Jz
OworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0
b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFw
aC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAg
ICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNW
ZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFu
LXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAg
ZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJl
dmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAg
IG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21p
bmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAg
ICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1i
bHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1
Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVw
QXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMu
aAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21p
bmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6IHB1Ymxp
YyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2Ns
YXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBX
VEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0
b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAgIH0KIH07
CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNE
b21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZH
Pjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhH
cmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRv
cnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBn
cmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAg
ICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0g
PT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVk
Z2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25l
ciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5v
ZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTQsNiArMTk5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZI
aW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNo
Rm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAg
ICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBA
QAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5j
bHVkZSAiREZHTmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5o
IgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxs
Qnl0ZWNvZGVMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIK
QEAgLTczLDcgKzcyLDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAs
IG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAs
IG1fcHJvZmlsZWRCbG9jayhtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2Zn
KHN0ZDo6bWFrZV91bmlxdWU8Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2Vf
dW5pcXVlPFNTQUNGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAg
LCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lz
dHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVnaXN0ZXJpbmcpCkBAIC00MDksOSArNDA4LDEz
IEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoY29uc3QgQ1BTQ0ZHOjpOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLm5vZGUoKTsgfQorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9v
cE5vZGUoQmFzaWNCbG9jayogYmxvY2spIHsgcmV0dXJuIGJsb2NrOyB9CisKIHZvaWQgR3JhcGg6
OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJh
c2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29u
dGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2Nr
LCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQp
LCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlz
T1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5wcmludChw
cmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9y
aWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJs
ZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0
KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID8gIiAoQ2F0Y2ggRW50cnlwb2ludCki
IDogIiIsICJcbiIpOwogICAgIGlmIChibG9jay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4
ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBFeGVjdXRpb24gY291
bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3VudCwgIlxuIik7CiAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAtNDIyLDE4ICs0MjUsMjYgQEAgdm9pZCBHcmFwaDo6
ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgIGlmIChibG9jay0+dGVybWluYWwoKSkg
ewogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3Jz
KCkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiICIsICpzdWNjZXNzb3IpOwotICAgICAgICAg
ICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAo
IiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5lZGdlS2luZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsK
ICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgaWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNB
cmVWYWxpZCgpKSB7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTog
IiwgbV9kb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWlu
YXRlZEJ5KGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWlu
YW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5kb21pbmFuY2VGcm9udGllck9mKGJsb2Nr
KSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5j
ZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2Yo
QmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIpOworCisgICAgYXV0byBwcmludERvbWluYXRvcnMg
PSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAg
RG9taW5hdGVkIGJ5OiAiLCBkb21pbmF0b3JzLmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwor
ICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIGRvbWluYXRvcnMuYmxv
Y2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwg
IiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBkb21pbmF0b3JzLmRvbWluYW5jZUZyb250aWVyT2Yo
YmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9t
aW5hbmNlIEZyb250aWVyOiAiLAorICAgICAgICAgICAgZG9taW5hdG9ycy5pdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGRv
bWluYXRvcnMpPjo6dHlwZTo6TGlzdCB7IGJsb2NrIH0pLCAiXG4iKTsKKyAgICB9OworCisgICAg
aWYgKHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fc3NhRG9taW5hdG9ycykK
KyAgICAgICAgICAgIHByaW50RG9taW5hdG9ycygqbV9zc2FEb21pbmF0b3JzKTsKKyAgICAgICAg
ZWxzZSBpZiAobV9jcHNEb21pbmF0b3JzKQorICAgICAgICAgICAgcHJpbnREb21pbmF0b3JzKCpt
X2Nwc0RvbWluYXRvcnMpOwogICAgIH0KKwogICAgIGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMg
JiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBC
YWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRv
cnNPZihibG9jayksICJcbiIpOwogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2Fy
ZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5
KGJsb2NrKSwgIlxuIik7CkBAIC00NDYsMjkgKzQ1NywzMyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxv
Y2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBvdXQucHJpbnQo
cHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJl
TnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2sp
LCAiXG4iKTsKLSAgICBpZiAobV9uYXR1cmFsTG9vcHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5h
dHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgeworCisg
ICAgYXV0byBwcmludE5hdHVyYWxMb29wcyA9IFsmXSAoYXV0byYgbmF0dXJhbExvb3BzKSB7Cisg
ICAgICAgIGlmIChjb25zdCBhdXRvKiBsb29wID0gbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9j
aykpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250
YWluczoiKTsKICAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5k
ZXgpOworICAgICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQodW5ib3hMb29wTm9k
ZShsb29wLT5hdChpKSktPmluZGV4KTsKICAgICAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9j
a0xpc3QuYmVnaW4oKSwgc29ydGVkQmxvY2tMaXN0LmVuZCgpKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyArK2kpCiAgICAgICAg
ICAgICAgICAgb3V0LnByaW50KCIgIyIsIHNvcnRlZEJsb2NrTGlzdFtpXSk7CiAgICAgICAgICAg
ICBvdXQucHJpbnQoIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZlY3Rvcjxj
b25zdCBOYXR1cmFsTG9vcCo+IGNvbnRhaW5pbmdMb29wcyA9Ci0gICAgICAgICAgICBtX25hdHVy
YWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0xvb3BzID0g
bmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsKICAgICAgICAgaWYgKCFjb250YWluaW5nTG9v
cHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWlu
aW5nIGxvb3AgaGVhZGVyczoiKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50
KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOworICAgICAgICAgICAgICAgIG91
dC5wcmludCgiICIsICp1bmJveExvb3BOb2RlKGNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkp
KTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgfQotICAgIH0KKyAgICB9
OworCisgICAgaWYgKG1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29w
cyhtX3NzYU5hdHVyYWxMb29wcyk7CisgICAgZWxzZSBpZiAobV9jcHNOYXR1cmFsTG9vcHMpCisg
ICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1fY3BzTmF0dXJhbExvb3BzKTsKKwogICAgIGlmICgh
YmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFBo
aSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5z
aXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUxNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBt
X2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6
ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50
U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQo
IiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4i
KTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1w
KG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0byBwYWly
IDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAgQXJn
dW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIsIGxpc3REdW1wKHBhaXIu
dmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAogICAgIE5v
ZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NTcsMTAgQEAgdm9pZCBHcmFwaDo6
aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hh
YmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3
b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRy
dWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykgewor
ICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0
LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5
KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpA
QCAtNzk4LDkgKzgxNywxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFjaGFibGVCbG9ja3MoKQog
CiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2RvbWluYXRvcnMgPSBudWxs
cHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJp
bmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FE
b21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7Cisg
ICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7
CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEyICs4NzAsMzcgQEAgQmxv
Y2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0
OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygw
KSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAg
ICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNCbG9jayog
YmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykK
ICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3NvcihpKSk7CiAgICAgfQor
CisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgLy8gV2hlbiBpdGVyYXRp
bmcgb3ZlciBwcmUgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5hdG9ycworICAgICAgICAvLyBi
ZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRz
ID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
YiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpIDwgaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNp
b24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWlu
YXRvcnMoKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTg2Myw3ICs5MDgs
OCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xp
c3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29y
a2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDog
bV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3
aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3
aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTg3
Niw2ICs5MjIsMzEgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKSB7CisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21p
bmF0b3JzKSB7CisgICAgICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBvdmVyIHJldmVyc2UgcG9z
dCBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgICAgICAvLyBiZWZvcmUg
dGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9
IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1
bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJl
c3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5h
dG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpID4gaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisg
ICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMo
KSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTU0Myw0
NCBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlv
bkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsK
IH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NB
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9z
c2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0K
IAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BT
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAo
IW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBv
c3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0lu
U1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9j
cHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NB
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7
CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMp
CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNr
d2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIC8vIFdlIGNvdWxk
IGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRv
ZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZH
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
YmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2ICsxNTg4LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzRG9taW5hdG9ycygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNT
QSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRz
RG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTk2LDcg
QEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
KCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3
ICsxNjE0LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAg
ICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBh
cmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpAQCAtMTY5OCw2ICsxNzg1LDEzIEBA
IGJvb2wgR3JhcGg6OmNhbkRvRmFzdFNwcmVhZChOb2RlKiBub2RlLCAKICAgICByZXR1cm4gYWxs
R29vZDsKIH0KIAordm9pZCBHcmFwaDo6Y2xlYXJDUFNDRkdEYXRhKCkKK3sKKyAgICBtX2Nwc05h
dHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAg
ICBtX2Nwc0NGRyA9IG51bGxwdHI7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBX
VEYgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwxNyBAQCBj
bGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZH
OwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0
dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZHOwordXNp
bmcgU1NBQ0ZHID0gQ0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFND
Rkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQ
U05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0dXJhbExv
b3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBG
bG93TWFwOwogCkBAIC05MDEsOSArOTEyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRGVi
dWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAot
ICAgIERvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5n
JiBlbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1
cmFsTG9vcHMoKTsKKyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3JzKCk7Cisg
ICAgU1NBRG9taW5hdG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05hdHVyYWxM
b29wcyYgZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3BzJiBlbnN1
cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NG
RygpOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMo
KTsKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMoKTsKQEAgLTkxNiwxMiArOTI4LDE1IEBAIHB1YmxpYzoKICAgICBib29sIG5l
ZWRzU2NvcGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8
IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZvaWQgY2xl
YXJDUFNDRkdEYXRhKCk7CisKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CiAgICAg
Q29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsK
ICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAg
IFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNp
Y0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJn
Q2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVu
Y29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVl
TWFwOwpAQCAtOTU2LDExICs5NzEsMTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2Ug
RENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0
aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSos
IDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwg
OD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBp
cyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0
aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRG
b3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwg
MTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBv
c2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9uPiBtX3Ry
YW5zaXRpb25zOwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3Rk
OjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFz
aE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJl
ZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0Rv
bWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5h
dG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxM
b29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxM
b29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRz
Q0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5h
dG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEw
MDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0
ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRp
b25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFs
c2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0
VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVj
dG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2Zh
U2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwot
ICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0
dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+
Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1
bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5j
bGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3Jh
cGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVu
dEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
Z3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAg
ICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAg
ICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7
CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRz
KSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAg
ICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQt
PmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVj
dHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBl
bnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJl
V2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5
cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBG
bHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NB
KSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBl
bnRyeXBvaW50cyBpbiB0aGUgRlRMLCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAg
IC8vIHdoYXQgd2UgZG8gaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZv
cm1hdHNbaV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZh
bHVlW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9y
bWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50
MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwg
U3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVz
aGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxs
cHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNo
IChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICBy
b290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NS
QVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAg
ICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52
YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4
IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxv
Y2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxv
Y2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewor
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJs
b2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50
cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5
cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAg
ICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJl
dmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAg
LTM2NCw3ICszNzEsNyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VU
CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ld
LnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAgICAgICAg
CisKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJ
KHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJp
bmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5r
VG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50
cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsK
ICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0
cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAg
ICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hF
bnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENh
dGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2lu
dHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAg
W10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0
ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlw
b2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4o
KSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEm
IGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBh
Lm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAg
ICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVu
dHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9p
bnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBv
aW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQg
bWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMp
CisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnRE
YXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRG
b3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25z
dCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiwxMCArMTU4LDEzIEBAIHByaXZhdGU6CiBw
dWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlE
YXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRy
eXBvaW50czsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0Owog
ICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7
CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07CiAgICAg
REZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZHOworICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNo
T1NSRW50cnlCdWZmZXI7CisKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICB1aW50OF90IG5ldmVy
RXhlY3V0ZWRFbnRyeSB7IDEgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiAr
MzY3LDggQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigp
OworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKICAgICBtX3Nw
ZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwpAQCAt
NDI2LDYgKzQyOCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVy
KCk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01
NTEsMTQgKzU1NSwyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3Rh
CiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJh
c2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQp
OyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0
Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlu
a0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOwor
fQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Js
b2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsK
KwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5y
ZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5p
bnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisK
ICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEo
YmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkp
OwotICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVy
c2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBl
Y3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBh
biBleHBlY3RlZApAQCAtNjcwLDYgKzY4MywxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpzZXRFbmRP
ZkNvZGUoKQogICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWxJZ25vcmluZ1dh
dGNocG9pbnRzKCkpOwogfQogCit2b2lkIEpJVENvbXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRyeUJ1
ZmZlcigpCit7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQor
ICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSB2bSgpLT5zY3JhdGNoQnVm
ZmVyRm9yU2l6ZShzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRj
aE9TUkVudHJ5KSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENv
bXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNh
dGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwg
TGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAg
IAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAg
ICAgCkBAIC0yODQsNiArMjg1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5kRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0KEV4aXRLaW5kLCB1bnNpZ25lZCBldmVudFN0cmVhbUluZGV4LCBD
b2RlT3JpZ2luLCBIYW5kbGVySW5mbyogZXhjZXB0aW9uSGFuZGxlciwgQ2FsbFNpdGVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBzVG9GYWlsID0gTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0KCkpOwogCisgICAgdm9pZCBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAg
Ly8gVGhlIGRhdGFmbG93IGdyYXBoIGN1cnJlbnRseSBiZWluZyBnZW5lcmF0ZWQuCiAgICAgR3Jh
cGgmIG1fZ3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxM
b29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEo
KQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9m
b3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMo
KTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFw
aC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJh
bExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAg
ICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFj
aCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBi
ZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc3QgTmF0
dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2Yo
YmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYg
KCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9vcERhdGEm
IGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRz
IHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93
IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxv
b3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAg
ICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+
bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9v
cC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29w
cy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVy
YWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RP
dXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAgICAgICAg
ICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9v
cCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAg
ICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRl
cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3Au
aGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+
cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9y
cy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHByZUhlYWRl
ciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVj
dG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNoYW5nZWQg
PSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tz
SW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlu
bmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBj
dXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAgICAgICAg
IGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1
cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExv
b3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAgIGxvb3BT
dGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJlbWVt
YmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBz
byBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVj
YXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBs
b29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJv
ZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5h
dChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBt
X2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhl
YWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1f
ZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQ
cmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAg
ICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVu
dCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1
bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxv
Y2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAg
ICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJh
bWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxv
Y2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jayks
ICJBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIik7CisKICAgICAvLyBGSVhN
RTogSWYgd2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3
aXRoIGEgYml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBs
aWtlOgogICAgIC8vCkBAIC02OSw3ICs3MSw4IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRl
cihHcmFwaCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJl
cXVlbmNpZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBm
bG9hdCBmcmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBi
bG9jay0+cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRv
bWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBBU1NFUlQoZ3JhcGgubV9mb3Jt
ICE9IFNTQSk7CisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhi
bG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZyZXF1
ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5jeSwgcHJlZGVjZXNzb3ItPmV4ZWN1dGlvbkNvdW50KTsK
ICAgICB9CkBAIC0xMDMsNyArMTA2LDcgQEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdy
YXBoJiBncmFwaAogICAgIAogICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IDA7
IHByZWRlY2Vzc29ySW5kZXggPCBibG9jay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNz
b3JJbmRleCsrKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnBy
ZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5h
dG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIGlmIChncmFwaC5t
X2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRl
eC0tXSA9IGJsb2NrLT5wcmVkZWNlc3NvcnMubGFzdCgpOwogICAgICAgICBibG9jay0+cHJlZGVj
ZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAgLTEzMCwxNiArMTMzLDE2IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMo
KTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFw
aC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJh
bExvb3BzKCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgewotICAgICAg
ICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5s
b29wKGxvb3BJbmRleCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRl
ciA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX2Nwc05h
dHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25z
dCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3Ao
bG9vcEluZGV4KTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0g
bnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgbmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCkt
PnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsKLSAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29y
c1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLCBwcmVkZWNlc3NvcikpCisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+
cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgeworICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRl
Y2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5t
X2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLm5vZGUoKSwgcHJlZGVjZXNz
b3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAo
IWV4aXN0aW5nUHJlSGVhZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUHJlSGVh
ZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xNjUsMTQgKzE2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAvLyBBIHByZS1oZWFkZXIgaXMgbW9zdCB1c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0byBl
eGl0IGZyb20gaXRzIHRlcm1pbmFsLiBIZW5jZQogICAgICAgICAgICAgLy8gaWYgdGhlIHRlcm1p
bmFsIG9mIHRoZSBleGlzdGluZyBwcmUtaGVhZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQsIGJ1
dCB0aGUgZmlyc3QKICAgICAgICAgICAgIC8vIG9yaWdpbiBvZiB0aGUgbG9vcCBoZWFkZXIgZG9l
cywgdGhlbiB3ZSBzaG91bGQgY3JlYXRlIGEgbmV3IHByZS1oZWFkZXIuCi0gICAgICAgICAgICBp
ZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCktPmF0KDApLT5vcmlnaW4uZXhp
dE9LCisgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCku
bm9kZSgpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSwogICAgICAgICAgICAgICAgICYmICFleGlzdGlu
Z1ByZUhlYWRlci0+dGVybWluYWwoKS0+b3JpZ2luLmV4aXRPSykKICAgICAgICAgICAgICAgICBu
ZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgh
bmVlZHNOZXdQcmVIZWFkZXIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwg
bG9vcC5oZWFkZXIoKSk7CisgICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9p
bnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkubm9kZSgpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlh
bFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgp
LmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwo
KS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1
bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2sp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0
QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3Bl
cmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwo
R3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJl
cDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAg
Y2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05h
dHVyYWxMb29wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TmF0dXJhbExvb3BzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwyMCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpOYXR1
cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29wOwotCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMg
V1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2Ns
YXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAg
ICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVE
b21pbmF0b3JzKCksIHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFs
TG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9y
c0ZvckNGRzxDRkdLaW5kPihncmFwaCksIHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgewogICAg
IH0KIH07CiAKK3VzaW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+
OwordXNpbmcgQ1BTTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3
LDcgKzEyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQpAQCAtMTM3Miw2
ICsxMzcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0g
c3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERh
dGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKGlu
ZGV4KSB7CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1
NDEsNiArMTU0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IElkZW50aXR5
V2l0aFByb2ZpbGUpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3BlY3VsYXRlZFR5cGU+
KCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRU
eXBlIGNhdGNoTG9jYWxQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09
IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxTcGVjdWxh
dGVkVHlwZT4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAg
ewpAQCAtMTkzNiw3ICsxOTQ5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
dmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9Ci0gICAgCisKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNSZXN1bHQo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lv
biAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5k
aWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZy
b20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1
bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhl
IEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw2OCBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0
Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmpp
dFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2Rl
KTsKKworICAgIERGRzo6Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50ID0gaml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwor
ICAgIGlmICghY2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwg
dW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3ZSBkaWRu
J3QgY29tcGlsZSB0aGlzCisgICAgICAgIC8vIHByb2ZpbGVfY2F0Y2ggYXMgYW4gZW50cnlwb2lu
dCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUg
cHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRG
b3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFs
dWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRz
W2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xl
YW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpE
ZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3Qg
YWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAg
IC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVh
azsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hl
Y2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5k
RXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhl
Yy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2sp
Lm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4
ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NhdGNoKTsKKyAg
ICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIEpTVmFsdWUq
IGRhdGFCdWZmZXIgPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihqaXRDb2RlLT5jYXRjaE9T
UkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAg
ICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7
CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5pc0xvY2Fs
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRhdGFCdWZmZXJbaW5kZXhdID0gZXhl
Yy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2lu
ZGV4OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3NzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RW
YWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGlu
ZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlE
YXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsK
KyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29k
ZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlw
ZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3Jt
YXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBk
YXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAv
LyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9T
UkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwor
CisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90
IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRy
eShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNl
CiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVu
c2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9j
a0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlOVF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8g
TmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigpLgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAg
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7
CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBl
IGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47
CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IG5ld0FyZ3VtZW50cyA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7
CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVt
UGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0g
dGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAg
aWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdh
eXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAg
ICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAg
ICAgICAgICBvbGROb2RlID0gbmV3QXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAg
ICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAg
ICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbmV3
QXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGlu
dCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2Fs
KSB7CkBAIC0xMzksOCArMTQxLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVh
dGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAog
ICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9l
bnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobmV3Um9vdCwgbmV3QXJndW1lbnRzKTsKKworICAgICAgICBtX2dyYXBoLm1fY3BzQ0ZH
ID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgpOworCiAgICAgICAgIG1fZ3JhcGgu
cmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9j
a3MoKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MjcsNyArNzI3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3JhcGguY29t
cHV0ZVJlZkNvdW50cygpOwogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7
Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9n
cmFwaCk7CiAgICAgICAgIHBlcmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhtX2dyYXBoKTsK
ICAgICAgICAgbV9jb21iaW5lZExpdmVuZXNzID0gQ29tYmluZWRMaXZlbmVzcyhtX2dyYXBoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjIwNzc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY2LDkgKzM2Niw4IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHIKICAgICAvLyBJZiB3ZSdyZSBkb2luZyB2YWxpZGF0aW9uLCB0aGVuIHJ1biBzb21lIGFu
YWx5c2VzLCB0byBnaXZlIHRoZW0gYW4gb3Bwb3J0dW5pdHkKICAgICAvLyB0byBzZWxmLXZhbGlk
YXRlLiBOb3cgaXMgYXMgZ29vZCBhIHRpbWUgYXMgYW55IHRvIGRvIHRoaXMuCiAgICAgaWYgKHZh
bGlkYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgZGZnLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZGZnLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBkZmcuZW5zdXJlUHJlUG9z
dE51bWJlcmluZygpOworICAgICAgICBkZmcuZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAg
ICBkZmcuZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2Rl
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRl
ICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVy
aW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3Jh
cGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29y
a2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9
IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dp
dGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9y
ZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBb
aXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51
bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
RWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFj
a0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBv
c3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAg
Q3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7
Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNp
Y0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9
Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1
cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBz
dHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNC
bG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
cHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJl
cihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0
b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RB
bmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlz
IHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVk
Z2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNo
IGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5k
KEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBG
b3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20p
KQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJu
IENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcg
ewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0
TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUx
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxv
Y2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMg
aGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAg
ICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAg
ICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50
c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIw
Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0
Y2hMb2NhbDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRj
aExvY2FsUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAg
ICBjYXNlIEdldER5bmFtaWNWYXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5
dGVjb2RlVG9wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tT
aW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAg
ICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIFNT
QUNhbGN1bGF0b3Igc3NhQ2FsY3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0
IGluc2VydGlvblNldChtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBQ2FsY3VsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTUsMTIgKzk1LDEyIEBAIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUK
IAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVm
KEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJl
YWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFi
bGUpOworICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9y
cy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FD
YWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUq
IHZhcmlhYmxlKQogewotICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5h
dG9ycy0+aWRvbShibG9jaykpIHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5t
X3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1f
ZGF0YVtibG9ja10ubV9kZWZzLmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVm
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3Vs
YXRvci5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNhbGN1bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9p
ZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsK
LSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9y
cyk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURv
bWluYXRvcnMpOwogICAgICAgICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBt
X3ZhcmlhYmxlcykgewotICAgICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJs
b2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAgICAgbV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKAogICAgICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMs
CiAgICAgICAgICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2sp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0g
VGhyZWFkZWRDUFMpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50
cygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFw
aC5jbGVhckNQU0NGR0RhdGEoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3Jz
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiR3JhcGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJl
IFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vz
bid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJl
IHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAg
ICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24g
d2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNv
bXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3Nh
VmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FW
YXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3Nh
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1f
Z3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9n
cmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8m
IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBo
LmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVz
aXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVu
dHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVz
aGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5n
LmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5z
dGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBh
cmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAg
YXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFy
Z3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQyMSwxMiBA
QCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsK
LSAgICByZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJ
blNTQUNvbnZlcnNpb24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29u
dmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NB
Q29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFj
dENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjM3LDYgKzU2Mzcs
MjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB1
bnJlYWNoYWJsZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgdGFnKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcGF5bG9hZCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0
YWdHUFIgPSB0YWcuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gcGF5bG9hZC5n
cHIoKTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25v
ZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiwgVGFnT2Zmc2V0KSwgdGFnR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBQYXlsb2FkT2Zm
c2V0KSwgcGF5bG9hZEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGFnR1BSLCBwYXlsb2Fk
R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5
cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTk3LDYgKzU5OTcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ2hlY2tTdWJDbGFzcyhu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7Cisg
ICAgICAgIEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5q
aXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hP
U1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpz
VmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lm
IEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRk
MzIoCkBAIC02MDg1LDYgKzYwOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKICNlbHNlIC8v
IEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjkzLDYgKzE2OTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9j
awogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50KSB7CisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAg
bV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQu
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFi
bGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxs
RnJhbWUoKTsKQEAgLTE3ODcsOCArMTc5NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2lu
ID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAg
IGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAg
Tm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUq
IG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAg
Ly8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2gg
YXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODcyLDEyICsxODgwLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNP
U1JUYXJnZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRk
IHRoZW0KLSAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVh
ZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChi
bG9jay0+aXNPU1JUYXJnZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdl
IGNvdWxkIGFkZCB0aGVtCisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAg
ICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4
XSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE4ODgsMTAgKzE4OTUsMzAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxv
Y2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJn
ZXQpCisgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NS
RW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZl
cik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAg
IGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChi
bG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsK
KyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAg
ICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVj
dG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1l
bnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRD
ZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hl
Y2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgq
YmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZN
b3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc09TUlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRy
eSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsK
KyAgICAgICAgfQogICAgIH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9T
UkVudHJ5cG9pbnRzKCk7CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5
SGVhZHMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNv
dW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGgu
ZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExv
b3BzKCk7CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBiYXNpYyBibG9jayBleGVjdXRp
b24gY291bnRzIGJhc2VkIG9uIGxvb3AgZGVwdGguCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3co
MTAsIG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOworICAgICAgICAg
ICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fY3BzTmF0dXJhbExv
b3BzLT5sb29wRGVwdGgoYmxvY2spKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
RXN0aW1hdGUgYnJhbmNoIHdlaWdodHMgYmFzZWQgb24gZXhlY3V0aW9uIGNvdW50cy4gVGhpcyBp
c24ndCBxdWl0ZSBjb3JyZWN0LiBJdCdsbApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCw4IEBAIHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFs
RlQKICAgICByZXR1cm4gZnRsV2hpdGVsaXN0OwogfQogCit1c2luZyBOYXR1cmFsTG9vcCA9IENQ
U05hdHVyYWxMb29wOworCiBjbGFzcyBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKIHB1YmxpYzoKICAgICBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlKEdyYXBoJiBn
cmFwaCkKQEAgLTgxLDggKzgzLDggQEAgcHVibGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OnVz
ZU9TUkVudHJ5VG9GVEwoKSkKICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwog
ICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAg
TmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgQ1BTTmF0dXJh
bExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wczsKICAgICAg
ICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcFRvTG9v
cEhpbnQgPSBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChuYXR1cmFsTG9vcHMpOwogCiAg
ICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIExvb3BIaW50RGVzY3JpcHRvcj4gdGllclVwSGllcmFy
Y2h5OwpAQCAtMTgyLDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGRO
YXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAoY29uc3QgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMp
CisgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxM
b29wVG9Mb29wSGludE1hcChjb25zdCBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKICAg
ICB7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJh
bExvb3BzVG9Mb29wSGludDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVl
Lm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0
aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAvLyBD
dXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJn
dW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKTsKIAogICAgICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4aXRPSyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBnZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFibGUtPnBy
ZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTAgKzgz
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgLy8gTkIuIFRoaXMgY29kZSBpcyBub3Qgd3JpdHRlbiBm
b3IgcGVyZm9ybWFuY2UsIHNpbmNlIGl0IGlzIG5vdCBpbnRlbmRlZCB0byBydW4KICAgICAgICAg
Ly8gaW4gcmVsZWFzZSBidWlsZHMuCiAKLSAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCBhbGwgbG9j
YWwgdmFyaWFibGVzIGF0IHRoZSBoZWFkIG9mIHRoZSByb290IGJsb2NrIGFyZSBkZWFkLgotICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fscygp
OyArK2kpCi0gICAgICAgICAgICBWX0VRVUFMKCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwg
cm9vdCksIHN0YXRpY19jYXN0PE5vZGUqPigwKSwgcm9vdC0+dmFyaWFibGVzQXRIZWFkLmxvY2Fs
KGkpKTsKKyAgICAgICAgVkFMSURBVEUoKG1fZ3JhcGguYmxvY2soMCkpLCBtX2dyYXBoLm1fZW50
cnlwb2ludHMuY29udGFpbnMobV9ncmFwaC5ibG9jaygwKSkpOworCisgICAgICAgIC8vIFZhbGlk
YXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxlcyBhdCB0aGUgaGVhZCBvZiBhbGwgZW50cnlwb2lu
dHMgYXJlIGRlYWQuCisgICAgICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50cykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCisgICAg
ICAgICAgICAgICAgVl9FUVVBTCgodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIGVudHJ5cG9p
bnQpLCBzdGF0aWNfY2FzdDxOb2RlKj4obnVsbHB0ciksIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0
SGVhZC5sb2NhbChpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFZhbGlkYXRl
IHJlZiBjb3VudHMgYW5kIHVzZXMuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQ
cm9maWxlcjo6T3JpZ2luU3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVk
IEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRD
b2RlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwor
ICAgICAgICBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3Vy
ZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4
ID0gIiAgICAiOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpz
Qm9keSI7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJv
c2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJl
YWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4g
PSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAg
ICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
bV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1
bWVudHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
OwogICAgICAgICAgICAgCkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IERGRzo6QmFzaWNCbG9jayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAg
ICAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRh
cmdldCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5h
dGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VD
b21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sg
IiwgKnRhcmdldCwgIiB3aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdl
dC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2Nr
KCksIG1faGlnaEJsb2NrKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFy
Z3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX3By
b2ZpbGVfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERF
RklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0
X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2NhdGNoKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTYsNiArNzk3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0UpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUywgR1BS
UmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1w
bCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NzksNiArNTc5LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogfQogCitB
TFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50MzJfdCBhcmcxKQoreworICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOworICAgIHVwZGF0ZVRvcENh
bGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Cit9CisKIEFMV0FZ
U19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3Bl
cmF0aW9uX0VKUyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBzaXplX3QgYXJnMikKIHsKICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MzcsNiArMTUzNywzMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91bnJlYWNo
YWJsZShJbnN0cnVjdGlvCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3BfcHJvZmlsZV9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0aGUgcHJvY2VzcyBvZiBk
b2luZyBPU1IgZW50cnksIGluY2x1ZGluZworICAgIC8vIGFyZ3VtZW50IHR5cGUgcHJvb2ZzLCBz
dG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lw
T1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0
UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tp
cE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgewor
ICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUu
cG9pbnRlcik7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQmIHByb2ZpbGUpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVncyhyZWdUMCk7CisjZWxzZQorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhy
ZWdUMSwgcmVnVDApOworI2VuZGlmCisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGlu
Z1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1MTUsNiArMTUxNSwxOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElP
TiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGlt
aXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAw
KTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2go
RXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9j
aygpLT5yZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlw
ZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywg
b3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNyw3IEBAIHR5cGVk
ZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9P
UEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJf
dCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4
ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElP
TiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlw
ZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUq
LCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAq
U3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBl
ZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVj
U3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpz
c19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk3LDYgKzM5OCw3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7
CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1
aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2Rl
ZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpT
Q2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYz
OCw2ICsxNjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8K
ICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3By
b2ZpbGVfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2Zp
bGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmls
ZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30K
KwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZs
b3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9w
dQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRp
b25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWls
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRjaCk7
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxv
d19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmICFFTkFCTEUo
SklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tfYXRf
dm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTg4MSw2ICsxODgxLDExIEBAIF9sbGludF9v
cF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW4KICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgo
X3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCkK
ICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVu
Y19kZWNsX2luX2V2YWxfbGVuZ3RoKQogCitfbGxpbnRfb3BfcHJvZmlsZV9jYXRjaDoKKyAgICBj
YWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQorICAgIGRp
c3BhdGNoKGNvbnN0ZXhwciBvcF9wcm9maWxlX2NhdGNoX2xlbmd0aCkKKworCiAjIExhc3RseSwg
bWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBh
bGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2lu
ZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKICMgYXMgbXVjaC4KSW5kZXg6IFNvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzc3KQorKysg
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVu
aXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1
ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5
OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTUy
MTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxl
UGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQ
YWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290
R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywK
IAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJ
MEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICovLApJbmRleDogU291cmNl
L1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9C
YWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNr
d2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBo
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyBy
b290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7
IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2Rl
KCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAgICAgICAgICAgTm9kZSBy
ZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAgICAgICAgICAgIHJlc3Vs
dC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9
Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAg
ICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290OwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAg
ICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9k
ZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFw
aDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jv
b3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAg
ICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29s
IGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0
cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJl
bW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4g
bV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
X2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHBy
aXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wg
bV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkK
LSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0gVCgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAx
OyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAg
ICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAgICB9Ci0KLSAgICAgICAg
Y29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2luZGV4XTsKLSAgICAgICAg
fQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1f
cm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0K
LQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25v
ZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1l
IEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07
Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNp
bmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBW
ZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkK
QEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAg
ICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkp
Ci0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJp
bnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dC5wcmlu
dChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJp
bmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9X
VEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDgg
QEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWlu
YXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsK
KwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQog
ICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRl
IG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAg
TGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVy
VGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5l
d01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRv
IGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5r
cyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0
byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWlu
YW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxC
bG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6
TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nr
c0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJh
dGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1
LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9y
bS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tz
SW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVu
YW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBj
b25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAg
dHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWRE
b21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRl
ZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNv
bnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2Yo
Y29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpT
ZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRp
ZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYg
ZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYg
ZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVu
YW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9
IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291
cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2lu
Z2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xl
Um9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNp
bmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJl
ZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsKKworICAgIFNpbmdsZVJv
b3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpO
b2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHN0YXRp
YyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdy
YXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOworICAgICAgICByZXN1
bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCisgICAgICAgICAg
ICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUo
KTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
aXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAgIHJldHVybiBtX25vZGU7
CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAg
ICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFw
aD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJv
b3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0g
ZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAg
ICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQo
bV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7
CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAg
ICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1f
aGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgp
KTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgewor
ICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7
CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgfQorCisg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
bV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7
CisgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0
eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xl
Um9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+Owor
cHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFw
KGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVS
b290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90
aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAg
IHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFy
KCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6
ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVy
biBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOworICAgIH0KKworICAg
IGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9
CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBp
ZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJl
dHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3Jb
XShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3Rf
Y2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9v
dDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBo
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJv
b3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxH
cmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RN
YXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBT
aW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisg
ICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFw
aC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVh
bFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVu
ZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290
KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkp
OworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1
cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYg
bm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lzdGVudCgpOworCisgICAg
ICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nv
ckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBo
OjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nl
c3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dy
YXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJl
dHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAgICBMaXN0IHJlc3VsdDsK
KyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNl
c3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBO
b2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2Rl
KCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAg
ICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAgIH0KKworICAgIHVuc2ln
bmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5v
ZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0Cisg
ICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkK
KyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUu
aXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkp
KTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRo
aXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwgIjpcbiIpOworICAgICAg
ICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAgICAgQ29tbWFQcmludGVy
IGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3Jz
KG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChwcmVkZWNlc3Nv
cikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50
KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAg
ICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAg
ICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAg
IG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24g
dG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAg
ICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNo
YW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQn
cyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRo
aXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAo
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAg
ICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFT
U0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgor
ICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlz
dDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlm
IC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318214</attachid>
            <date>2017-08-15 18:38:22 -0700</date>
            <delta_ts>2017-08-15 19:50:53 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>144595</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RG
R1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5j
cHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyog
REZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3Bw
ICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsK
IAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4
RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUEx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdG
IC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9w
Y29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2
MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUw
QiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1
OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9i
YmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0Uw
MUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRo
ID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBh
dGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAv
KiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3Jt
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2IEBACiAJ
CQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQw
QkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJC
OUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJ
CQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBA
IC04Njk4LDcgKzg2OTIsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQ
cmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFE
QjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODcsNyArMTA0ODAsNiBAQAogCQkJCUE3OEE5NzdBMTc5
NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0
MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
MkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICB2
b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jYXRjaCIpOworICAgICAgICBvdXQu
cHJpbnRmKCIlcCIsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBv
cF90aHJvdzogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
cHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0LCAidGhy
b3ciLCByMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsx
NDIsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9w
YXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wcm9m
aWxlX2NhdGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90
aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3df
c3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAgICBjYXNl
IG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDoKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtMzY4
LDYgKzM2OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayoKICAg
ICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bfbm9wOgogICAgIGNhc2Ugb3BfdW5yZWFjaGFi
bGU6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BD
T0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5U
X09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hF
TFBFUl9PUENPREVTCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksOCBAQCBi
b29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGluc3RydWN0
aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAgIH07CiAK
KyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGFmdGVyQ2F0Y2hJbmRpY2VzOworCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsK
IApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgUwogICAgICAgICAgICAgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG51bWJlck9m
QXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICAgICAgYWZ0ZXJDYXRj
aEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAg
aSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2Vu
ZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGFm
dGVyQ2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMmIGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJv
ZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0ZXJDYXRj
aEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVj
b2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNhdGNoSW5k
ZXgpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJhbmRzOwor
ICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2ZUxvY2Fs
cy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0g
KHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBl
bmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7ICsraSkK
KyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFrZV91bmlx
dWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVPcGVyYW5k
cy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb2ZpbGVz
LT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIuZ2V0KClb
aV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAgICAgbV9p
bnN0cnVjdGlvbnNbYWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0
KCk7CisgICAgICAgICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7
CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNh
dGNoUHJvZmlsZXMpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2Rl
QmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3QgSWRlbnRp
ZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFBy
ZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsK
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1i
ZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxl
c0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1i
ZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJv
ZmlsZXMgYXJlIGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1i
ZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1w
bGVzID0gcHJvZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiArMjU0MCwx
MiBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAgICAgICAg
ICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAgcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAgZm9yIChh
dXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHByb2ZpbGVC
dWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Cisg
ICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAg
IG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbnMobG9j
a2VyKTsKQEAgLTI3NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFs
dWVQcm9maWxlRm9yCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVjdGlvbnMo
KVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1ZVByb2Zp
bGUqIHJlc3VsdCA9IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0u
dS5wcm9maWxlOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0gZmFsc2U7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxlcygpOyAr
K2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxlKGkpOwor
ICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9mZnNldCkg
eworICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFT
U0VSVChmb3VuZCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIENvZGVC
bG9jazo6dmFsaWRhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV9hcmd1
bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4gbV92
YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0b3I8UmFy
ZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5
PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7CiAgICAg
QXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVy
T2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxl
V2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZhbHVlUHJv
ZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50
IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihi
eXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBieXRlY29k
ZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCArMjAyLDM4
IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICByZXR1cm4g
cmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBpbnQgbV9v
cGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIgeworICAg
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBt
X3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUgaGFzIG1v
cmUgc3R1ZmYgdGhhbiB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGVzZSB2YWx1ZSBwcm9m
aWxlcworICAgICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAgICAgICBt
X2J1ZmZlciA9IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9jKG1fc2l6
ZSAqIHNpemVvZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVmZmVyLmdl
dCgpW2ldKSBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0uflZhbHVl
UHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rpb24+CisgICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgZnVu
Y3Rpb24obV9idWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsK
KyAgICBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3MCw2ICszOTcwLDkgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkpOworCisg
ICAgZW1pdE9wY29kZShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVy
KGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJvb2wgQWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9T
UkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsK
ICAgICAgICAgYnJlYWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2UgY29uZGl0
aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAKKwogICAg
IGNhc2UgUmV0dXJuOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZH
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHND
RkcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGlj
IEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGljIEJhY2t3
YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0NG
Ryk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFja3dhcmRz
Q0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpncmFwaC5t
X2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxTU0FDRkc+
KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdpbihieXRl
Y29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNl
KQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNpdGVkKGZh
bHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5kQ29uc3Rh
bnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2Nr
LmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3QgQmFzaWNC
bG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6ZSgpOwog
ICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQoaSk7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgSnVtcDoK
LSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6Ci0gICAg
ICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0gICAgICAg
ICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFy
Z3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAgICAgICAg
ICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWluYWwoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAgICAgICAg
ICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVuZCBj
YW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkgb25s
eSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxsIG5v
LW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAgICAgICAg
IGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZlcnNhbCBu
by1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBAQCBzdHJ1
Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRleCBpbmRl
eDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVudHJ5cG9p
bnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsK
ICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIK
ICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIK
KyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNs
dWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIK
QEAgLTExMzEsNyArMTEzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlhbCBibG9j
ayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4sIGFuZAog
ICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2FtZSBieXRl
Y29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5raW5nVGFy
Z2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFzaWMgYmxv
Y2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAvLyB0aGUg
aGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3JzIGxpbmtl
ZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUgb3RoZXIg
d2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc1LDcgKzQwNzYsMTEgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNr
IGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNz
ZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5
LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVD
YWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFy
Z3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9y
PE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
KwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3Qg
ZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8g
ZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4OCw3ICs0MDkz
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBO
b2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJs
ZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJn
dW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFy
Z3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC01MTYxLDYgKzUxNjYsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3JhcGgubV9o
YXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9j
YXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOiB7CisgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBh
bnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2UgZG9uJ3QgdHJlYXQgdGhpcyBhcyBh
biBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Byb2ZpbGVfY2F0
Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3Bs
YW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0
aGUgRlRMLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wcm9maWxl
X2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1f
Y3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVm
ZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZl
Y3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7
CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7Cisg
ICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsK
KworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAg
ICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUu
bV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwor
ICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24g
PT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rp
b24pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJn
dW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9
IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJn
dW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVu
dFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRl
ZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAg
Ly8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfcHJvZmlsZV9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNvbXBpbGluZyB0aGlzIGFzIGFu
IGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB3aGVuIHNl
YXJjaGluZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBpdCByZWxhdGl2ZQorICAgICAg
ICAgICAgLy8gdG8gdGhlIGJ5dGVjb2RlIG9mZnNldCBvZiBvcF9wcm9maWxlX2NhdGNoLgorICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJbmRleDsK
KworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2sp
OworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+
PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRo
YW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBp
bmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFdl
J3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25vdyBob3cg
dG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2Fs
cyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJn
dW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFT
U0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBh
ZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcElu
Zm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICAr
K251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJ
bmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1Rv
U2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JD
YXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJlY2F1c2Ug
d2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZlIGxvY2Fs
cy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBo
KEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3Vy
IGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5zIGhlcmUg
YmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAgICAvLyB0
byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8gZXhpdC4K
KyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
ICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1l
bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRp
Y3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
U3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJy
YXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJn
dW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3Vt
ZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fsc1RvU2V0
KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIuZmly
c3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHJvZmlsZV9j
YXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2NhbGw6CiAg
ICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6
OlJlZ3VsYXIpOwpAQCAtNjE1Niw4ICs2MjczLDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91
bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIoKSkpOwogICAgICAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBw
ZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2Nr
IGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFt
X2dyYXBoLm51bUJsb2NrcygpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVt
QmxvY2tzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5pc09TUlRhcmdldCA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBw
ZW5kKGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAgICAgICAgICAgICAg
ICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAgICAgICAgICAgIH0KQEAgLTYyMTQs
MTAgKzYzMzMsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAog
ICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnku
bV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMp
OworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtp
bGxVbnJlYWNoYWJsZUJsb2NrcygpOworCisgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKICAgICAKICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwpAQCAtNjIyOCw3
ICs2MzQ5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBBU1NFUlQo
YmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IG1fZ3JhcGguYmxvY2so
MCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICAgICAgQVNTRVJUKGJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSBtX2dyYXBoLmJsb2Nr
KDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgfQotICAgIAor
CiAgICAgbV9ncmFwaC5tX2xvY2FsVmFycyA9IG1fbnVtTG9jYWxzOwogICAgIG1fZ3JhcGgubV9w
YXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1ldGVyU2xvdHM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5vc3JF
bnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKG1fdmVyYm9zZSkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVzdC1oYW5kbGUgYmxvY2s6ICIsICpibG9jaywg
IlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZH
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdCbG9ja01h
cElubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCisjaW5jbHVkZSA8d3RmL1NpbmdsZVJvb3RHcmFwaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKQEAgLTQ4LDcgKzQ5LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgTm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQorICAgIE5v
ZGUgcm9vdCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBIHx8
IG1fZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmJs
b2NrKDApOworICAgIH0KKworICAgIExpc3Qgcm9vdHMoKQorICAgIHsKKyAgICAgICAgTGlzdCBy
ZXN1bHQ7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogcm9vdCA6IG1fZ3JhcGgubV9lbnRyeXBv
aW50cykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocm9vdCk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBNYXA8VD4gbmV3
TWFwKCkgeyByZXR1cm4gQmxvY2tNYXA8VD4obV9ncmFwaCk7IH0KQEAgLTcxLDYgKzg0LDMxIEBA
IHByaXZhdGU6CiAgICAgR3JhcGgmIG1fZ3JhcGg7CiB9OwogCitjbGFzcyBDUFNDRkcgOiBwdWJs
aWMgU2luZ2xlUm9vdEdyYXBoPENGRz4geworcHVibGljOgorICAgIENQU0NGRyhHcmFwaCYgZ3Jh
cGgpCisgICAgICAgIDogU2luZ2xlUm9vdEdyYXBoPENGRz4oKmdyYXBoLm1fc3NhQ0ZHKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpKTsKKyAgICB9Cit9
OworCit1c2luZyBTU0FDRkcgPSBDRkc7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1
ZT46OnR5cGU+CitDUFNDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoZ3JhcGgubV9jcHNDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9jcHNDRkc7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FDRkcmIHNlbGVj
dENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9zc2FDRkcp
OworICAgIHJldHVybiAqZ3JhcGgubV9zc2FDRkc7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDEzIEBAIHByaXZhdGU6CiAg
ICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1
bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVjaWFsLWNh
c2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMg
LSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2Us
IGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIg
b3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMu
c2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRI
ZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworCisg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMp
IHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0
VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBs
YXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9t
aW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tz
SW5QcmVPcmRlcigpOwogICAgICAgICAKQEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2Nr
KSkgewogICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAg
ICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0
cmljdCBkb21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3Vy
IG93biBibG9jayBpZgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0
aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAg
ICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24n
dCBkb21pbmF0ZSB1cy4KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3Ry
aWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFw
aC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewog
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewog
ICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlk
YXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1f
YmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWlu
YXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoLnNldE5vZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZToKICAgICBjYXNlIG9wX2dl
dF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX3Byb2ZpbGVf
Y2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xl
bmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4
dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2Fz
ZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5z
dXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3Jz
OworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0
b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFw
aC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAg
ICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNW
ZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFu
LXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAg
ZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJl
dmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAg
IG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21p
bmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAg
ICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1i
bHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1
Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVw
QXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMu
aAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21p
bmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6IHB1Ymxp
YyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2Ns
YXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBX
VEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0
b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAgIH0KIH07
CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNE
b21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZH
Pjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhH
cmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRv
cnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBn
cmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAg
ICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0g
PT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVk
Z2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25l
ciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5v
ZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTQsNiArMTk5NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZI
aW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNo
Rm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAg
ICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBA
QAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5j
bHVkZSAiREZHTmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5o
IgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxs
Qnl0ZWNvZGVMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIK
QEAgLTczLDcgKzcyLDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAs
IG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAs
IG1fcHJvZmlsZWRCbG9jayhtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2Zn
KHN0ZDo6bWFrZV91bmlxdWU8Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2Vf
dW5pcXVlPFNTQUNGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAg
LCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lz
dHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVnaXN0ZXJpbmcpCkBAIC00MDksOSArNDA4LDEz
IEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoY29uc3QgQ1BTQ0ZHOjpOb2RlJiBu
b2RlKSB7IHJldHVybiBub2RlLm5vZGUoKTsgfQorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9v
cE5vZGUoQmFzaWNCbG9jayogYmxvY2spIHsgcmV0dXJuIGJsb2NrOyB9CisKIHZvaWQgR3JhcGg6
OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJh
c2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29u
dGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2Nr
LCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQp
LCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlz
T1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5wcmludChw
cmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9y
aWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJs
ZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0
KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID8gIiAoQ2F0Y2ggRW50cnlwb2ludCki
IDogIiIsICJcbiIpOwogICAgIGlmIChibG9jay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4
ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBFeGVjdXRpb24gY291
bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3VudCwgIlxuIik7CiAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAtNDIyLDE4ICs0MjUsMjYgQEAgdm9pZCBHcmFwaDo6
ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgIGlmIChibG9jay0+dGVybWluYWwoKSkg
ewogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3Jz
KCkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiICIsICpzdWNjZXNzb3IpOwotICAgICAgICAg
ICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAo
IiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5lZGdlS2luZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsK
ICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgaWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNB
cmVWYWxpZCgpKSB7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTog
IiwgbV9kb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWlu
YXRlZEJ5KGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWlu
YW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5kb21pbmFuY2VGcm9udGllck9mKGJsb2Nr
KSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5j
ZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2Yo
QmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIpOworCisgICAgYXV0byBwcmludERvbWluYXRvcnMg
PSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAg
RG9taW5hdGVkIGJ5OiAiLCBkb21pbmF0b3JzLmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwor
ICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIGRvbWluYXRvcnMuYmxv
Y2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwg
IiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBkb21pbmF0b3JzLmRvbWluYW5jZUZyb250aWVyT2Yo
YmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9t
aW5hbmNlIEZyb250aWVyOiAiLAorICAgICAgICAgICAgZG9taW5hdG9ycy5pdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGRv
bWluYXRvcnMpPjo6dHlwZTo6TGlzdCB7IGJsb2NrIH0pLCAiXG4iKTsKKyAgICB9OworCisgICAg
aWYgKHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fc3NhRG9taW5hdG9ycykK
KyAgICAgICAgICAgIHByaW50RG9taW5hdG9ycygqbV9zc2FEb21pbmF0b3JzKTsKKyAgICAgICAg
ZWxzZSBpZiAobV9jcHNEb21pbmF0b3JzKQorICAgICAgICAgICAgcHJpbnREb21pbmF0b3JzKCpt
X2Nwc0RvbWluYXRvcnMpOwogICAgIH0KKwogICAgIGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMg
JiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBC
YWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRv
cnNPZihibG9jayksICJcbiIpOwogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2Fy
ZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5
KGJsb2NrKSwgIlxuIik7CkBAIC00NDYsMjkgKzQ1NywzMyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxv
Y2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIp
OwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBvdXQucHJpbnQo
cHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJl
TnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2sp
LCAiXG4iKTsKLSAgICBpZiAobV9uYXR1cmFsTG9vcHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5h
dHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgeworCisg
ICAgYXV0byBwcmludE5hdHVyYWxMb29wcyA9IFsmXSAoYXV0byYgbmF0dXJhbExvb3BzKSB7Cisg
ICAgICAgIGlmIChjb25zdCBhdXRvKiBsb29wID0gbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9j
aykpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250
YWluczoiKTsKICAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5k
ZXgpOworICAgICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQodW5ib3hMb29wTm9k
ZShsb29wLT5hdChpKSktPmluZGV4KTsKICAgICAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9j
a0xpc3QuYmVnaW4oKSwgc29ydGVkQmxvY2tMaXN0LmVuZCgpKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyArK2kpCiAgICAgICAg
ICAgICAgICAgb3V0LnByaW50KCIgIyIsIHNvcnRlZEJsb2NrTGlzdFtpXSk7CiAgICAgICAgICAg
ICBvdXQucHJpbnQoIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZlY3Rvcjxj
b25zdCBOYXR1cmFsTG9vcCo+IGNvbnRhaW5pbmdMb29wcyA9Ci0gICAgICAgICAgICBtX25hdHVy
YWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0xvb3BzID0g
bmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsKICAgICAgICAgaWYgKCFjb250YWluaW5nTG9v
cHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWlu
aW5nIGxvb3AgaGVhZGVyczoiKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50
KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOworICAgICAgICAgICAgICAgIG91
dC5wcmludCgiICIsICp1bmJveExvb3BOb2RlKGNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkp
KTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgfQotICAgIH0KKyAgICB9
OworCisgICAgaWYgKG1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29w
cyhtX3NzYU5hdHVyYWxMb29wcyk7CisgICAgZWxzZSBpZiAobV9jcHNOYXR1cmFsTG9vcHMpCisg
ICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1fY3BzTmF0dXJhbExvb3BzKTsKKwogICAgIGlmICgh
YmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFBo
aSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5z
aXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUxNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBt
X2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6
ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50
U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQo
IiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4i
KTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1w
KG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0byBwYWly
IDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAgQXJn
dW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIsIGxpc3REdW1wKHBhaXIu
dmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAogICAgIE5v
ZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NTcsMTAgQEAgdm9pZCBHcmFwaDo6
aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hh
YmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3
b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRy
dWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykgewor
ICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0
LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5
KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpA
QCAtNzk4LDkgKzgxNywxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFjaGFibGVCbG9ja3MoKQog
CiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2RvbWluYXRvcnMgPSBudWxs
cHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJp
bmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FE
b21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7Cisg
ICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7
CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEyICs4NzAsMzcgQEAgQmxv
Y2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0
OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygw
KSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAg
ICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNCbG9jayog
YmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykK
ICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3NvcihpKSk7CiAgICAgfQor
CisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgLy8gV2hlbiBpdGVyYXRp
bmcgb3ZlciBwcmUgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5hdG9ycworICAgICAgICAvLyBi
ZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRz
ID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
YiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpIDwgaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNp
b24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWlu
YXRvcnMoKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTg2Myw3ICs5MDgs
OCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xp
c3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29y
a2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDog
bV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3
aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3
aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTg3
Niw2ICs5MjIsMzEgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5h
YmxlZCgpKSB7CisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21p
bmF0b3JzKSB7CisgICAgICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBvdmVyIHJldmVyc2UgcG9z
dCBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgICAgICAvLyBiZWZvcmUg
dGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9
IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1
bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJl
c3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5h
dG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpID4gaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisg
ICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMo
KSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTU0Myw0
NCBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlv
bkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRl
ckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsK
IH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21p
bmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0Rv
bWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NB
RG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9k
b21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWlu
YXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9z
c2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0K
IAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BT
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAo
IW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjpt
YWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBv
c3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0lu
U1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9j
cHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExv
b3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NB
TmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1
cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1
cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7
CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMp
CisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFs
TG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNr
d2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIC8vIFdlIGNvdWxk
IGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRv
ZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZH
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1f
YmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2ICsxNTg4LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzRG9taW5hdG9ycygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNT
QSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRz
RG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMp
OwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTk2LDcg
QEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
KCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhp
cyk7CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3
ICsxNjE0LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAg
ICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAg
ICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBh
cmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpAQCAtMTY5OCw2ICsxNzg1LDEzIEBA
IGJvb2wgR3JhcGg6OmNhbkRvRmFzdFNwcmVhZChOb2RlKiBub2RlLCAKICAgICByZXR1cm4gYWxs
R29vZDsKIH0KIAordm9pZCBHcmFwaDo6Y2xlYXJDUFNDRkdEYXRhKCkKK3sKKyAgICBtX2Nwc05h
dHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAg
ICBtX2Nwc0NGRyA9IG51bGxwdHI7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAog
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBX
VEYgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwxNyBAQCBj
bGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZH
OwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0
dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZHOwordXNp
bmcgU1NBQ0ZHID0gQ0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFND
Rkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQ
U05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0dXJhbExv
b3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBG
bG93TWFwOwogCkBAIC05MDEsOSArOTEyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRGVi
dWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAot
ICAgIERvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5n
JiBlbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1
cmFsTG9vcHMoKTsKKyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3JzKCk7Cisg
ICAgU1NBRG9taW5hdG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05hdHVyYWxM
b29wcyYgZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3BzJiBlbnN1
cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NG
RygpOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMo
KTsKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMoKTsKQEAgLTkxNiwxMiArOTI4LDE1IEBAIHB1YmxpYzoKICAgICBib29sIG5l
ZWRzU2NvcGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8
IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZvaWQgY2xl
YXJDUFNDRkdEYXRhKCk7CisKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CiAgICAg
Q29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsK
ICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAg
IFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNp
Y0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJn
Q2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVu
Y29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVl
TWFwOwpAQCAtOTU2LDExICs5NzEsMTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2Ug
RENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0
aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSos
IDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwg
OD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBp
cyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0
aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRG
b3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwg
MTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBv
c2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9uPiBtX3Ry
YW5zaXRpb25zOwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3Rk
OjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFz
aE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJl
ZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0Rv
bWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5h
dG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxM
b29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxM
b29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRz
Q0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5h
dG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEw
MDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0
ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRp
b25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFs
c2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0
VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVj
dG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7
Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2Zh
U2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwot
ICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0
dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+
Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1
bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5j
bGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3Jh
cGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVu
dEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1f
Z3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAg
ICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAg
ICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7
CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRz
KSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAg
ICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQt
PmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVj
dHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBl
bnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJl
V2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5
cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBG
bHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NB
KSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBl
bnRyeXBvaW50cyBpbiB0aGUgRlRMLCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAg
IC8vIHdoYXQgd2UgZG8gaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZv
cm1hdHNbaV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZh
bHVlW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9y
bWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50
MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwg
U3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVz
aGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxs
cHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNo
IChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICBy
b290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NS
QVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAg
ICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52
YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4
IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxv
Y2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxv
Y2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewor
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJs
b2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50
cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5
cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAg
ICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJl
dmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAg
LTM2NCw3ICszNzEsNyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VU
CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ld
LnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAgICAgICAg
CisKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0
VGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJ
KHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJp
bmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5r
VG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50
cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsK
ICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0
cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAg
ICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hF
bnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENh
dGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2lu
dHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAg
W10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0
ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlw
b2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4o
KSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEm
IGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBh
Lm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAg
ICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVu
dHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9p
bnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBv
aW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgdm9p
ZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQg
bWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMp
CisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnRE
YXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRG
b3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25z
dCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiwxMCArMTU4LDEzIEBAIHByaXZhdGU6CiBw
dWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlE
YXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRy
eXBvaW50czsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0Owog
ICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7
CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07CiAgICAg
REZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZHOworICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNo
T1NSRW50cnlCdWZmZXI7CisKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICB1aW50OF90IG5ldmVy
RXhlY3V0ZWRFbnRyeSB7IDEgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiAr
MzY3LDggQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigp
OworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKICAgICBtX3Nw
ZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwpAQCAt
NDI2LDYgKzQyOCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVy
KCk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01
NTEsMTQgKzU1NSwyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3Rh
CiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJh
c2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQp
OyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0
Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlu
a0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOwor
fQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Js
b2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
KQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsK
KwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5y
ZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5p
bnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisK
ICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEo
YmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkp
OwotICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVy
c2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBl
Y3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBh
biBleHBlY3RlZApAQCAtNjcwLDYgKzY4MywxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpzZXRFbmRP
ZkNvZGUoKQogICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWxJZ25vcmluZ1dh
dGNocG9pbnRzKCkpOwogfQogCit2b2lkIEpJVENvbXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRyeUJ1
ZmZlcigpCit7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQor
ICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSB2bSgpLT5zY3JhdGNoQnVm
ZmVyRm9yU2l6ZShzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRj
aE9TUkVudHJ5KSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENv
bXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNh
dGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwg
TGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAg
IAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAg
ICAgCkBAIC0yODQsNiArMjg1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5kRXhjZXB0
aW9uSGFuZGxpbmdPU1JFeGl0KEV4aXRLaW5kLCB1bnNpZ25lZCBldmVudFN0cmVhbUluZGV4LCBD
b2RlT3JpZ2luLCBIYW5kbGVySW5mbyogZXhjZXB0aW9uSGFuZGxlciwgQ2FsbFNpdGVJbmRleCwg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBzVG9GYWlsID0gTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0KCkpOwogCisgICAgdm9pZCBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAg
Ly8gVGhlIGRhdGFmbG93IGdyYXBoIGN1cnJlbnRseSBiZWluZyBnZW5lcmF0ZWQuCiAgICAgR3Jh
cGgmIG1fZ3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01Q
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxM
b29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEo
KQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9m
b3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMo
KTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFw
aC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJh
bExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAg
ICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygp
KTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFj
aCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBi
ZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc3QgTmF0
dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2Yo
YmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYg
KCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9vcERhdGEm
IGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRz
IHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93
IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxv
b3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAg
ICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+
bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9v
cC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29w
cy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVy
YWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RP
dXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAgICAgICAg
ICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9v
cCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAg
ICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRl
cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3Au
aGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+
cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9y
cy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHByZUhlYWRl
ciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVj
dG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNoYW5nZWQg
PSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tz
SW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlu
bmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBj
dXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAgICAgICAg
IGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1
cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExv
b3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAgIGxvb3BT
dGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJlbWVt
YmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBz
byBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVj
YXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBs
b29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJv
ZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5h
dChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBt
X2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhl
YWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1f
ZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQ
cmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAg
ICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVu
dCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1
bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxv
Y2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCiAg
ICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJh
bWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxv
Y2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jayks
ICJBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIik7CisKICAgICAvLyBGSVhN
RTogSWYgd2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3
aXRoIGEgYml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBs
aWtlOgogICAgIC8vCkBAIC02OSw3ICs3MSw4IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRl
cihHcmFwaCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJl
cXVlbmNpZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBm
bG9hdCBmcmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBi
bG9jay0+cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRv
bWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBBU1NFUlQoZ3JhcGgubV9mb3Jt
ICE9IFNTQSk7CisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhi
bG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZyZXF1
ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5jeSwgcHJlZGVjZXNzb3ItPmV4ZWN1dGlvbkNvdW50KTsK
ICAgICB9CkBAIC0xMDMsNyArMTA2LDcgQEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdy
YXBoJiBncmFwaAogICAgIAogICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IDA7
IHByZWRlY2Vzc29ySW5kZXggPCBibG9jay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNz
b3JJbmRleCsrKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnBy
ZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5h
dG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIGlmIChncmFwaC5t
X2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRl
eC0tXSA9IGJsb2NrLT5wcmVkZWNlc3NvcnMubGFzdCgpOwogICAgICAgICBibG9jay0+cHJlZGVj
ZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAgLTEzMCwxNiArMTMzLDE2IEBAIHB1YmxpYzoKICAgICAK
ICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMo
KTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFw
aC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJh
bExvb3BzKCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgewotICAgICAg
ICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5s
b29wKGxvb3BJbmRleCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRl
ciA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX2Nwc05h
dHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25z
dCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3Ao
bG9vcEluZGV4KTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0g
bnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgbmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCkt
PnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsKLSAgICAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29y
c1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLCBwcmVkZWNlc3NvcikpCisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+
cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgeworICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRl
Y2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5t
X2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLm5vZGUoKSwgcHJlZGVjZXNz
b3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAo
IWV4aXN0aW5nUHJlSGVhZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUHJlSGVh
ZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xNjUsMTQgKzE2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAvLyBBIHByZS1oZWFkZXIgaXMgbW9zdCB1c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0byBl
eGl0IGZyb20gaXRzIHRlcm1pbmFsLiBIZW5jZQogICAgICAgICAgICAgLy8gaWYgdGhlIHRlcm1p
bmFsIG9mIHRoZSBleGlzdGluZyBwcmUtaGVhZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQsIGJ1
dCB0aGUgZmlyc3QKICAgICAgICAgICAgIC8vIG9yaWdpbiBvZiB0aGUgbG9vcCBoZWFkZXIgZG9l
cywgdGhlbiB3ZSBzaG91bGQgY3JlYXRlIGEgbmV3IHByZS1oZWFkZXIuCi0gICAgICAgICAgICBp
ZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCktPmF0KDApLT5vcmlnaW4uZXhp
dE9LCisgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCku
bm9kZSgpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSwogICAgICAgICAgICAgICAgICYmICFleGlzdGlu
Z1ByZUhlYWRlci0+dGVybWluYWwoKS0+b3JpZ2luLmV4aXRPSykKICAgICAgICAgICAgICAgICBu
ZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgh
bmVlZHNOZXdQcmVIZWFkZXIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwg
bG9vcC5oZWFkZXIoKSk7CisgICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9p
bnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkubm9kZSgpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlh
bFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgp
LmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwo
KS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1
bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2sp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0
QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3Bl
cmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwo
R3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJl
cDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAg
Y2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05h
dHVyYWxMb29wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TmF0dXJhbExvb3BzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwyMCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpOYXR1
cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29wOwotCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMg
V1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2Ns
YXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAg
ICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVE
b21pbmF0b3JzKCksIHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFs
TG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9y
c0ZvckNGRzxDRkdLaW5kPihncmFwaCksIHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgewogICAg
IH0KIH07CiAKK3VzaW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+
OwordXNpbmcgQ1BTTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3
LDcgKzEyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQpAQCAtMTM3Miw2
ICsxMzcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0g
c3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERh
dGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKGlu
ZGV4KSB7CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1
NDEsNiArMTU0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IElkZW50aXR5
V2l0aFByb2ZpbGUpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3BlY3VsYXRlZFR5cGU+
KCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRU
eXBlIGNhdGNoTG9jYWxQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09
IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxTcGVjdWxh
dGVkVHlwZT4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAg
ewpAQCAtMTkzNiw3ICsxOTQ5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
dmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9Ci0gICAgCisKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNSZXN1bHQo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lv
biAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5k
aWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZy
b20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1
bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhl
IEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw2OCBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0
Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmpp
dFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2Rl
KTsKKworICAgIERGRzo6Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50ID0gaml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwor
ICAgIGlmICghY2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwg
dW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3ZSBkaWRu
J3QgY29tcGlsZSB0aGlzCisgICAgICAgIC8vIHByb2ZpbGVfY2F0Y2ggYXMgYW4gZW50cnlwb2lu
dCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUg
cHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRG
b3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFs
dWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRz
W2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xl
YW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpE
ZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3Qg
YWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAg
IC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVh
azsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hl
Y2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5k
RXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhl
Yy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2sp
Lm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4
ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NhdGNoKTsKKyAg
ICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIEpTVmFsdWUq
IGRhdGFCdWZmZXIgPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihqaXRDb2RlLT5jYXRjaE9T
UkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAg
ICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7
CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5pc0xvY2Fs
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRhdGFCdWZmZXJbaW5kZXhdID0gZXhl
Yy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2lu
ZGV4OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3NzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RW
YWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGlu
ZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlE
YXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsK
KyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29k
ZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlw
ZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3Jt
YXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBk
YXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAv
LyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9T
UkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwor
CisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90
IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRy
eShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNl
CiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVu
c2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9j
a0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlOVF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8g
TmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigpLgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAg
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7
CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBl
IGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47
CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IG5ld0FyZ3VtZW50cyA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7
CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVt
UGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0g
dGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAg
aWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdh
eXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAg
ICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAg
ICAgICAgICBvbGROb2RlID0gbmV3QXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAg
ICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAg
ICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbmV3
QXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGlu
dCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2Fs
KSB7CkBAIC0xMzksOCArMTQxLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVh
dGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAog
ICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9l
bnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobmV3Um9vdCwgbmV3QXJndW1lbnRzKTsKKworICAgICAgICBtX2dyYXBoLm1fY3BzQ0ZH
ID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgpOworCiAgICAgICAgIG1fZ3JhcGgu
cmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9j
a3MoKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MjcsNyArNzI3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3JhcGguY29t
cHV0ZVJlZkNvdW50cygpOwogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7
Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9n
cmFwaCk7CiAgICAgICAgIHBlcmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhtX2dyYXBoKTsK
ICAgICAgICAgbV9jb21iaW5lZExpdmVuZXNzID0gQ29tYmluZWRMaXZlbmVzcyhtX2dyYXBoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjIwNzc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY2LDkgKzM2Niw4IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHIKICAgICAvLyBJZiB3ZSdyZSBkb2luZyB2YWxpZGF0aW9uLCB0aGVuIHJ1biBzb21lIGFu
YWx5c2VzLCB0byBnaXZlIHRoZW0gYW4gb3Bwb3J0dW5pdHkKICAgICAvLyB0byBzZWxmLXZhbGlk
YXRlLiBOb3cgaXMgYXMgZ29vZCBhIHRpbWUgYXMgYW55IHRvIGRvIHRoaXMuCiAgICAgaWYgKHZh
bGlkYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgZGZnLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZGZnLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBkZmcuZW5zdXJlUHJlUG9z
dE51bWJlcmluZygpOworICAgICAgICBkZmcuZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAg
ICBkZmcuZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2Rl
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRl
ICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVy
aW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3Jh
cGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29y
a2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9
IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dp
dGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9y
ZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBb
aXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51
bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
RWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFj
a0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBv
c3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAg
Q3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7
Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNp
Y0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9
Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1
cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBz
dHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNC
bG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
cHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJl
cihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0
b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RB
bmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlz
IHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVk
Z2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNo
IGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5k
KEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBG
b3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20p
KQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJu
IENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcg
ewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0
TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUx
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxv
Y2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMg
aGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAg
ICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAg
ICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50
c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIw
Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0
Y2hMb2NhbDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRj
aExvY2FsUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAg
ICBjYXNlIEdldER5bmFtaWNWYXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5
dGVjb2RlVG9wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tT
aW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAg
ICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIFNT
QUNhbGN1bGF0b3Igc3NhQ2FsY3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0
IGluc2VydGlvblNldChtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBQ2FsY3VsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTUsMTIgKzk1LDEyIEBAIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUK
IAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVm
KEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJl
YWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFi
bGUpOworICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9y
cy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FD
YWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUq
IHZhcmlhYmxlKQogewotICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5h
dG9ycy0+aWRvbShibG9jaykpIHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5t
X3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1f
ZGF0YVtibG9ja10ubV9kZWZzLmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVm
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3Vs
YXRvci5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNhbGN1bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9p
ZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsK
LSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9y
cyk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURv
bWluYXRvcnMpOwogICAgICAgICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBt
X3ZhcmlhYmxlcykgewotICAgICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJs
b2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAgICAgbV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKAogICAgICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMs
CiAgICAgICAgICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2sp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0g
VGhyZWFkZWRDUFMpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50
cygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFw
aC5jbGVhckNQU0NGR0RhdGEoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3Jz
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiR3JhcGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJl
IFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vz
bid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJl
IHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAg
ICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24g
d2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNv
bXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3Nh
VmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FW
YXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3Nh
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1f
Z3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9n
cmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8m
IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBo
LmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVz
aXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVu
dHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVz
aGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5n
LmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5z
dGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBh
cmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAg
YXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFy
Z3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQyMSwxMiBA
QCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsK
LSAgICByZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJ
blNTQUNvbnZlcnNpb24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29u
dmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NB
Q29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFj
dENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjM3LDYgKzU2Mzcs
MjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB1
bnJlYWNoYWJsZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgdGFnKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcGF5bG9hZCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0
YWdHUFIgPSB0YWcuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gcGF5bG9hZC5n
cHIoKTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25v
ZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiwgVGFnT2Zmc2V0KSwgdGFnR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBQYXlsb2FkT2Zm
c2V0KSwgcGF5bG9hZEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGFnR1BSLCBwYXlsb2Fk
R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5
cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTk3LDYgKzU5OTcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ2hlY2tTdWJDbGFzcyhu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7Cisg
ICAgICAgIEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5q
aXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hP
U1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpz
VmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lm
IEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRk
MzIoCkBAIC02MDg1LDYgKzYwOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKICNlbHNlIC8v
IEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjkzLDYgKzE2OTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9j
awogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50KSB7CisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAg
bV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQu
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFi
bGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxs
RnJhbWUoKTsKQEAgLTE3ODcsOCArMTc5NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2lu
ID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAg
IGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAg
Tm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUq
IG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAg
Ly8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2gg
YXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODcyLDEyICsxODgwLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNP
U1JUYXJnZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRk
IHRoZW0KLSAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVh
ZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChi
bG9jay0+aXNPU1JUYXJnZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdl
IGNvdWxkIGFkZCB0aGVtCisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAg
ICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4
XSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE4ODgsMTAgKzE4OTUsMzAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxv
Y2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJn
ZXQpCisgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NS
RW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZl
cik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAg
IGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChi
bG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsK
KyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAg
ICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVj
dG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1l
bnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRD
ZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hl
Y2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgq
YmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZN
b3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc09TUlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRy
eSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsK
KyAgICAgICAgfQogICAgIH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9T
UkVudHJ5cG9pbnRzKCk7CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5
SGVhZHMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNv
dW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGgu
ZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExv
b3BzKCk7CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBiYXNpYyBibG9jayBleGVjdXRp
b24gY291bnRzIGJhc2VkIG9uIGxvb3AgZGVwdGguCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3co
MTAsIG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOworICAgICAgICAg
ICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fY3BzTmF0dXJhbExv
b3BzLT5sb29wRGVwdGgoYmxvY2spKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
RXN0aW1hdGUgYnJhbmNoIHdlaWdodHMgYmFzZWQgb24gZXhlY3V0aW9uIGNvdW50cy4gVGhpcyBp
c24ndCBxdWl0ZSBjb3JyZWN0LiBJdCdsbApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCw4IEBAIHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFs
RlQKICAgICByZXR1cm4gZnRsV2hpdGVsaXN0OwogfQogCit1c2luZyBOYXR1cmFsTG9vcCA9IENQ
U05hdHVyYWxMb29wOworCiBjbGFzcyBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKIHB1YmxpYzoKICAgICBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlKEdyYXBoJiBn
cmFwaCkKQEAgLTgxLDggKzgzLDggQEAgcHVibGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OnVz
ZU9TUkVudHJ5VG9GVEwoKSkKICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwog
ICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAg
TmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgQ1BTTmF0dXJh
bExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wczsKICAgICAg
ICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcFRvTG9v
cEhpbnQgPSBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChuYXR1cmFsTG9vcHMpOwogCiAg
ICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIExvb3BIaW50RGVzY3JpcHRvcj4gdGllclVwSGllcmFy
Y2h5OwpAQCAtMTgyLDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGRO
YXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAoY29uc3QgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMp
CisgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxM
b29wVG9Mb29wSGludE1hcChjb25zdCBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKICAg
ICB7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJh
bExvb3BzVG9Mb29wSGludDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVl
Lm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0
aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAvLyBD
dXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJn
dW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKTsKIAogICAgICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4aXRPSyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBnZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFibGUtPnBy
ZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTAgKzgz
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgLy8gTkIuIFRoaXMgY29kZSBpcyBub3Qgd3JpdHRlbiBm
b3IgcGVyZm9ybWFuY2UsIHNpbmNlIGl0IGlzIG5vdCBpbnRlbmRlZCB0byBydW4KICAgICAgICAg
Ly8gaW4gcmVsZWFzZSBidWlsZHMuCiAKLSAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCBhbGwgbG9j
YWwgdmFyaWFibGVzIGF0IHRoZSBoZWFkIG9mIHRoZSByb290IGJsb2NrIGFyZSBkZWFkLgotICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fscygp
OyArK2kpCi0gICAgICAgICAgICBWX0VRVUFMKCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwg
cm9vdCksIHN0YXRpY19jYXN0PE5vZGUqPigwKSwgcm9vdC0+dmFyaWFibGVzQXRIZWFkLmxvY2Fs
KGkpKTsKKyAgICAgICAgVkFMSURBVEUoKG1fZ3JhcGguYmxvY2soMCkpLCBtX2dyYXBoLm1fZW50
cnlwb2ludHMuY29udGFpbnMobV9ncmFwaC5ibG9jaygwKSkpOworCisgICAgICAgIC8vIFZhbGlk
YXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxlcyBhdCB0aGUgaGVhZCBvZiBhbGwgZW50cnlwb2lu
dHMgYXJlIGRlYWQuCisgICAgICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50cykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCisgICAg
ICAgICAgICAgICAgVl9FUVVBTCgodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIGVudHJ5cG9p
bnQpLCBzdGF0aWNfY2FzdDxOb2RlKj4obnVsbHB0ciksIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0
SGVhZC5sb2NhbChpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFZhbGlkYXRl
IHJlZiBjb3VudHMgYW5kIHVzZXMuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQ
cm9maWxlcjo6T3JpZ2luU3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVk
IEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRD
b2RlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwor
ICAgICAgICBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3Vy
ZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4
ID0gIiAgICAiOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpz
Qm9keSI7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJv
c2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJl
YWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4g
PSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAg
ICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
bV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1
bWVudHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
OwogICAgICAgICAgICAgCkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IERGRzo6QmFzaWNCbG9jayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAg
ICAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRh
cmdldCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5h
dGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VD
b21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sg
IiwgKnRhcmdldCwgIiB3aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdl
dC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2Nr
KCksIG1faGlnaEJsb2NrKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFy
Z3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX3By
b2ZpbGVfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERF
RklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0
X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2NhdGNoKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTYsNiArNzk3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0UpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUywgR1BS
UmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1w
bCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjMsNiArNDYzLDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9w
ZXJhdGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiAjaWYgVVNFKEpTVkFMVUU2NCkKIEFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFpfSklU
T3BlcmF0aW9uX0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgaW50MzJfdCBhcmcyLCBpbnQz
Ml90IGFyZzMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzcsNiArMTUzNywzMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF91bnJlYWNoYWJsZShJbnN0cnVjdGlvCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
IH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0
aGUgcHJvY2VzcyBvZiBkb2luZyBPU1IgZW50cnksIGluY2x1ZGluZworICAgIC8vIGFyZ3VtZW50
IHR5cGUgcHJvb2ZzLCBzdG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7
CisgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVl
R1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1
ZUdQUik7CisgICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgaWYgKHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkgeworICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMCk7CisjZWxzZQorICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVncyhyZWdUMSwgcmVnVDApOworI2VuZGlmCisgICAgICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTUsNiArMTUxNSwxOSBAQCBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxv
Y2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlP
U1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBs
YWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNo
T1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30K
KwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5k
ZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYg
KzMxNyw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVk
ZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwg
aW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9w
ZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFy
KiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUs
IGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAo
SklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExp
bmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJh
dGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJ
VF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpA
QCAtMzk3LDYgKzM5OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVj
U3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90
KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRj
aChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQz
Ml90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAg
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAg
cHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVu
Y2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBM
TElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhy
b3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFt
ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
aGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9w
cm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFk
b3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHJvZmlsZV9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJv
d19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFM
OwogI2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
c3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTg4MSw2ICsxODgx
LDExIEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW4KICAgICBjYWxs
T3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5j
X2RlY2xfaW5fZXZhbCkKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9zY29wZV9m
b3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWxfbGVuZ3RoKQogCitfbGxpbnRfb3BfcHJvZmls
ZV9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxl
X2NhdGNoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wcm9maWxlX2NhdGNoX2xlbmd0aCkK
KworCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2Ug
ZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIg
YXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKICMgYXMgbXVj
aC4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjIwNzc3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0
OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5
bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2
ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJ
RC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRF
MTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUx
NDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQy
MSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIg
LyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFt
YmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICov
LApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2Rl
V29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
U2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8g
dGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVu
YW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAg
ICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVy
Lm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290Owot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAg
ICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRT
ZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5u
b2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAg
cmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3RO
YW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7
Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFw
KEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFw
PFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0g
VCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2lu
ZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUo
KV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUm
IG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8
TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQg
bV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxH
cmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47
CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBo
KEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
bm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYg
KG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0
dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFw
aD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFt
ZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZD
aGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRh
KGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1
YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAg
ICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dy
YXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20g
aGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFu
ZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBv
dmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJl
IHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0g
ICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0
eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2
b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3Qm
IGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9j
a3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20s
CkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5n
IHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZv
aWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAg
ICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJs
b2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3Jh
cGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6
Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5
cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVk
RG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tz
SW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFt
ZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAg
ICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7
Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAg
TGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRh
a2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJ
bXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9o
CisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVX
b3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBH
cmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVz
ZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsK
KworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5
cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAg
IH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAg
ICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAw
OworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2Rl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9u
b2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmds
ZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2Rl
IG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAg
IHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpO
b2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJv
b3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBu
b2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1
cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFk
ZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9k
ZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVt
b3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUm
IG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUo
KSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJv
b3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNS
b290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBo
PgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFw
aE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQor
ICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9
CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBt
X21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhl
ci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAg
ICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAg
ICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFd
OworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykp
W2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisg
ICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jv
b3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29u
c3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0K
KyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21h
cDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3Mg
U2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3Jh
cGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmds
ZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1h
cCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9k
ZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1f
Z3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJl
YWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5w
cmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNj
ZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JT
ZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vz
c29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJu
IE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4g
bmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3Nv
cnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lz
dGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3Ig
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2Rl
KCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBj
b25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAg
aWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAg
ICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDog
bV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUu
aXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgu
aW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQg
aW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0
dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAg
IH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2Rl
IG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAg
ICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAg
IGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9v
dE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1
bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAg
IE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwg
IjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAg
ICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29y
IDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
ZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAg
ICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21t
YVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3Jz
KG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3Ip
KTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJp
dmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QK
KyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJv
b3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBj
YW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEg
dXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAv
LyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3
IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7
CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJv
b3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9v
dCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFs
Um9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUo
KSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JM
aXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9y
b290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3Nv
clNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RH
cmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318218</attachid>
            <date>2017-08-15 19:50:53 -0700</date>
            <delta_ts>2017-08-16 13:01:45 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>174127</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZH
UGxhbi5jcHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJl
ZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThB
QTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25T
ZXQuY3BwICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAq
LzsgfTsKIAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYx
OTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYz
RTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1
M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERG
R1ByZVBvc3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8q
IEFpck9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1
NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVH
ZW5lcmF0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYw
MDcyNDUwQiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2
QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3
OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
M0MxRjE5MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0g
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGM0UwMUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3Bw
OyBwYXRoID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5n
Lmg7IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFs
UmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEz
MUY4RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2
IEBACiAJCQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQz
NTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5
MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlD
RTAxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJ
CQkwRjJCOUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAq
LywKIAkJCQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5Lmgg
Ki8sCkBAIC04Njk4LDcgKzg2OTIsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAv
KiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3
NTE2QzFEQjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2
MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNF
RDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJl
VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODcsNyArMTA0ODAsNiBAQAogCQkJCUE3OEE5
NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlE
MzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVy
ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAv
KiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2
aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAg
ICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jYXRjaCIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcCIsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBvcF90aHJvdzogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0
LCAidGhyb3ciLCByMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE0
Miw2ICsxNDIsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2dldF9wYXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9wcm9maWxlX2NhdGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
dGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAg
ICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDoKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpA
QCAtMzY4LDYgKzM2OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayoKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bfbm9wOgogICAgIGNhc2Ugb3BfdW5y
ZWFjaGFibGU6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogI2RlZmluZSBMTElOVF9IRUxQ
RVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNI
X0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExM
SU5UX0hFTFBFUl9PUENPREVTCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1Mjks
OCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGlu
c3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAg
IH07CiAKKyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGFmdGVyQ2F0Y2hJbmRpY2VzOworCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAg
ICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5l
eHQoKTsKIApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICAgICAgYWZ0
ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9
CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAg
ICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpk
dW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAg
aWYgKGFmdGVyQ2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMmIGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNh
dGNoUHJvZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0
ZXJDYXRjaEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9
IGJ5dGVjb2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNh
dGNoSW5kZXgpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJh
bmRzOworICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2
ZUxvY2Fscy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJp
dChbJl0gKHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5k
cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVP
cGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIu
Z2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAg
ICAgbV9pbnN0cnVjdGlvbnNbYWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmls
ZXMuZ2V0KCk7CisgICAgICAgICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2Zp
bGVzKSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZN
b3ZlKGNhdGNoUHJvZmlsZXMpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+
bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3Qg
SWRlbnRpZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0
ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cykKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAg
ICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9m
U2FtcGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxl
OjpudW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFs
dWUgcHJvZmlsZXMgYXJlIGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90
YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBu
dW1TYW1wbGVzID0gcHJvZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiAr
MjU0MCwxMiBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAg
ICAgICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAg
cHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAg
Zm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHBy
b2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bnMobG9ja2VyKTsKQEAgLTI3NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9j
azo6dmFsdWVQcm9maWxlRm9yCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1
ZVByb2ZpbGUqIHJlc3VsdCA9IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3Ro
IC0gMV0udS5wcm9maWxlOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0g
ZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxl
cygpOyArK2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxl
KGkpOworICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9m
ZnNldCkgeworICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIEFTU0VSVChmb3VuZCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
IENvZGVCbG9jazo6dmFsaWRhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4g
bV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0
b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRl
ZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7
CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQ
cm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2Zp
bGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0
czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2Zp
bGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBi
eXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5
dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCAr
MjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICBy
ZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBp
bnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIg
eworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAg
ICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUg
aGFzIG1vcmUgc3R1ZmYgdGhhbiB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGVzZSB2YWx1
ZSBwcm9maWxlcworICAgICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAg
ICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9j
KG1fc2l6ZSAqIHNpemVvZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVm
ZmVyLmdldCgpW2ldKSBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0u
flZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rpb24+CisgICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1f
c2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3MCw2ICszOTcwLDkgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkp
OworCisgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJl
Z2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2Ug
Y29uZGl0aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAK
KwogICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwog
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dh
cmRzQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNDRkcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDog
cHVibGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGlj
IEJhY2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3
YXJkc0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFj
a3dhcmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpn
cmFwaC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxT
U0FDRkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdp
bihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0
KGZhbHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNp
dGVkKGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5k
Q29uc3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6
ZSgpOwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQo
aSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
SnVtcDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6
Ci0gICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0g
ICAgICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAg
ICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWlu
YWwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAg
ICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVy
IGVuZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFi
bHkgb25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUg
YWxsIG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAg
ICAgICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZl
cnNhbCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBA
QCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRl
eCBpbmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVu
dHJ5cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2
aXNpdDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5
cGUuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1v
ZGUuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIK
ICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuaCIKQEAgLTExMzEsNyArMTEzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBvdGVudGlh
bCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2RlQmVnaW4s
IGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0aGUgc2Ft
ZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxvY2tMaW5r
aW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRlJ3MgYmFz
aWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAgICAgICAv
LyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNjZXNzb3Jz
IGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5vdCB0aGUg
b3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc1LDcgKzQwNzYsMTEg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRv
IHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVu
dCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBs
aWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFp
bmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZSht
X251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAg
VmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1l
bnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkg
ZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAg
ICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4OCw3
ICs0MDkzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2
YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBz
ZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0g
c2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWls
LnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC01MTYxLDYgKzUxNjYsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAgIG1fZ3Jh
cGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOiB7CisgICAgICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24n
dCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2UgZG9uJ3QgdHJlYXQgdGhp
cyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Byb2Zp
bGVfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFw
aC5tX3BsYW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRj
aCBpbiB0aGUgRlRMLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9w
cm9maWxlX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAg
ICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3Vt
ZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlv
bnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3Vt
ZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisg
ICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBw
cm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHBy
b2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2Nr
ZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRp
Y3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9j
YWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHBy
ZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5k
LnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVu
dCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1f
bnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChh
cmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBl
eGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAg
ICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfcHJvZmlsZV9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNvbXBpbGluZyB0aGlz
IGFzIGFuIGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSB3
aGVuIHNlYXJjaGluZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBpdCByZWxhdGl2ZQor
ICAgICAgICAgICAgLy8gdG8gdGhlIGJ5dGVjb2RlIG9mZnNldCBvZiBvcF9wcm9maWxlX2NhdGNo
LgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1cnJlbnRJ
bmRleDsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0g
dHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9jdXJyZW50
QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3Rlciwg
Tm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBt
b3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1
ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7
IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qga25v
dyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZkxvY2FscyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5k
LmlzQXJndW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIEFTU0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFs
dWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMp
LCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAg
ICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGlu
dCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxv
Y2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0Zv
ckNhdGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2Nh
bHNGb3JDYXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBleGl0IGJl
Y2F1c2Ugd2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFueSBsaXZl
IGxvY2Fscy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRU
b0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQg
dXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBoYXBwZW5z
IGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAgICAgICAg
ICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNhZmUgdG8g
ZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+KCkpOwor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRk
UmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1l
bnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsr
YXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChh
cmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVu
dFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
Pm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50
SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNo
ZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZElu
ZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0g
YWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRp
bWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50cnlwb2lu
dEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxvY2Fs
c1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2luKCksIHBh
aXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHJv
ZmlsZV9jYXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2Nh
bGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2Fs
bE1vZGU6OlJlZ3VsYXIpOwpAQCAtNjE1Niw4ICs2MjczLDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9jayhibG9jay5wdHIoKSkpOwog
ICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jsb2NrTGlua2luZ1Rhcmdl
dHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZpcnN0
IGJsb2NrIGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4KLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3Jh
cGgubnVtQmxvY2tzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5pc09TUlRh
cmdldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2lu
dHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUoYmxvY2spKTsKICAgICAgICAg
ICAgICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAgICAgICAgICAgIH0KQEAg
LTYyMTQsMTAgKzYzMzMsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAg
ICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwpOwog
ICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5rQmxvY2tzKGlubGluZVN0YWNr
RW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRyeS5tX2Jsb2NrTGlua2luZ1Rh
cmdldHMpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFiaWxpdHkoKTsKICAgICBtX2dy
YXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCisgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0
ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKICAgICAKICAgICBmb3IgKEJsb2NrSW5k
ZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwpAQCAt
NjIyOCw3ICs2MzQ5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgICAgICBB
U1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpID09IG1fZ3JhcGgu
YmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpKTsKICAgICAgICAgQVNT
RVJUKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMoKSA9PSBtX2dyYXBo
LmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKSk7CiAgICAgfQot
ICAgIAorCiAgICAgbV9ncmFwaC5tX2xvY2FsVmFycyA9IG1fbnVtTG9jYWxzOwogICAgIG1fZ3Jh
cGgubV9wYXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1ldGVyU2xvdHM7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdpbiAhPSBtX2dyYXBoLm1fcGxh
bi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKG1fdmVyYm9zZSkKICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVzdC1oYW5kbGUgYmxvY2s6ICIsICpi
bG9jaywgIlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZHLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdC
bG9ja01hcElubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCisjaW5jbHVkZSA8d3RmL1NpbmdsZVJvb3RHcmFwaC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTQ4LDcgKzQ5LDE5IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgTm9kZSByb290KCkgeyByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsgfQor
ICAgIE5vZGUgcm9vdCgpCisgICAgeworICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0g
U1NBIHx8IG1fZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgICAgIHJldHVybiBtX2dy
YXBoLmJsb2NrKDApOworICAgIH0KKworICAgIExpc3Qgcm9vdHMoKQorICAgIHsKKyAgICAgICAg
TGlzdCByZXN1bHQ7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogcm9vdCA6IG1fZ3JhcGgubV9l
bnRyeXBvaW50cykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocm9vdCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBNYXA8
VD4gbmV3TWFwKCkgeyByZXR1cm4gQmxvY2tNYXA8VD4obV9ncmFwaCk7IH0KQEAgLTcxLDYgKzg0
LDMxIEBAIHByaXZhdGU6CiAgICAgR3JhcGgmIG1fZ3JhcGg7CiB9OwogCitjbGFzcyBDUFNDRkcg
OiBwdWJsaWMgU2luZ2xlUm9vdEdyYXBoPENGRz4geworcHVibGljOgorICAgIENQU0NGRyhHcmFw
aCYgZ3JhcGgpCisgICAgICAgIDogU2luZ2xlUm9vdEdyYXBoPENGRz4oKmdyYXBoLm1fc3NhQ0ZH
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgpKTsKKyAg
ICB9Cit9OworCit1c2luZyBTU0FDRkcgPSBDRkc7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+
Ojp2YWx1ZT46OnR5cGU+CitDUFNDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9jcHNDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9jcHND
Rkc7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FDRkcm
IHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9z
c2FDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9zc2FDRkc7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksOCArMzY5LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMgdXNlZCBmb3IgdGhlIGFjdHVh
bCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdldAogICAgICAgICAvLyBzcGVj
aWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0d28gZGlmZmVyZW50IG5vZGUg
dHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAgLy8gYXQgdGhlIHByb2xvZ3Vl
IGNhc2UsIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4gQnV0IHRoaXMgc2VlbWVkIGxp
a2UgSVIgb3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1
bWVudHMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFi
bGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0p
OworCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1
bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgPSBwYWlyLmtleTsK
KyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFyZ3VtZW50cyA9IHBhaXIudmFs
dWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07
KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVu
dEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9CiAgICAgfQogICAgIAogICAg
IHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgs
NyArNTk4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NB
KTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAg
ICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJl
U1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpOwogICAgICAgICAKQEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9y
cy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBt
X2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRl
KTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1
aXJlIHN0cmljdCBkb21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3Mg
aW4gb3VyIG93biBibG9jayBpZgogICAgICAgICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3Vy
IHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRl
cwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1
cyBkb24ndCBkb21pbmF0ZSB1cy4KLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9y
cy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAo
bV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2Nr
KSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3
ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSog
Y2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3du
ZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3Nz
YURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRhdGUpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoLnNldE5vZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1c2hfd2l0aF9zY29wZToKICAgICBjYXNl
IG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICBjYXNlIG9wX3By
b2ZpbGVfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9y
ZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBj
YXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhn
cmFwaC5lbnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3Jh
cGguZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21p
bmF0b3JzOworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNE
b21pbmF0b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2Nr
KTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMp
OworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1
bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNr
IGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUsOCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1i
CiAgICAgZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91
dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OwotICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVD
UFNEb21pbmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAg
ICAKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlz
YXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDcgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21K
U01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9T
UkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWlu
YXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWlu
YXRvcnMuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTYgKzM1LDMyIEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6
IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2lu
ZD4KK2NsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAg
ICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpE
b21pbmF0b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAg
IH0KIH07CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2lu
ZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwg
Q1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0Zv
ckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRv
cnMoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURv
bWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJl
dHVybiBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2sp
CiAgICAgICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5t
X2Zvcm0gPT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBF
ZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0
b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9v
bCByZXN1bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgp
LT5vd25lciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICpl
ZGdlLm5vZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTQsNiArMTk5NCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2Fz
ZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVt
IEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1
c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsNiBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0Lmgi
CiAjaW5jbHVkZSAiREZHTmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJl
cmluZy5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRl
ICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1
bXAuaCIKQEAgLTczLDcgKzcyLDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikK
ICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykK
ICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAs
IG1fY2ZnKHN0ZDo6bWFrZV91bmlxdWU8Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6
Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDAp
CiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVnaXN0ZXJpbmcpCkBAIC00MDksOSAr
NDA4LDEzIEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoY29uc3QgQ1BTQ0ZHOjpO
b2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGUoKTsgfQorc3RhdGljIEJhc2ljQmxvY2sqIHVu
Ym94TG9vcE5vZGUoQmFzaWNCbG9jayogYmxvY2spIHsgcmV0dXJuIGJsb2NrOyB9CisKIHZvaWQg
R3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVm
aXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBE
dW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwg
KmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNv
bnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxv
Y2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5w
cmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQo
MCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1Jl
YWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1Ig
dGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID8gIiAoQ2F0Y2ggRW50cnlw
b2ludCkiIDogIiIsICJcbiIpOwogICAgIGlmIChibG9jay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxv
Y2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBFeGVjdXRp
b24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3VudCwgIlxuIik7CiAgICAgb3V0LnByaW50
KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAtNDIyLDE4ICs0MjUsMjYgQEAgdm9pZCBH
cmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgIGlmIChibG9jay0+dGVybWlu
YWwoKSkgewogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JzKCkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiICIsICpzdWNjZXNzb3IpOwotICAg
ICAgICAgICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIiAoIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5lZGdlS2luZChibG9jaywgc3VjY2Vzc29yKSwg
IikiKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBvdXQucHJpbnQoIiA8aW52YWxp
ZD4iKTsKICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgaWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJt
aW5hbHNBcmVWYWxpZCgpKSB7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRl
ZCBieTogIiwgbV9kb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKLSAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nr
c0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIg
IERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5kb21pbmFuY2VGcm9udGllck9m
KGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERv
bWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5pdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2YoQmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIpOworCisgICAgYXV0byBwcmludERvbWlu
YXRvcnMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBkb21pbmF0b3JzLmRvbWluYXRvcnNPZihibG9jayksICJc
biIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIGRvbWluYXRv
cnMuYmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHBy
ZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBkb21pbmF0b3JzLmRvbWluYW5jZUZyb250
aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0
ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLAorICAgICAgICAgICAgZG9taW5hdG9ycy5pdGVyYXRl
ZERvbWluYW5jZUZyb250aWVyT2YodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0
eXBlKGRvbWluYXRvcnMpPjo6dHlwZTo6TGlzdCB7IGJsb2NrIH0pLCAiXG4iKTsKKyAgICB9Owor
CisgICAgaWYgKHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fc3NhRG9taW5h
dG9ycykKKyAgICAgICAgICAgIHByaW50RG9taW5hdG9ycygqbV9zc2FEb21pbmF0b3JzKTsKKyAg
ICAgICAgZWxzZSBpZiAobV9jcHNEb21pbmF0b3JzKQorICAgICAgICAgICAgcHJpbnREb21pbmF0
b3JzKCptX2Nwc0RvbWluYXRvcnMpOwogICAgIH0KKwogICAgIGlmIChtX2JhY2t3YXJkc0RvbWlu
YXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewogICAgICAgICBvdXQucHJpbnQocHJlZml4
LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmRv
bWluYXRvcnNPZihibG9jayksICJcbiIpOwogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBC
YWNrd2FyZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmJsb2Nrc0RvbWlu
YXRlZEJ5KGJsb2NrKSwgIlxuIik7CkBAIC00NDYsMjkgKzQ1NywzMyBAQCB2b2lkIEdyYXBoOjpk
dW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50
KCJcbiIpOwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJlcmlu
Zy0+cHJlTnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1iZXIo
YmxvY2spLCAiXG4iKTsKLSAgICBpZiAobV9uYXR1cmFsTG9vcHMpIHsKLSAgICAgICAgaWYgKGNv
bnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkg
eworCisgICAgYXV0byBwcmludE5hdHVyYWxMb29wcyA9IFsmXSAoYXV0byYgbmF0dXJhbExvb3Bz
KSB7CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBsb29wID0gbmF0dXJhbExvb3BzLT5oZWFkZXJP
ZihibG9jaykpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3AgaGVhZGVy
LCBjb250YWluczoiKTsKICAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBzb3J0ZWRCbG9j
a0xpc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChsb29wLT5hdChp
KS0+aW5kZXgpOworICAgICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQodW5ib3hM
b29wTm9kZShsb29wLT5hdChpKSktPmluZGV4KTsKICAgICAgICAgICAgIHN0ZDo6c29ydChzb3J0
ZWRCbG9ja0xpc3QuYmVnaW4oKSwgc29ydGVkQmxvY2tMaXN0LmVuZCgpKTsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyArK2kpCiAg
ICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIyIsIHNvcnRlZEJsb2NrTGlzdFtpXSk7CiAgICAg
ICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZl
Y3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGNvbnRhaW5pbmdMb29wcyA9Ci0gICAgICAgICAgICBt
X25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0xv
b3BzID0gbmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsKICAgICAgICAgaWYgKCFjb250YWlu
aW5nTG9vcHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBD
b250YWluaW5nIGxvb3AgaGVhZGVyczoiKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0
LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOworICAgICAgICAgICAg
ICAgIG91dC5wcmludCgiICIsICp1bmJveExvb3BOb2RlKGNvbnRhaW5pbmdMb29wc1tpXS0+aGVh
ZGVyKCkpKTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgfQotICAgIH0K
KyAgICB9OworCisgICAgaWYgKG1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBwcmludE5hdHVy
YWxMb29wcyhtX3NzYU5hdHVyYWxMb29wcyk7CisgICAgZWxzZSBpZiAobV9jcHNOYXR1cmFsTG9v
cHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1fY3BzTmF0dXJhbExvb3BzKTsKKwogICAg
IGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgs
ICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+
cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUxNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRl
OiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24g
c3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3Jl
ZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQu
cHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMp
LCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxp
c3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0
byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBvdXQucHJpbnQo
IiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIsIGxpc3REdW1w
KHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAog
ICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NTcsMTAgQEAgdm9pZCBH
cmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5l
UmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsK
LSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJs
ZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50
cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdv
cmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5p
c0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFz
dCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBp
LS07KQpAQCAtNzk4LDkgKzgxNywxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFjaGFibGVCbG9j
a3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2RvbWluYXRvcnMg
PSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBtX3ByZVBvc3RO
dW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAg
bV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxw
dHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51
bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEyICs4NzAsMzcg
QEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3Qg
cmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChi
bG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50
cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNC
bG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGJs
b2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsg
aS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3NvcihpKSk7CiAg
ICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgLy8gV2hlbiBp
dGVyYXRpbmcgb3ZlciBwcmUgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5hdG9ycworICAgICAg
ICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgIGF1dG8gdmFsaWRhdGVS
ZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFz
aWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0g
YikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAg
ICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChpIDwgaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNv
bnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9y
cygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQ
U0RvbWluYXRvcnMoKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTg2Myw3
ICs5MDgsOCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBC
bG9ja0xpc3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0g
ICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBv
aW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsK
ICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAg
ICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToK
QEAgLTg3Niw2ICs5MjIsMzEgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRv
JiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBvdmVyIHJldmVy
c2UgcG9zdCBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgICAgICAvLyBi
ZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
YiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAo
ZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpID4gaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNp
b24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWlu
YXRvcnMoKSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCAr
MTU0Myw0NCBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fz
c2VydGlvbkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwg
cG9pbnRlckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0
aW9uKTsKIH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9t
aW5hdG9ycyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9j
cHNEb21pbmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENQU0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30K
KworU1NBRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlm
ICghbV9kb21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PERvbWluYXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlm
ICghbV9zc2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9y
czsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmco
KQorQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAg
ICBpZiAoIW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0g
c3RkOjptYWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICpt
X3ByZVBvc3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAh
bV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlm
ICghbV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjpt
YWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0
dXJhbExvb3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMo
KQorU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAg
ICBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAg
bV9uYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwot
ICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09
IFNTQSk7CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFs
TG9vcHMpCisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQog
CiBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIC8vIFdl
IGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gd29yayBvdmVyIENQUywg
YnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCisgICAgUkVMRUFTRV9BU1NFUlQobV9m
b3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dh
cmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1
cm4gKm1fYmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2ICsxNTg4LDcgQEAgQmFja3dhcmRzQ0ZHJiBH
cmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFj
a3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4o
KnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsx
NTk2LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAo
IW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lz
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAt
MTUyNyw3ICsxNjE0LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0
aAogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAg
ICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAg
ICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07Cisg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpAQCAtMTY5OCw2ICsxNzg1
LDEzIEBAIGJvb2wgR3JhcGg6OmNhbkRvRmFzdFNwcmVhZChOb2RlKiBub2RlLCAKICAgICByZXR1
cm4gYWxsR29vZDsKIH0KIAordm9pZCBHcmFwaDo6Y2xlYXJDUFNDRkdEYXRhKCkKK3sKKyAgICBt
X2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0
cjsKKyAgICBtX2Nwc0NGRyA9IG51bGxwdHI7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVz
cGFjZSBXVEYgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsK
K30KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwx
NyBAQCBjbGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xh
c3MgQ0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0
b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xh
c3MgTmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZH
OwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9y
czxDUFNDRkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3Vz
aW5nIENQU05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0
dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBGbG93TWFwOwogCkBAIC05MDEsOSArOTEyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aGFzRGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7
IH0KIAotICAgIERvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVt
YmVyaW5nJiBlbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1
cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3Jz
KCk7CisgICAgU1NBRG9taW5hdG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05h
dHVyYWxMb29wcyYgZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3Bz
JiBlbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3
YXJkc0NGRygpOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWlu
YXRvcnMoKTsKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXMoKTsKQEAgLTkxNiwxMiArOTI4LDE1IEBAIHB1YmxpYzoKICAgICBi
b29sIG5lZWRzU2NvcGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFi
bGVkIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRU
aGlzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZv
aWQgY2xlYXJDUFNDRkdEYXRhKCk7CisKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47
CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRC
bG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tz
OworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3Rv
cjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1f
dmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1
ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3pl
blZhbHVlTWFwOwpAQCAtOTU2LDExICs5NzEsMTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8g
SWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwg
dGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8
Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxO
b2RlKiwgOD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywg
dGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxh
dGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJn
dW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNz
RGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1
bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9u
PiBtX3RyYW5zaXRpb25zOwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVibGljOgogICAgIEhhc2hT
ZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAg
ICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9p
bmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBt
X2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3Nh
RG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05h
dHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5h
dHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFj
a3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRz
RG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsK
QEAgLTEwMDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291
bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNF
eGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9u
IHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNh
dGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGlu
Z0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fi
c3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1
ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6
ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9v
dC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZh
bHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2Zh
U3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAg
cm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNo
ZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVy
T2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVu
dChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYg
KG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9h
cmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAg
ICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAg
ICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9y
bWF0KCk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5
cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwor
ICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5
cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNm
YVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1
cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9p
bnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAg
IGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAg
ICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0g
PT0gU1NBKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0
aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUgRlRMLCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAg
ICAgICAgIC8vIHdoYXQgd2UgZG8gaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1
bWVudEZvcm1hdHNbaV07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2lu
dCktPnZhbHVlW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAg
ICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZs
dXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVz
aGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAg
ICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9n
cmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBo
LCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
c3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAg
ICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4p
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAg
ICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVj
Q2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToK
LSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVu
dCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7
Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICBy
b290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7
ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxv
Y2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsr
aSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFy
KCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dy
YXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhl
IGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwog
ICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNo
b3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxz
ZTsKQEAgLTM2NCw3ICszNzEsNyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6
bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNh
c2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAg
ICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2Ug
RGlyZWN0VGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2Rl
OjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnku
c2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRy
eXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9G
aXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVF
dmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAog
ICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAg
Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2Vh
cmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50
cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAg
ICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0t
Pm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NS
RW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMu
YmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2lu
dERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJl
dHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAw
OworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBj
YXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVu
dHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBl
bnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisg
ICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5z
aWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZv
cm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5
cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJn
dW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhp
dChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiwxMCArMTU4LDEzIEBAIHByaXZh
dGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6T1NS
RW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0
Y2hFbnRyeXBvaW50czsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JF
eGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVj
b3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07
CiAgICAgREZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZHOworICAgIFNjcmF0Y2hCdWZmZXIq
IGNhdGNoT1NSRW50cnlCdWZmZXI7CisKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICB1aW50OF90
IG5ldmVyRXhlY3V0ZWRFbnRyeSB7IDEgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjcsNiArMzY3LDggQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwog
CiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1
ZmZlcigpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKICAg
ICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMp
OwpAQCAtNDI2LDYgKzQyOCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5
QnVmZmVyKCk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwog
CkBAIC01NTEsMTQgKzU1NSwyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91Ymxl
Q29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBv
aW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQs
IExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZv
cm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2lu
dCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zp
c2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAg
IG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdp
biwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0
cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBi
YXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5r
QnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBv
aW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVt
ZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNC
bG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRy
eURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2Nr
SGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2Nr
LmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRo
ZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwg
aGF2ZSBhbiBleHBlY3RlZApAQCAtNjcwLDYgKzY4MywxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpz
ZXRFbmRPZkNvZGUoKQogICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWxJZ25v
cmluZ1dhdGNocG9pbnRzKCkpOwogfQogCit2b2lkIEpJVENvbXBpbGVyOjptYWtlQ2F0Y2hPU1JF
bnRyeUJ1ZmZlcigpCit7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVu
dHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSB2bSgpLT5zY3Jh
dGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5KSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYs
IEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5v
dGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2Nr
SGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMp
OwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2Rl
OyB9CiAgICAgCkBAIC0yODQsNiArMjg1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5k
RXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0KEV4aXRLaW5kLCB1bnNpZ25lZCBldmVudFN0cmVhbUlu
ZGV4LCBDb2RlT3JpZ2luLCBIYW5kbGVySW5mbyogZXhjZXB0aW9uSGFuZGxlciwgQ2FsbFNpdGVJ
bmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBzVG9GYWlsID0gTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0KCkpOwogCisgICAgdm9pZCBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOwor
CiAgICAgLy8gVGhlIGRhdGFmbG93IGdyYXBoIGN1cnJlbnRseSBiZWluZyBnZW5lcmF0ZWQuCiAg
ICAgR3JhcGgmIG1fZ3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5h
dHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9v
cERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3Jh
cGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygp
KTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1M
b29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGlu
Z3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAg
ICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyAr
MTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RM
b29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAg
ICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9v
cERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRp
ZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29w
cyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4
ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0g
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBt
X2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxM
b29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2Rh
dGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAg
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5l
ck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAg
ICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91
dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAg
ICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRh
LndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9
IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXpl
KCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhl
YWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNz
b3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHBy
ZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9v
cCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAg
ICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAg
ICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxv
b3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAg
IGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8v
IFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRl
eCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRv
IGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXpl
KCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBs
b29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRl
ciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFy
aWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsMTIgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgu
bV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAg
IGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAh
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVD
YWxsRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFw
aCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7
CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhi
bG9jayksICJBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIik7CisKICAgICAv
LyBGSVhNRTogSWYgd2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVu
ZCB1cCB3aXRoIGEgYml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQ
aGlzLCBsaWtlOgogICAgIC8vCkBAIC02OSw3ICs3MSw4IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVBy
ZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0
aGUgZnJlcXVlbmNpZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4K
ICAgICBmbG9hdCBmcmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNz
b3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRv
cnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBBU1NFUlQoZ3JhcGgu
bV9mb3JtICE9IFNTQSk7CisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWlu
YXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGZyZXF1ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5jeSwgcHJlZGVjZXNzb3ItPmV4ZWN1dGlvbkNv
dW50KTsKICAgICB9CkBAIC0xMDMsNyArMTA2LDcgQEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVh
ZGVyKEdyYXBoJiBncmFwaAogICAgIAogICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRl
eCA9IDA7IHByZWRlY2Vzc29ySW5kZXggPCBibG9jay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJl
ZGVjZXNzb3JJbmRleCsrKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxv
Y2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgaWYgKGdyYXBoLm1f
ZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIGlmIChn
cmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNz
b3JJbmRleC0tXSA9IGJsb2NrLT5wcmVkZWNlc3NvcnMubGFzdCgpOwogICAgICAgICBibG9jay0+
cHJlZGVjZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAgLTEzMCwxNiArMTMzLDE2IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BT
TmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRl
eCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgewot
ICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExv
b3BzLT5sb29wKGxvb3BJbmRleCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1By
ZUhlYWRlciA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5t
X2Nwc05hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7CisgICAgICAgICAg
ICBjb25zdCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMt
Pmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVh
ZGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgbmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxz
ZTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVh
ZGVyKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsKLSAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCktPnByZWRl
Y2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5t
X2RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLCBwcmVkZWNlc3NvcikpCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLm5v
ZGUoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgeworICAgICAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS5ub2RlKCkt
PnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLm5vZGUoKSwgcHJl
ZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBpZiAoIWV4aXN0aW5nUHJlSGVhZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5n
UHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xNjUsMTQgKzE2OCwxNCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAvLyBBIHByZS1oZWFkZXIgaXMgbW9zdCB1c2VmdWwgaWYgaXQncyBwb3NzaWJs
ZSB0byBleGl0IGZyb20gaXRzIHRlcm1pbmFsLiBIZW5jZQogICAgICAgICAgICAgLy8gaWYgdGhl
IHRlcm1pbmFsIG9mIHRoZSBleGlzdGluZyBwcmUtaGVhZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4
aXQsIGJ1dCB0aGUgZmlyc3QKICAgICAgICAgICAgIC8vIG9yaWdpbiBvZiB0aGUgbG9vcCBoZWFk
ZXIgZG9lcywgdGhlbiB3ZSBzaG91bGQgY3JlYXRlIGEgbmV3IHByZS1oZWFkZXIuCi0gICAgICAg
ICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCktPmF0KDApLT5vcmln
aW4uZXhpdE9LCisgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVh
ZGVyKCkubm9kZSgpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSwogICAgICAgICAgICAgICAgICYmICFl
eGlzdGluZ1ByZUhlYWRlci0+dGVybWluYWwoKS0+b3JpZ2luLmV4aXRPSykKICAgICAgICAgICAg
ICAgICBuZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmICghbmVlZHNOZXdQcmVIZWFkZXIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlv
blNldCwgbG9vcC5oZWFkZXIoKSk7CisgICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFw
aCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkubm9kZSgpKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjcsNyArNjcsMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJp
bW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5s
b2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+
bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAg
ICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
YmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3Jk
aWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1
bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmlt
b3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJh
bmQob3BlcmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgRXhpdE1vZGUgbWF5RXhp
dEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBW
YWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFj
dENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6
CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05hdHVyYWxMb29wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTmF0dXJhbExvb3BzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICsz
NCwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RG
OjpOYXR1cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29wOwotCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBw
dWJsaWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2lu
ZD4KK2NsYXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5k
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBo
KQotICAgICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCksIHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgIDogV1RGOjpO
YXR1cmFsTG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9t
aW5hdG9yc0ZvckNGRzxDRkdLaW5kPihncmFwaCksIHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAg
ewogICAgIH0KIH07CiAKK3VzaW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxT
U0FDRkc+OwordXNpbmcgQ1BTTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjc3LDcgKzEyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5j
aDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQpAQCAt
MTM3Miw2ICsxMzcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5k
ZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3
aXRjaERhdGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0
Y2ggKGluZGV4KSB7CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkK
QEAgLTE1NDEsNiArMTU0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IElk
ZW50aXR5V2l0aFByb2ZpbGUpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3BlY3VsYXRl
ZFR5cGU+KCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29u
c3QKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KKworICAgIFNwZWN1
bGF0ZWRUeXBlIGNhdGNoTG9jYWxQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChv
cCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxT
cGVjdWxhdGVkVHlwZT4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgp
CiAgICAgewpAQCAtMTkzNiw3ICsxOTQ5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9Ci0gICAgCisKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNS
ZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShy
ZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBERkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZU
TC4gSW5kaWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlh
YmxlIGZyb20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50
cnlMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5v
ZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcg
dG8gdGhlIEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3Bw
CShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw2
OCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJu
IHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhl
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAg
aWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxv
Y2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0
Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChq
aXRDb2RlKTsKKworICAgIERGRzo6Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50
ID0gaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5k
ZXgpOworICAgIGlmICghY2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJl
IG51bGwgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3
ZSBkaWRuJ3QgY29tcGlsZSB0aGlzCisgICAgICAgIC8vIHByb2ZpbGVfY2F0Y2ggYXMgYW4gZW50
cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYg
d2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3Ig
KHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJn
dW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVl
ID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkp
LmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRG
b3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxs
OgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hl
ZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
REZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBp
cyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAg
ICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAg
ICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXpl
Rm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0
aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZv
cigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9y
Q2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VS
VChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NhdGNo
KTsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2Fz
dDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIEpT
VmFsdWUqIGRhdGFCdWZmZXIgPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihqaXRDb2RlLT5j
YXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9m
aWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5p
c0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRhdGFCdWZmZXJbaW5kZXhd
ID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAg
ICArK2luZGV4OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJz
dHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3Bl
cmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBA
IGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3Ny
RW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnRE
YXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNo
aW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBh
dCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0
ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1
c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIg
dG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUg
YW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJl
cGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0
J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hP
U1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsK
ICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJE
RkdCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNp
bmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlOVF9NQVgpOwogICAgICAgICAKICAgICAg
ICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigpLgotICAgICAgICBtX2dyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAg
ICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVk
QmxvY2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICAv
LyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5v
cmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IG5ld0FyZ3VtZW50cyA9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+
dmFsdWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGlu
ZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGRO
b2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAg
ICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5
LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAg
ICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAg
ICAgICAgICAgICAgICBvbGROb2RlID0gbmV3QXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAg
ICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAg
ICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAg
ICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAg
ICAgbmV3QXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBm
b3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyAr
K2xvY2FsKSB7CkBAIC0xMzksOCArMTQxLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5m
byhjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAg
ICAgIAogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3Jh
cGgubV9lbnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5hZGQobmV3Um9vdCwgbmV3QXJndW1lbnRzKTsKKworICAgICAgICBtX2dyYXBoLm1f
Y3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgpOworCiAgICAgICAgIG1f
Z3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFi
bGVCbG9ja3MoKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03MjcsNyArNzI3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3Jh
cGguY29tcHV0ZVJlZkNvdW50cygpOwogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3du
ZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dy
YXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlz
aXMobV9ncmFwaCk7CiAgICAgICAgIHBlcmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhtX2dy
YXBoKTsKICAgICAgICAgbV9jb21iaW5lZExpdmVuZXNzID0gQ29tYmluZWRMaXZlbmVzcyhtX2dy
YXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24g
MjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY2LDkgKzM2Niw4IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpj
b21waWxlSW5UaHIKICAgICAvLyBJZiB3ZSdyZSBkb2luZyB2YWxpZGF0aW9uLCB0aGVuIHJ1biBz
b21lIGFuYWx5c2VzLCB0byBnaXZlIHRoZW0gYW4gb3Bwb3J0dW5pdHkKICAgICAvLyB0byBzZWxm
LXZhbGlkYXRlLiBOb3cgaXMgYXMgZ29vZCBhIHRpbWUgYXMgYW55IHRvIGRvIHRoaXMuCiAgICAg
aWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgZGZnLmVuc3VyZURvbWluYXRvcnMo
KTsKLSAgICAgICAgZGZnLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBkZmcuZW5zdXJl
UHJlUG9zdE51bWJlcmluZygpOworICAgICAgICBkZmcuZW5zdXJlQ1BTRG9taW5hdG9ycygpOwor
ICAgICAgICBkZmcuZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgfQogCiAgICAgc3dpdGNo
IChtb2RlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
UG9zdE51bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0j
aWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNp
bmNsdWRlICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0
TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmlu
Zz4oZ3JhcGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0g
ICAgd29ya2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51
bWJlciA9IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChC
bG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChp
dGVtLm9yZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAg
bV9tYXBbaXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAg
ICAgIHdvcmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAg
ICAgIHdvcmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1f
cG9zdE51bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7
IH0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNp
bmcgbmFtZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0m
IG91dCwgRWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZv
cndhcmRFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2Ui
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmlu
dCgiQmFja0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRG
R0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2Us
Ci0gICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVy
aW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdy
YXBoJik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJl
cihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVt
YmVyOyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3Qg
eyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZy
b20gYSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2Yo
QmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9z
dE51bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlz
QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0
byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNT
dHJpY3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2Nl
bmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAv
LyBUaGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBz
dWNoIGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFu
eSBzdWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVk
Z2VLaW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAg
ICAgICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJl
dHVybiBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8s
IGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAg
cmV0dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1i
ZXJpbmcgewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQg
bV9wb3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwot
fTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmly
c3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlw
b2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMu
CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5u
dW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsK
ICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1th
cmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFy
Z3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2Rl
LT5jYXRjaExvY2FsUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICAgICAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgog
ICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0J5dGVjb2RlVG9wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0
U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBo
LmR1bXAoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAg
ICAgIFNTQUNhbGN1bGF0b3Igc3NhQ2FsY3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0
aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTUsMTIgKzk1LDEyIEBAIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6
bmV3RGUKIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNo
aW5nRGVmKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0
dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwg
dmFyaWFibGUpOworICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9t
aW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVm
KiBTU0FDYWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFy
aWFibGUqIHZhcmlhYmxlKQogewotICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1f
ZG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRl
ZiA9IG1fZGF0YVtibG9ja10ubV9kZWZzLmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1
cm4gZGVmOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2Fs
Y3VsYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q2FsY3VsYXRvci5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAg
ICAgdm9pZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQog
ICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9t
aW5hdG9ycyk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5t
X3NzYURvbWluYXRvcnMpOwogICAgICAgICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFi
bGUgOiBtX3ZhcmlhYmxlcykgewotICAgICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZv
ckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAg
ICAgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWRE
b21pbmFuY2VGcm9udGllck9mKAogICAgICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0
aERlZnMsCiAgICAgICAgICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7
CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwg
YmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NCw3ICs1NCw4IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zv
cm0gPT0gVGhyZWFkZWRDUFMpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxh
Y2VtZW50cygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5jbGVhckNQU0NGR0RhdGEoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21p
bmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAg
ZGF0YUxvZygiR3JhcGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcg
KzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRl
IHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1
dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93
IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJv
LgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFz
ZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxh
dG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJs
ZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRl
eFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9j
ay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAg
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVz
aXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhN
RTogU3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAg
IGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZCht
X2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1h
dHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBh
cmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQg
PSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRN
YXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBu
b2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9n
cmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRz
IHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAg
ICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMg
dGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQy
MSwxMiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFw
aCkKIHsKLSAgICByZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBo
Lm1faXNJblNTQUNvbnZlcnNpb24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8
U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9p
c0luU1NBQ29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNl
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0
ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNl
IENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjM3LDYg
KzU2MzcsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICB1bnJlYWNoYWJsZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgdGFnKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcGF5bG9hZCh0
aGlzKTsKKworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyB0YWdHUFIgPSB0YWcuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gcGF5
bG9hZC5ncHIoKTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxK
U1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVy
KCkpW25vZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiwgVGFnT2Zmc2V0KSwgdGFnR1BSKTsK
KyAgICAgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBQYXls
b2FkT2Zmc2V0KSwgcGF5bG9hZEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGFnR1BSLCBw
YXlsb2FkR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBMYXN0
Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTk3LDYgKzU5OTcsMTYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ2hlY2tTdWJD
bGFzcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2Fs
OiB7CisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPiht
X2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+
Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAg
ICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9v
cDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJh
bmNoQWRkMzIoCkBAIC02MDg1LDYgKzYwOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKICNl
bHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAg
Y2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjkzLDYgKzE2OTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJl
bnRCbG9jawogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0
Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lz
dGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1Bv
aW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAg
ICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAg
bV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2co
VmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFs
aWRDYWxsRnJhbWUoKTsKQEAgLTE3ODcsOCArMTc5NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1f
b3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsK
IAorICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1
bWVudHMuZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAg
ICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAg
IE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAg
ICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9y
IHN1Y2ggYXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODcyLDEyICsxODgw
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAg
ICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9j
ay0+aXNPU1JUYXJnZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAg
IC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291
bGQgYWRkIHRoZW0KLSAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVu
dHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAg
IGlmIChibG9jay0+aXNPU1JUYXJnZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7Cisg
ICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGlu
ZXMuIFdlIGNvdWxkIGFkZCB0aGVtCisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisg
ICAgICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9j
a0luZGV4XSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE4ODgsMTAgKzE4OTUsMzAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNP
U1JUYXJnZXQpCisgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXND
YXRjaEVudHJ5cG9pbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90
aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlu
a0J1ZmZlcik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAg
ICAgICAgIGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52
YWx1ZTsKKyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOwor
ICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1l
bnRzVmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDog
YXJndW1lbnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7Cisg
ICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRDZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0
ID09IEZsdXNoZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRz
LnVuY2hlY2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZs
dXNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlw
b2ludCgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVy
LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgQVNTRVJUKGJsb2NrLT5pc09TUlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VP
U1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVm
ZmVyKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVD
YXRjaE9TUkVudHJ5cG9pbnRzKCk7CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29z
ckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5h
YmxlZCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1
dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNF
eGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0
dXJhbExvb3BzKCk7CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBiYXNpYyBibG9jayBl
eGVjdXRpb24gY291bnRzIGJhc2VkIG9uIGxvb3AgZGVwdGguCiAgICAgICAgIGZvciAoQmxvY2tJ
bmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQg
PSBwb3coMTAsIG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOworICAg
ICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fY3BzTmF0
dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgLy8gRXN0aW1hdGUgYnJhbmNoIHdlaWdodHMgYmFzZWQgb24gZXhlY3V0aW9uIGNvdW50cy4g
VGhpcyBpc24ndCBxdWl0ZSBjb3JyZWN0LiBJdCdsbApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJl
R2xvYmFsRlQKICAgICByZXR1cm4gZnRsV2hpdGVsaXN0OwogfQogCit1c2luZyBOYXR1cmFsTG9v
cCA9IENQU05hdHVyYWxMb29wOworCiBjbGFzcyBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKIHB1YmxpYzoKICAgICBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlKEdy
YXBoJiBncmFwaCkKQEAgLTgxLDggKzgzLDggQEAgcHVibGljOgogICAgICAgICBpZiAoIU9wdGlv
bnM6OnVzZU9TUkVudHJ5VG9GVEwoKSkKICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21w
aWxlOwogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAg
ICAgICAgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX25hdHVyYWxMb29w
czsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgQ1BT
TmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wczsK
ICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9v
cFRvTG9vcEhpbnQgPSBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChuYXR1cmFsTG9vcHMp
OwogCiAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIExvb3BIaW50RGVzY3JpcHRvcj4gdGllclVw
SGllcmFyY2h5OwpAQCAtMTgyLDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4g
YnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAoY29uc3QgTmF0dXJhbExvb3BzJiBuYXR1cmFs
TG9vcHMpCisgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5h
dHVyYWxMb29wVG9Mb29wSGludE1hcChjb25zdCBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29w
cykKICAgICB7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4g
bmF0dXJhbExvb3BzVG9Mb29wSGludDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXIt
PnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBk
b2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3Ig
U2V0QXJndW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKTsKIAogICAgICAgICAgICAg
ICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4aXRPSyk7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNl
cnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFi
bGUtPnByZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
MTAgKzgzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgLy8gTkIuIFRoaXMgY29kZSBpcyBub3Qgd3Jp
dHRlbiBmb3IgcGVyZm9ybWFuY2UsIHNpbmNlIGl0IGlzIG5vdCBpbnRlbmRlZCB0byBydW4KICAg
ICAgICAgLy8gaW4gcmVsZWFzZSBidWlsZHMuCiAKLSAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCBh
bGwgbG9jYWwgdmFyaWFibGVzIGF0IHRoZSBoZWFkIG9mIHRoZSByb290IGJsb2NrIGFyZSBkZWFk
LgotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxv
Y2FscygpOyArK2kpCi0gICAgICAgICAgICBWX0VRVUFMKCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChpKSwgcm9vdCksIHN0YXRpY19jYXN0PE5vZGUqPigwKSwgcm9vdC0+dmFyaWFibGVzQXRIZWFk
LmxvY2FsKGkpKTsKKyAgICAgICAgVkFMSURBVEUoKG1fZ3JhcGguYmxvY2soMCkpLCBtX2dyYXBo
Lm1fZW50cnlwb2ludHMuY29udGFpbnMobV9ncmFwaC5ibG9jaygwKSkpOworCisgICAgICAgIC8v
IFZhbGlkYXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxlcyBhdCB0aGUgaGVhZCBvZiBhbGwgZW50
cnlwb2ludHMgYXJlIGRlYWQuCisgICAgICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6
IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kp
CisgICAgICAgICAgICAgICAgVl9FUVVBTCgodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIGVu
dHJ5cG9pbnQpLCBzdGF0aWNfY2FzdDxOb2RlKj4obnVsbHB0ciksIGVudHJ5cG9pbnQtPnZhcmlh
Ymxlc0F0SGVhZC5sb2NhbChpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFZh
bGlkYXRlIHJlZiBjb3VudHMgYW5kIHVzZXMuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRl
eCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAg
ICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2Vu
ZXJhdGVkIEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2Nr
LCBKSVRDb2RlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBn
cmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29w
cygpOworICAgICAgICBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBo
LmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciog
cHJlZml4ID0gIiAgICAiOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1l
ID0gImpzQm9keSI7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMo
KTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYg
KHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0
aW9uIHJlYWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9v
cmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwor
ICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2Rl
KiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBhcmd1bWVudHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpOwogICAgICAgICAgICAgCkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIERGRzo6QmFzaWNCbG9jayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4
KTsKICAgICAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxv
Y2ssIHRhcmdldCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygi
QmxvY2sgIiwgKnRhcmdldCwgIiB3aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAg
IHRhcmdldC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgaWYgKCFtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVl
LmJsb2NrKCksIG1faGlnaEJsb2NrKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5h
dG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFp
bF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0
X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09Q
KG9wX3Byb2ZpbGVfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAg
ICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3Ro
aXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0
NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9m
b3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29u
c3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNo
KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2NhdGNoKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTYsNiArNzk3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3QpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0UpOwogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VK
UywgR1BSUmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwg
UmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
U19KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVnLCBVbmlxdWVkU3Ry
aW5nSW1wbCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNiArNDYzLDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElO
RSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RVVpIG9wZXJhdGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsK
KyAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiAjaWYgVVNFKEpTVkFMVUU2
NCkKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9u
KFpfSklUT3BlcmF0aW9uX0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgaW50MzJfdCBhcmcy
LCBpbnQzMl90IGFyZzMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzcsNiArMTUzNywzMSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF91bnJlYWNoYWJsZShJbnN0cnVjdGlvCiAgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jYXRjaChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2Fj
aGluZyB0aGUgcHJvY2VzcyBvZiBkb2luZyBPU1IgZW50cnksIGluY2x1ZGluZworICAgIC8vIGFy
Z3VtZW50IHR5cGUgcHJvb2ZzLCBzdG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9m
ZnNldCk7CisgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVy
blZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1
cm5WYWx1ZUdQUik7CisgICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgaWYgKHNob3Vs
ZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
KiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChb
Jl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyNpZiBVU0UoSlNWQUxVRTY0
KQorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMCk7CisjZWxzZQorICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMSwgcmVnVDApOworI2VuZGlmCisgICAgICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAg
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAg
fSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTUsNiArMTUxNSwxOSBAQCBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChj
b2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUlu
ZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNl
bWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6
ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFy
ZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgp
KTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMy
X3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzE3LDYgKzMxNyw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEK
IHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0
YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQ
X0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRl
ZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBk
b3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVy
YXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJu
VHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwg
Q2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJ
VE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmlu
ZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMy
X3QpOwpAQCAtMzk3LDYgKzM5OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJv
dyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVy
blR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90
KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVy
QXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwq
LCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIw
Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1
ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAg
ICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisK
KyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJv
dG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlz
aW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxl
cik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hp
Y2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xv
Z19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHJvZmlsZV9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGlu
dF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lO
VEVSTkFMOwogI2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUg
bGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5B
TDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTg4MSw2
ICsxODgxLDExIEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW4KICAg
ICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGlu
Z19mdW5jX2RlY2xfaW5fZXZhbCkKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9z
Y29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWxfbGVuZ3RoKQogCitfbGxpbnRfb3Bf
cHJvZmlsZV9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
cm9maWxlX2NhdGNoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wcm9maWxlX2NhdGNoX2xl
bmd0aCkKKworCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91
Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQg
bmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKICMg
YXMgbXVjaC4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQy
NjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMx
QjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdy
YXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYg
LyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlE
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJp
Z2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2
RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0
MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgw
MEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAz
MTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2Nv
cGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMu
Y3BwICovLApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA3NzcpCisr
KyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3Jh
cGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFw
aCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVm
ZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29u
c3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2Rl
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9
IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2RlKQotICAg
ICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAgICAg
ewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9ub2RlID0g
MDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5v
ZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09
IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNS
b290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Qg
eyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQot
ICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7
Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBT
ZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hl
Y2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQo
bm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9k
ZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAg
ICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7
Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50
KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQg
bV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUg
bmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAgICAgbV9y
b290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3Qg
aW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhp
cykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9k
ZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtub2Rl
Lm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0
IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0
X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZh
dGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAg
ICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBo
Tm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBH
cmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJk
c0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAgIGVs
c2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7
CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAg
ICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRv
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0
eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29s
IHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwg
bV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2
IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFw
aCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEg
PSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8v
IEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3
YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNl
YXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQg
Y2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsy
NDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihj
b25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
KyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0
IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3JB
bGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAg
IGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29t
cHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgog
ICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2Yo
Ci0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZv
ckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsy
NjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5h
bWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUg
R3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRl
ZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAg
ICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0
ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0
ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxs
QmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0
eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QK
KyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QK
ICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAg
ICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNF
bXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmts
aXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250
aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RH
cmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFw
aE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgorICAgIC8v
IFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNy
ZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290
IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9k
ZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAg
eworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsK
KyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25v
ZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290R3Jh
cGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3Ro
ZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAg
fQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9
IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBo
OjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7Cisg
ICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdy
YXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAg
dXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNp
bmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChjb25zdCBO
b2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAg
ICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1f
c2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9k
ZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAg
cmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1cm4gbV9z
ZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0
IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAg
ICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2Rl
Lm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnByaW50KE5v
ZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAgfQor
ICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wg
bV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJv
b3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdy
YXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsK
KyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAg
ICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92
ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7
CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisK
KyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKwor
ICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRl
eCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtpbmRl
eCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4o
dGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5v
ZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVy
biBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAgfQorCisg
ICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25vZGVdOwor
ICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxU
PiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgor
Y2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVS
b290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAg
dXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9
IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVz
aW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0
b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAg
ICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpO
b2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9n
cmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jv
b3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNj
ZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9yb290
U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsg
cmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBN
YXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1
Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElz
Q29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAg
cmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAg
ICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9k
ZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBu
b2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAg
ICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0
eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKwor
ICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBu
b2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1f
Z3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5z
aWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAg
ICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEp
OworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVt
cChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7
CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7Cisg
ICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9k
ZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dy
YXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsK
KyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAg
ICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChu
b2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAg
ICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRl
Y2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChj
b21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwor
ICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEg
PSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNj
ZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNj
ZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0K
KworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkg
Y29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBleHBlY3Qg
dGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBz
byB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3Iu
IElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAg
ICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRl
IGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nv
ckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dy
YXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhy
ZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVu
ZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0
LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNj
ZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExp
c3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1
Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNpbmds
ZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>
<flag name="commit-queue"
          id="338652"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>318225</attachid>
            <date>2017-08-15 21:51:32 -0700</date>
            <delta_ts>2017-08-16 13:01:45 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews115 for mac-elcapitan</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>3820515</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
cnlwdG8vVVQJAAPyuZNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACKog9LAAAAAAAAAAAA
AAAADgAcAGNyeXB0by9zdWJ0bGUvVVQJAAP0uZNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQKAAIA
AACJog9LJeDTCCwAAAAsAAAAPgAcAGNyeXB0by9zdWJ0bGUvcnNhLWdlbmVyYXRlLWtleS1tYWxm
b3JtZWQtcGFyYW1ldGVycy1zdGRlcnIudHh0VVQJAAPyuZNZ8rmTWXV4CwABBPUBAAAEFAAAAENv
dWxkIG5vdCBnZW5lcmF0ZSBhIGtleSBwYWlyLCBzdGF0dXMgLTQzMDQKUEsDBBQAAgAIAIqiD0sw
O7ixSwAAAGgAAAA8ABwAY3J5cHRvL3N1YnRsZS9yc2EtaW1wb3J0LWtleS1tYWxmb3JtZWQtcGFy
YW1ldGVycy1zdGRlcnIudHh0VVQJAAP0uZNZ9LmTWXV4CwABBPUBAAAEFAAAAG3LsQ2AMAxE0Z4p
bh8aVrBkS7GAOHIuRGwPDR31f39Lv4SG3e6O6SwxCFF1elQ5oEKBpKEG0UdrkTRd1o/jjDeySAVn
oKWf1n+GB1BLAwQKAAAAAAB9og9LAAAAAAAAAAAAAAAADwAcAGNyeXB0by93b3JrZXJzL1VUCQAD
3rmTWd7Ak1l1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAfaIPSwAAAAAAAAAAAAAAABYAHABjcnlw
dG8vd29ya2Vycy9zdWJ0bGUvVVQJAAPeuZNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQKAAIAAAB9
og9LJeDTCCwAAAAsAAAAMQAcAGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5
LXN0ZGVyci50eHRVVAkAA965k1neuZNZdXgLAAEE9QEAAAQUAAAAQ291bGQgbm90IGdlbmVyYXRl
IGEga2V5IHBhaXIsIHN0YXR1cyAtNDMwNApQSwMECgAAAAAAgKIPSwAAAAAAAAAAAAAAAA0AHABk
aXNwbGF5bGlzdHMvVVQJAAPfuZNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACAog9Lo1f9
6FAAAACOAAAAMgAcAGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1zdGRl
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
mlcCFtWAiAalpinE+5Xm5CQm5aRqWink5SskQ1QpFICU6XE5DoitAFBLAwQUAAIACACzog9LB8rs
OH0AAAACAQAAJgAcAGZhc3QvY2FudmFzL2NhbnZhcy1saW5lRGFzaC1zdGRlcnIudHh0VVQJAANC
upNZQrqTWXV4CwABBPUBAAAEFAAAAMXOQQrCMBRF0bmreBtQTENBgwilFSeO1Jk4iPShheRHfhNR
V2934fCe0W3KHaZGtXSVcXYFdCU+j5SeelbyYo1d11dsdqpJtw7tvk2S+c4n5sMg7Pz4cBjk5cPQ
o58KXtV/HHxGoB8zkhAMjJSMWCa4EZJk/qWmxaz598APUEsDBAoAAAAAABCkD0sAAAAAAAAAAAAA
AAAJABwAZmFzdC9jc3MvVVQJAAPPvJNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAA5ow9L
VO5Q8rFHAABYdwIALAAcAGZhc3QvY3NzL3BhcnNpbmctY3NzLW1hdGNoZXMtNy1jcmFzaC1sb2cu
dHh0VVQJAAM9u5NZPbuTWXV4CwABBPUBAAAEFAAAAOxd/W/bRpP++fJXsDAK0HdOwv0kV3UN27Kd
2M2HL3abw1u8KGiJjtXIol+Kygeud3/77QdJk9SSy5VTIzhsURuORM7szCyXnGce7rxJvUkWL2+8
efrBu05Xiyn/nXlHq9u7d8limmSXWZKMEMABePbkyTKfpqt8JP9Isoz/8eTJQc7PnSBvtvAO+R8f
vS0y8j7F89k0zmfpwruOZ/NkOvL8Zc4/mPwxiZf57pt0mvz7nr9Yzed3ebbt/ew95b9+9vxkkWdf
79LZIn+69ynOZvHVPFke5C+TePqMS4/n/kwcvQ8Csu35z39L56vbZPn8KM7j58fvL56/T65+meXP
L9JVNkmen8Wf4otJNrvLx2mWPJ9ef3h+dPLiNzW45Nnk7m7EwPYzaUQ+u0289FqOd5Ul3DZ+qHTG
8iZdzaeXN1n6+TjL0uxNfJts7S7SpzfccXuj34MvAE6nDCdJ8HRP/CNhLKj+cX3Fxx4EOx4Xd7Ja
TIRTxvF8vuMhBv45euJ5J7Mv0mJPeCgZeYcJ15qUn/7knaTZ7cjj+rmgZDo+v/jJ+3Uxu55NlIOL
s17M0ysu9qv8Kpn+5L1Lrr0Jj2gl9/hTkn3Nb2aLD6fLV7NPCVd9kH3g/lvkS2nolYifCN8+YzvC
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
6G5Kmtg7s1vVrlQkN9DAd4Bz+c4BTJp/mjHVQmrQpGcm7S1P9yB/7ND+3hYpQRBtfkdUpkvd9ED8
FfKbq83d/WE6B+YI/gCe7v8NRCf5odv+8/Xo74mwVdX8b0Qzmb/KZjKa5c8KUf9vo5n+90Qzc/5/
JJrhf080I98smtFvF83YN45mdK4OzNWBuTowVwfm6sBcHZirA3N1YK4OfBWfYjOfmvnUzKdmPjXz
qZlPzXxq5lMzn/oqPsVnPjXzqZlPzXxq5lMzn5r51MynZj71VXxKzHxq5lMzn5r51MynZj4186mZ
T8186qv4lJz51MynZj4186mZT818auZTM5+a+dRX8Sk186mZT818auZTM5+a+dTMp2Y+NfOpr+JT
euZTM5+a+dTMp2Y+NfOpmU/NfGrmU1/56T919+k/57+COzr/m5bn+6bL++q+OX8lOVpu7v/w/dn5
+a767fvz41Lj5RIoVNOsoWF5bFDdLqj8bWnQUJ96Y7VvqNWS5qbuZ55ktRmMJVdrDsa7u9v0xoKN
XlVMsNywvB2+0eAqz3432QCTnO90H1f3h2cKuTPHV2AFwQNUhDR5LIJzw3rwJzeQ0VCUyywJocMW
grtX2LBh2WCVG3hfRLoS1EiSRSSilD0rebdcm9uyZf/xS+e79dVgEoLBD4Ip7ejUnsBYZ2+2Hzfg
ic79u7983yoTkWdxt9vuzv121XSPHl+VZ+/z91/9+eF62ez2/fnZ2Znb3FS7L+evr6uPzV3Wm/1r
BFd1u9nn6Lz/cKVrWOnz7/KnI/3c3Kya3fsd+K9X+A/n/8m4w5FKgoINHDHmObKJC2RlEia6pChX
fzy/+LC9erhu7i4+/PTmL2/jxX9clGMVGJq6GmOAhy0GsKO/NsvsWd43d/eXnzbXe+Nq0RjJdfLS
I0tCQMwkj4ykCWkfQeW9lBHjKTSnRh3gaka4ltg0U7gebm+3u/sCGokpkuiRDpoi5oJCBnuPEotB
JamsoOwF0PoD99EtORmjq1eiRXfaO7+SWHwHL8GPBVmw7wCoVpLKJA0iHlwL8yYgqxJHPgqZtLZJ
cToFtBx5sd5V103+MKeLDw14BghjF3bQp49/zVerIX5wB1yv18s+fliLP0HiNoHbaYyN1wkpTxhi
lBjkuOaIM281jiRJGqdwdyNO4+3aejgJ1Us1wsl4JQ5a8Guz3N3X/Z1PgkTMEkZag2aywCOyXAQE
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
57ez2XKzetn54YdOBOKB8jX/y4934WqqlP17G+D8v1ea3O705YvXv6m5W78GrcDrwcfRay2dvx4p
AeL1z+FdaHneVfR6cnn1ev/g3W9AEuRC+X68XHYFetnpde4W00nn51G/15Pve71uOF/Mv8L4JFb8
l72e/bDXuzO/ui9fIHlcymHwQjQJufA6H88P+qtwff3CNy8Eiy4uvHBH8DgFhXsoBSWulBS9W4XL
6+9edXIl+7c3y2M5xK8AuV6vb1xdXwQWNhUkGvPUZ2fy+O71jBPO4RzCGsPJ4c1yJjEiyVcBDyeu
r1Lo6QKYq399+YJaMNz3LniUAvNxsfo8A8HQfPB2Mfna693LUtk6i4c7YmEY6R7t3W4WsLvG+oNe
T22yrn4HZoJwDBeZfY5WWkf+nRzt//fJ6/XArx906d2X3Zf61QueaoDxsW7ASjJv1ELpvvxRjqKk
TbAoP67AkrV68xBEJLgxXEP38oWwrfvyBImi0tYLEEee/ZT6Pg/1pxYPtZ2UGaebKT+J7vVPozqQ
E4NQDIddIqLh3G8udb1BAgiwgfo+1GeXl5ci8JgnxKTzablRlT9dyKl7gXC2AgrzFYJUBRphgjrm
tRq+F/8fUEsDBBQAAgAIABCkD0stuBsNsgAAAM4BAAA2ABwAZmFzdC9jc3MvcGVyc3BlY3RpdmUt
b3JpZ2luLWluaXRpYWwtaW5oZXJpdC1zdGRlcnIudHh0VVQJAAPPvJNZz7yTWXV4CwABBPUBAAAE
FAAAAM2PMQvCMBSE9/6Kt9kOGgQR7Np2EAelQZ1r+iyBJC8kr8X+exWl4u7geMfdx11V1/s6hzNe
dpqhJYzgiGFEBm29QYuOoUMuyPqesZU8GoQrBZh5DNGjYj3gnILutJvfZotEnMj0FqMoG25EdZbi
BReS+qDwqQoKKFSMopDyC1yiMk1oWJNbKO/T5Wa1ziCHgXQL72KeG+qOblqH7SHQYwuP2zKdMg/y
x86S6qc3x3+9eQdQSwMECgAAAAAAuaIPSwAAAAAAAAAAAAAAAAkAHABmYXN0L2RvbS9VVAkAA026
k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKOiD0vaTLYpjAEAAOAJAAAlABwAZmFzdC9k
b20vRmlsZUxpc3QtaXRlcmF0b3Itc3RkZXJyLnR4dFVUCQADIbqTWSG6k1l1eAsAAQT1AQAABBQA
AADtks9q20AQxu9+isGHkkDwOm38hwWdHBtCgxMkO851tTuKFqQdszuiMSHg1wikL+cnqaQkUBp6
aSHQosvCDDPfzjfzm8fxVSxhoWyBBpjgDhl4t0WwBh3bzKIHysBjoMprBMWwji8hq+ulEOKGiqrE
IM4VKzHfJGKD6VfL4lLtqOIVBg4iU4GFoVJwHQ74nuGb5RzQe/Iwb99zKpV10TKZkSbV5l5SMCOD
0efxEPqrHNtv4bB/flM67L+Dpqow7rB/YkgRaIuudpKiVlVA4Bx97SWAIwiVzluFQR/WAf2Fyyh6
WCa1n+iv/JzAMlnUAteK8+jPJdbOoC921t21C4iG95PMmKlKx8NxOoSHX1Z1fZVc3L5fFfSXP1mF
usNYj5rJ7/qPj4Ne77cDJu2Fm2hGHkXTrrZWNM7aswzK8mj05RgkBFZsNaREBbyWS9nUSRny5hwx
bgulsUkdaXKBYbNaSJmwr93Bp+PevOPuH+DuVE077jruPpa70egsnWYddx13H83d5HQy+s+4+wFQ
SwMEFAACAAgAo6IPSy58lWNyAQAA8AQAADYAHABmYXN0L2RvbS9GaWxlTGlzdC1pdGVyYXRvci11
c2luZy1vcGVuLXBhbmVsLXN0ZGVyci50eHRVVAkAAyG6k1khupNZdXgLAAEE9QEAAAQUAAAA7ZLB
SsNAEIbvfYqhB1GQbtFWZSGn2oIoVZLWet3sTsxCslN2J2gRoa8h6Mv1SUyigihe9CLiZWGGf/6d
b2bGcXweS5goW6ABJrhGBl4tEaxBxzaz6IEy8Bio8hpBMczjM8hqvRRCXFJRlRjEsWIlxotELDA9
tSzO1IoqnmHgIDIVWBgqBddhj28ZbizngN6Th3H7HlOprIumyYg0qTb3koIRGYz2DvrQneXYfgub
9eOb02b9BJqqwrjN+oEhRaAlupokRa2qgMA5+polgCMIlc5bh14X5gH9icsoupsmNU/0I55dmCaT
2uBCcR5932LuDPpiZd11O4Cof3uYGXM0HAzM3lEf7j6M6uI8Obn6PCroTt+hQl1hrEfN5Ffd+/te
p/Nlg0m74SYakUfRlKulFQ1Zu5ZeWW4P93dAQmDFVkNKVMCrXMpGJ2XIm3XEuCyUxia1rckFhsVs
ImXCvqaDrZ3O+P/ufvvdHeIw3R/8sbt7BlBLAwQKAAAAAACqog9LAAAAAAAAAAAAAAAAGgAcAGZh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvVVQJAAMwupNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACACqog9LgBgNpqcAAADSAAAAPwAcAGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJh
c2UtY2FsbGJhY2stZGVsaXZlcnktc3RkZXJyLnR4dFVUCQADMLqTWTC6k1l1eAsAAQT1AQAABBQA
AAA1zM0KwjAQBOC7T7HH9qARipcggmhPIoWK9pykWwiku2GbVH17f9DbDHwzdds2rYYrGRsQEkPK
QsAEnpzgiJRMAJMTL2fjch6hWANxAkOAIizlQt045BEndTTJqLq7qA7tySd14SwOP+3AgurMfQ5v
dkfbv6U1E34nn7ByMRbVpipBQ/1wGJNnamQ7s+938HvQ+s+1jigDy9hEpD31NxQ/PAvLHMrFC1BL
AwQKAAAAAAC5og9LAAAAAAAAAAAAAAAAEAAcAGZhc3QvZG9tL1dpbmRvdy9VVAkAA026k1newJNZ
dXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIALmiD0tRLnosgwEAAHoFAAA6ABwAZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1mcmFtZXMtc3RkZXJyLnR4dFVUCQADTbqTWU26
k1l1eAsAAQT1AQAABBQAAADtUsFKI0EQvecrihxEQdPZGF1pmFNMQJQYZpLNXnu6a5yGma6huwYN
IuQ3BP25fIkzowfZ1ZundS8N9XhVXe/Vm8bxdSxhpmyBBpjgBhl4UyFYg45tZtEDZeAxUO01gmJY
xVeQNXwphPhFRV1iEOeKlZiuE7HG9NKyuFIbqnmJgYPIVGBhqBRr6wzdiuaLo7b/qK4KUmaQc1nA
reUc0HvyMO3ecyqVddE8mZAm1WGvEEzIYDQ6HUJ/mWO3Cey2Tx9N3W2fQVNdGLfbPjKkCFSha4Sm
qFUdEDhH30gN4AhCrfNu2qAPq4D+wmUU3c+TRm701XIPYZ7MGmyhOI++dOrKGfTFxrqbzrJoePcz
y8Z6eHb8Y2SGcP+HuYvr5OL33+ZCf/7OEGg6jPWomfym//Aw6PU+3TnpYtJWE/Io2nZVWdGK7Q45
KMv9k+MDkBBYsdWQEhXwRpey5UkZ8vZoMVaF0thC+5pcYFgvZ1Im7Bt1sHfQm/4P73cIb6qy8Uif
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
BBQAAgAIAMiiD0shj704MgAAADMAAAAsABwAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3At
Ym94LXN0ZGVyci50eHRVVAkAA2i6k1loupNZdXgLAAEE9QEAAAQUAAAAc8tJLEl1SU3OT0m1UkgB
0Zl56QqpRUX5RVYKmXnJ+UVFqcklCimJJYkKyRmpydl6XABQSwMECgAAAAAA4aIPSwAAAAAAAAAA
AAAAAAoAHABmYXN0L3RleHQvVVQJAAOVupNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADh
og9L+SKZT3kBAACDCQAAIwAcAGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi1zdGRlcnIudHh0VVQJ
AAOVupNZlbqTWXV4CwABBPUBAAAEFAAAAO2TPU7DMBiGZ3IKK2OVVrZjJ2kEkaBVxdSBhKnq4DhO
idT8KHGkQBWJGzBzE87DBbgCTqGAUCWWSHSIt+/H7/f6e2QMkT2GzhhRgKGLTReiiYkQmNdpcSOy
SJRBKcTKRAQjlxKbTtdglpciEI10wWg0ArdZyopCREB/fX58e3nSwfksWOSZKsPGjkOCpjxGaAq9
XcZSAS6AH/h5tpHJOJiNb8Sm3rLSAFXy0NUQhBO4PwZImSyTRiVho6JIVLxMCpmXKvM5Yv6V+x4W
IYdzNYxJdTuspaj2/YsrViX8mlV3PzpDiCBYdXEc2w6FlBC49nbyvui8pLVk4VaAKOHSADyvM9k5
NDSRKelO19POMHA7dV9lsg04SMVmaMfHpLlyra53nvSl371hqZZyefCqtx9mf8kRTojzl9yRteqt
1mpe22r4GGaT9okZYzOkyuWA+cQwU6ff3xxbFmID5lPDbNu9Yg65hRkeMJ8YZgJhr5hF7DiRNWD+
R8zvUEsDBAoAAAAAANaiD0sAAAAAAAAAAAAAAAAXABwAZmFzdC90ZXh0L2ZvbnQtZGlzcGxheS9V
VAkAA4O6k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANaiD0tkTyOPowAAAN8AAAAnABwA
ZmFzdC90ZXh0L2ZvbnQtZGlzcGxheS9wYXJzZS1zdGRlcnIudHh0VVQJAAODupNZg7qTWXV4CwAB
BPUBAAAEFAAAAFWOwQrCMBBE7/2KvbU92CCIYK9tD+JBadCeY7MtgTQbkq3Qv1dRKh5nmPeYpm3P
bQkd3k+GQRNGcMSwIIOZvMUJHcOIXNHkZ0YtebEIAwVIB3K80SZ6q5a0SMSN7DxhFLViJZpOio9U
SJpDj+9UUUDRxygqKf+ENfZWBcWGXNF7n20Pu30OJTzIaPiCZWlpvLr1FepLII+Bl2OdrZuX+Vfn
yRNQSwMECgAAAAAA7aIPSwAAAAAAAAAAAAAAAA0AHABmYXN0L3dvcmtlcnMvVVQJAAOuupNZ3sCT
WXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADtog9L936hMIgBAADQBQAAMwAcAGZhc3Qvd29ya2Vy
cy93b3JrZXItY29weS1zaGFyZWQtYmxvYi11cmwtc3RkZXJyLnR4dFVUCQADrrqTWa66k1l1eAsA
AQT1AQAABBQAAADtksFKI0EQhu95iiIHUdikg7pRGuYUExAlykyy8drTU+M09nQN3TW4gwh5jQV9
uTyJM7MeRFn25EW8dNM/VdVVX/3zOL6KJSyUsZgBE9wiAzcVgsnQsckNeqAcPAaqvUZQDOv4EvI2
XgohfpGtSwziTLES800iNpheGBaXqqGaVxg4iFwFFvfk79CH13ukqWpGoVAes1FqKR3V3oZxwaWF
e8MFoPfkYd6fZ1Qq46JlMiNNqtf+SjCjDKPD6QSGqwL7nmC3ffrvF7vtM2iqbeZ22z8MKQJV6Nr5
U9SqDghcoG8JBHAEodZFX3o8hHVAf+5yih6WSUsh+jwKP2CZLNrq14qL6JPqr12G3jbG3fZMo8nv
kzw/TrPTk8n0eAIP7+hfXyXnNx/pw3D5BhK0GZnxqJl8M3x8HA8G/+w+6R3VvWbkUXTpqjKiG7vf
9Lgs938eHYCEwIqNhpTIwmu4lF2clKHoFhljZZXGTtrX5ALDZrWQMmHfTgd7B4P5t8+/ff7R5zl+
MZ+/AFBLAwQKAAAAAADiog9LAAAAAAAAAAAAAAAACQAcAGZhc3QveHNsL1VUCQADl7qTWd7Ak1l1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgA4KIPS077IPiIAAAA5wAAACUAHABmYXN0L3hzbC90cmFu
c2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQJAAOTupNZk7qTWXV4CwABBPUBAAAEFAAAAKWOsQ7C
MAxE936Ff6B4YMsME2wgOrutKyI5ceU4Uvl7AuUPWE4n38nvJk1rFPKoGdhMLcAShb8SEPGhUhMX
PJETnocbDjxeouOVXlr9zsULLlQctyJoXLTa1Orb0/pZp0O7gsTMcAQWTpwdYlrVvGtJ2C0EqJnG
BnUFUZp/8P/Q/f6c58+G7g1QSwMEFAACAAgA4KIPS/2iLmSPAAAA7gAAACcAHABmYXN0L3hzbC94
c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRVVAkAA5S6k1mUupNZdXgLAAEE9QEAAAQUAAAA
nY4xDsIwDEX3nsIXKB7YMsMEG4jObuuKSE5cOY5Ubk+gnIDly/9/23qTpjUKedQMbKYWYInCXwmI
+FCpiQueyAnPww0HHi/R8UovrX7n4gUXKo5bETQuWm1q6815P9Lcx7SqeV8tHloGEjPDEVg4cXbY
2641YR8hQM00NgBXEKX5B/InRtZSp+fnRbsT6d5QSwMEFAACAAgA4KIPS7K7xmeHAAAANAEAACQA
HABmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAkAA5S6k1mUupNZdXgLAAEE
9QEAAAQUAAAAzY4xDsIwDEX3nsIXAIu1M0ywUdE5pK5qyYmjxEHt7Uk4BcP/w5e+3vMaEosz1giU
s+YRVhb61YiIL5UaqODVmcPb/MSZ3nc2fLhDq01UrODqiuFepMdOXqNRtOlIdN4sCAhHgguQUGg7
tFuqNnD8OOEFWteG0wyBbNOl8VUH/39ae39hl/sCUEsDBBQAAgAIAOKiD0vC6/XGjAAAAGABAAA0
ABwAZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVU
CQADl7qTWZe6k1l1eAsAAQT1AQAABBQAAADVjjEOwkAMBPu8wh8IFm1qqKADkdoJvsSS74x8DoLf
Q1LwB4rdZoqZ0fJDlEKsALubd5BEebsOEW+mS+aKBwrCY3/BnoeTBJ7pbUtcuUbFRDXwVXVdtOFU
ajLPbVibnKbMJdrRqc67ObKCSmHYAyuvBJ7kQoNy43znJEW2FkswqQ2kPw7xlTXjn/V+AFBLAwQU
AAIACAA4pg9LZTE2sLECAACoDgAAEQAcAGZ1bGxfcmVzdWx0cy5qc29uVVQJAAPcwJNZ3sCTWXV4
CwABBPUBAAAEFAAAAL2XS3PaMBCA/wqjUzuDAdlQAj0xIZNmmjYZTJqjRtgLKNiSK8kpnkz+e1fC
NH1d5RP2ytpvn0K7WC7Z6ip9uF2n716IBWMNmb+Qp+816MY9lVyKqi64FUoO9rYsnFBDpbQlc7K6
usbd6c3dV9IncKwgs5Cj/H6Rpijhma057iCXq0X6CQV7bpixOWhN5lbX8PraJ0Iat09pj1M5tIhS
WYjU5gnXoh3YqNKqAm0FmDB25Kp0OvGntqIQDhRV3O6jvC6rEEhkmqq2Uhyc4kslt0pjuDNwr3TC
vmLQn4Hd+RCYk3BA2XoP7LpQG160S+eVQfL2hN/lkGEwH1Y3Tpr+Ei/ogMZsTQN41P8Tg5Q4PIWO
OnGG0m68iTvDJJ1UQEepoWHOhBYTvzXTpSorJUHa37sq7qZC4m6aN+6mQuJOzog4ZIX8jRl1lpq4
k9QE6apX/8/3IIXrKKe7fWRjOvJNNR18YAvs7TAtfabF9OKNNhkkwc6QMzCJw7vneFtu/OGUGX9n
qLg2Qu4ifI1KbrM9XmsuglTP/0jT4CSpbAf+OMo00CXwyeepwCuuaaTlx2DOgG4JEeYmOwThtLdo
q5soczUQZZqbfRCUBvToGfLoh9K5ibg5jwhNqNYyB1FVbl8yG9E+kXXJNOzQDoPTEWYxGfWJsnvQ
zHsNPrFLHB9WIFHXWgNESTxLZihHdf+ujN0V/jQUWWTXlbfSGXCilcK4kiRzBBW8UbVlfmZjuUBD
yfCbKuoSzHDJLR9ePabDR9h8FnZ4679d+/GuT55BO4PJfHzSWnFjnK3jyZgmWCriCEWrFyTfFM6G
LS8MGpFzi2c2GV3Mx7P7Lz0le4t6Vxvbo5N+Lx7RaRu7SoO1DWrGEjg7sBVHp8xFL2mjty34ofHe
1GgBOyXGz5qGbYX71gf//cefUEsDBAoAAAAAAOSiD0sAAAAAAAAAAAAAAAAFABwAaHR0cC9VVAkA
A5u6k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAACyjD0sAAAAAAAAAAAAAAAALABwAaHR0
cC90ZXN0cy9VVAkAAyS7k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAOWiD0sAAAAAAAAA
AAAAAAAvABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9V
VAkAA526k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAOWiD0vcmG/vNgAAADoAAABRABwA
aHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhl
YWRlci1zdHJpcHBlZC1zdGRlcnIudHh0VVQJAAOdupNZnbqTWXV4CwABBPUBAAAEFAAAACvNS0lN
y8xLTbFS8ApWcA0K8g9SCKksSHUtKsovslIohUkrZBYr5OWXKCTmKeQnZaUml3ABAFBLAwQUAAIA
CADkog9L3Jhv7zYAAAA6AAAAagAcAGh0dHAvdGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNo
bWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItYWx3
YXlzLXN0ZGVyci50eHRVVAkAA5u6k1mbupNZdXgLAAEE9QEAAAQUAAAAK81LSU3LzEtNsVLwClZw
DQryD1IIqSxIdS0qyi+yUiiFSStkFivk5ZcoJOYp5CdlpSaXcAEAUEsDBBQAAgAIAOSiD0vcmG/v
NgAAADoAAABrABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJv
eC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1kZWZhdWx0LXN0ZGVy
ci50eHRVVAkAA5y6k1mcupNZdXgLAAEE9QEAAAQUAAAAK81LSU3LzEtNsVLwClZwDQryD1IIqSxI
dS0qyi+yUiiFSStkFivk5ZcoJOYp5CdlpSaXcAEAUEsDBBQAAgAIAOSiD0vcmG/vNgAAADoAAABp
ABwAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVy
LWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1uZXZlci1zdGRlcnIudHh0VVQJAAOc
upNZnLqTWXV4CwABBPUBAAAEFAAAACvNS0lNy8xLTbFS8ApWcA0K8g9SCKksSHUtKsovslIohUkr
ZBYr5OWXKCTmKeQnZaUml3ABAFBLAwQUAAIACADkog9L3Jhv7zYAAAA6AAAAbwAcAGh0dHAvdGVz
dHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3Ry
aXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItbm8tcmVmZXJyZXItc3RkZXJyLnR4dFVUCQADnLqTWZy6
k1l1eAsAAQT1AQAABBQAAAArzUtJTcvMS02xUvAKVnANCvIPUgipLEh1LSrKL7JSKIVJK2QWK+Tl
lygk5inkJ2WlJpdwAQBQSwMEFAACAAgA5KIPS9yYb+82AAAAOgAAAH4AHABodHRwL3Rlc3RzL2Nv
bnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVk
LXdpdGgtbWV0YS1yZWZlcmVyLW5vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlLXN0ZGVyci50eHRV
VAkAA5y6k1mcupNZdXgLAAEE9QEAAAQUAAAAK81LSU3LzEtNsVLwClZwDQryD1IIqSxIdS0qyi+y
UiiFSStkFivk5ZcoJOYp5CdlpSaXcAEAUEsDBBQAAgAIAOWiD0vcmG/vNgAAADoAAABqABwAaHR0
cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRl
ci1zdHJpcHBlZC13aXRoLW1ldGEtcmVmZXJlci1vcmlnaW4tc3RkZXJyLnR4dFVUCQADnbqTWZ26
k1l1eAsAAQT1AQAABBQAAAArzUtJTcvMS02xUvAKVnANCvIPUgipLEh1LSrKL7JSKIVJK2QWK+Tl
lygk5inkJ2WlJpdwAQBQSwMEFAACAAgA5aIPS9yYb+82AAAAOgAAAG4AHABodHRwL3Rlc3RzL2Nv
bnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVk
LXdpdGgtbWV0YS1yZWZlcmVyLXVuc2FmZS11cmwtc3RkZXJyLnR4dFVUCQADnbqTWZ26k1l1eAsA
AQT1AQAABBQAAAArzUtJTcvMS02xUvAKVnANCvIPUgipLEh1LSrKL7JSKIVJK2QWK+Tllygk5ink
J2WlJpdwAQBQSwMECgAAAAAA6qIPSwAAAAAAAAAAAAAAABEAHABodHRwL3Rlc3RzL2xvY2FsL1VU
CQADqLqTWd7Ak1l1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA66IPSwAAAAAAAAAAAAAAABYAHABo
dHRwL3Rlc3RzL2xvY2FsL2Jsb2IvVVQJAAOpupNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CADrog9L1A6CB3sBAAB0BQAAMQAcAGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5kLWh5YnJpZC1i
bG9iLXN0ZGVyci50eHRVVAkAA6m6k1mpupNZdXgLAAEE9QEAAAQUAAAA7VLBahsxEL37Kx4+lASK
5bbUNoI9OTaEBifs2nWvsnY2K1hrFmmWxoSAf6PQ/py/JLvbFkJDbjm1vQhpePM0781bpOl1qrE0
rqIcwrglgRxqgsvJiyscBXCBQJGbYAlGsEmvULR4rZT6zFWzp6gujBi12GZqS7tPTtSVOXAja4oS
VSlSK+mvFVtTqd9kUXn2dOeitF/hq5MSFAIHLPrzgvfG+WSVzdmy6Ws/S5hzTsn7yRjDdUn9LDgd
vz8hOx1/wHJT5f50/CbYEbgm3yrckTVNJEhJodUY4RmxsWVPMhpiEylc+oKT+1XW6kxeX+dbrLJl
y3pjpExemXfjcwrVwfnb3q1kfDctCjt5Z6fTmRnj/g9fb66zyy/PfcVw9cQUtB25C2SFw2H48DAa
DF6cOuvH6l5zDqS6dlM71cntdzja788+fjiHRhQjzmLHXOEXXOsOp3Usu8WlVFfGUlc6s+yjYLte
ap1JaNXhzflg8T+5/0RyJ7PZX5bcR1BLAwQUAAIACADqog9LM4+Se30BAAB0BQAAQgAcAGh0dHAv
dGVzdHMvbG9jYWwvYmxvYi9zZW5kLWh5YnJpZC1ibG9iLXVzaW5nLW9wZW4tcGFuZWwtc3RkZXJy
LnR4dFVUCQADqLqTWai6k1l1eAsAAQT1AQAABBQAAADtUsFq20AQvfsrHj6UBIpXtIkbFnRybAgN
TpDsutf1ahQtyDtid0RjQsC/UWh/zl9SSU0gtPSWU+hl2R3evJ335s2z7CbTWBhXUwFh3JFA9g3B
FeTFlY4CuESgyG2wBCNYZ9coO7xWSn3hut1RVJdGjJpvcrWh7Wcn6trsuZUVRYmqEmmUDNearanV
M1lUnj3duyjdV/jmpAKFwAHz4bzknXE+XeYztmyG2u8SZlxQ+mGaYLyqaJgFx8OPF2THw09YbuvC
Hw/fBVsCN+Q7hVuypo0EqSh0GiM8I7a2GkgmY6wjhStfcvqwzDud6evrfI9lvuhYb41U6Svzrn1B
od47fze4lSb3n8rSTm1ydlEkCR7+8PX2Jr/6+revGC9fmIKuo3CBrHDYjx8fJ6PRP6fOh7H614wD
qb7dNE71cocdTna7k/OPp9CIYsRZbJlrPMG17nFax6pfXEZNbSz1pRPLPgo2q4XWuYROHd6djub/
k/v2k3txdp4U0zeW3F9QSwMECgAAAAAAHKMPSwAAAAAAAAAAAAAAABAAHABodHRwL3Rlc3RzL21p
c2MvVVQJAAMIu5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAD2og9LezZggucAAABlAQAA
LQAcAGh0dHAvdGVzdHMvbWlzYy9jb3B5LXJlc29sdmVzLXVybHMtc3RkZXJyLnR4dFVUCQADv7qT
Wb+6k1l1eAsAAQT1AQAABBQAAAB1jU9Lw0AQxe/9FHMqjUgmLfiHpRREm4uikkp73kwm6UqSCbsT
wW9v0kYUQeY07/3ee9sse8kMpNbVXIAKWE9H98EQ+txzkN4TQykejqqdQVyubuJkuKW5TZIEGxcI
v7mAJE1nQ4jfu2qGe6n7ZhAfrFrcHnZ44PzRKe5O8Pjdi2esxRbscdpFKvGJK0ufg3931mLqusXV
6joCA0GtOoKMy1f166nDmL+RDfxrGUOerfKCpA0Kh7fUmJ1611Ywv/yJpd42PCpnbM+k8mvwWQqG
i80pMjakfUvqpF3nIjUspnQ0APNo9gVQSwMEFAACAAgAHKMPSxU1NZJ6AAAAvAAAACoAHABodHRw
L3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAkAAwi7k1kIu5NZdXgLAAEE
9QEAAAQUAAAAjY5BDsMgDATveYU/QCDtoRW/IcRVLBmMjJH6/BLlA9VeVjuH2SylEScjqYCqohE+
xAinWYveb4/XGma2+A4h+EI9e8UuQzN2/+1sbk+Ho9JEzQ2ldW7AVBGegIwFq8FNl0niXSHCqGmf
GhNgScd/uip95PO6lywxLz9QSwMECgAAAAAAJqMPSwAAAAAAAAAAAAAAABQAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L1VUCQADGLuTWd7Ak1l1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA76IPSwAAAAAA
AAAAAAAAAB4AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9VVAkAA7K6k1newJNZdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAO+iD0tVp9HMiAIAALQzAAA+ABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLXN0ZGVyci50eHRVVAkAA7K6k1my
upNZdXgLAAEE9QEAAAQUAAAA7drNbtpAEADge55ixKFKpIZ1sA3GEqcEpKgViXAova7XY1jVeK31
opZGkXiNSu3L5Ulqu22EUmiIcInUzgWEtTuesT/tj01/NLoa+TDgMsEIjIIpGjDLDEFGmBoZS9Sg
YtCYq4UWCNzAePQW4qK9zxjLUSy0NEsmEpmFiuuIXYxuBvwDDooW8FGaGaDWSkO/+rxQcy7T3jA4
V0Lx6tiPQ3CuIuy12hY0bmZYxYf71de1YPerbyDUIonS+9UXAyGCyjAtsg5R8EWOYGaoi7xzSBXk
CzGrgjQbMM5RX6ax6t0OgyL33m65v4ZhUH5fczPr7dB2nEaok6VMp1VVPetTJw67sXPmxWFswe2j
+q+vgsv3v9cPjeFa8lD0iKRGYZReNu7umkdH7J1KFnPM2QU3nPUnAZtg+EYaFlT3p/x1rjSysjvP
JCvTq651cz4/du0T8CE33EgBoVIJ/Gzu+2U7389n5QUeYZZwUVV2LFSaG5jcDHw/MLqoDl6dHPVJ
zd9V4zmtKIxIzVNqfjXNGc+y4rZNZby/nodQh7CzoYInDW3ps8VSy+1YXRqByFItljzH7pAlsrS/
JaflxpZHlshSPZaiNlna3dJcfZZJwuvRtBbssJ7WTvwMUY96/cGUbZMpMlWnqbbltsgUmarRlNsV
okumyFR9prwzm3u0z6O1eQ1r88ISPcskS3VZcrlFlna39FDwaaz0aaT5dFqedm9Ym+MeVtnmHJ5B
bnuArWutM4xoT0j+Xsgft1vtGMkfzaW1PDPFDu0byVINlopxyek4ZInmxZebF7kgf+SP9gXk7z/0
Z9m2R+Mf+Xshf55jW/SunPYStexLLZfT/8LIUi3vC1zH5eE/Zuk7UEsDBAoAAAAAABOjD0sAAAAA
AAAAAAAAAAAqABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQJ
AAP2upNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADwog9L+8/PB7YAAAD4AAAAQgAcAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Jsb2NrLWZhdmljb24tc3Rk
ZXJyLnR4dFVUCQADtLqTWbS6k1l1eAsAAQT1AQAABBQAAABFj0GLwkAMhe/+ihzbS1Pdg5KrurC4
rFBBz2MbdwfGpptJ69+3UxUJPHjwPV7etqr2FcGn84EbMIFoTg2CuAYuouBracEZ9Brgz6wjxPli
WZTjzWlVliVefaxROUqvNUe8uCFlilEgY1VRgh8xcCHI7VGh/N9zNHiF8hkeJfTXMb1x5nB7OuCJ
zztveJiA5NaijOktVkwF+DXK9+SLuuuy1UcOBIP4Bp400RshmnYl49vfLJ/dAVBLAwQUAAIACAAT
ow9LY6qsbIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA/W6k1n1upNZdXgLAAEE9QEAAAQUAAAALY1B
CsMwDATveYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePI
ku4xxmDIlxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKO
za8xRJuC7GpN1PGavlBLAwQUAAIACAATow9LY6qsbIIAAACoAAAAUgAcAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0y
LXN0ZGVyci50eHRVVAkAA/a6k1n2upNZdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgV
hb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/+
+0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC7GpN1PGavlBL
AwQUAAIACAADow9LvWxBxa0AAACkAQAAOgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3Jp
Z2luLXdlYnNxbC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA9W6k1nVupNZdXgLAAEE9QEAAAQUAAAA
3Y/LCsIwEEX3fsUs24VGEDdBBNGsRAoV23WSjhBIZ8KY+Ph7H+hPuLsXzrlwTds2rYYTWRcRMkMu
QsAEgbzgiJRtBFsyT6/WlzJCNQfiDJYARVjqieo4lhEvamezVaY/qh7dPmR15CIe323LgurAQ4kv
7IZueJHOXvCjvMPMp1QtlosaNJi7x5QDUyOrK4dhDd8FrX+41gnlzDI2CWlDQ4cSzo/KMcd6Yv7u
0RNQSwMEFAACAAgAA6MPS4AYDaanAAAA0gAAADIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi13ZWJzcWwtc3RkZXJyLnR4dFVUCQAD1rqTWda6k1l1eAsAAQT1AQAABBQAAAA1zM0K
wjAQBOC7T7HH9qARipcggmhPIoWK9pykWwiku2GbVH17f9DbDHwzdds2rYYrGRsQEkPKQsAEnpzg
iJRMAJMTL2fjch6hWANxAkOAIizlQt045BEndTTJqLq7qA7tySd14SwOP+3AgurMfQ5vdkfbv6U1
E34nn7ByMRbVpipBQ/1wGJNnamQ7s+938HvQ+s+1jigDy9hEpD31NxQ/PAvLHMrFC1BLAwQUAAIA
CAAYow9LgBgNpqcAAADSAAAAPwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1sb29zZW5lZC13ZWJzcWwtc3RkZXJyLnR4dFVUCQADALuTWQC7k1l1eAsAAQT1AQAABBQAAAA1
zM0KwjAQBOC7T7HH9qARipcggmhPIoWK9pykWwiku2GbVH17f9DbDHwzdds2rYYrGRsQEkPKQsAE
npzgiJRMAJMTL2fjch6hWANxAkOAIizlQt045BEndTTJqLq7qA7tySd14SwOP+3AgurMfQ5vdkfb
v6U1E34nn7ByMRbVpipBQ/1wGJNnamQ7s+938HvQ+s+1jigDy9hEpD31NxQ/PAvLHMrFC1BLAwQU
AAIACAAYow9LgBgNpqcAAADSAAAAQwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9j
a2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLXN0ZGVyci50eHRVVAkAAwC7k1kAu5NZdXgLAAEE9QEA
AAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKFivacpFsIpLthm1R9e3/Q2wx8M3XbNq2GKxkb
EBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs5ULdOOQRJ3U0yai6u6gO7ckndeEsDj/twILq
zH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pkO7Pvd/B70PrPtY4oA8vYRKQ99TcUPzwLyxzK
xQtQSwMEFAACAAgAJqMPS2BLZhCRAAAA+wEAAEUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1E
RU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50eHRVVAkAAxi7k1kYu5NZ
dXgLAAEE9QEAAAQUAAAA7Y4xDoMwDEV3TuELhASWVplh6NKeAQVTIpkksp0Kbl869AYdq7++r/dC
3kqkSWNOgMyZPSyREFbV4q3t+kvrznX+6pyzgqFy1MPuImYY77dxMLuQmXOoGyY1X+DB8RlTu28E
FBNCD0j4IUD0IJQVUZvz6V/Icro95EQHdK2DBSetjAITI0gtJbPi3IR/6I9D31BLAwQKAAAAAAD3
og9LAAAAAAAAAAAAAAAAEwAcAGh0dHAvdGVzdHMvc3RvcmFnZS9VVAkAA8K6k1newJNZdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAPeiD0uAGA2mpwAAANIAAABFABwAaHR0cC90ZXN0cy9zdG9yYWdl
L2NhbGxiYWNrcy1hcmUtY2FsbGVkLWluLWNvcnJlY3QtY29udGV4dC1zdGRlcnIudHh0VVQJAAPC
upNZwrqTWXV4CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2oBGKlyCCaE8ihYr2nKRbCKS7YZtU
fXt/0NsMfDN12zathisZGxASQ8pCwASenOCIlEwAkxMvZ+NyHqFYA3ECQ4AiLOVC3TjkESd1NMmo
uruoDu3JJ3XhLA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dqZDuz73fwe9D6z7WO
KAPL2ESkPfU3FD88C8scysULUEsDBAoAAAAAACyjD0sAAAAAAAAAAAAAAAAaABwAaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9VVAkAAyS7k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIACyj
D0u9sWhzsQAAAAEBAABBABwAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9wb3N0LWJsb2ItY29u
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
OHA2Sl8HnGL1GqAteSY8YhTLfZnhU7GdEetuwHQiKL/WmGDlr4V/lUWGiUkQ49B04ebYlYiz3SkZ
caEmPCVsomAI0zVhK/qvlXOjfDhgIRy7+rTbEsJlzkdwmg5+vx2448n1YHw+PP2GvoxHvf5gGzjS
yp23yEb3Z48l45+pUBmOda+B3n7oHh29yw3vbeHMhHu18ea4tcUHdW+sN6gHS0JsmRKPBtQzt2y5
kIokKBVc5bdPB5Cr3qohpPD+jxZqq73UDZvz9sF5cHT/5AdwCf4vFrZ6xX8BUEsDBAoAAAAAADOj
D0sAAAAAAAAAAAAAAAAJABwAaW1wb3J0ZWQvVVQJAAMxu5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBL
AwQKAAAAAAAzow9LAAAAAAAAAAAAAAAADQAcAGltcG9ydGVkL3czYy9VVAkAAzG7k1newJNZdXgL
AAEE9QEAAAQUAAAAUEsDBAoAAAAAAEajD0sAAAAAAAAAAAAAAAAgABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9VVAkAA1O7k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAJWj
D0sAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIvVVQJAAPqu5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAA1ow9LRmgb25kAAADFAAAA
SAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmN1cnNvcl9p
dGVyYXRpbmctc3RkZXJyLnR4dFVUCQADNbuTWTW7k1l1eAsAAQT1AQAABBQAAABdjrEKwjAURfd+
xRvbxSCKQjZtO4iK2IAdJU3eEEj7QvpS/Hxr6eR44ZzDrZvm0Ug4MWMfGJhA20kPBkGDoT54ZLRg
UhwpZuJFPvU4ikqzFnWrRIvd1bFQlKLB3yoporiTTX7G3GDxg9Z2YsQ4YRTqeXOMl+pcLsGNCSHf
bY8FSOiIPKwBKWdELYqUf46U68E8uYEP+zcX2RdQSwMEFAACAAgARKMPSx3RjyajAAAATwIAAEYA
HABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJmYWN0b3J5X29w
ZW4xMS1zdGRlcnIudHh0VVQJAANPu5NZT7uTWXV4CwABBPUBAAAEFAAAAO2PsQrCMBRF937FG9vF
IIpCNm07iIrYgh0lTd4QSPtC+lL8fGvp5Bc4OF4453JvWVW3SsKBGTvPwATKjKrXCAo0dd4howEd
w0AhEQ9yscNBFIqVKJtaNNieLYuaYtD4STkFFFcy0U2Y7Q2+0JhWDBhGDKK+XyzjqTjmc+FKe59u
1vsMJLREDpYCKSeknhUpvxwpl4FptD3vtk/OkvJ/4kdOvAFQSwMEFAACAAgAR6MPS0ZoG9uZAAAA
xQAAAEMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRl
eF9jb3VudC1zdGRlcnIudHh0VVQJAANWu5NZVruTWXV4CwABBPUBAAAEFAAAAF2OsQrCMBRF937F
G9vFIIpCNm07iIrYgB0lTd4QSPtC+lL8fGvp5HjhnMOtm+bRSDgxYx8YmEDbSQ8GQYOhPnhktGBS
HClm4kU+9TiKSrMWdatEi93VsVCUosHfKimiuJNNfsbcYPGD1nZixDhhFOp5c4yX6lwuwY0JId9t
jwVI6Ig8rAEpZ0QtipR/jpTrwTy5gQ/7NxfZF1BLAwQUAAIACABHow9LRmgb25kAAADFAAAARAAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2NvdW50
Mi1zdGRlcnIudHh0VVQJAANVu5NZVbuTWXV4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFIIpC
Nm07iIrYgB0lTd4QSPtC+lL8fGvp5HjhnMOtm+bRSDgxYx8YmEDbSQ8GQYOhPnhktGBSHClm4kU+
9TiKSrMWdatEi93VsVCUosHfKimiuJNNfsbcYPGD1nZixDhhFOp5c4yX6lwuwY0JId9tjwVI6Ig8
rAEpZ0QtipR/jpTrwTy5gQ/7NxfZF1BLAwQUAAIACABHow9LRmgb25kAAADFAAAARAAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2NvdW50My1zdGRl
cnIudHh0VVQJAANVu5NZVbuTWXV4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFIIpCNm07iIrY
gB0lTd4QSPtC+lL8fGvp5HjhnMOtm+bRSDgxYx8YmEDbSQ8GQYOhPnhktGBSHClm4kU+9TiKSrMW
datEi93VsVCUosHfKimiuJNNfsbcYPGD1nZixDhhFOp5c4yX6lwuwY0JId9tjwVI6Ig8rAEpZ0Qt
ipR/jpTrwTy5gQ/7NxfZF1BLAwQUAAIACABWow9LRmgb25kAAADFAAAASQAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3JlX2NvdW50LXN0ZGVy
ci50eHRVVAkAA3O7k1lzu5NZdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28UgikI2bTuIitiA
HSVN3hBI+0L6Uvx8a+nkeOGcw62b5tFIODFjHxiYQNtJDwZBg6E+eGS0YFIcKWbiRT71OIpKsxZ1
q0SL3dWxUJSiwd8qKaK4k01+xtxg8YPWdmLEOGEU6nlzjJfqXC7BjQkh322PBUjoiDysASlnRC2K
lH+OlOvBPLmBD/s3F9kXUEsDBBQAAgAIAFajD0tGaBvbmQAAAMUAAABKABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfY291bnQyLXN0ZGVy
ci50eHRVVAkAA3O7k1lzu5NZdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28UgikI2bTuIitiA
HSVN3hBI+0L6Uvx8a+nkeOGcw62b5tFIODFjHxiYQNtJDwZBg6E+eGS0YFIcKWbiRT71OIpKsxZ1
q0SL3dWxUJSiwd8qKaK4k01+xtxg8YPWdmLEOGEU6nlzjJfqXC7BjQkh322PBUjoiDysASlnRC2K
lH+OlOvBPLmBD/s3F9kXUEsDBBQAAgAIAFajD0swPYU3nwAAAIoBAABKABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfY291bnQzLXN0ZGVy
ci50eHRVVAkAA3O7k1lzu5NZdXgLAAEE9QEAAAQUAAAA3Y+xCsIwFEX3fsUb28UgikI2tR1ERWzA
jpImbwikfSF9KX6+tXTyExwvnHu4t6rrey3hwIxdYGACbUfdGwQNhrrgkdGCSXGgmIkn+dThIErN
WlSNEg22F8dCUYoGv+lEEcWNbPIT5nqLb7S2FQPGEaNQj6tjPJfH0yxcmRDyzXpfgISWyMMikHJC
1FyR8qcj5TIwT67n3fbFRVb9w4kPUEsDBBQAAgAIAFmjD0tGaBvbmQAAAMUAAABLABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfZGVsZXRl
NS1zdGRlcnIudHh0VVQJAAN5u5NZebuTWXV4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFIIpC
Nm07iIrYgB0lTd4QSPtC+lL8fGvp5HjhnMOtm+bRSDgxYx8YmEDbSQ8GQYOhPnhktGBSHClm4kU+
9TiKSrMWdatEi93VsVCUosHfKimiuJNNfsbcYPGD1nZixDhhFOp5c4yX6lwuwY0JId9tjwVI6Ig8
rAEpZ0QtipR/jpTrwTy5gQ/7NxfZF1BLAwQUAAIACABjow9LRmgb25kAAADFAAAATgAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYnRyYW5zYWN0aW9uLW9uY29t
cGxldGUtc3RkZXJyLnR4dFVUCQADibuTWYm7k1l1eAsAAQT1AQAABBQAAABdjrEKwjAURfd+xRvb
xSCKQjZtO4iK2IAdJU3eEEj7QvpS/Hxr6eR44ZzDrZvm0Ug4MWMfGJhA20kPBkGDoT54ZLRgUhwp
ZuJFPvU4ikqzFnWrRIvd1bFQlKLB3yoporiTTX7G3GDxg9Z2YsQ4YRTqeXOMl+pcLsGNCSHfbY8F
SOiIPKwBKWdELYqUf46U68E8uYEP+zcX2RdQSwMEFAACAAgAj6MPS7j6yKGpAAAAKAYAAEsAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9yZXF1ZXN0LWV2ZW50LW9y
ZGVyaW5nLXN0ZGVyci50eHRVVAkAA927k1ndu5NZdXgLAAEE9QEAAAQUAAAA7c8xC8IwEAXgvb/i
xnYxiKKQTW0HUREbsKOkyQ2FthfSS/HnW0snd7eMB+897ivK8l5KODBj5xiYQNtR9wZBg6HOtcho
wQQ/kE/Ek9rQ4SByzVoUlRIV1peGhaLgDX6vE3kUN7KhnWJNb/GN1tZiQD+iF+pxbRjP+fE0D66M
c+lmvc9AQk3UwjIg5RRRc0XKn46Uy4NpaHrebV+cJUVERERERERE/AvxAVBLAwQUAAIACACRow9L
MD2FN58AAACKAQAAWAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERC
L3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLXN0ZGVyci50eHRVVAkAA+K7k1ni
u5NZdXgLAAEE9QEAAAQUAAAA3Y+xCsIwFEX3fsUb28UgikI2tR1ERWzAjpImbwikfSF9KX6+tXTy
ExwvnHu4t6rrey3hwIxdYGACbUfdGwQNhrrgkdGCSXGgmIkn+dThIErNWlSNEg22F8dCUYoGv+lE
EcWNbPIT5nqLb7S2FQPGEaNQj6tjPJfH0yxcmRDyzXpfgISWyMMikHJC1FyR8qcj5TIwT67n3fbF
RVb9w4kPUEsDBBQAAgAIAJWjD0tGaBvbmQAAAMUAAABGABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIvd3JpdGVyLXN0YXJ2YXRpb24tc3RkZXJyLnR4dFVUCQAD6ruT
Weq7k1l1eAsAAQT1AQAABBQAAABdjrEKwjAURfd+xRvbxSCKQjZtO4iK2IAdJU3eEEj7QvpS/Hxr
6eR44ZzDrZvm0Ug4MWMfGJhA20kPBkGDoT54ZLRgUhwpZuJFPvU4ikqzFnWrRIvd1bFQlKLB3yop
oriTTX7G3GDxg9Z2YsQ4YRTqeXOMl+pcLsGNCSHfbY8FSOiIPKwBKWdELYqUf46U68E8uYEP+zcX
2RdQSwMECgAAAAAAM6MPSwAAAAAAAAAAAAAAAC0AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL1dlYkNyeXB0b0FQSS9VVAkAAzG7k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAA
AGejD0sAAAAAAAAAAAAAAAA5ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJD
cnlwdG9BUEkvZ2VuZXJhdGVLZXkvVVQJAAORu5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CAAzow9LjzQacEQAAACgCQAAXAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2Vi
Q3J5cHRvQVBJL2dlbmVyYXRlS2V5L2ZhaWx1cmVzX1JTQS1PQUVQLndvcmtlci1zdGRlcnIudHh0
VVQJAAMxu5NZMbuTWXV4CwABBPUBAAAEFAAAAHPOL81JUcjLL1FIT81LLUosSVVIVMhOrVQoSMws
0lEoLkksKS1W0DUxNjDhch5VO6p2VO2o2lG1o2pH1Y6qHVVLc7UAUEsDBBQAAgAIADijD0tUAsmy
NgAAAMACAABlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkv
Z2VuZXJhdGVLZXkvZmFpbHVyZXNfUlNBU1NBLVBLQ1MxLXYxXzUud29ya2VyLXN0ZGVyci50eHRV
VAkAAzu7k1k7u5NZdXgLAAEE9QEAAAQUAAAAc84vzUlRyMsvUUhPzUstSixJVUhUyE6tVChIzCzS
USguSSwpLVbQNTE2MOFyHlU7qnaQqQUAUEsDBBQAAgAIAFmjD0vhgoboSQAAAGAMAABXABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvdGVz
dF9mYWlsdXJlcy5odHRwcy1zdGRlcnIudHh0VVQJAAN6u5NZeruTWXV4CwABBPUBAAAEFAAAAO3K
wQmAMBBFwbtV/AIUBNNBKllwEVESSTYHu7cDK3hznlzHvavU0OHFm4XLdPmrx842q4fF6FrStqYp
c7lcLpfL5XK5XO7P/QBQSwMEFAACAAgAZKMPS480GnBEAAAAoAkAAGAAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVz
X1JTQS1PQUVQLmh0dHBzLXN0ZGVyci50eHRVVAkAA4u7k1mLu5NZdXgLAAEE9QEAAAQUAAAAc84v
zUlRyMsvUUhPzUstSixJVUhUyE6tVChIzCzSUSguSSwpLVbQNTE2MOFyHlU7qnZU7ajaUbWjakfV
jqodVUtztQBQSwMEFAACAAgAZ6MPS1QCybI2AAAAwAIAAGkAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQVNT
QS1QS0NTMS12MV81Lmh0dHBzLXN0ZGVyci50eHRVVAkAA5G7k1mRu5NZdXgLAAEE9QEAAAQUAAAA
c84vzUlRyMsvUUhPzUstSixJVUhUyE6tVChIzCzSUSguSSwpLVbQNTE2MOFyHlU7qnaQqQUAUEsD
BAoAAAAAAEijD0sAAAAAAAAAAAAAAAAmABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9VVAkAA1e7k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAEajD0sAAAAAAAAA
AAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvVVQJAANT
u5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAABNow9LAAAAAAAAAAAAAAAALwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvVVQJAANiu5NZ3sCTWXV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACABGow9LgFS64QsCAAC9DAAASQAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1vcmlnaW4uYW55LXN0ZGVyci50
eHRVVAkAA1O7k1lTu5NZdXgLAAEE9QEAAAQUAAAA7ZZbb9NAEEbf+RV+ad4m3pv3EilCVkgLEpBK
gedqL7NJhJuNYiPov2fdqoVEoKZECFAq+8m25lsfHc3MZPZ+Pns7Ld5N5/P6YjoqZtvVYrUull23
GZVlk7xtlqntRloTUqzaYp26wjZN+oKhcDdF7T22LUzSutumBur+DdzVGL6Y7Bc/x84vi/ryTeHt
uq/UJBvusyhTQ5IveptVxv7b0m5W5Rbb9Hmbc8rNFmOzWiy74ebmZZc+4XpcCWsVZwyMJgGEcBEs
pwjcKye8YZXldnBtv17ZBY7JIN0ebdxHnvH6jJ3n+yE4P+mjB7f/d3WN3TKFdnwx/TD8s1j+HvOd
LHooc8GUs9pEYJErEFJy0JoyQKORR20xEP8I84fgO+b0hJjveH4wc9TSoZcUeIwme84JaKay7F75
IH0QjqqneX4yzNsd6CazOxS6JEZXhipQhmXRhXZgmZBQeRWYk0xE/wvo7U+p99mnRP172FOoV2h9
xQQBSSXL7SUDN4bkDi+ljypQppV8jPqP/eWUqP/2HI3SVugiBWkqnqFbB9l5DXm2Ksm4pCTQ4+bo
5Wz+DH3fdGJQRgvIVV5eKi/AOIG5v3DvLOdCC3Ec9NfT+tXwv+OCkoRgkYJB7UEEpsFwq0ETNC6b
an3QR8r48dnFvQZAKqJMFOBlyA1ACZ9dzAOPOFQyL9kmeP2PLdLfAFBLAwQUAAIACABJow9L97QN
AdgCAACYEgAAUwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Nv
cnMvY29ycy1wcmVmbGlnaHQtc3RhdHVzLmFueS1zdGRlcnIudHh0VVQJAANZu5NZWbuTWXV4CwAB
BPUBAAAEFAAAAM2XTWskRwyG7/kVffJNnvqQqkoGE5bFGwJJdsE/wKhUpbXJrGdwj8nm30dzyJ4D
DaHpPjRNU/RTH49effz8x+Pn3x6W3x8eHz/88nC3fJoXfV4+fPl1UXl9PV2W40nG8ny5nO8Oh5jq
bfAr3rUWwsGu3x7k/HJ4m+vp/U3neji/TTu+fH2+3J7//vly+nO+3ov2jHkY5FEFUEeHPidCjCMR
xWmh2M03+f4kX+d9uJHj8fTX0/OUMd/W++9gJx8Yfox78+Ppab3I5X29zyHcLl/+fbv4v5xPr+tc
XtblCrC+q//Yau/Hnz7+D7S1qZbADUadBNjyBLapUKRXTbUG1LmNNu6INk5hC5SgMAbA1Aw4W4bk
02BZI6Zct9GmHdG2xBJTJ9BhE3DqgEbWgFjVqPpaq2yjzTuiTQ0zTiMoQf3cmoOyWQfVUTFrxyYb
dzLuiNZGKWNyAKPYAKNbijEhdBIKUTUV20hLO6Idpc80xGlHUMASDVpGdPhsJCLUM22jLTuiDbEg
Skl+ZEN0J6cJvaYAPgHCNKfEgdto6552spReC7mOdTqtpghyFfPsM7uuzG/eRtt2RItoxKl4nAi+
iZGiAo8+QNzFMoomHGMLLe4qXaRQOCFmqEjdzy0jcJECNRStLY2MYSPtntJFtuRALUIPZbiTuQB3
YjBlxW69CodttHtKF5WNyggJSN1NWKyCVMpAHptHI0lIbRtt3lVynNcAkUFEr6ryUuveUui5t9S0
tSa0jXZP6SIGZO8FEqTmjNiu3C1MkFjrUCoasGyj3VO6yINyi97sWc9OG7NnKW8BIVDjlMrokTdV
INqVpbT3mMl13Ji8AvVEbqlrlpo4ZKZgzLaNdlc90JzMPQ4I89rxDWbopXaojJg0RC+5so12T5bi
MYT0Wmrb9PjITOCbd0DM1pRLrrG0bbR7slSqkgv16paqCJhrArHi9daqGs7qyx630f5XS/0DUEsD
BBQAAgAIAEqjD0vD7rlFmQEAAN4FAABMABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC5hbnktc3RkZXJyLnR4dFVUCQADW7uTWVu7
k1l1eAsAAQT1AQAABBQAAADN1EtrGzEQAOB7f4VOvY1XWr0NoSzutinkRe3SY5mVRlnT7a7rVWj8
7ysnlx4MyaEEo9tohOZjNFrd3qxvr1p23a7Xzed2yT5RDj1r7r6wgOM4ZTZMGFmf825ZVaK2C16W
WDrHeZWOuRXuttWe5ulhH2iudntKw/a+z4vd4UOeftJ4EYOKQTsOUoYAKsgEyIMFlIhEspPCdO9/
4eMPvKcLvmDXlPspso/tVbtp2XZmxzJwGKY/FFl3YE0oF82wmsa8nwZojjvwfGhevFu9gUjGmkRN
CGS8BcWNAfQ2glS1CsGSMEafEN1925wlR2vjKHEDgQsFSsfSINQWfMcjR68dRn6K02xWl2cJiqbm
dUIHylsOKilZLMZDiNrLiK5LxpwA3bTfz5KTOu2M9w4c6mJKQkIXlQEeNBqTnLDW/8v5Sr8faM6s
J4y0Z2lLQ2SPkEsMnmPitc7Lp/Q3ctbJRalrW2CpjJWqy1gpI8pjDJ1P3KWk6xedx/ppzLA57Ogs
laWALiTOwQg0oFz0Rek1pCQiCRJWRfefPo+/UEsDBBQAAgAIAE2jD0vtvl99zgIAAL8TAABVABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXJlZGly
ZWN0LXByZWZsaWdodC5hbnktc3RkZXJyLnR4dFVUCQADYruTWWK7k1l1eAsAAQT1AQAABBQAAADt
l9uK40YQhu/zFLpZ35Vdfe4eMMEMs0kgyYbMAyzVXaW1iWNNLA27+/YpbdidhTEmEF8kGSPRkloH
ik//X1V9++bn+zc/3nU/3d3fb767u+ley9S23eaXH7pGh8MwdfuBuNtO08PNamVsWqJu5iZnxFU/
P7uih93qKOPweGwyrh6O0u9377bT8uHjt7/Th7f0Tta4mIbf5LAuEYWTbVC5OPDRWCg+OmCThbNk
71teHIV3R2nT23Gi6XFcOzSL/dBo2g2H9RzIK7d5ZV/r/iUcnZkD0qlPIelRg9KxDcdRD8ulDl9C
1POvg1y04fEwrc2y+1X+eJRx6rZCLMeu38meuw/w3rVuN3YzC9rvh/fCXf3YbZp+aoTb4TAdhz1s
5jvw/ac3x+U3t5fG+hnKTPUvlpmsOMQI1YQAPhWEkmsBHxSYNdXZ3iyefsDfpzrP7rfDOP0Tqv81
mhh6lIANXCnKsEUECuIhcKvJssfc4iVomv8hzfOWJ+bMvYGKGcGTIyBXE8SICW3KnhOfwGmvln8u
UhKjpjYJauoFfOndbH71fWRLnksR5XZOpPZq+SeahXO1FHooTrIqkzWV9liBHRIGDs3QRWi+OMtH
ctknMiCmVPDGWsjORrAcNBfYEBDrCZzuavnnIjXR19x7C+hR06ed6z06hBawhIgxUcazInVXyz/R
FCmhBWraehYdnEftRGuA0hIVW2upRJeg+eIsn2whabUCJtLGvmmLT2RYLU+pz1GMOHcCZ7pa/rlI
YzBsTG3Q98zge2sgR+sgMrXUE1dj2lmRpqvln2ham0nlGLSsBy1G7BjINAHTozb8mkab50vQfHGW
z7E2FWgBCVZlqkt7KNYmKJpIA2GK2E419vlq+RNVnkttrepyMxkCn7V3qk4vHQddMDVyTtxZkear
5b9eyzthiirKgF4bezQqyhIhh+xdk9hrpb8EzX+B5f8EUEsDBAoAAAAAAEijD0sAAAAAAAAAAAAA
AAAuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9ub3NuaWZmL1VUCQAD
WLuTWd7Ak1l1eAsAAQT1AQAABBQAAABQSwMEFAACAAgASKMPS80PIN+bAAAAxgAAAEgAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL25vc25pZmYvcGFyc2luZy1ub3NuaWZm
LXN0ZGVyci50eHRVVAkAA1e7k1lXu5NZdXgLAAEE9QEAAAQUAAAANY2xCsIwFAB3v+Jtmdp0LNmk
BhGsHergGtNXEwhJyHu1+PcWsetx3HXDbRyuGno9jsezVnDyE8TEEJKZgGzxmcEwCMeclZQhWRNc
IlZt2zRyRrZOxkTRz7MsSGkpFmkn1ZIzFmsIa0OeBDzRmoVwO8Q93l96DfzJSGAK/t4mhLTiBKvD
COJRdSkyRq7um6Xg3xbgCV7+jbE+fAFQSwMEFAACAAgASKMPS/JyZqOrAAAA6gIAAD8AHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL25vc25pZmYvc2NyaXB0LXN0ZGVyci50
eHRVVAkAA1i7k1lYu5NZdXgLAAEE9QEAAAQUAAAA1ZCxDoIwFEV3v+JtTFBHQmKMQWJMRAYcXGt5
SE3TNn0Pkb8XjX4CA/O9Offk5tW5rk4FlEVd7w5FBnvdgHUMxskGSAXtGSRD1DH7TAjjlDSdI87S
dL0WLbLqhHVkdduKgOT6oJDEgxI/bnn0uInghkr2hBPW/onlsSzgExPIgN9BaYwbsIGhQwvRNc6d
ZbQcX6ZWBr+JCDTBXT/RJqt8dvXXIt2XfLiY7/I3UEsDBBQAAgAIAEijD0tSOB/vrgAAAPYCAABD
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9ub3NuaWZmL3N0eWxlc2hl
ZXQtc3RkZXJyLnR4dFVUCQADWLuTWVi7k1l1eAsAAQT1AQAABBQAAADVkLsKwkAQRXu/4napdC0l
ICIxiGBMsRa26zpxA8tsyEzU/L0P/AUL+8u5h1PUB1vvS1SltettmWPTXsBJ0bleCKJjJAlECqfI
gmqXGxOTdzEk0XyxmM9NQ+qD4STcNo3pSdLQexLjRWbdmOFM3g0vGCdGYS2qXVVCx44ErqfPm4sx
3emCeyBGdpoWiZVYp8fXKscXnaEVXNsb8WxS/Nx79TZcPv5b/8/jmx/lfwJQSwMECgAAAAAA3KMP
SwAAAAAAAAAAAAAAAAoAHABpbnNwZWN0b3IvVVQJAANwvJNZ3sCTWXV4CwABBPUBAAAEFAAAAFBL
AwQKAAAAAADQow9LAAAAAAAAAAAAAAAADgAcAGluc3BlY3Rvci9kb20vVVQJAANYvJNZ3sCTWXV4
CwABBPUBAAAEFAAAAFBLAwQUAAIACADQow9LV34VnikgAAA11QAAMgAcAGluc3BlY3Rvci9kb20v
ZG9tdXRpbGl0aWVzLXBhdGgtZHVtcC1jcmFzaC1sb2cudHh0VVQJAANYvJNZWLyTWXV4CwABBPUB
AAAEFAAAAOxd63PbNrb/vPkreCfTGfqO0+BJAKrrUfxKnObV2Ena7exkZIm2daNIHkpO4mlv/vbF
izRJgQIh2t39oJ1ZVYFgnBcInPPDOeCrWTTMBvPLaDK7iM5n19OR/Myig+vPV2/T6SjNTrM07WGI
hfjxwYP5YjS7XvT0lzTL5JcHD54s5N8OcTSeRnvyy6foYdKLvgwm49FgMZ5No/PBeJKOelE8X8iG
4cfhYL7YeTUbpf+7G0+vJ5OrRbYV/Rw9kh8/R3E6XWQ3V7PxdPFo98sgGw/OJun8yeJZOhj9KEcf
TOKx6t1HGGxF8eP3s8n153T++GCwGDw+/HDy+EN69st48fhkdp0N08fPB18GJ8NsfLXYn2Xp49H5
xeODo6fvDXPpj8Orq56AWz9qIRbjz2k0O9f8XmeplE121cr4mEpxruUfPJmOPmSDq4c709mjS6m0
3d4f4BukjCcUD8CjXfWPAYFnJDX/QGdJAtIEbEdyqKPr6VApZH8wmWxHhPAoPllk4+HipdTF1r96
D6LoaPxNix4pVaW9aC+V5NO89afoaJZ97kWnl5nURjraf3PyU/RuOj4fD42m7V89nczOJI0b/VM6
+il6m55HQ2naYtzDL2l2s7gcTy+O5y/GX1JJ+kl2IRU5Xcy1xGfKkMqOfYQk9/IT6k+kP7H+JPqT
6s9EfzL9yfWnaBgTyDHViHo8+X81lhpJjaNGUWOoEcSDB3Y2gSg+Gz4EW3IGvT55Gy0G2UW62JLD
H35Lh9dacC1cL4I/Av0/+dubLB2lw3Q+n2VzpdmT62H+r+ghlA0Hs8/jqVTGKDq7kU3ZbLaQpEo/
qI5A9o0eoughjh6S4rfpMI2Ostl0MU6zXiSbjxdppodq+P1kYcaT5r4eLuTcmj/J0g+DxfAyHW1H
+9dZJpU0udk/evJuKk07vFSTXv7d+0E2t3OgF+2kn68WN7uK3FTSm6dDRbHSRWpG9OKD2bX88+PP
V5LQq8H0r9PZ1V+H6m+3o9PXb/THlurK23dl7bsm7bvS9l1J+664fVfUvits3xW07Cpnd0BX2L4r
at8Vt+9K2nel7bsm7buy9l15+64iwAQh5gqwFwwwGAywGAwwGQywGQwwGgywGgwwGwywGwqwGwp5
zgLshgLshgLshgLshgLshgLshgLshlrazex+0Yvx9NPcbmx9YXatPjdbUp+Z/aafmM2kT81O0Sdm
G+hjs8b3kVnA+9Cszn21y0egtxPB3qPdf5yki9xPiaVLNI8HW9vR257cs4ef4kdE/uND72Q8SvUm
vh1pVySKrqR/IV036UFJp206mKghoWvI4/nR5HquN3rFRbz3fSd3BHcf25+en0iP9DoNpWuHUaSR
nzSK97/vvD77P+k3dCT8enGZZnIkRRj7CeP44PuO8nSnFx0Jm0HkvFCUiZ8yiQ/vgzL1U6bx0fed
vdlskg66mlmNoqgmfqpJ/PSuqTI/VRY/u2uq3E+Vx8d3TVX4qYr4+R1ThcVC9PxkfzaVAZok+vzk
rzdycZSO/rYM8Ebp+XiqGKgMr0dUA8hl53+AGuDl7MszGSbG+5fp8FPv3XRxcyXj7j6U4dbL6/ni
aTrd1k7nKj73Zex4JqOLw2/jRYlGeX15oaNwBxE1dvzLd79azD+gFWI7UsSOpxoyqOro1Wyq4iDp
9ISJCMNErHKgCJKW8sL4RWt5UXt5aaC8qKu8SUt5Ufyytby4vbwsUF7cVV7eRt7So69oxq9ai07a
iy4CRScdRUegpalJ/Lq1vLS1vCh0taJd5W27dNH4TWt5k/byhi5dSVd52y5dSfxra3lZe3mpZzv7
kA4+9Ywb2ovAN4hHlAxHGERfx4vL6Ox6sUiz88mN/AkDABAdUsSj+Ie9eS/3dyUvxwc9uWZhItjy
pgi1FpIwNjQtMuDCwQeQ5A+e9Z6fvEi/jaU+D6dfxtlsqrwDy4oQHDQx4lvaFHS6/tJmaPCchjbn
kr15QeGvdZa0ihMjd1apBakz+R27Z4DwTUAlcp2Rt6Frq58RDAJVH7a0YqV6DNsIq1fTk9DVFJck
TNwSolxCTfQ0G1zN40Ki2uAab9bnCB/Px1lqHuW5Q7BEC1YEdvtZqk4+JOEv+pTBJWD5ydqRDzU5
55wMU/lQnNx8PptNThWgvVtl6Vk6uDIP4L5C7xWLS02axaNZdvhtmF4p4nPNIdMcEo95Me6ykxga
1GdeRaQ6l2l8GrqPsJKlIXKbOgmUNnAdQVpctnIhQaJ5IXkbvJCgstDULTQPVz+O3wUvJW1YKfy0
p03bqn4Mcv0Uj0Mg6GO+2XlR56WE+JBicXtzvZDmnEt67weZSz/1JlGaKPPh7Cp1BISq+U0mP7LF
OJ3HYMs1Z6iaMwT6FIMaFdMekjLfrBuCUCMeRdC6aiGwrhboVQt0qQXpR4lgn1pwo1raA2bmG7dq
Ec2YFSFr6wXX9YK8ekFOvQitF+rTC2nUS3s4z3wTdh9NVuglWVsvtK4X7NULdukF6/2WMJ9eaKNe
AsBG8w0CoxmCnZAU4WsrhdWVQrxKIS6lEO1dEe+imzQqJQALtUqxeBR143R07QWXLC241KsU6lIK
1Vgc9S64rFEpAVCtVYoFrShzK2Xt5ZYuLbeJVymJUynaUaPe5ZY3KiUASbZKschWQtxKWXutpUtr
LfMqhbmUIjlTjHjXWtGolACg2yrFOlMMupWy9kJLlxZa7lUKdymF6WCZehda4FaK82zQfLMBG+Pu
g0FauLGns1M1Sl1CVo2gVkVJL8fz4dE4nYzmzQGTS3auZfeBjZSXdK0EDguZ+BIalXjRRkWy5MFr
Lb9v68EXii858NwdQCXFsvlidnFyORjNvu5fjoef0qmcN5PZxXW6MqJqVoNVuaGsCFWD8oZ4XHXX
D2lSrFzPrz9f3fY+7T2EnhCK66UvTy6zWt/LBtPh5YGM8HWosO1MOstzy56cL1SK2m1q2dKZO6X2
0J1ie+pOoT12J8KeuxOWH7xTe/JO8qN3Au3ZOxb28D0BJvGpD5FJa+pDYpKW+jAxKUl9zE3CUR9D
k07Ux9QkC/URKfICoc4LlEroheQCmiS/SjogKif31TMCq9mCOnvwDjIC31yOI5UCO1cZlizZ0QE7
3H20G0vht1RqJKM7+gE0jQkwjWRHAxm2J9WNEOwoHdtGqNsAU23ItiHTRlRbQUa1YYhVG7FtxLQl
qi0nQk2bUG1Jzo1uQ0i1MdvGTBtVbdy2cdPGVZuwbWJrkxC5SYjcJERuEiI3CZGbhMhNQmSXhEi5
tVrvTG681j2T27L1z+SmbR00uaVbD01u+NZFk+5Anh4JmHXSpCthvTTpflhfTHon1geT3ofyV4kX
72UNqEw7dN74dE4XnrY9k0pI05kUu68zKeOMJ75jmoRWj2lYUIRliTBfUKWoqMHj31qfhfBc9aVQ
SjSEUjxQyLCzKGHCKLH6LIolzYdR70IPo0T5BEg4T4AwBP9dDEUMtJkGdVZ+Dz0da8UKbBnzCn1m
xJAnO0N+YNSLHEkVQgMZDPsXIboCxvEBDBV0QXC3zKQicxHKLKGxZRjhjx/2T23ayb+qJKUm0snk
4zwf5vigDC1YsYsFUIq9l6eouAieLGbZ4CJ1Y0rPTwwHH4ssFwepMl63d/P6/HyeLj3nSscO4vUm
VFLAeCT+/DgffElHb9P59WRxPB2l3/5/O4IAyh+n56kM/Uan8g+jn80sWJqdrwaf01EJ6xMurM8K
wVpOSwj0wsoKoO5V+tXoqDItfzhIrfHW3DYMMahxfOYD4xivrqI87ETfUOHeRUKRUaPHT/ZaLw32
ZA2qVLLbk3NInA8Kh56n/WgwmacOo0ANkHHU8jnjleesMFXQc5bTxG1mP1+e6stNHFZmPwR/fh3M
Ty+z2depnPZgadJbzN077aH7TN7yXz6CaKexW4VFj3ajH/ZeFjP9+KAHE8Ax9a8iH3pWvWP1WMs5
oIRyqdw2KUaOp+ezo8ngYl5v1H/rFHEJZubFScebSzm7Zp9XeiRLEw3p00a+Zs7g+V3mDFpWfFmD
vJa6Bklguo8h482v4YkdPt5rvzpAWghTXh4wcC8PwmO7iqxLCsN6mRNgnbTTAWhIOwXng3Sg0k73
T5bSTjlIKGhmxJffLEA3y1ky3qxmAXLL7a9hOVxZ2LHbAxK4sjK/mi100LpS4grd0rqL9YYtiGcu
NI+lBiFGN7TdhlEZ64+yqcO2DEs1WWcGCtKc+IxCE58tI761Q9TWDhE2AS0V79IhzNIh4oOA+QcK
Ucrzjwj3/PN6ULWcSBT4rBF1WAGB34XCdvj4sL2sKH/WVH5IKf3QGXNL99jzZDC86smgSEuC/saQ
JaeJ1yoIACsKAkDgc2EZId5KjNp0gYE5tJYO9RdgYDt+fBTwbNyKU54vCXTPl8QfIZNGmM6Tw5zk
EXKh4iYumGfWSj5XTdsEao3yUtjbnDuixyrPLFdyqyuztTRn63LcZtxC4K/UqgVsKHD+GGlhiwIt
bsePnwWsN7dKrcwf59oKIexoOb103taNrmE5uNpysGY50ZQUDP3loxDVLIcCLWek9ZdeKUJ6/Pg4
wHK4UGrZcoy5LUe7WY4xLUvSwXJ4teVw1XJ1OUr5udBfGQpr3gwKq/3NxfUXhMLEjh8/DzAdKrRa
Nh2nbtOJbqbjCl2FtxWea5gOrTYdqpquLkfZdP5KT1SvYg6rTM/F9Rd4Ilu8DOJfAkwHC62WTSec
xWbwts5zPdMJrGUhHUxHVpuuFnAJZ+43RN7Sc+VEV7ykwPjBSuqvOFeE9PjxiwCrgUKhJash4PZP
UDf/RA2rRunin9DVVqMVqy3JkVvN65ugmm8Cw9BkKyn2+yaI2/HjlwG+rSgUWrGa2zfBsKPV9G6N
u/gmfLXVeM1qwmk17PVLcM0vgSzQakZSv1+CkR0/fhVgNV4otGw16PZLMG15GKMGUP2LCEZdmOmM
ofxnT9pVdjlhrt3dtW24FiXXlHcptBRcyYn1JLuYl8/jPsyyyWi7old1aOROMHBUmbkuZVJq83pM
OOkU5uoLQav4O/QXamqqJuZ9HR7zapq3Mww1rAvd3CekK9QgAX+X54tWVOxB4nWfSB1JRoF2NOL6
3SdioWQUvwkwHS60WjYddi8OpJv7pIZVo3Rxn5LVpkuqpsPOgihIvO4TqbtPYfFKLqnffSLWfYLx
rwFWQ4VCy1Yj7niFdHSfiHbgSRf3ia22GqtarS5HbjWv+0Tq7lNYqGIlpX73iVj3CcRvA6wGC4WW
rUbdoQptm6yjBlD90aqNWCxvnMKxb2LH/koc/YhjfyX8nvdSmjgLtyD1OmgUdTlLkYSXtlLqd9Yo
sicrJ+EnK5rk7RRJ3A82pWvlXBRJA0EHBYoJRTO5s5yLqlnGI0j+zHS2kUo0Wsq4cGX0uBIunIXK
OfMsPOGi0JZOuDh8X0u4EFj8dyRcIJU8UZ+l7UrEE+o0151cP4EY0ZyItqsZ1yFsArrtWbpqDybw
bwseubPKGN6WGTatTQnskj+WC4q9y5GioxPIToMTyCSR8mrkzjeGtynnprhxtaSnvYfo8ddeXv+3
HR31HpJKw8rMW6TTjzFYnX7MQHOy7++hyb4NcmPAPRnHpImJoPO71ux4bgdi1MlOYMJtS27uuez1
/iorGLaFFQzYugq5SJhqrn7CTK2WnNHYlGLJrYzYSiv5FdhCKukSJbZOSn5FtgxKOlncVjn1BbK1
RrKR2FIi+RXYSqE+RIktBJJfka3z6UPIbRmP/EpslY78CmwRjmQVFOW3SJffIkFD629hvf4We+pv
Ja1aCa6qv20ovtVDrSy/1T2qBbiiXGsrJ7IptuXlslxmK3BZuQJX7UG6Fe/oWg5bHstMXS4s1+Ui
aAYAvFKZC0xfQMu1uXIGmapbVK7OxdDW7NJyfa6cgaaVlyt0sUZU5ZSF5RpdrI+j5H9IuUoXI1Pj
i1i5Tlc+AZtK3U2l7qZSd1Opu6nU3VTqbip1O1bqssKfJIU/CQt/khf+JC38SVT4k7TwJ3nhT8Ki
Ulfkt6aAvFIXA2o9SumZqACqgHOOZtkwfX3yVoV5cdDlNkiX7sGkRV6huKvKO+QuN4RJ+Q6nvZvj
0XJE2FCC3FR+5oMQnfcZNjDHvYE56xSYi2U4JhH+KJ3ZKP19eJQuyrAyBs4yL8iAL0pn1Sgdd4jS
FRMqJE08ISm/wzC9QXAMqIcJdi9heiM7xMOOuI8wvYGbew/T72tZlSvI6mW1iNRvX1SJdUSMQfCN
VKgeEfvC4XL4ayLiuwyHeSWalbLqEJWjapAsTCssB8nygTOtoBol24AYVQNie1WVqAbEZgSQVANi
ew0VrAbEJpyFpBoQ276sGhDby6hANSCGphVXA2ITfqOkGhCzTUC8CYg3AfEmIN4ExJuAeBMQdwyI
k8Jzw4XnBgrPjRWeGyk8N1h4bknhuYnCc0N5QMxR4bnhwnNDuefGVUDc+r4arC8GgQx5o16OG6vp
PNcw8Xo1HYbAHWF5k+QqV60syaJvBIG399asDwbkQ9F2p+AMdS3Ma1SJ774tyGiXYDsX1Hvjlqaj
4+vfguNrXLlGRXmqTlH5XdiNa3GEfzqjuwJxmuThwAfiNAFJdwjiNDLnzb7loEvmF4ZLd2VD7s/E
5cBmfv0zPPNLk7ydZcidiHt7802HWaYjJVi5hMZt4OX0oKpexyOY/HlHlrZM0cbrtokP/9Fv6sAA
r8ZXShf+3AHmhBM3yIM8TID7wZya2IEedtC9YE5ubu4dc7ovzwWWoPxlz0XuojnmxFieHcJRgT4R
gz5JnYTmYxSAUgmDWg1AkRr6dFc3oYukgjwpn0rhT/LT5lQIWoVkEpO4YK4ZNz1quQ3YJDyYy8lN
D1yFgIBJlDBXmpseqAodMZNgYS5CNz1gFXIiJjHDXJ9ueoAqVAVNQoe5dN2AZKIKcSUmEcRc1W56
1HJFhEkgMRe8mx6sCqkhk3hiroU3PSqXy+vVyeDieUYLpxWsTq0cBrMusls4qSB/XBNhwtxSv8HE
NpjYBhPbYGIbTGyDiW0wsU6YGBTEepZQ5EnHUCTWs4Qi9yyh4NazhEIUniUoPMv8nTsIFJiY4Pl1
7oVniYTIMTGRqMgoaYuJ6TgIcu+LtJBI7g4Tw+6aX859mBhnqzAxrItguWgHZHHWGciqy5HXmgng
RRxEJyTLSCqgH2QQFsna2w9GsnC52BcTN8Yg2r4hSw2g+hcR99tUepfT1ZpphVDoVylC4UmVEO6K
hrVfj7cUwLrfNQmFJ6NEkCa+1nuXYWu+POk2Ajfxtd6LJ1vz5XtvNWria723hLbmy1PAI2ATX+u9
0rU1X553KwjQxNc6r+D1clW69gABz1sWuGhibZ23Joex5gO5eBNr67zn2sva7QV3yIsGsibO1ns1
uZe322sTkRcuTe4SLqXAjU+C/zwTyPfUcXo/mG0TO57FiZN7wWzd3NwzZvuf8qylw5hjtgIWSG1i
kNoEb/WieF/JEh1OF9nN1Uy6fVsh4G07zDapobXJXaG1rAQtbnDADQ64wQE3OOAGB9zggBscsBMO
iJCw3goy1xAojM5UOqg3YJvzZ+VnoLyqAZnqB+WFoPzV28hcV6C8FVQUiyGQeytYOhMIFrd7HH5b
ZIPhQnsjBhZqeiN9ZHyXevoKgr779RHEXV4L6KRJ75D/xMt/LZWMduef3SH/3Ms/6/LuSSfNIqRR
P7z+pU2ekHV95V+j8nVoT7KLa/V6pFgHGL/KgFkjo7uhwVeCnfgqQtBFrB4Nv91vHQ63IH0bBVcu
qW6gjuKTtjCBn3YJHUDYTxvHp/st0RM/7TJogoifOInf3RNx6idO4/f7baE2P3UDsKHK7dYNhJP4
wz0QZn7CLP7tHghzP2Ee/34PhIWfsIj/efeEsQdTEqwZU3py8L0rFxbFwd7zHL3t1hnYOwh9DWwj
A8jPALUo1n57qomHKvZTZfag8eAg9CXIjVRJqIsQ6uKodCqEPcc/eEWG6d4aM6tS3Z1wt+hJKzPX
2TlcY561Yoe1fRW4Zsv9LnDQ9V3gGtrSqN3H83GWtrxuVMmkRPD6a7jTPQGSzJK/hr33BGii+vT3
6CD49DepZJgz90NEQKjcgQ8R084l8ZzW4BWQ/2H4Q8RwRfTELTpqpf46O0/DH6J27OBWl3hqnlbG
El2u8VTMKV6KpfXVbDE+v/mQjRfpbTih3gt3NjyDDCw/BPWncPXkWLpxF5G2LybA3Mws/xUoKqe4
sXqmbWxTraLh7juKEfHd9y/57XRPvKKs6Hiv+NeEzD3xzw6C74nHvHwxMebCPWWFp2hIM+EuGoL8
z49DvVuY1y9rvtYsJqmzVwr1qHd9I6JT6ZA6Aq9NYer3AomwpUPHB+GlQ7yS1iPce/LtPeENqVjV
hX3p6fp3bUfX27YNfPev0MNW2EXWSNQ30RZI7SRNmjbBnDUbisGgJaoRakuaJDsNhv333ZGiJTtS
lDRpnqwjebwP8u4oXXiiZjuxzQelYglcT0zF2uWjcWa2eyM923zSPf6K295ikWIieY//6eTR9/jD
NA3NWXq7I2hcvd2hOeO++tmIFrG4D9PcbkD2+MIZd/hoHvrt3rjKdp90mb9itz+Wsl11mf+HyaMv
87f0pkG0jNb7dUh9nXWP87JEZXjibMKis/Tr9JqF6c34Og6+8eSSxe0m/eG7uCPbzhIFfYjTk6VC
/O5su4ef3+9Jt7NIazoUcXpSVIjXnW731/gZ8u06CevJTyRud77dn+NnSLjrJKznhEqc7oS7q/Ez
ZNx1EtaToUjs7oy7z+NnSLnrJKwnRZFY3Sl3D3472p1zd4espsV0ejKBiNmdc3c5fnLS3f209SRN
EdKddDd9etadRbqz7tyeF4DE6M66e8R3hu60uzvENaJQt+f4a5Hu4+/xo4+/dyipvFN9bwZ6l7by
MSIufYjXsc0WWMP+VVVhOsL5dr9E9NFPTz37iR9zLXVFHZF3wCMWc3PRiamuqCOmX/27MJwT1GXy
EL6oy+QhCFWXycMpbzA4HmtC6SKhDMWTp8lXipVCRH129e5MG/46+YM23p+pMuyeGPbMZd27cfpW
N04U+Y/gZF106hHjDHGOp3dwerpj6204BTEW86IWpEKM7+np9AxCPYghD5N1DPLGjxgVXt/39HsU
4fYpon0Yf6T+FA/+03hoXxXmPavifg1OeAEbNdRuNu+AqlVbvxTSCg5AnIz4PguYrYvXSVZoMs4d
SdZJsogT3sBSD7IY9+D8KwcRM4p0z60wBEbgeGGjhSjcKOJ51Ggx9KoFsOme3sSmWsIwMt25okdW
KNLWciNiB3tuukT1Fg+kov7dKoLu2jrmN4XI0tSqmkZgkcUJ6lYL0iSMxQtpMFYN+ZPQcuy50yV/
EgYByv8gr5SmpO8S33KpdvjPKgYSOeaJppE240gvWNPzRCJ8vv3/dlsu6AGQ19o2S7XXlGrbf2+U
xixzrtMvqtTSvyAYWSYpzSnewlMxQI3693mCjusoZ0tOwWsG+FCReJ5QcEtfeakAE16CoysoRHPR
DsgWHS9yjnqiYkGIZ3XGBZAhQJO4yBbsFrfkVisRrSIpNmGLrSZJxDhdLKTTwnRi2QKE4P0p8voU
eAYqbnKWbTjCPo6EVcoydFc+C6NARQXVTFIt3AJAwGXD/th85KjAeIwOIHrO7zQAX1GchHICfGtH
RQ3WOCkyAKh58TtlzgFBwTcgawd0nKerDODAxjINV0gfVm6NE2z8qCDAQFxc5PESlvyaKyqAj1kG
TrtCJagATmapeDxKc4Tgm9vZHIiFn0D2bIcgDDdnEQhvDsHFFQgJdABQU/Qs0sWao2TVZ2gqysXe
fekIcGBgs1sOkhBRAdTZa+4hALg4XOlKkYiM7CwdPDvP4u2lcQvGMcjjrMTccMNExrLWFkPim4JK
1brB8rUI+8iyGmZKGNrwLbhVw7dw2BIuc8rTvG4QbG6ekMfmGjW9ChBuIP5/exhSHuQ5u93TgL8y
pcKmmB7RsYzgGWfR39IC1GXV2iyAsMykaQFuWCFVQ/X7Z1H4awvVbmEccBD0i+oDM8BKXINCpat9
dZ0uN8tJ75gSPEPoms42Y42Qo2Vi4abM7YkzxIemUpobuQ6lnZG/JR2VTYLlpTY4aL9YzauRoPZQ
rJc5lwYlSUNe2zH7MSxc9urGb+pmtmBF+S5dKdsByx+XcRxepnLzhUqSFbRhJT5V9rra3wJWoLme
ScshjPQs4d/L6c4FU2iqmwuwoHgeSZdLloQQ2/ODixMqNuYW6GSZLaSc79xNhiLvkFLlf7ek1BFL
1YrWXQZSausDMtuaqIl1K9jbkb0MReBg8KXR5z5kvMfNOqHVVOSDdtamBGIrUhEf2R07F92EtBUP
sxSDg+n08PfLk/NP2tHBydkhxBkFHAPjAKxtUb7Gf3F5+XaYrBaLrMxH2ps3Gt/8h85vb9csj1FA
xUH5nrPw1UK8/Y1Hg/3P6QIsf7E/YSXbP7ya7l/x+Ye43J+mqzzg+6dszabC8o7TnO+H0df9ydHx
Zzx2wm58FWTZ0DdGGtXWaRxqp9MxpdBO6ZAlaXK7TFeFlqDTzljAR5SqgZSuq1/D0cAAiQHHum+I
uFW7ujwa56y4HpCqwXN9a66zH0RvNrB4utHAsulUg45hk16/2NN2IJPVMgNnDQsMiKN0LF/4jAaW
wu2YnEPgWQ+7WLCEUthwWbzgJwmoHeSOOw4osutRocfCvlEN8iQAdfVyNHA2jAX+3OMNNFdp/m0R
F6Ua8C4Nbym9ASjM7m7E7euMccnRwapMl7ic5ABKYXHl5VC2zQuR6nuWBt8gahcB6AuQ9i8znVJ0
z+grh6PhSDYNvMYErhfICZSRfy0WynD0FqQIYQIuyioqef0UQgAdRh3Anr+Zfc4NzjtnbyHc0Kuh
RJ8Tj8mhig6xnS5wOw234J/4jfw5TiGa+V6CYgxD4TH0yLAlnpsykv0Oa0RIDfYn2N+Nosi3dFf3
/RACn1J0ns1BdQPD3O5gsN0OVqODw03b0KpmIb7B4H9QSwMEFAACAAgA0KMPS1a76BP5HwAA9dQA
AC8AHABpbnNwZWN0b3IvZG9tL2RvbXV0aWxpdGllcy1wYXRoLWR1bXAtc3RkZXJyLnR4dFVUCQAD
WLyTWVi8k1l1eAsAAQT1AQAABBQAAADsXetz2za2/3zzV/BOpjP0HafBkwBU16P4lTjNq7GbtLuz
k5ElOtaNInkoOYmnvfnbL16kSAoUCNHu7gftzKoKBOO8QOCcH84BHzx48GQRTWZDHI2n0YH88il6
mPSiL4PJeDRYjGfT6HIwnqSjXhTPF7Jh+GE4mC/2Xs1G6f/sx9ObyeR6ke1EP0eP5MfPUZxOF9nt
9Ww8XTza/zLIxoOLSTp/sniWDkY/ytEHk3isevcRBjtR/PjdbHLzOZ0/PhosBo+P3589fp9e/DJe
PD6b3WTD9PHzwZfB2TAbXy8OZ1n6eHT58fHRydN3hrn0x+H1dU/AnR+1EIvx5zSaXWp+b7K09+CB
7BpdzrLoQyrFuZF/8GQ6ep8Nrh/uTWePrgbzq/3eP8E3SBlPKB6AR/vqHwMCL0hq/oEukgSkCdiN
5FAnN9OhUsjhYDLZjQjhUXy2yMbDxUupi51/9R5E0cn4mxY9UqpKe9FBKsmneetP0cks+9yLzq8y
qY10dPjm7Kfot+n4cjw0mrZ/9XQyu5A0bvVP6ein6G16GQ1nN8txj7+k2e3iajz9eDp/Mf6SStJP
so9SkdPFXEt8oQyp7NhHSHIvP6H+RPoT60+iP6n+TPQn059cf4qGMYEcU42ox5P/V2OpkdQ4ahQ1
hhpBPHhgZxOI4ovhQ7AjZ9Drs7fRYpB9TBc7cvjjb+nwRguuhetF8Eeg/yd/e5Olo3SYzuezbK40
e3YzzP8VPYSy4Wj2eTyVyhhFF7eyKZvNFpJU6QfVEci+0UMUPcTRQ1L8Nh2m0Uk2my7GadaLZPPp
Is30UA2/ny3MeNLcN8OFnFvzJ1n6frAYXqWj3ejwJsukkia3hydPfptK0w6v1KSXf/dukM3tHOhF
e+nn68XtviI3lfTm6VBRrHSRmhG9+Gh2I//89PO1JPRqMP3rfHb917H6293o/PUb/bGjuvL2XVn7
rkn7rrR9V9K+K27fFbXvCtt3BS27ytkd0BW274rad8Xtu5L2XWn7rkn7rqx9V96+qwgwQYi5AuwF
AwwGAywGA0wGA2wGA4wGA6wGA8wGA+yGAuyGQp6zALuhALuhALuhALuhALuhALuhALuhlnYzu1/0
Yjz9NLcbW1+YXavPzZbUZ2a/6SdmM+lTs1P0idkG+tis8X1kFvA+NKtzX+3yEejtRbD3aP+/ztJF
7qfE0iWax4Od3ehtT+7Zw0/xIyL/8b53Nh6lehPfjbQrEkXX0r+Qrpv0oKTTNh1M1JDQNeTp/GRy
M9cbveIiPvi+lzuC+4/tT8/PpEd6k4bStcMo0shPGsWH3/deX/yv9Bs6En69uEozOZIijP2EcXz0
fU95utOPHQmbQeS8UJSJnzKJj++DMvVTpvHJ972D2WySDrqaWY2iqCZ+qkn89K6pMj9VFj+7a6rc
T5XHp3dNVfipivj5HVOFxUL0/OxwNpUBmiT6/OyvN3JxlI7+rgzwRunleKoYqAyvR1QDyGXnv4Ea
4OXsyzMZJsaHV+nwU++36eL2WsbdfSjDrZc388XTdLqrnc51fB7K2PFCRhfH38aLEo3y+vJCR+EO
Imrs+JfvfrWYf0ArxG6kiJ1ONWRQ1dGr2VTFQdLpCRMRholY5UARJC3lhfGL1vKi9vLSQHlRV3mT
lvKi+GVreXF7eVmgvLirvLyNvKVHX9GMX7UWnbQXXQSKTjqKjkBLU5P4dWt5aWt5UehqRbvK23bp
ovGb1vIm7eUNXbqSrvK2XbqS+NfW8rL28lLPdvY+HXzqGTe0F4FvEI8oGY4wiL6OF1fRxc1ikWaX
k1v5EwYAIDqkiEfxDwfzXu7vSl5Oj3pyzcJEsNVNEWotJGFsaFpkwIWDDyDJHz3rPT97kX4bS30e
T7+Ms9lUeQeWFSE4aGLEt7Qp6HTzpc3Q4DkNbc4Ve/OCwl+bLGkVJ0burFILUmfyO3bPAOGbgErk
OiNvQ9dWPyMYBKo+bGnFSvUYthFWr6ZnoaspLkmYuCVEuYSa6Hk2uJ7HhUS1wTXerM8RPlyOs9Q8
ynOHYIkWrAjsDrNUnXxIwl/0KYNLwPKTtScfanLJORmm8qE4u/18MZucK0B7v8rSs3RwbR7AQ4Xe
KxZXmjSLJ7Ps+NswvVbE55pDpjkkHvNi3GUnMTSoz7yKSHUu0/g8dB9hJUtD5DZ1Eiht4DqCtLhs
7UKCRPNC8jZ4IUFloalbaB6ufhz/FryUtGGl8NOeNm2r+jHI9VM8DoGgj/lm50WdlxLiQ4rF7c3N
QppzLum9G2Qu/dSbRGmizIez69QREKrmN5n8yBbjdB6DHdecoWrOEOhTDGpUTHtIynyzbghCjXgU
QZuqhcC6WqBXLdClFqQfJYJ9asGNamkPmJlv3KpFNGNWhGysF1zXC/LqBTn1IrReqE8vpFEv7eE8
803YfTRZo5dkY73Qul6wVy/YpRes91vCfHqhjXoJABvNNwiMZgh2QlKEb6wUVlcK8SqFuJRCtHdF
vItu0qiUACzUKsXiUdSN09GNF1yysuBSr1KoSylUY3HUu+CyRqUEQLVWKRa0osytlI2XW7qy3CZe
pSROpWhHjXqXW96olAAk2SrFIlsJcStl47WWrqy1zKsU5lKK5Ewx4l1rRaNSAoBuqxTrTDHoVsrG
Cy1dWWi5VyncpRSmg2XqXWiBWynOs0HzzQZsjLsPBmnhxp7PztUodQlZNYJaFyW9HM+HJ+N0Mpo3
B0wu2bmW3Qc2Ul7StRI4LGTiK2hU4kUbFcmSB6+1/K6tB18ovuTAc3cAlRTL5ovZx7OrwWj29fBq
PPyUTuW8mcw+3qRrI6pmNViVG8qKUDUob4jHVXf9kCbFyvX85vP1svd57yH0hFBcL315cpnV+kE2
mA6vjmSEr0OFXWfSWZ5b9uRyoVLUlqllK2fulNpDd4rtqTuF9tidCHvuTlh+8E7tyTvJj94JtGfv
WNjD9wSYxKc+RCatqQ+JSVrqw8SkJPUxNwlHfQxNOlEfU5Ms1EekyAuEOi9QKqEXkgtokvwq6YCo
nNxXzwisZgvq7ME7yAh8czWOVArsXGVYsmRPB+xw/9F+LIXfUamRjO7pB9A0JsA0kj0NZNieVDdC
sKd0bBuhbgNMtSHbhkwbUW0FGdWGIVZtxLYR05aotpwINW1CtSU5N7oNIdXGbBszbVS1cdvGTRtX
bcK2iZ1tQuQ2IXKbELlNiNwmRG4TIrcJkV0SIuXWar0zufFa90xuy9Y/k5u2ddDklm49NLnhWxdN
ugN5eiRg1kmTroT10qT7YX0x6Z1YH0x6H8pfJV68lzWgMu3QeePTOV142vZMKiFNZ1Lsvs6kjDOe
+I5pElo9pmFBEZYlwnxBlaKiBo9/b30WwnPVl0Ip0RBK8UAhw86ihAmjxPqzKJY0H0b9FnoYJcon
QMJ5AoQh+M9iKGKgzTSos/JH6OlYK1Zgy5hX6DMjhjzZGfIDo17kSKoQGshg2L8I0TUwjg9gqKAL
grtlJhWZi1BmBY0twwj//OHw3Kad/KtKUmoinUw+zPNhTo/K0IIVu1gApdgHeYqKi+DZYpYNPqZu
TOn5meHgQ5Hl4iBVxusObl9fXs7Tledc6dhBvN6ESgoYj8SfH+aDL+nobTq/mSxOp6P02//tRhBA
+eP0MpWh3+hc/mH0s5kFK7Pz1eBzOiphfcKF9VkhWMtpCYFeWFkB1L1KvxodVablD0epNd6G24Yh
BjWOz3xgHOPVVZSHnegbKty7SCgyavT4yUHrpcGerEGVSrY8OYfE+aBw6HnaTwaTeeowCtQAGUct
nzNeec4KUwU9ZzlN3Gb289WpvtrEYWX2Q/Dn18H8/CqbfZ3KaQ9WJr3F3L3THrrP5C3/5SOIdhpb
Kix6tB/9cPCymOmnRz2YAI6pfxV537PqHavHWs4BJZRL5bZJMXI6vZydTAYf5/VG/bdOEVdgZl6c
dLy5krNr9nmtR7Iy0ZA+beQb5gxe3mXOoGXFlzXIa6lrkASm+xgy3vwantjh44P2qwOkhTDl5QED
9/IgPLaryLqiMKyXOQE2STsdgIa0U3A5SAcq7fTwbCXtlIOEgmZGfPnNAnSznCXjzWoWILfc4QaW
w5WFHbs9IIErK/Or2UIHrWslrtAtrbtYb9iCeOZC81hqEGJ0Q9ttGJWx/lk2ddiWYakmm8xAQZoT
n1Fo4rNlxLd2iNraIcImoKXiXTqEWTpEfBQw/0AhSnn+EeGef14PqpYTiQKfNaIOKyDwu1DYDh8f
t5cV5c+ayg8ppR86Y27pHnueDIbXPRkUaUnQ3xiy5DTxRgUBYE1BAAh8LiwjxFuJUZsuMDCH1tKh
/gIMbMePTwKejaU45fmSQPd8SfwRMmmE6Tw5zEkeIRcqbuKCeWat5HPdtE2g1igvhb3NuSN6rPLM
ciW3ujJbS3O2Lscy4xYCf6VWLWBDgfPHSAtbFGhxO378LGC9WSq1Mn+cayuEsKPl9NK5rBvdwHJw
veVgzXKiKSkY+stHIapZDgVazkjrL71ShPT48WmA5XCh1LLlGHNbjnazHGNalqSD5fB6y+Gq5epy
lPJzob8yFNa8GRRW+5uL6y8IhYkdP34eYDpUaLVsOk7dphPdTMcVugqXFZ4bmA6tNx2qmq4uR9l0
/kpPVK9iDqtMz8X1F3giW7wM4l8CTAcLrZZNJ5zFZnBZ57mZ6QTWspAOpiPrTVcLuIQz9xsib+m5
cqIrXlJg/GAl9VecK0J6/PhFgNVAodCS1RBw+yeom3+ihlWjdPFP6Hqr0YrVVuTIreb1TVDNN4Fh
aLKVFPt9E8Tt+PHLAN9WFAqtWM3tm2DY0Wp6t8ZdfBO+3mq8ZjXhtBr2+iW45pdAFmg1I6nfL8HI
jh+/CrAaLxRathp0+yWYtjyMUQOo/kUEoy7MdMZQ/rMn7Sq7nDDX7u7aNlyLkmvKuxRaCq7kxHqS
fZyXz+Pez7LJaLeiV3Vo5E4wcFSZuS5lUmrzekw46RTm6gtBq/g79Bdqaqom5n0dHvNqmssZhhrW
hW7uE9IVapCAv8vzRWsq9iDxuk+kjiSjQDsacf3uE7FQMorfBJgOF1otmw67FwfSzX1Sw6pRurhP
yXrTJVXTYWdBFCRe94nU3aeweCWX1O8+Ees+wfjXAKuhQqFlqxF3vEI6uk9EO/Cki/vE1luNVa1W
lyO3mtd9InX3KSxUsZJSv/tErPsE4rcBVoOFQstWo+5QhbZN1lEDqP5o3UYsVjdO4dg3sWN/JY5+
xLG/En7PeylNnIVbkHodNIq6nKVIwitbKfU7axTZk5Wz8JMVTXI5RRL3g03pRjkXRdJA0EGBYkLR
TO4s56JqlvEIkj8znW2kEo1WMi5cGT2uhAtnoXLOPAtPuCi0pRMujt/VEi4EFv8ZCRdIJU/UZ2m7
EvGEOs11J9dPIEY0J6LtasZ1CJuAbnuWrtqDCfzbgkfurDKGyzLDprUpgV3yx3JBsXc5UnR0Atl5
cAKZJFJejdz5xnCZcm6KG9dLet57iB5/7eX1f7vRSe8hqTSszbxFOv0Yg/Xpxww0J/v+EZrs2yA3
BtyTcUyamAg6v2vNjud2IEad7AQm3Lbk5p7LXu+vsoJhW1jBgK2rkIuEqebqJ8zUaskZjU0pltzK
iK20kl+BLaSSLlFi66TkV2TLoKSTxW2VU18gW2skG4ktJZJfga0U6kOU2EIg+RXZOp8+hNyW8civ
xFbpyK/AFuFIVkFRfot0+S0SNLT+Ftbrb7Gn/lbSqpXgqvrbhuJbPdTa8lvdo1qAK8q1tnIim2Jb
Xi7LZbYCl5UrcNUepFvxnq7lsOWxzNTlwnJdLoJmAMArlbnA9AW0XJsrZ5CpukXl6lwMbc0uLdfn
yhloWnm5QhdrRFVOWViu0cX6OEr+h5SrdDEyNb6Ilet05ROwrdTdVupuK3W3lbrbSt1tpe62Urdj
pS4r/ElS+JOw8Cd54U/Swp9EhT9JC3+SF/4kLCp1RX5rCsgrdTGg1qOUnokKoAo452SWDdPXZ29V
mBcHXW6DdOkeTFrkFYq7qrxD7nJDmJTvcDq4PR2tRoQNJchN5Wc+CNF5n2EDc9wbmLNOgblYhWMS
4Y/SmY3S34VH6aIMK2PgLPOCDPiidFaN0nGHKF0xoULSxBOS8jsM0xsEx4B6mGD3EqY3skM87Ij7
CNMbuLn3MP2+llW5gqxfVotIffmiSqwjYgyCb6RC9YjYFw6Xw18TEd9lOMwr0ayUVYeoHFWDZGFa
YTlIlg+caQXVKNkGxKgaENurqkQ1IDYjgKQaENtrqGA1IDbhLCTVgNj2ZdWA2F5GBaoBMTStuBoQ
m/AbJdWAmG0D4m1AvA2ItwHxNiDeBsTbgLhjQJwUnhsuPDdQeG6s8NxI4bnBwnNLCs9NFJ4bygNi
jgrPDReeG8o9N64C4tb31WB9MQhkyBv1ctxYTee5honXq+kwBO4Iy5skV7lqZUUWfSMIXN5bszkY
kA9F252CM9S1MK9RJb77tiCjXYLtXFDvjVuajo6vfw+Or3HlGhXlqTpF5XdhN67FEf7pjO4KxGmS
hwMfiNMEJN0hiNPInDf7loMumV8YrtyVDbk/E5cDm/n1j/DML01yOcuQOxF3efNNh1mmIyVYuYTG
beDV9KCqXscjmPx5R5a2TNHG67aJD//Rb+rAAK/HV0oX/twB5oQTN8iDPEyA+8GcmtiBHnbQvWBO
bm7uHXO6L88FlqD8Vc9F7qI55sRYnh3CUYE+EYM+SZ2E5mMUgFIJg1oPQJEa+nRXN6GLpII8KZ9K
4U/y0+ZUCFqFZBKTuGCuGTc9arkN2CQ8mMvJTQ9chYCASZQwV5qbHqgKHTGTYGEuQjc9YBVyIiYx
w1yfbnqAKlQFTUKHuXTdgGSiCnElJhHEXNVuetRyRYRJIDEXvJserAqpIZN4Yq6FNz0ql8vr1cng
4nlGC6cVrE6tHAazLrJbOKkgf1wTYcLcUr/FxLaY2BYT22JiW0xsi4ltMbFOmBgUxHqWUORJx1Ak
1rOEIvcsoeDWs4RCFJ4lKDzL/J07CBSYmOD5de6FZ4mEyDExkajIKGmLiek4CHLvi7SQSO4OE8Pu
ml/OfZgYZ+swMayLYLloB2Rx1hnIqsuR15oJ4EUcRCcky0gqoB9kEBbJOjgMRrJwudgXEzfGINq+
IUsNoPoXEffbVHqX0/WaaYVQ6FcpQuFJlRDuioaNX4+3EsC63zUJhSejRJAmvjZ7l2FrvjzpNgI3
8bXZiydb8+V7bzVq4muzt4S25stTwCNgE1+bvdK1NV+edysI0MTXJq/g9XJVuvYAAc9bFrhoYm2T
tyaHseYDuXgTa5u859rL2vKCO+RFA1kTZ5u9mtzL2/LaROSFS5O7hEspcOOT4N/PBPI9dZzeD2bb
xI5nceLkXjBbNzf3jNn+uzxr6TDmmK2ABVKbGKQ2wTu9KD5UskTH00V2ez2Tbt9OCHjbDrNNamht
cldoLStBi1sccIsDbnHALQ64xQG3OOAWB+yEAyIkrLeCzDUECqMzlQ7qDdjm/Fn5GSivakCm+kF5
ISh/9TYy1xUobwUVxWII5N4Kls4EgsXtHsffFtlguNDeiIGFmt5IHxnfpZ6+gqDvfn0EcZfXAjpp
0jvkP/HyX0slo935Z3fIP/fyz7q8e9JJswhp1A+vf2mTJ2RdX/nXqHwd2pPs4416PVKsA4xfZcCs
kdH90OArwU58FSHoIlaPht8etg6HW5BeRsGVS6obqKP4rC1M4KddQgcQ9tPG8flhS/TET7sMmiDi
J07i3+6JOPUTp/G7w7ZQm5+6AdhQ5XbrBsJJ/P4eCDM/YRb/fg+EuZ8wj/+4B8LCT1jE/7h7wtiD
KQnWjCk9OfrelQuL4mDveY7edusMHByFvga2kQHkZ4BaFOuwPdXEQxX7qTJ70Hh0FPoS5EaqJNRF
CHVxVDoVwp7jH7wmw/Rgg5lVqe5OuFv0pJWZ6+wcbzDPWrHD2r4KXLPlfhc46PoucA1tadTuw+U4
S1teN6pkUiJ4/TXc6Z4ASWbFX8PeewI0UX36e3IUfPqbVDLMmfshIiBU7sCHiGnnknhOa/AayP84
/CFiuCJ64hYdtVJ/nZ2n4Q9RO3Zwq0s8NU9rY4ku13gq5hQvxdL6arYYX96+z8aLdBlOqPfCXQwv
IAOrD0H9KVw/OVZu3EWk7YsJMDczy38FisopbqyeaRvbVKtouPuOYkR89/1LfjvdE68oKzreK/41
IXNP/LOj4HviMS9fTIy5cE9Z4Ska0ky4i4Yg//PDUO8W5vXLmq8Ni0nq7JVCPepd34joVDqkjsBr
U5j6vUAibOnQ6VF46RCvpPUI9568vCe8IRWrurCvPF36ne2I4lapWHqsjqlYdTlKMTP1enoUd7rH
P5fW+7JITcjc4//8KPgef0mmZDkC3BtB6ertBsvBde/PVsOqUVg7y9UdsvAXZ6zIUQ76qdevoqzT
Zf65uP9f29H1tm0D3/0r9LAVdpHVEiXrg2gDuM5H06ZNMGfNhmIwaIlqhNqSJsl2g2H/fXekKMmO
FCdN6ifpSB6Pd8e7I3Um98dSI0cd5v/h6NGH+Vt60yBaRuv5OqQ+znqP87LEzfDErsKi8+Tr9IYF
yWZyE/nfeHzFonaT/vBZ3JFtZ4kLfYi9J0uFeN3Zdg9fv9+TbmeR1nQoYu9JUSFud7rdX5NnyLfr
JGxPfiJxuvPt/pw8Q8JdJ2F7VqjE7k64u548Q8ZdJ2F7MhTJqDvj7vPkGVLuOgnbk6JIrO6Uuwfv
jnbn3N0hq2kx7T2ZQMTszrm7mjw56e5+2vYkTRHSnXQ3fXrWnUW6s+6cPRuAxOjOunvEd4butLs7
xDWiUGfP8tci3cvf00cvf+9QUnqn+twM9C5t18eIuPQhXmdktsAa9q+8FaYjnG/3S0Qf/PTUs5/4
MddSR9QReQY8YjGrg05MdUQdMb3y78KwTlCHyUP4og6ThyBUHSYPq7xe73SiCaGLhDJkT5bEXyne
FCLuZ1d7Z1r/16M/aGP/TF3D7opmz3ytezdOz+rGiSz/EZysi049ZJwhzsn0Dk5Xt0d6G05BjMXc
sAWpYOM7+n56DqEexJDH8ToCfuNHjBKv57n6PYJw9gmivRl/pPzUGLynjaFdK8x7tOJ+CR7xHCZq
oG2qPaBSa+tNIS3nAMTOiOcxn410sZ1kBSbj3JZkncWLKOYNLHUji3EX1r+yETHDUHedEoNv+LYb
NEqIwo0snoeNEkMvSwCb7upNbKokCELTmSt65A1F2lpORKwwmpsOUbXFCympf7sKobq2jvgmF1ma
WnmnEVhksYK61fwkDiKxIQ3GqsF/Elj2aG538Z8Evo/8H2el0BT3HeJZDtWO/1lFQCLHPNEk1GYc
6QVrehFLhM83/w+3+YIeAMda22Yp9ppSbfv3RknMMuc6/aKuWvoXGCOvSUoyiqfwlAOgRv18EaPj
OsnYklPwmj6+lCRexBTc0ldeKMARL8DR5RSiuXAHNBIVLzOOcqJCIcS7WuMCyBCgoyhPF+wWp+RW
KRGlIik2ZoutIknEJFkspNPCdGJZAoTg+Sny+BR4Byo2GUurEWEdW8JKYRm6I9+FUaDiBtVUUi3c
AkDAZcP8qD5ylGBcRvsQPWd3CmBcYRQHsgPctaPiDtYozlMAqH7xO2XGAUHOK5C1AzrNklUKcBjG
MglWSB/e3BrFWPhRQWAAUX6ZRUtQ+TVXVMA4Zik47RKVoAJGMkvE60mSIQR3bmdzIBYegezZDkEY
bs5CYN4cgotrYBLIAKCmqJknizVHzqrP0FRcF3t30xHgMIBqtozjAFEB1D5oziEAONhcyUqRiAPZ
UR1cO8+ibdW4BePoZ1FaYG64YeLA0tYSQ+KbgkiV3uD1tQj7yNIaZkoY2vAtuFXDt3CMJFzmlCdZ
XSCGWb3hGJs6arolIKgg3n8HGFKOs4zdHmgwviKhwqaYLtHxGsFzzsK/pQWor1VrswDCMpOmBdiw
XIqG6vf3ovDXFqrdwtjgIOgXVQd6AE1cg0Clq311kywrddI7ugTPEDimvT2wRsjR0rFwU+Z2xyni
Q1MpzY3UQ2ln5LOko7RJoF5qgoP089W8bAliD4S+zLk0KHES8NqOjR4zhKu9svGaspktWF68TVbK
doD6oxpHwVUiJ1+gOFlCG1biU2mvy/ktYDma65m0HMJIz2L+vZjuHDCFprqpgDnF9UiyXLI4gNie
jy/PqJiYW6CzZbqQfL5zNhmyvINLpf/d4lJHLFULWncYcKmtDvBsq6Mm1q1gb4f3MhSBhcGXRp37
kPE9btYOrKYgHzSzqisQW5GK+GjUMXPRTUhb8TBL0RtPp8e/X51dfNJOxmfnxxBn5LAMjHywtnnx
Gv/i8vKwH68Wi7TIBtqbNxqv/qHz2+GaZREyKB8X7zgLXi3E7m806A0/Jwuw/PnwiBVseHw9HV7z
+YeoGE6TVebz4Xu2ZlNheSdJxodB+HV4dHL6GZedMBtf+Wna94yBRrV1EgXa++mEUiintM/iJL5d
Jqtci9Fpp8znA0pVQ0rX5VN/0DOAYzBi3TNE3KpdX51MMpbf9EhZ4DqeNdfZD6I3G1hc3WhgqSrV
oFOYpDcvDrQdyNFqmYKzBgUD4iidyA2fQc9SuG2Tcwg862aXCxZTChMujRb8LAaxA99xxgFFo7pV
4LJgX6sGeRKAsno56NnVwHxv7vIGmusk+7aI8kI1eJsEt5RuAAq9OxW7PZ0xLkc0XhXJEtVJNqAU
lCsr+rJsnotU3/PE/wZRuwhAXwC3f5nplKJ7Rl/ZH/QHsqjnNjpwXF92oIz8a6Eo/cEhcBHCBFTK
Mip5/RRCAB1GHTA8r+p9zg3OO3tvIdzQy6ZEnxOXyaaKDjGdLnE69bfgn/hGPk4SiGa+FyAYw1B4
DD00RhLPpghlveMaEVKD9QnWd8Iw9Czd0T0vgMCnEJVncxBdzzC3Kxhst4LVqGBzc2RoZbFgX+9/
UEsDBAoAAAAAANyjD0sAAAAAAAAAAAAAAAAQABwAaW5zcGVjdG9yL21vZGVsL1VUCQADcLyTWd7A
k1l1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA3KMPS9j2KYG3TgAAyAMCADoAHABpbnNwZWN0b3Iv
bW9kZWwvcmVtb3RlLW9iamVjdC1nZXQtcHJvcGVydGllcy1jcmFzaC1sb2cudHh0VVQJAANwvJNZ
cLyTWXV4CwABBPUBAAAEFAAAAOxdbXPbtpb+vPkV3PF0Rt46DfEOqG5GfokT57ZJbu02e7dzp6NI
tK0bWfJQUhpP0v72BXBIiJBIgbTk2h/UmXoUCgJwABDnOc9zCL4ZR720O7mKhuPL6GI8G/X13zQ6
nl3f/JyM+kl6niZJmyBK8HdPnkym/fFs2rYfkjTVH548OZjq3/ZINBhFh/rDx2gH43b0qTsc9LvT
wXgUXXQHw6TfjlqTqb7Q+73XnUz334z7yf88b41mw+HNNN2Nfoie6j8/RK1kNE1vb8aD0fTp80/d
dND9MEwmB9NXSbf/na6+O2wNTOkOIWw3aj37dTycXSeTZ8fdaffZi/dnz94nH/4xmD47G8/SXvLs
dfdT96yXDm6mR+M0eda/uHx2fPLyV+hc8l3v5qat0O531orp4DqJxhe2v7M00cbponY0emmiS590
Pyb6l7PkOJnYKsfpzv5o/PRKD9/z9m/xZ0SSvuAoiZ8+1//AgsiEd+EfpIt5QrrxXqTrPJmNemZk
jrrD4V7EVRy1zqbpoDf9SQ/K7r/bT6LoZPDZjkFkxixpR4eJ7keSX/0+Ohmn1+3o/Ep3rJ/0j96d
fR/9MhpcDHow5NmvXg7HH3Qbt/arpP999HNyEfX0JLt6X3xK0tvp1WB0eTr5cfAp0U0fpJd6REfT
iTX9g5lSO6MdgtWeGffY/kX2L7Z/if1LK34c69+a35hf2PL6f6r/Z0+eZAtGD8CH3k68q9fI27Of
o2k3vUymu7q6F5+T3sxaZHvdjtB3sf1Pf/cuTfpJL5lMxunEDNnZrJf/K9pB+sLx+How0lb2ow+3
+lI6Hk91U4UvTMFYl9UrNtoh0Q6Ndli0w6MdEe3IaEfpr8zX+nukCyBdAukiSJdBuhDSpZAuhnQ5
PK921Euik3Q8mg6StB3py6fTJLW9qPj+bApd0Utg1pvqhTc5SJP33WnvKunvRUezNNXjObw9Ojn4
ZaSnu3dl7gj9u1+76SRbF+1oP7m+md4+N82NdHuTpGda9IroQWXt1vF4pn9+en2jG3rTHX09H998
fWF+uxedv31n/+yaorR+UVK/KK5fFNUvGtcsqhdbg6KoflFcvyipX5TWL8rqF+X1i4r6RWX9oqrB
FDSZrgbzhRpMGGowY6jBlKEGc4YaTBqqOWuwg0Q/DkYfJ9nm0GFw53co3NYdAvdsB8MN2UFwt3XM
bhfF7f0ItZ8+/6+zZJpv+63TyclwNrE7l/Yqk1Z3dy/6ua23uN7H1lOq//G+fTboJ3bP24vsph9F
N3on195PO6Ho7fQqSd9++I9pAAUaMH1qHf61b3yn9l99/fXzZ9m3r8+sp27YeqEm0wEc7gBuHf21
bzu9ZtO2DtMoCTdKWsd/7Z9oXzJcs1Fbh2mUhhulrRd/7R+Ox8OkO1qzWVOLaZWFW2Wtk023yvNW
X58djUcaB+lGX599fafvFe079zSO6icXg5HpgFe9rdFUINr7/x2bCn4af3ql0Vjr6CrpfWz/Mpre
3mic2+F70U+zyfRlMtqzLmdVN480Qvug/fWLz4NpoQlZGJkfLehdbsNU3Xr5V3hQ4B8oM2EvMm2d
jixA90fozXhkgEWkmhmImhnod0C3h+J61qLWq9rW4trWar/RyFq8rrW4nrW4dVrbWlLfWtLMWrKu
tbSGtYVb3jTZel3bcFrfcNbMcLqu4bzeNNPWP2pby+pb23CPYutaW3PDYq0fa1vL61vbcMPia1qL
a25YvPVTbWtFbWuxw0Uvk6mhEJLE81/F+uFTtj0g23dc+PVZb3yTLPYd6/28qr55NaF9BON1NhJo
g+Zt2DFcbAFR18LXu+wgHlbQNie68bb5TMqHnYUm3Zi82JE3TbeyGh3hDYe+2VZG7NCLOsba7ett
0+2LFCzk5RbK3ELb6HnavZm0nEULlVumxLJiv18M0gTun0mJYdwapnLDjiynd6Ab/mQ5szIDi7fB
vqH0FIt5rPRNenZ7/WE8PDdUzHO/S6+S7o0OYJLe9MhQVqaLS5dsF0/G6YvPveTGND6xPRSmhyQO
Ta9aZ++GNlBwetXiWmatd023blGYaYRLp5rghtY23EewNZes3Egwq95I3jTeSHDRaFZuNG0+/KT1
z8ZbSZ2uOFj0sqIr4A3y8XG3Q/PgGz5lS2OxO37kTdwW92421ZM60a3+2k3LRmnhEmGF5TIx7q0k
/DKX36X6TzodJJNWvFu2cphdOSI0PLhyeGpTA/ApAwAYl/MCRN55SMTikKDgkKCyIcFwM6nQkJDK
IalNXMAnmQ2JKmctaHznIVGLQ4KDQ4JLh0SZIaEoNCS0ckga0CrwSWVelJeyGxTfdUwoWhwTEhwT
UjYmxDpaSkJjwirHpAHpA59QDINCSfmg0DsPClkcFBocFFo2KNTCKup22x/Hl2dX3f74j6OrQe9j
MtK/H44vZ8lK91fteDLMoxtilkCi3ENQFeDJFLf3NHXb3OvZ9c289Hl7BwX8HbP7ZK5hZXHLYdod
9a6ONRyzOudeqbaVS1gHF1OjhM0VrCVampKcl0Y5Ma0yZpqIjJomLOemQebpSNBwOigGhaaDMOgv
HUJBXelgAdpJhyBQRjo4dpokspqkNq/dRIcEgdGTIkm0gyvVSF+ptMrlw6qR764GkdHmdVc6TJJ9
C7nQ86fPW3rcdo1qK+m+RZ3ZRQQX2b7h+7OL5nbscCT3zdxk12w5TpC5hrNr2F6j1FxzrdhrTJhr
NLtmG+YiNtfyhr11t9VOt9rpVjvdaqcPqJ3q7SnzUnrzytyU3toyP6U3vsxR6W0x81SUicwj6Y02
80R6dzX+WAbBk6xA2fVCRfBsZQEhrU2QUFlFkOD7IkgAbLAQQ0IXOAPRiDPIGglSJKYVU3nrrHZg
LvOhL1Jgcek8MNzQyGbECLcwka0mRuwiq2JG/tmUGeFx0epSbpPy+HF1KGK0zjJY7Mp5U6qmVldY
TUzPbazBnAD1JvkDbi5PJvjmgLfh8h1vT2jLBnssJDexBQVGNlus0EhQY2Igu8jWL7XHP4umOS+M
v6i4I1V4U6aVm3KAPuV5KJtPYkUn5jfIu6vuaDq+XupDZcAIlZo6PAGpMhw2NRUXTBmbVkalzReH
WJlew0M7HEf+olHNiG6wlQSlOgSVt97XT6WI8+EsrhpZPmHUu2tdoLLyDvltfnP+2+/E67OjZDj8
fZJXc3rsDbi0NrMC3XF4+/biYpKU3pHhS94UDPrxl1H3OvlzL9KGD0YXiQ6v+ue6ZPRDNrdLI/ZG
l++HuNas20XSt944zYcpevo8+uZIuh3t9LiNMVZ4cfTg+98/zKY60rsY3po+ZmM6GPX1ZI4ujUFl
45xdMv04HV2MT4bdy8niRfvbMgOXNGQuAjcyXXUjSyvj8PmO+HFwUyrmUrVCzJ0vnKw+FayPywb1
iThcX5P+iVCqjrkhvcykZrlXWSvBBB3TjK299b/19wyUz1xhz1C0dM8QJLA2PDsX14au1NRBa23y
pqb1NvlFG/IMzq8/J5cvPme4wXQolIAj6MLkNcsry8wOpt2YZmztrX/VnzycD21RUYvLJU0h1nHR
plZTifybfPSSFb6TFqHUGrO1ebPWLD8uM1cGM2pMO7b61v/VnzbixrQ4b6gcWsmiinN4+2v50inp
VhniO0uGetn/MtH1v8ta0kHst7qpgzTt3n57Ojo0z1pNvj2YnE5M/9+P02F/z7PCwO7qdIYlM9yN
V5jBr0YB+ZpriDKEuORaiAuh5VQpGcRfMsdfB4eNAZhtsTCx5ekk8m4QzKGJRhDMdMK0uTkMJn0M
xr98MmOjQRhaAmHn45sgAuOlanfW6ztAMDdMFoK9+E8RgjHKHgcA0/YtL8319mlsaSK5xj6NV+/T
2N+nMStXwWVoh5ZyLVCUGaqCO7SUOSo6PGwMixAucmKIlFMgCgWmzLN1acqIJUYUrrcdeHX99s0x
udN2kLVJ7v7QQV4FDcyzImtt3lkrwSxH04zdr4/usF+TYvIfouUASrldCHTklYaet3fIsz/auR67
F520d7B3YXW6FjX4g865nXLecUWq6XnjDLFysymTAe6zshONuKXa3RGB7pRnzZU+9QWfWJ3WCw+A
3W9SwVp6Dc3lGgVaX4chUPL0uIBO11EsU+E6Ks40to7gmYLWkfNEA2wTDRBtnGmAljINVqUZ+FkI
pjiuyBKw9azME7Al/EyBuJgpwLJMAVTMFNALGK7iYqqAXkdwle9bXji/ai8qvG/lm+wipBAgUUwr
0NMDiQVxMbGAQ1oCp6SYWqCnF5ILeDG5QE+/vcpVMb2AA3+4TTDYJhhsEwy2CQaPIcGAK+ewuHNY
xDms2Dks4RwWzRwWZTzzWJSx3GUp7HwWN7BLBDDqSXc4SUrwKYUAQYbwqVgLn2atqCA+FWvgU+pF
IbRU0kFxXJktSYLYT1q4yQPYKt4o3pTlAI8FOoHuCW9WdIcGuoM3gzflQ+HN+7x9c8ypHKokGaqU
jVElAEMPWLJoh67GlmQBWz6O/FXB9u1GA5BOmeOLFMBNsQA3ucWg8JXwUSuCpFf4Tnow19ynOdgV
yoe1GNJiAcciD8cq+12GZrmPZgVkztrvsPIxbQwZtIBssY9sCWTSAr5lPr7lkFELKFd6KNfob1us
u8W6W6y7xbqPCutK5yyZc5Y4d5ZYOWfJnbNEzlm6ZFohnLN0/IzInaX2DgbMBZ/d0uUqs7pCKNMA
y0W0XAEqcbgfvLIfgZQ3VbsXpB43bhXVAjnuZJ9m5LhFwyimNbQy22Kta75cJr78kQ6mxlP9uRfh
JcUse8osqJqJUtUs6z+ro5r5QzYfMSubHTMvcwkpSR6JcEaXUpdQzMNLVWwsERJp4FK6VEPyne7n
KjGICWtLPf3O1rWmgLdoRybgoTgk4OlOrqfgganhY5ZsQyDhvbqDhMe85/156fMFCKHgtK3U8Diz
tuC6+9RGRLysUVJYK9X7lCzZkxay5gZ9+aU3Hl0MLmdptjWRsJi/uCfJ3cVOljz8ilBIN9R2rUXM
ZIMTFA5tO9Znnt6BmeEeMyNo+eIKKIe+qeftHbYoHdIG0qGglssJPENRSJDaAJdTbjidPy1S0Qlx
P1xOVXdQoDtqI1yOoA/G5WwCnmqnsgRPNUrI4Km+o3IBUW/djtehwOsI0ZTXIUukToDR8Tkf8wta
JRiyoGDIlqgZ7DEpIuNeiMe9CAFXqUetCAWKofAoHMGBaol9qiVjWZjPsnDgV6THr2AFzArymRV4
SJlRn1NhwKYIn02RWx5ly6NseZQtj/JoeBThHBV1jgo5RyWdo8qPz6BUOkcV56IDdWkukMtiRQdh
ANddNUMBIYkMYtP1RMOsGRXGpmINbCq8wEeWppcjXK0ashDqk7FFmoGHYwXeJNIsN4PSQKacIPeD
NKu6E0iaE3QjSFPGD4Y07/EGdkhzLhsygJfa3qbwEuChhzBFtMODIJMtgMyH1gy5KGqGemzMm0sQ
6Hhc+qqhACkRvlM+dCWgJQKA9bPjBAYtEb5DPrilICYCxFU+mI1BTARIS31Iy0BNBGArfGArQU0E
eBv78BaBmgggl/ggl4KaCFCX+1BXgJq4BbxbwLsFvFvA+2gAL3f+kjh/GTt/KZy/pM5fstxf0vw8
OL2Z5/5Sqtxf8jyzW7sIg+fCwiEXK4TD06bCYRWuDAuHXG5OOKzqRV3hEPvCoRO+mhHyFhAjXEs4
xCUiYek1XziswdDXFQ9lqXiY2VBPPPSGbT5qVjw8PC2Khwgr/ljEQ7n0QCjCYfEwOxNgI+KhVOXL
NSge4pXioVTWlpriIV5fPJTlZ+AiHBQP8ZriIZhKwuIhduLhmzuIh1IVY2hVrvmSoHiIV4qHytIB
pK54iDciHmaN1hIPcYl4iJfEQ/UlGc2uk7QyqyEoHardxS6WSYckKB2S9aTDbGjC0iHJpcO3d6Bn
VJGewTEvX1oh6ZAsSIdiUTrk9aVD0wlDXgQesRObTAOvMJzSQC46V/dC6FR2J5CVLtAmCJ2l1v9G
QmcTAFW7lCWAqjFCTuiQuXRI5tIht9wOjlVTboctETthVsenfsyPeJV6KILqoVgiaahPqMRAwTCP
guFAonDuEyzZgcXSo1YklFXEI3g45GEj4lMtkGWNuU+yQH41UT69AkchM+wTK3DIMWc+pcK3ZMqW
TNmSKVsy5dGQKcz5Kpz7Knf0vt4Ana8izldh56uoEx+I81UyJ1MUMZjrjuqhcWHm50H1kKylHubN
hNVDIu4OT3UrRXha/p4kRKvVQxECfvYlSJQGnq/jmzzjosIMSgPJcpzdD9is6k4gbY7zjYBN9GBn
XNznDezA5lw9FIAwtb1NESbAQw9kGv2vDs4UCzjz4aRDJj3pkFjpkIB0yJSHLBUBPREQqp+zZg4e
coiU+2domBtkjmz9HDoO0mGGhYmHejkHrRHwLPbxLAE9EVAt81EtBz0RsK30sK21zyFc5CNcDHoi
4Fzq41wGeuIW7W7R7hbtbtHuo0G71DlL5JyldM6SOWeJc2dJlHOWyEmHKHeW3KXawDFRRjpk0oC5
sHTI5Arp8G1D6bASVIalQ6Y2Jh1W9qKudEh96dDJXo3oeEDDiNaSDmmJTFh6zZcOF/h5emfhUJW+
czCzoJ5w6A3afMzgsM6hJxwKhR7JcZ3YnCK8IBzSGsJhXLlYA29pkUuLFaPyxSpqvUpQ97Z85Wzk
3aSmc6YvsuYLQTC2z6nS8AssONqY9IpJ+Qiy0Bss0MqT7021ppZ677BAtOzgVbpaevWPnl+yIxPH
gi/o0X1c56UnuaHBA5RtO7AfHzZ974lupEg+kHK1fH40T4U25ll63t6Ri9qYaqCNEWXpisAjZHyT
yc4VhlMayLjm93NEUlV3SCD3mpON0BWLrf+NdMUmEBhyyc56F861MeboCoocXSGBrqCN6QqxyFXU
Iyp0iwtchazSxFRQE1NL7AP1WAQOPABjPkeA4Sr3WQXQxJjwOQOI3hHy2QJIFcbU5wkgSZgInyEA
/YzFPjcALAQnPitAt3zAlg/Y8gFbPuDR8AHEeaPYeSPhvBF13gg5b8Rzb0RkTp4TdwYRowZL1X2L
H7YnkyMWDnsY3VzYQ8tP7WDBfEm2Kl8S28M7EauZL8n4um+1WbIjz5dkwXxJJtdC7WApD6dLMpmh
9vfNUbt3TClmpS9LQPPX/FWoq+fprExcZcRaUDdJkvlJko5TaMbKZI2SOqwMK0mSLLu28PI6hL5o
2DX4lOjFp1HBn3sRuzMxY9NWlyc/s4LWYma8gZuPG5wHdVRkZgiOJX0kzAwjS8zM/H2DS9q0CgVe
3GrTJPAUJ2ObDPZ4uRhMAtmYjN9PsFfVnUBeJhMbCfb4w2nTm3WviLlgj89zHhWEeLx5iAfBmRfl
gaBcM9RTC6HegwjSvnhsD4J1wZ4vHjMQlrPw0BePmQBFGVIk/TDTPiOaBZscxX6oiEBthoCR+AEj
BbUZwkbuh40C1GZ4XlX5wWMMajOEkNgPIQmozdtAchtIbgPJbSD5aAJJnHs6qpyn487TEefpYufp
iPN0LBeWmROWlQkk569LDgWSFmOh+QuHqwPJDao/Fcc/chkKJLlYFUjCYYPzFxWvDiSzB3D9QJKs
DiSJH0hWnKoo4lAcydVacSQYKlAwjjTt2DjyX83jSO9QRSzK40iBA+qPZ6kG/ShelH8QaqD/CGJD
gsBzQGyj+k+56ZQEcmbZPek/Vd0JZM+yzeg/i63/jSHBJjZKfdfPN8o8JBBz1Uf/2MYEgjeNCdRS
QFA7GDDNLgQEqArlQ7Wr1R9bxMP6VPhnxcBbKaj/wgoG+J76Z9WwLCKIfdQP8k+sfEwPSB9jH81D
WcJ8HA+n0VDpIXgK59Bw5GN3vEXtW9S+Re1b1P5oUDtyzkg6Z8ScM8K5M4pV5owIjp0zwpkzItih
dmpOjRGkLmoX3AJAGkTtVGxO/hHlCUCChVB74Zy9Mlvsg1SC10Ptgq4t/4iK4zKECMF2wdeC7Zml
MgjbTTsWth8cNYbtwntiTJaflSHU3eQfac9kkLGnxJz2Sw1YuqZ8xQV/GUze/jH60zTzfpwO+z7q
fZV0b9y0LY9l1hNUqS4YfnE1rlf2nAUSeMyLbvKIdtNmyXwQHEhoo/d0zkJVdwKpbSzeSCyhHu6c
hc1u33pXcrGEnMcSCGIJ1TyWyAIAP56wwkCDmAItxhR/p7pAqRdFmAXsYgnqp51RCZIDfOcfyGAZ
/SzaYIp5UQwVIDlAJCK9SCRWIDlAPIL8eASD5ABRCfWjEgaSA8Qmwo9NJEgOEKHEfoSCQHLYxinb
OGUbp2zjlEcTp8TO0Qnn6KhzdMg5Opk7OiQyR0eQytUFeNrbkmbmtXgS141TLMRCkoTjFLo5dUGV
xymShuIUSVbFKcqid8nqxSmmrqU4Ba2OU5Afp6iyVHvTBR6KUyRbK07JLBXBOMW0Y+OUo+ZxiirG
KSQuj1OkDMgLnqUG9eMleYHUlxdMNzT8RYFHKegmM44qTCcokPZE6b2EBJXd+f/2vr25jVvZ8/98
Clbt5pZ8y/dkBsAAGFZuamVJdnRi2TqSHOdsais1IkfSXFMcHj4s6+bs+ezb3XjMgBxySJFKvFV0
lcqDBgg0nt0/oNFoMYASO/GGsVD6HwgJdrFSwrSvVkoHCbSqIAEjSMDjjV3okzYf4oGNsACWPY8H
2NIzBt5+xsAXNP65x5WMawsRWhkJe/IQ2hcJmza0LBJGC49UqNnb56+jUKc3Nj+ch9q8wQZChnq8
cViRpKEGv3/meq+773X3ve7+1ejuSeolkvQSiXuJFHmJpLxEEl4iSa+7V2cMEWpU6Zq6O8ooSJ9G
7br77m7W87jZzCRt9e2cRit0d8wWc6m2estxL39/eYE675ImCFSTSit3WfH1YEAabXtcsbRJWv0v
p3wbFOAq2u5/OeUWBZxsjAI4upeqUMASvwpp+zUnsTvrtKVctF5zSlddc+LGL0OqdzAGbVZrGrql
clsouqRJWNRq6Jam2zhZNBVlUbuhW5pa9zdvjjZ2sshZHAzCtLmuu1g8WEr14W3nZzilVjZl0Y9/
nzzeX5eDp52fOU7E8vMz3gZcuSaw3HIVRezSFg/LbESnLQaB4nls8Zay02IaKHZii7dQ+h8Hlnei
msDC5M7P/MNzsYHNafd/wayvYDM3sBkqvDFstjg3hM54+iU3hM98Hj7/EcdoXIZHXuaRNwOXuQpB
NDNnayZOh7A7pjgDvnkawmxuzt0M2JYh2FbmbM1c4ElDyB2ZszUDvFkIvLk5WzPwOwnhtzRnawaE
6wCEJ6k5W9tD8T0U30PxPRT/aqC49vIu8fKOOXkXp17eSWd7Lp2r5IS7dzlE5f2RS1S+1vX2YDQt
FrXDIC53B8XFEp2/DQYBn6tgkDAq/XreHiivLfHzfD2suR+L2rw9AJNzr2OxzdCLqWrc6u6BCqL8
D043gC/ct2gdvohm+BLHrd2mV3Yb4YV4TccPYWa/1l0WfHucPsUJhGNgnZeyqPQmWvhSlvz9MzYw
AKh480ey5It57hpV8X9CE0H4tA+6yj/xetg/7Skui9v2b1g8t3+zGpE1DD/TYq0bOFQQ5X/w1w2G
XzUy6sMv0c3DT7YYnH7Ms092XHQ70ZeYCZFcR3HUeSimdx3vyAKiOCj64qYXqahz8O2rs+7HYtgv
H16QM4wO5yqNGoZvQitorFrbfM7CNxabtbktR7ev1MsNs9fAxaao0NlGY7OnbbM+Xjnr58uALFn7
chZL23YHbzcYT0mtzGo8NV8VZSz+c8cT3cBk1fOqy5o3eDd0WS5887r0RRotqUt0o2WmoS4nF93X
syEBflebKFV6OR+idbDINWqTtM0xNr+uJZvNMVuObB2HzK5rycHZBuNQ+urUx2HzrUvGvJHM6cT0
UCMX1nVQ1aVB2TU5QvdbGdOtbbjV4zWumLS9Cd3jNe+esK+qgs191Whrzni02sQnrCpuTIoFE58N
XlfkdHWGxy23Zbna5a5lc9WFbLH65/p5di2XsdNyE4KnO9m1VH+a1f8WKA7k5AKKA3Di9ipZauEz
JIwsOobPxIJfSBBZbAufstrXFGZfU2386iLtRoZ7mrj9mGy6p4k8zO9ruj3NZ9nPJMOf2G34QWOY
LUkebGVyZajhHQLj8yfhSbB9ye3jjLRRGrssWGycB0WhUZI17FdJuMtpqDo0KYqNob+eu7ZsHBal
oddas+sq0/DNRlIG9/uY+33M/T7mfh/zq9jHTP2Tb6l3q6f9vTftz+1U4iWgf19Yci8B3XUAWF6d
sEvMYR5KOFjkUa9rf8eGs6UYuFVnjxftNprvJzPeCtL4SpBGt3YZX/MhmjCzX+sgbLP9Llus2BAb
8lTcCLEUG/YSliM2PPxpARuyKFHLq9+K6rjYytrIFtMO6rAcsjY639zaKLgbzXXzVlXl6vP953w8
BqYnP2aTU2r7XnN/N/HoIN/C6P6+1ksAX2wv/PCyY+w5amX9j++H5W0+/OE7+3/3VwT/Kcuifi9q
Hk2h29b6eNK0M9X6LCqbfxY1jjbrSFtOO7S076LG0cHfNsCW8QtXTL0r00Y3qUy0YUs+jy3VArZM
NsCWKTmslW3Yku8SWzZXXcgWExT+TNdHlrHTYqDDk51gy/RPc1j7PJJV4xiVVlWCz7RB3MIKVAHK
xADKNNkYUIoFQKmfAibnQChllCy9Z6Lb75noeQjJVAAhE4PIEqYDAAgNZMhpiCzNTXIehcjSGsbE
IbI0pjSprkNI6BgDIXkAIZUBgEoHEFKbtDq8laJNWh16vkpN2jR8+CRN9hByDyH3EHIPIb8aCOk9
s2vvOkV700+lvaDzr4ZL7QWd9IKucsOovUxj2kNIplB9a4eQTO0UQqbNp42iFUKKlRCSVnG27lum
YWZbQEhbrKibTDhA2Fjo5bQcZ7d58zFV06sSi4Ul69hn4N3lpvJD+4w4+X00LqclpkAjjegJZhq0
DRxyuURBZKLtWj0Tc9fqV7uYWoRGtola79VTQZT/weUG0Ij50VaDRiISzUO63USBLX9muNVUJBbz
c2spIx4pOtj7/maxQRoMerCRVp6rrp4dyA8Un0StvZ5uZYbjyonbez11bfv6eGMzHCgm6PXmvY3q
XdLF+x66BWlinojkWu57sHSH6HZJPYRs8UbAo2dBt0vZafHVwONdoNuF0v9AdPs8Qj/GUa/8ealx
Yk+YtvYQZywJ04on+EyYOyR9Ap6V81hW7uggNE7njwoJrTYdKybGf9ncEWQy52XZHFcmjDccbSZM
NJ2vsqTpfJXJ+fPVPQLdI9A9At0j0K8DgbJEWmHEEuephyXuIWiWODMeJv1DACp2ZjzSPQTNJB5S
Jh6SXd2Nywdc5YreyXhcjje72CvIWQJL2k7rYPksh7ddYxTeOcgASha9F52DAu3DixuQFC+6nYvi
9m7aAaDZ70wgolPeAOwxqjF+TjpDEFrZsFNWjwB2xCLqdDy1uWdmySr3zC6XFq0vbtb6sMcOXv/r
e6un/7Ba/TNfZD64oPsAteGpFZa0KIIsWsaXODjZjK90E7ZaFEIWL2OLHxz/63u6orIWU3odptyN
l6TFrxljy7hiB0f/+p7UzbW4Uutw5S5CyBZnw4wv4yo+ePWv72sXLNbiTa7DWy1T5LDFTpOJXUKe
eV4sdJPze1BLQPvcHkUL3tmIA74eB3OGALtsA3+oWdMy11mp/UImZPrn96VQbUM+eR74uoydtvG9
E99+zQvAHwFfd6cxeEyqLCblf+I5q5rHpmqn56wxbzxQjUXj8WtMWFI781tuE8um09dYNZ2+xrrx
9DVtPH0VjaevaePpq2g8fU0bT1/F/vR1j3332HePfb/W01fhN2L9I3jae6lV/gqLEl6SOcc7QrmH
K4SqvNSm1swosZdV8Bw25v4cFsUVq4y3lp4VxXynZ0XNPu+YbPeAEItdHggvZaT9vVS81biEkTbb
1XRtNjzMrM7OjqDABpCPtxkXaLKBplaYrj7B0ZggN4JMtjpbkHq7YzZMP3dVWbVfVZZ6mzO3wHuh
iJvP3FS8xZlbTGduquVmXix3ClqaD7lUi1lrrJ4JtCxhp8XANda7AS1/3pnbcy31TFZHbqq6lyhr
9xK1hTeb+1tztxBDiBNeIdwM5uh5mLPrO4lRGl4dxId7sWUMKokCBMNSA2tMXOjbnEcG3Jg4FqKZ
2EAcg2nmXmPVBugYDMNCZMMN3DFxKsA3ShvQY/BM6IBNcwN9TFz4jpHWBgAZxMNCxMMNDNrjnj3u
2eOePe75anCPf/xb+9c5tL+6r5QXhswLQ+WFYeKFofTC0ItAWP5RSWOtCj0+Kbcc4qxWH5sgzhJt
kbdcWVJs7spSOn9liUXrX1lyCmbL9Zw4+iMUzLYzxviPVTBbjhZj9v+7gvlscwoGaaVLpkaXZPHG
uqSe1yOfrkMiH/N6ZLpsu5yKWb1dTklCLTJ8nDI1amAUboCbBymTKNwAj82zmFG4AR4bTxMqDhVC
S5WhKmi86erQUEybtDp8/kabtGkcKn77pyv3Kt9e5durfF+PyuffaNbex7yOvXiSXjzFTjxp90Zz
EnmbY5U68RQlqF6JNX3uCvP0hGrf+o6SnfncFaz5jkSlGS2z4VLJKhsuRlcQagrNk1+wcFmt6b5X
Jdu6713aJK0bymrLDWVTU92+h6z8HvLpE/aQWXBvgzc7Mqjeud+i6zijCtWRTtPjI1SfpgFd95j7
lJOAZXXjbT2p2VZ+mAX6mZk7GtCitVuxVOOU+a/HGztlpjKrbl3iS1snO+hW42Vay7Zu1WxZt8by
9x7qeE/s12WVa3W2q+U2LmME3hic71bd3q3SnsH9dLyp/xgReNoWSbORWvXC2nKRIbd0/rus7NSv
Vu/yB3dpdLEJ0nBVRo800HSRTEXNI41Baqjg//Cy0+yKxv5m7lYqDhdzVfQIIZ4bQXUSQYpRCYPi
txvAs3ZwwSQ4+dLLR1h640hLyBa5egxu2cAKHoPb/KImlLMwsvDtuJaRhaWaW5tnxxvf2qQya2Or
WeqlfF31JSHpVT0St8UCkyjKqnqtIBs0T6umFaepkWpDH5SGw/HtZP0j5vYxoppbrvV2b7rVo9kC
nWfNj5n2m76pe0H73earEZZYjRjZ7F63em9u4fSZtW4OSkmbgy3G7NFOT5+b6yFUi91u9Eynz0vY
0S0WvNFuTp/ln+Yrdwv0BfJlAX0x5Z7DZnabEO1tU+bd5mrhNw915DcPWWQ2D6EdNt48tDt8293/
tJuHwcbj3E7kVofPIg0f+EIw6TYPRarCLbrYHNiauNB7kJbmoNfEpeE2YGwOiM0mY+jkVklzsGzi
5rYaY3MgbeLCF7txzlfbmTzYzqRHw/ympgg2NSNtDsf3m437zcb9ZuN+s/Er2Wzk5qFKgV/OwQGP
UivueOzc9/G4EnfcP2jpja00s+IOlnXUvdZ9a9soWjxqfWtbpLt74EvIRn+5PGp7KYpHq97axmwx
F7bWDiHlteUO4Xw97HVHHrVtLAGTW6n8tqatW0lUjrH73VzLl3WftUKp5j5b9yk5zADTezR0kYPk
Ha5umbVQoo4o49WH5qDSPPM9Yd14IZdHuoUv/bz3hJexlbawlT7nPWHdfE+Yx23gJnrOe8K6+Z4w
j1tuKUbx898T1qvuCfO4xUw72uVT2Au8OGQafw1MtLUEfx60voydFtP1SOwEres/64LrrtUX7r0P
g3SrwDgzYDzlL7qdgyNksnMynI4faSP3xSb4fMGwB7A2E8vwOWPz6Ju5n8AfgHYmd4XGkxrK3WPU
PUbdY9Q9Rv1aMCp3F4I4526R98+XcR67RZ47LwbcPEtG6RLQT5jHZCdfpuOsN6U13ECWOgZbAA3p
wt06zlrBFZsDVxuaXzSVKXbIf9LK/5wfk2R7/uUO+Vet/M+drqvt+fcgCiPe/7Su55WU06/rT4Ic
jm9n9yA6D0jHOgSIZY6Hf9hUAU35Mp2L86ipwAVocLIJNmhnIIQEPG7nAUDTyXqoac3qY7msvVyA
kCfrYcj2ch105Ly9XEDUa0Pq9pItkuaiveDk4PUzFJy0QPhkOd56c/KvbbmwG0DtDyfRejzPwI8n
a+9HVWtRMwOqnQFhEd7p+qXKllJ1e6nS7o7+df1SdUup6aayY1PZh35nuFi9DQN9vnxk/fiEkRW4
DU8bL8VwEa/VzfPs/PSEcbYWO36ZOwL0Nc0PIfZz1mT0RGwtGD2lSZTcXEeAv+ntrStr7bShNVOj
ZYrlGplsVZXEdvvQtpj2fWjh9qHfnmy8D53WH9xKouaZIZJNq7rZzMBysZjVN8W4iJfPjJ82nhm0
W1Wrumyuulqr+efZOdt4ZqzJjtfVzmerzl/Eoo1WqDk2HcggTw1nMg3dRedalYv/1lkq2LJZKp5r
libkoYS3PgTA5x8C2OzNdVdM+wJq3wFID96dbPzmehK4JEmarzby6hmAdeu64TSlW6U84S3TdMUj
62ebT9M4WKFY3Fx1sVb7z7PzfvNpuh476x7cJXQfhSeyZuBrRncAHb999WBfA33i/LCFCSqsFWMm
cqvHIl057VpcIt1jkecnGz8WmQR3LBK2ZFKkbefebJWjZMwWcpHReufe8+rI5ufeC/UIkadss5IG
VreyknYVbjWMpoKMYfTfTjY2jKZnaKrO483iTq75tlI4Yn+tpstGLyshF1ioqMnYZY8dUYnr0ILu
KPrR78PsHq/aRAuvHpmOXmi4+bePmkWyZT2psb5ma1WN1fmPHzrfHn7xK83pcZezSLP2B6M+dm3L
FsM+dOrwFqvU1NqN79nOEem3jVVc2LqSbTfoQsV0YXILQmRSrTe557WYJ0xusfShKi5168xW281s
W9u0fWYrN7MvnjCzRR3iJUkzpKh8JW82s/3w3GxmJ6SlVT7bdjKzVTCzq1t0azxo1jCvZeO8toyz
J8xr31Q0r0/Og3nN6Y7CVzGvk8UtacVbXly4Gs/yhvksGf1aPG1s+SbabGzZQpNdji3Fg7EV698f
sgk9ZjGEAcYWBpjd/WwdZOSqbLELbBXkE0aZbzQzyl7NjzLxlYwyyRZHmVoTTKfNnbYbMK0IAVS3
cdoQgyL9TG2p1moqVW+j1vLVko+Hkk/HjfvsulWf1dF2YMTWtF2f1ZEDI5dPACO6fok00c1GuLrF
DVRYWbzMxRfcQIn13UAhG89vpbTNAXYirJUS5+4VOc61s1ISwhgvQLrYvZbOjTkTXjQCVaayYuJk
xZSkbNMrRWSGFJotrTBZwpLmzZb4Uo9Dot3jkFgwViJP/Km9WgM1J78+UeCUkpun3mRUN2zC1jQ+
gHT9wg+0O1KVuQbEPDU21MCNPjdu/1UUuJbkxsG/iqP6xSXo970p1d6Uam9KtTel+kpMqZSxiAVJ
pCLn+g4WOCuJYAF0t1tT94opLKBW/sACa2UNLMAoqdf1KJSQizWuk/ZLPst92LcdCuA5wHyxSbOG
0bojolf5FErMGbVec0dEb+0IaKEezuREt26HaLWdYmir2r4dopVTDD88QTEMTrzlkhPWysPHRoBX
moPTynVGC+ANmuzXCq1tBHhdoWwdwIslrkNLw23SmP1eTN4T2OVPB7usCXA59vlaYDdosarBDNj9
ZR7s8q8D7MpocUul8hmy6DFCtOAIGd7sfh4csZvVG5akCinU4IEgeIAV2RgeWA0/hAjh9YQmmCDm
YcLObzUE9/MlXpSqgAGrgwgSPRWUCF6NluSbwEMHFfgKIB/2HkAEPgaULc/CCF6HESqi8hyYCByV
KvIj4CBFFLyXrXAJ3wOLPbDYA4s9sPiagIW5dEeiSXrRxL1oirxoUl40uY0tWKataIJFGeXwuqYh
RujyVLYDi+WvdLVZ5S48jSXjZlyRqjZckcoVuAKzxVzWczDKrT+EEFfEq3FFHOCKhXo4E/q01co3
1VvhClNVEbV6GKWCDK74uDmukHGAK1gjrhCV14clG85BZVEXTBY2nOX6G87IxvMrilvMRhhZ1Wx0
iiL0VaUoJkZRZBu7pmILT8C2KYhY2rySmCzdS5bte8lyQUWM62ogVNk4kmJ1xRHN4Ukt5KFaaBVC
GSqE1st8GqqCVkFkoRJoVbwkVP+koepA8YvSvcq3V/n2Kt9e5ftqVD7thUzihYx/RiX17/QZgUJC
hnuVj/m95BiFMFtX5WPkmbPycLRc5Yt3uJcsWdqsPIgWnU9EfJXOx1KqzQ68Ybus5FrqI7G13bb0
0iZps50W0Xa2066mrbbTVJDRHv/+BO2R1f1PSa6aa5u2D0S2Q+yxhI3KcdHScZiuGoccnWOJeAfO
9l1WbM1xmG4NY5Y1SdvlMxGzrYxFXU1b71VQQcZY9PD1xsaiUEx9HIqkuba7WELI+lXEMji1WHSo
T/NqZWMW/fj3CV1ZeppnfceJWr4hL9twViL+CJy1hQiMUicCDc3gLO1Md2BgVZBLGsgFddoYclnE
tIY3YA+55Dzk2tV+vBbhnntsNuIJcukkhDvabH6buLn98cRsmps4FUIqZjbbTZwOfP6iUzkHxYRO
Q9gmzea+gX9RCPS4ORTYA7A9ANsDsD0A+0oAmGDSSh/B3HGwYNpKH8Gc9BHcOagX3JvwaIECdl2T
aiNNRdyu7epdmvDI5jctBGtVd+OV6i497CFYvJ6OGqdbY6X5elgTHsHa7iMDk9uBJVtV3qqkYkEG
LB293hwsBU9ySNmspLJ1LcYwA0yfrHbWGzbOWiqupFd/2Wo3CkInK5z1nuzAWy/y0WDrL1iLF2Et
V3jr3YG73qV8tXgR1mqFu96Tbf31LnDlp0+LF2GtV/jrPdnWYe8CW/YATfCoha10hcPek9147F1g
LrgkLXjc4rxpxbvX7zf2ULDAjFkQnhmdbSUf49RjMsa/+ebNUYdqSugJGQeMc9tFS7Nup+apo3Pw
7cngH92au44XZPnWoSedl/3uevPf2QfI4HdHw+7iw2Xu17z+azMCOgcZCMyi96JzUOBgKG4Aqr3o
di6K27tpB8RpvzOBiE550ynIyrKX4+ekMwSMmA07ZWXP1xGU/cc8+2TN/Ig5noobIaKo81BM7zre
sA+iOILUXsJyDYwf/uQZt+xyFiWqMUsmRB/G5LIsb7TMMMuTi4Uso1TpZVkm11G8JEtx04sUNu+r
s+7HYtgvH1yGXKXR0r4EMPukMSCjdOXvjvMJzIp+58E/H2cHYvWeXGeSA7FD1NPhoBjmtdQ20lT7
JtIKprcLxFEtIEUtoF1Mmlz3e6kJ8LwfaZbUkrkAxGS9myiyLBiD1M5nM20MY69mN0DufC7yB0ey
1qIjozs9dnrlsF+QkxqY3PX+0lmvL9SS/orzvqZR9eoftpNrYyrqdg6vJznuTcBQfhgXNEdMRlDu
tMRVr/O9XcwOXvzww8uwaBx9Wba8aNwHOvj2WDcMaCG6nZN/zApoBseA6eG/3GWTUzvBTMY7m0Lz
7O+q5cjeeKNmW2eGHR02zLCFRgPd+r6YLLbUdivDc7XUMJsWn3OAFZDBqgYLpwpG47SoxJ6Z5N8e
SmdUXf/3n3ZuykiBxvGrM7T+/f++RPl6OB5ngCDPsdxurW7/x2ZZDZ3GLLNryNKlgEzRJ0cXlool
mdsZ4jL/sorfKJG6zi9lHa3F9avTpRnzjGWQdjHjl2YJ6gJWcFO/y17iOnNT3M7GFObrle5kQWO1
khRfIf3VpIDSR6ClIGDs0gJLodeDMsMwsGJHXYz7la6ZIcRfdogJ+EST8/z25MsIvtERQTa8zU/G
43IMYYABaNjuggp5Rs9iuV1bfO56PsblntqCzIrcjRFXXt5lMAxDcvzSao7wzZwjMvgGRt/N7q8p
DXBqOUGLq7MMOI6BQ4Ca8EG80dyFAHq0gd6AL3Q1NZzCFz3GmN8MiF8EdB/z68PJJL+/HgCf6Luz
B3poeX8yyNGz6QRoeN9hcgm6zjg/KofT/Av+UtAvfyqmZ6BlZj/lj2f5ZJJBk33OsQ9YMh//Ls/7
ed9Fy/noS/g59QlT81HIA9TkxzzrA9aGADpEy/8BYg5y4lSfyQgEGNSYQ4XewDAcZX0IMB94BWsL
Zs65J1lOOF5Kx4Kg2fPs3lFxBFwdHWfT7Ah0tGEOLYfeXkKaS6wo4rSXH4E6V/Sh94GoHfEK1Gzg
b4wpUyKe5/kYWnKY22GISgCQL6aji7yXw0oGXYuuBQ3tMh/2icIchXL0CTmRbfuB5tIbFyObrzBR
oPZPLnLDgjA1gyx6nyz/AjvDTlXTCkCDOh0Oi3vynncCg7M3vYD2fz/EUSJ0LfKquM9R/QEy1O64
7JFH3IqK2gp04s0Ymt1kBLS4lgEE0TdgfdTBRCwm0zEUha44sMWpyjBFTqc5cJeIRerbAodDkuBA
H82mtm7oFQHmGSwRF2WJYfWSYFDRowkOBBxZV2dvD2f9orTFAxXnK1K6MbpLwgSXg3Lq42U8P0jt
jESnDhDx5i27oG6DmeznjOQ27mfQvPIvNPHdyiHNfHpz/sEtBTJxlKPy/h4Glo+QcxF/m+W43kpV
o0ML5Db6ZNgraQBJPZfgvBhRJxEuhPjUxR/no+nd5RTEazFwIwprh3rsYgr7cxX7yHH2QOt8rJij
VYuu4o72trgeZ9jLytfetNo85yoJ48+zyeRwCgD4Drsj4FAupjwqB+V4SXK1mJyqtiS5bkpei0/n
4m0Dr+BAR80/CdLEzWlsw2sWRtfHnPaNfQVhWMGBJOZIQVHQ0ueghZXje9SU6dkVoMqAepaNPwFR
hcQ8m5j8dUB/D2ramFYq3IdpiKAyzOxFzFNLAet6ORvDClrck0TEA8xQvHqZgFYfYVQlFNAaPYyr
LfgQLVZE0zoJaZKF7OcXfDzRXEjStCqnapHVrF9ffNEE+iYHMAmf0GZTEHQXMxAX4y5D3ebNEXbv
uBwMiAKNktFhc3FdDIrpYxBJjnlAKx5mgwkEoSWy0QhKInaClOi6ENdMK24YKkHD7HNxS4t0kBRq
Wl7/V8iFMrTzwey2GEJY18N+8rOI6vNlSmt0PQNUiK6gouegQ0CIdsedkGaoCgE2GeMnVGE2hPbM
RphOoG7yuhgWUwyROjS9gy+5SsPMcEnPJp3rPB92aI+sHMI6ZCTFY2eQZzdOBf1HCxLI6grwtHS6
G3bTtKSd/9zTYqsav78xeiggUgB49hTj0WijDpefTk6GIEiNukzKaTE5d5iGMoC6/vZbP7+BdcAA
n99+M5qqo15WVIXUQVl+mo1qaXVFraVNkUrwCYPYLT28/osQiVTOOGjZt7W2eljRVizRNzcbo6Yj
vRp/5OyJwMaD4MaM05s82UOLPbTYQ4s9tNhDiz202EOLPbTYQ4s9tLDQ4mXngTRD+AbWJvngBr6A
qb4VUBBKsYKgjTJmXDgaacRQKbqD4VjCyGeMVVHXGfCJ2hD8fmYCUDwggQkgk4EhJGgKhXWCIDQ4
6jkTmKWziYlWiDhKm1a7OPgGXnqDcpL3uww1GpKWQEd9ZpAPb7FOqM5MyxF8AAsAQGg8oPoCui5V
CJUWI2atmGKostg+LDGxMt1fmPocwXIEtUdNZWLG6SUko/bn5tWJbOApqKNAzQCMwTe5Kobyf8zx
gBwIzBI+Fn1kFXUS0wy/QIBYvM1/Mb5+gOAb6e8QkCb27z5WuYLwt9oFMCkwVYLYcqWgZkFhxwaq
Ff38c9EDyfYlH1xgLYHK7MiGT44JbrLZYHppWx5VCUtynYE6RAncULlG6uLyw1CXMMS3+Q3m5jm9
wm5BTaI3KKAg9LEztsoNQ1ViMn0c5LSqdBnqE+XwIb/+BBqX04FgzkFM3BBTkC055YS6xUI8MI3T
AnULFzdFraiossU5gl6D8v7xKwhC7Uy60xoRqzbK897d5eNwepdPCmgHVChgZF+XVABO6OH1YAbj
CBWFctjLhqMBgBumolpwejcuZ7fQO4pq07sjNYsp4h2aB1ZTpojZnpFROJmAJIg0y/0PsBOG/euB
+42kMAxG+FbumyqodBVE+xemUkcY5NlnyExHjlCiJGI6dmHbfJoZAvajJu76M9Psjh9NDKJhTYGT
VBN7uFRigHjLSQNkmpi7gWUGmlATawUudhBITYDserosJaY+5Y+wSkHvprENjsYwGSHMbHgGPKXE
E66IXfKNbL7zPogeGFJpUlHu82lmqdJRbSVT4uy+nMEyY4rUnmBbLk09xTQdjyJPuS+JEHsCTD4I
syqMjcsj7gnAOo+EDz7c5QCkeETsjjKgQIC4pIHESYjQN843TjJkOBqXt9QiPCLm8GaF7RQeE3Pj
/L8MkkJDnQF0CI9jQ8cFhcfMBor/xp8Qd2b5gRAxB9X/RD9LXIjKj6UJElbmMTEHTTkwRRBzk9n1
fYGRqQnBHIIRyRnxNQUMNBuRdsAZcTQtb2/xZJURSzPHsK8AxBB7n8sBCClXS0ZMPmTFlNhixGU4
yemVJpir9fWEMxXQqpWEMx3EmPHBmalEno1B8+DcrFOmy3htaaKuvMEbVYbBPvowa4qmQcY5b4p7
KEBE5qgqcC6aEuDQQYHWGz+CZtql9+1GlWoIBKrdNV0NmZmpwTnV6y6b3Lm241SnAQRmsDw4qjCD
2uxYdOmFsHIISz4hVnqwAYJDG+JmtN7md0Ufw8KFJ3egXnBhRnM5mpA2zoUZNVZu0rNG2NWGQZRn
5bigeovUYchzGPHXoGdeZePbfHr4OSsGmdHljP7DUdKdHr86moGqATMM5ZwPfiymd2Q7AXRGdETG
1xlOLpR3QHid9Uib4SjsIEwLP4QSCgF4NViYvJMDwWBSlPxIU4YGA/v4ldt14SjrTuvhlMKExzM7
lKVhGsAuqhZH1PS2PijpjJJN+j0QcK+Lvi3K5SjQ6hQCCBxlGejcn7PJUTZC7LKgqnOUb0Q9Jk0A
ZTEQZbDL0zWvMCz+Vi9SHctQw/ewvpl91gyGRt9Afo7irynG/hDl4LsSTQqtgslRFl6Gwtal5Qsx
H3DP14x4lJGvHqf5W1IIEfXDegCcwrC7hc5FiUmPNy3G4M5ViDG4og2ebPAIIAzvogFF2z0P1wUq
DQimN0xaFKhmxlICBzc5ClaiAOKZ4l05qLD9BbMx2JGku3IUtESyKYQNnmdj5BBFrAmPS4I3w1vb
TChvXxX/mGX918Vg6vg3/iFpY+4sh4nkyNqTL0H1nVbp0T8/rbWfHQlF8nEOs9EGoTbHj4ARit4E
t0zGdFnQxtHmYmFrh/KZBo5VvYnveoOl4TZjcxulyWKiIBOo93uzStlmvwcsRzt0pmFQwptuCZPZ
3kF5/37Sg6UX8YDNMw168hwbykSJyKDxouwXvY+oDAiU/QY62j4pXVLcgoAkl3cAyxzNbt3RUiRQ
Dbj821szZwSqABACjI6qOEhpuj9bp1yUDzTlBSoFEFFfWgRqBng5xa4ndGMaltLLsvcJ80K14Ijk
BqxtEESuZ9fTQW6IXbqYe3R5+RoaBtbG/GIGQlmgZgDE03vcKLUkQSS3fWmJSUCcWKokKnWfpSii
oHvRyagqRRMVYa4lpEQwAVQcbMDUHvUGIFwigDjOe4PMinDBWBVhf8sryiWIbfy14f9yNsI6WU6Z
4R8+gOXj92eAmMfFFwiqWtBv9grUFWhZgSkrmGH2fFyA2lN8zo3gEbQJ/+YVbXNBCLeuUWcS3DDp
UvEqZGqHot91AoSSKkRjgrtV26amvduqdijtq7BN44UqdoatmYhqRNxbLoemKUR9H9qOJZT+h4Ch
4Av4NVdP3/qtCIHi3xA/DAc1Mjbq8eHV4aXV5ISgC+EZvuyej3EeAAlHxKAYXZfZ2P+Qmvf+3gRo
SYIBaDQ7mwSlv90et4SYeso/XQkURpRTXA8wKztIaPf8/dk5mjtDSFShqn9RCwDq32A1hYAZEqb3
EuUDteSaiOaQyrQ5Cn9PwuMogaK/vj8PlLg6G4AQq0KvQU+yVF47P3gcQf+guHebGQIFe02wCpTp
7lPZT6NBAUHjUAII5hKkdJh8V9dChDInE/XeUKSYkFrozn0EiuvgcEvQMzuGco7gWKBkPkPV1SWg
u1LT+rBSsiL5LVGhqsOuxThd/QL6oBxD/6BIJn/FuMRSU6MkNuutjs2XkYkQZiZsbqPjxESBixTT
bShvUW+5GZQPlkna/YVaXXlw4SJwc7Mc0YazI5mTRiuZT+3pMw072gG2sM2lTv255IVDOzYKha5R
QOnyOx00gup7XgLwf/y5KAf1ZkSxi9vWXXJfiF+wKtIhAXmrRYI7NaBHo4lgf4qnuPMVQ4l5Nc7z
j9ngE/0GWP9w6iL9YjK3SCSRX1Hmc0xQRn5E1OTCwPEvZ2/94KcXey9/flMj4JIyKK/hC1fAAlam
BMUhfhl5maAQxCD1XILiD0MXtPsN4RRH+/ieVpkEpR9Mx6vyUz406VEAfrh4Cx/MCXsT5PbsazA4
wm1Y030JSj0iD3t3MNvs/EtQ7hEZN5CnFVlaMqgsFVFZoj/zqKLsgduri4qUWhJoCp7I7Lnbq7L/
WBFjS6Tz3IrMDNlAg4ps61evHLOVO8amqVLaumELVkRbs+N8Coislq2tnLmUBcCqitEu5nNFs5Wr
+pvbmvkk3Nbq5P4asIOn2kq9LvJB/7LW4txWC2VlRRSOOL63++qTer15UsVXP7I1fF3fNU64qlGD
gm31fqy6jtva4UGMJ4qoIqLW7um2nj9O7wcV0VbzNGRC2Eqe3uO666kIYJHSpfcCKQGd9voEtkaw
rt/m1QARtkpvTyuSrczb7DqvcWPr8zbHvUVPTmyN8C5dRbTVgXW4ojFHGwM0rhhPbHXqIAGowlGH
s4qYOGJtLCbSE/NqSia2WmdljVVbr/fBAE9svQy292R3uP1+NH0zLmdVPWTsI4raREPBbUjwzetJ
gsEmbb3ez6b1zpG2ZgjwbsfZ6K6KkVVMNTylrd55QTc/Krqt4nmdljqalTsuQtkq/m1WTqvkytbP
oJmKbLvvkjb9KrKtqgFjFdlW83KUVU2kbCVJM62otoJ0hw33LuqtqlQ9Mh9Uw1HpekxZi0hrEZ6q
oxoVEFQVEdcirIpaRdpKX+WgPma1RtLcRXyZBsu7thVHK4+KmDjitM6SqzjtpXiqrfGHYJBqW9sP
w0/D8qHGoK3sz0U/9zYaCeoNtBYYsZe6PaXaqWKSMofLjRylpxYyu+VghKNTG2BmjQHnd+nlDawY
6SQYliQ9L2lflAYoEqECP+M+Pmgq5hg+QdXBCKA3YyjC8Jg62nmGOw/DrkTVwZDmT+vZcZfc8UPS
O/p2tiSHPcRatJNFfneIaHdpZGSP89/aXIzaQf75iUzL6rVLbM0jzDTJ7oFiLSBgfuTjRwhbE4e3
hjv/wzQg10wMZGwtGN5eZgg/IHEcO8odKSgyZgEB5m2vwE3B13RMBvGuUpePwx4EXZWczQJ5LTYU
QhTws9d53sc9U4hzdfowLDDmrTvJlaiF0K6G2d6Tsa6Hqfsl6h5k0gUIVbLIjAWbHrUNHzQJWEgx
eTBeo1qSIGXTbR9KVDB+vroymUj6NkAUgjiUcGS7UnU9bLPDrbj5k1uJisSrbIzGqRCI3aYHfOMO
Y+6WY4kKg7GThG9hoZLdepWkGNjjbokKQdV+qAi888fHkoeGHUAIDTreeWuBLl2ZrUVZCw4pzAYS
niJLFPwfAOxYJPUjnYVAMSj5F+kTv48CKbzxYZ3oLQ4N3JWoCpzBPCYoKVEDcCFjlClRA7D2ChLl
vvm2kSjx3eG3TGIfsP2Jch6U+EO3GsnEaPWHg+mbwePo7ji/qaJEEFXRk4CORmxVnDRxQzwvIk8i
FEIUYqyJqpS6HleR0zr5rKyv+BLFfhXp51QVH9fj+5YLyQKq9asBdB7QrU20GQdSBHHo2usWO1km
Ad1saQNZNpDNFJBBG/StNayUuoFsfxE0Qf8czwMBWh9ORrijQcYBUgUt0aeND6nC6luDXKnC+vtm
M6WpeivUG1uZJjgqxr1KLkplGgC3g3C9r+imBWgXaIg7GnYLxfsz8AlNe5hDoIpqmgOG36SipZY2
6XmaNvWuwrENAz8VCJPaVPn1yatBTR2WmlsyDUWzzVZFCh85V4cqSVJPAvC5VqL0UWZrfj53ZeOP
i5ub2QRW4Nu7aQ1kSK19ggmoMz0i11R0qdMqAT6YRTn42DRysbCqGsvRKi62ca8HZaVxy9Q1EvZR
tSKkvEZ+VZFFjVx1QJrUyBcV2TXHm2w2mRTZ8NVgVrVj6hojQEn0/g6R6RykIqd1MmpALkpFrtZn
5Xh0B516+1jFuVobC52K7qpN623Qiipydb+EuTYbZOP5bqK3fmyKcv7HrimuikGNRdcSVzPQSugO
fBVn24F2viqqbYYaTFZR6mm4zezpcRTQjWJSxcZB7LsaUFUxC+Iux70qigdRH8ZFFWWrX47z4nYY
ojIVmwZ4UxFM3QPxoWJVES8qcaNiU22nhFb01NFHd6DoejozVf/xJ1BPK6KpcTCuFDNVtYu1YrwW
pEVQMVMtgMm1XyWelo0XuGKmamf1RVAxUzW0M631J9OWOvlU0VJLo51+xU1dzqwRjE/GTXXOCtqs
DNuRm1pZgaI4rwVNrbipVcAiTzztMr+FsKyHD8e9w+sJUNUc9SIfAFXXqXSQhd8QkQYRM5BW0/Jo
dl2Y3ES0LJqyFfGy6Mv7spzemTzY6kQmJ96QCE8IUKxbXsSqJCaXZFWSOk+yPaHJMWhOHFHT0uSg
FyN+LMfFf8PUywYmSboqCWWfRItJTES8GIFG/KCOm8wTtjyByYGHCXBYJUETnpWfXW2SZDHC5OIb
alqfrFY9NHqvsgqhXZWpIFv1cvB4W2kQymqBSB7UJ6zV/pr0JWV1QMTQ2WBhMltNkLQoZVW/i/rK
ZtU+DyJRHyS6qVhNI1FW3ws3aJRV92q7ksqqeaCfexmvrFpXO6VSVqkLtmWUVekuH4ppr5rbVpUz
1tkV1dTnqr7WWi3uqr4DpKwKh4iQQHKtgazSRqcSnqY9LVhhrNpGdHsgWBegVoMLdluUVeO8agoU
FlJMY1gFDhAznbTBmLNa24dJLTNTuZ8DwWD1s5+L/KGiKU9DeQ8EU6X/XbojS4VK18cSl/OuSs0B
xTle0cNgTAckP07x+pOxJ1Ipm6fVj/cUqlZhdHjcpFDJChN8GJEFlkI96xfc4BvDAC7+mxiAKv1C
TY83PwnrKtSsDO0LmX0gmFGoVxHRWCkAAWr1y+XbK28N0SX3UGTJDZ8xWv4CNteoKhmLUI2aEVnR
ajKMHAES1qjwkOsV6DCNes5oDHrxFL4VfuOs1qjMjE1VPMSgrR2IQuNxRNmD+RjUakC/nlooDYQY
k5LlFLUUMIT6yxitPScVCXiEdra3hPo0ZYAK/N6j9yxjyKxRS0GT0KsSvqX5fvUI3wozRGtLitEu
RHGpM/3uaha5b0yHCocJYTrUNICDag9Do7JxUwz78CXcIdZFc3swb+F81NgqqHLU45dlo4iHM+Ni
z1plQOuQ3f5d+XBW9rPBMYyi8haI3owGcQus/LT8voZ+pPNUY+KkebQsFcZflXT5QZOxJdrbOeMZ
jSoKqN64K4k2txp1FACT2biiCEpBrrPxxqcm20lMUiNBvWF0X8MXVO16WkInoipSTN5l7+AT33Yw
9yo0ahp9Olj9cHEKwbgW9LAO6GhaP6yS8Vqwnoz2nLKB2YTVdAUxBzxIOryl4bLyCJL4iyMo3HU9
dSFzovwFhoYgz7PvgWEU14fktw96BUU0WuCVOFTJEHI41WYvRycLF4DqkYLSxtKFk4bEVayk1Jy5
sGpIXcXiaXJRKyudT12PRXlM4aNBdj+yN4OBHDf+aC4RM7/1jEre9KsqWpj0nlWZNKWvovE8Gq9T
V5SFms/Fa/sLKRwlbfyFj1fWagTlCIRiCkFvopB2m03a3B7MPqHxgzb3BrNPaC2kVdLmTuC45kWg
die+0VukvROPvvySvOb2q0oxfz++luMxX34lPu8DNMnrV+JRpEU0fdEfV165FHiaR67jZPV9/L5Y
0x/YeqXp1T7TkqjZZ5q/10TX82tOGZi5o2RdLYD+PDCX869x8aer+Yu+As0VfUyb2/v5oCjM7P11
lJyBd4QoXV2zsCvTVV0Z6fjmid7Vgp4WLwP3eN3kpXEsuMK7XCOzR6t9zOXyWZhda6BUj6A3zone
jV7NWza5uhvTtZX1ijtvKW5Vv61XwsWqkX/d7/FlI9/7PTSD308E7/DhLwi5inxi5kC4ZoIyhdui
ZlLMR1k3FMlqj4TBmPHP0S9pqDxbt1/cmOUbjNiT/2pZrK637qZBi3vE3cyJNXkJfNkGQ4acy8bA
Sy1Bs4j55vDy8uTi6vT9u87rw9O3J8ddukda9H7rZZPp96hK/vsPB8PZYDCajl90/vM/gdHp+JGc
3v7HD58zQD6Q9+RwivY5f6FrngfFi2+++5luHU2+Qxn83cnHy+/Mcdp35qTwu79mnzN3b3icf9e/
uf3u+PUbOgSHIfiX3mh0kMYvOt3O57Log4p21O1CfLd7kA3L4SPe7KHrtnRc96LbdT/sdj/br4MX
38TQHNAYUSpvejqNOh+vXh+Ns8ndN8xG6H4EQyJ7Yva8lgvAs1ouPlFFoo3Sf3vZmaMcz+5HoPpD
3wBz3e6REVwvvhEu7+trlfd07WfnA1Bcuj3Qh4tBfjqE6QLtjqa6wFFS/UrqrN/2qxp7hoB99e8v
vpG+YoJd67yWDYLuAWJ++wM0p+t2H4AKpSvX3CpKsyw3NTqcgU6Nw8n8oNul62EHJu4ar7j08LkE
gPJGrP4btPb//C3qdtEpEqLngxcHL0zUN7pWgNI9U4BbE7+ngXLw4gdoRRDdOCg/QgtDLt9vwwhk
h5oAVC/1pXMV5/nS0hsYjyP3UwA5OjM/dXzQdCLodhDQ3+UP5tPaRkDHxLHPJ72JE5PPw/TGpDup
MkJuMD3D9Orm5iYVETRa2u/8NppS4t+uoeu+iXmYIM7mE4haApnzJO7YaGq+b775f1BLAwQUAAIA
CADcow9LVHXLc4hOAACIAwIANwAcAGluc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWdldC1w
cm9wZXJ0aWVzLXN0ZGVyci50eHRVVAkAA3C8k1lwvJNZdXgLAAEE9QEAAAQUAAAA7F1tc9u2lv68
+RXc8XRG3joN8Q6obsYviRPntklu7TZ7t3Ono0h0rBtF8khyGk/S/vYFcEiIoEgBtOTGH9SZehQK
AnAAEOc5z3MIPnjw4HCejCZ9kgzHyZH+8D7ZwbibfOyNhoPefDgZJxe94SgbdJPObK4v9H/v92bz
/ZeTQfY/jzvj69Hoaj7dTX5IHuo/PySdbDyf3lxNhuP5w8cfe9Nh7+0omx3On2e9wXe6+t6oMzSl
Dwhhu0nn0a+T0fWHbPboSW/ee/T0zdmjN9nbfwznj84m19N+9uhF72PvrD8dXs2PJ9Ps0eDi3aMn
J89+hc5l3/WvrroK7X5nrZgPP2TJ5ML293qadR880EWTi8k06U8zXfqk9z7Tv7zOnmQzW+VkurM/
njy87M0uH3d/Sz8hkg0ER1n68LH+BxZEZrwH/yA9zDPSS/cSXefJ9bhvRua4NxrtJVylSedsPh32
5z/pQdn9d/dBkpwMP9kxSMyYZd3kKNP9yIqr3ycnk+mHbnJ+qTs2yAbHr8++T34ZDy+GfRjy/FfP
RpO3uo0b+1U2+D75ObtI+pPrRb1PP2bTm/nlcPzudPbj8GOmmz6cvtMjOp7PrOlvzZTaGT0gWO2Z
cU/tX2T/YvuX2L+04cep/q35jfmFLa//p/p/9uBBvmD0ALzt76S7eo28Ovs5mfem77L5rq7u6aes
f20tsr3uJui71P6nv3s9zQZZP5vNJtOZGbKz637xr2QH6QtPJh+GY23lIHl7oy9NJ5O5bqr0hSmY
6rJ6xSY7JNmhyQ5LdniyI5Idmewo/ZX5Wn+PdAGkSyBdBOkySBdCuhTSxZAuhxfVjvtZcjKdjOfD
bNpN9OXTeTa1vWj4/mwOXdFL4Lo/1wtvdjjN3vTm/ctssJccX0+nejxHN8cnh7+M9XT3L80doX/3
a286y9dFN9nPPlzNbx6b5sa6vVnWNy16RfSgsm7nyeRa//z0w5Vu6GVv/OV8cvXlqfntXnL+6rX9
s2uK0viiJL4oji+K4oumkUX1YmtRFMUXxfFFSXxRGl+UxRfl8UVFfFEZX1S1mII209VivlCLCUMt
Zgy1mDLUYs5Qi0lDkbMGO0jy43D8fpZvDgcM7vwDCrf1AYF79gDDDXmA4G47MLtdknb3E9R9+Pi/
zrJ5se13Tmcno+uZ3bm0V5l1ert7yc9dvcX133ceUv2PN92z4SCze95eYjf9JLnSO7n2ftoJJa/m
l9n01dv/mAZQoAHTp87RX/vGd2r/NdBfP36Uf/vizHrqlq2XajIdwOEO4M7xX/u202s2beswjZJw
o6Tz5K/9E+1LRms2auswjdJwo7Tz9K/9o8lklPXGazZrajGtsnCrrHOy6VZ50eqLs+PJWOMg3eiL
sy+v9b2ifeeexlGD7GI4Nh3wqrc1mgpEd/+/U1PBT5OPzzUa6xxfZv333V/G85srjXMP+F7y0/Vs
/iwb71mXs6qbxxqhvdX++umn4bzUhCyNzI8W9C63YaruPPsrPCjwD5SbsJeYtk7HFqD7I/RyMjbA
IlHtDETtDPQ7oNtDaZy1qPM82locba32G62sxetai+OsxZ3TaGtJvLWknbVkXWtphLWlW9402XkR
bTiNN5y1M5yuaziPm2ba+Ue0tSze2pZ7FFvX2sgNi3V+jLaWx1vbcsPia1qLIzcs3vkp2loRbS12
uOhZNjcUQpZ5/qtcP3zKtwdk+45Lvz7rT66yat+x3s+b6ltUE9pHMF5nI4E2aNGGHcNqC4i6Fr7c
ZgfxsIK2OdONd81nUj/sLDTpxuRqR1623coiOsJbDn27rYzYoRcxxtrt61Xb7YuULOT1FsrCQtvo
+bR3Nes4iyqVW6bEsmK/XwynGdw/sxrDuDVMFYYdW07vUDf80XJmdQaWb4N9Q+kplvJU6Zv07ObD
28no3FAxj/0uPc96VzqAyfrzY0NZmS4uXbJdPJlMn37qZ1em8ZntoTA9JGloetU6eze0gYLTq6pr
mXVet926RWmmEa6daoJbWttyH8HWXLJyI8GseSN52XojwWWjWb3RtP3wk84/W28lMV1xsOhZQ1fA
GxTj426H9sE3fMqXRrU7fuRN3Bb3+nquJ3WmW/21N60bpcolwkrLZWbcW034ZS6/nuo/0/kwm3XS
3bqVw+zKEaHhwY3DE00NwKccAGBczwsQeeshEdUhQcEhQXVDguFmUqEhIY1DEk1cwCeZD4mqZy1o
eushUdUhwcEhwbVDosyQUBQaEto4JC1oFfikci/Ka9kNim87JhRVx4QEx4TUjQmxjpaS0JiwxjFp
QfrAJ5TCoFBSPyj01oNCqoNCg4NC6waFWlhF3W774+Td2WVvMPnj+HLYf5+N9e9Hk3fX2Ur31+x4
csyjG2KWQKLcQ1AN4MkUt/c0ddvci+sPV4vS590dFPB3zO6ThYaVxy1H0964f/lEwzGrc+7ValuF
hHV4MTdK2ELBWqKlKSl4aVQQ0ypnponIqWnCCm4aZJ4DCRrOAUpBoTlAGPSXA0JBXTnAArSTA4JA
GTnAqdMkkdUktXndNjokCIyeFEmSHdyoRvpKpVUuv64a+fpymBhtXnflgEmybyEXevzwcUeP265R
bSXdt6gzv4jgIts3fH9+0dyOBxzJfTM3+TVbjhNkruH8GrbXKDXXXCv2GhPmGs2v2Ya5SM21omFv
3W210612utVOt9rpV9RO9faUeym9eeVuSm9tuZ/SG1/uqPS2mHsqykTukfRGm3sivbsafyyD4Ek2
oOy4UBE8W11ASKMJEiqbCBJ8VwQJgA0WYkhohTMQrTiDvJEgRWJaMZV3zqIDc1kMfZkCS2vngeGW
RrYjRriFiWw1MWIXWRMz8s+2zAhPy1bXcpuUp/erQwmjMcug2pXztlRNVFdYJKbnNtZgToB6mf0B
N5cnE3xzyLtw+Za3J7Rlgz0WkptYRYGR7RYrNBLUmBjILrLzS/T459E056XxFw13pApvyrRxUw7Q
p7wIZYtJbOjE4gZ5fdkbzycflvrQGDBCpaYOT0BqDIdNTeUFU8em1VFpi8UhVqbX8NAOx5G/aFQ7
ohtsJUGpDkHlnTfxqRRpMZzlVSPrJ4x6d60LVFbeIb8tbs5/+514cXacjUa/z4pqTp94Ay6tzaxE
dxzdvLq4mGW1d2T4kjcFw0H6edz7kP25l2jDh+OLTIdXg3NdMvkhn9ulEXupyw9CXGve7TLpGzdO
i2FKHj5OvjmWbkc7fdLFGCtcHT34/ve313Md6V2Mbkwf8zEdjgd6MsfvjEF145xfMv04HV9MTka9
d7PqRfvbOgOXNGQuAjcyXXUjSyvj8MWO+H54VSvmUrVCzF0snLw+FayPyxb1iTRcX5v+iVCqjrkh
vcykdrlXeSvBBB3TjK2987/xewYqZq60Zyhau2cIElgbnp3VtaErNXXQqE3e1LTeJl+1ocjg/PJz
9u7ppxw3mA6FEnAErUxeu7yy3Oxg2o1pxtbe+Vf85OFiaMuKWlovaQqxjos2tZpK5N/ko5es8J20
CKXWmK3Nm7V2+XG5uTKYUWPasdV3/i9+2ogb0/K8oXpoJcsqztHNr/VLp6ZbdYjvLBvpZf/LTNf/
Om9JB7Hf6qYOp9Pezben4yMNpQezbw9npzPT/zeT6Wiw51lhYHdzOsOSGe7GK83gF6OAfCk0RBlC
XHItxIXQcqqUDOIvWeCvw6PWAMy2WJrY+nQSeTsI5tBEKwhmOmHa3BwGkz4G458/mrHRIAwtgbDz
yVUQgfFatTvv9S0gmBsmC8Ge/qcMwRhl9wOAafuWl+Z6+zS2NJFcY5/Gq/dp7O/TmNWr4DK0Q0u5
FijKDVXBHVrKAhUdHbWGRQiXOTFE6ikQhQJT5tm6NGXEEiMKx20HXl2/ffOE3Go7yNskt3/ooKiC
BuZZkbU277yVYJajacbu18e32K9JOfkP0XoApdwuBDrySkPPuzvk0R/dQo/dS066O9i7sDpdixr8
QRfcTj3vuCLV9Lx1hli92ZTJAPfZ2IlW3FJ0d0SgO/VZc7VPfcEnFtN66QGwu00qWEuvoYVco0Dr
O2AIlDw9LqDTHSiWq3AHKs01tgPBcwXtQC4SDbBNNEC0daYBWso0WJVm4GchmOK4IUvA1rMyT8CW
8DMF0nKmAMszBVA5U0AvYLiKy6kCeh3BVb5veeHiqr2o8L6Vb/KLkEKARDmtQE8PJBak5cQCDmkJ
nJJyaoGeXkgu4OXkAj399ipX5fQCDvzhNsFgm2CwTTDYJhjchwQDrpzD4s5hEeewUuewhHNYNHdY
lPHcY1HGCpelsPNZ3MAuEcCoJ73RLKvBpxQCBBnCp2ItfJq3ooL4VKyBT6kXhdBaSQelaWO2JAli
P2nhJg9gq3SjeFPWAzwW6AS6I7zZ0B0a6A7eDN6UXwtv3uXtW2BO5VAlyVGlbI0qARh6wJIlO3Q1
tiQVbHk/8lcF27cbDUA6ZY4vUgA3RQVucotB4Svho1YESa/wnfRgrrlPC7ArlA9rMaTFAo5FHo5V
9rsczXIfzQrInLXfYeVj2hQyaAHZYh/ZEsikBXzLfHzLIaMWUK70UK7R37ZYd4t1t1h3i3XvFdaV
zlky5yxx4Syxcs6SO2eJnLN0ybRCOGfp+BlROEvtHQyYCz67pcs1ZnWFUKYBllW03AAqcbgfvLEf
gZQ3Fd0LEseNW0W1RI472acdOW7RMEpphFZmW4y65stl4vMf0+HceKo/9xK8pJjlT5kFVTNRq5rl
/Wcxqpk/ZIsRs7LZE+ZlLiElyT0RzuhS6hJKeXipio0lQiINXGqXaki+0/1cJQYxYW2J0+9sXWsK
eFU7cgEPpSEBT3dyPQUPTA0fs2QbAgnv+S0kPOY9789rny9ACAWnbaWGx5m1BcfuUxsR8fJGSWmt
NO9TsmZPqmTNDQfyc38yvhi+u57mWxMJi/nVPUnuVjtZ8/ArQiHdUNu1FjGTD05QOLTtWJ95egtm
hnvMjKD1iyugHPqmnnd3WFU6pC2kQ0EtlxN4hqKUILUBLqfecLp4WqShE+JuuJym7qBAd9RGuBxB
vxqXswl4qp3KEjzVKCGHp/qOKgREvXU7XocCryNEW16HLJE6AUbH53zML2iTYMiCgiFbomawx6SI
nHshHvciBFylHrUiFCiGwqNwBAeqJfWplpxlYT7LwoFfkR6/ghUwK8hnVuAhZUZ9ToUBmyJ8NkVu
eZQtj7LlUbY8yr3hUYRzVNQ5KuQclXSOqjg+g1LpHFVaiA7UpblALosVHYQBXLfVDAWEJDKITdcT
DfNmVBibijWwqfACH1mbXo5ws2rIQqhPphZpBh6OFXiTSLPeDEoDmXKC3A3SbOpOIGlO0I0gTZl+
NaR5hzewQ5oL2ZABvNT2toWXAA89hCmSHR4EmawCMr+2ZshFWTPUY2PeXIJAx+PSVw0FSInwnfKh
KwEtEQCsnx0nMGiJ8B3ywS0FMREgrvLBbApiIkBa6kNaBmoiAFvhA1sJaiLA29SHtwjURAC5xAe5
FNREgLrch7oC1MQt4N0C3i3g3QLeewN4ufOXxPnL1PlL4fwldf6SFf6SFufB6c288JdSFf6SF5nd
2kUYPBcWDrlYIRyethUOm3BlWDjkcnPCYVMvYoVD7AuHTvhqR8hbQIxwlHCIa0TC2mu+cBjB0MeK
h7JWPMxtiBMPvWFbjJoVD49Oy+IhworfF/FQLj0QinBYPMzPBNiIeChV/XINiod4pXgolbUlUjzE
64uHsv4MXISD4iFeUzwEU0lYPMROPHx5C/FQqnIMreo1XxIUD/FK8VBZOoDEiod4I+Jh3miUeIhr
xEO8JB6qz9n4+kM2bcxqCEqHarfaxTrpkASlQ7KedJgPTVg6JIV0+OoW9Iwq0zM45fVLKyQdkop0
KKrSIY+XDk0nDHkReMRObDINvMFwSgO56FzdCaHT2J1AVrpAmyB0llr/GwmdTQBU7VKWAKrGCAWh
QxbSIVlIh9xyOzhVbbkdtkTshFkdn/oxP+JN6qEIqodiiaShPqGSAgXDPAqGA4nCuU+w5AcWS49a
kVBWEY/g4ZCHjYhPtUCWNeY+yQL51UT59AochcywT6zAIcec+ZQK35IpWzJlS6ZsyZR7Q6Yw56tw
4avc0ft6A3S+ijhfhZ2vok58IM5XyYJMUcRgrluqh8aFmZ8H1UOylnpYNBNWD4m4PTzVrZThaf17
khBtVg9FCPjZlyBRGni+jm/yjIsGMygNJMtxdjdgs6k7gbQ5zjcCNtFXO+PiLm9gBzYX6qEAhKnt
bYswAR56INPofzE4U1Rw5teTDpn0pENipUMC0iFTHrJUBPREQKh+zpo5eMghUu6foWFukAWy9XPo
OEiHORYmHurlHLRGwLPYx7ME9ERAtcxHtRz0RMC20sO21j6HcJGPcDHoiYBzqY9zGeiJW7S7Rbtb
tLtFu/cG7VLnLJFzltI5S+acJS6cJVHOWSInHaLCWXKXagPHRBnpkEkD5sLSIZMrpMNXLaXDRlAZ
lg6Z2ph02NiLWOmQ+tKhk71a0fGAhhGNkg5pjUxYe82XDiv8PL21cKhq3zmYWxAnHHqDthgzOKxz
5AmHQqF7clwnNqcIV4RDGiEcpo2LNfCWFrm0WDGqX6wi6lWCurf1K2cj7yY1nTN9kZEvBMHYPqdK
wy+w4Ghj0ism9SPIQm+wQCtPvjfVmlri3mGBaN3Bq3S19OofPb9kRy6OBV/Qo/u4zktPCkODByjb
dmA/Pmr73hPdSJl8IPVq+eJongZtzLP0vLsjq9qYaqGNEWXpisAjZHyTyc4NhlMayLjmd3NEUlN3
SCD3mpON0BXV1v9GumITCAy5ZGe9CxfaGHN0BUWOrpBAV9DWdIWochVxRIVuscJVyCZNTAU1MbXE
PlCPReDAAzDmcwQYrnKfVQBNjAmfM4DoHSGfLYBUYUx9ngCShInwGQLQz1jqcwPAQnDiswJ0ywds
+YAtH7DlA+4NH0CcN0qdNxLOG1HnjZDzRrzwRkQW5DlxZxAxarBU7Fv8sD2ZHLFw2MPo5sIeWn9q
BwvmS7JV+ZLYHt6JWGS+JOPrvtVmyY4iX5IF8yWZXAu1g6U8nC7JZI7a37RH7d4xpZjVviwBLV7z
16Cunk+v68RVRqwFsUmSzE+SdJxCO1Ymb5TEsDKsJkmy7lrl5XUIfdawa/gx04tPo4I/9xJ2a2LG
pq0uT35uBY1iZryBW4wbnAd1XGZmCE4lvSfMDCNLzMzifYNL2rQKBV7catMk8BQnY5sM9ni9GEwC
2ZiM302w19SdQF4mExsJ9vjX06Y3614Rc8EeX+Q8KgjxePsQD4IzL8oDQTky1FOVUO+rCNK+eGwP
gnXBni8eMxCW8/DQF4+ZAEUZUiT9MNM+I5oHmxylfqiIQG2GgJH4ASMFtRnCRu6HjQLUZnheVfnB
YwpqM4SQ2A8hCajN20ByG0huA8ltIHlvAklceDqqnKfjztMR5+lS5+mI83SsEJaZE5aVCSQXr0sO
BZIWY6HFC4ebA8kNqj8Nxz9yGQokuVgVSMJhg4sXFa8OJPMHcP1AkqwOJIkfSDacqijSUBzJ1Vpx
JBgqUDCONO3YOPJf7eNI71BFLOrjSIED6o9nqQb9KK3KPwi10H8EsSFB4DkgtlH9p950SgI5s+yO
9J+m7gSyZ9lm9J9q639jSLCJjVLf9YuNsggJxEL10T+2MYHgbWMCtRQQRAcDptlKQICaUD5Uu1r9
sUU8rE+Ff1YMvJWC+i+sYIDvqX9WDcsjgtRH/SD/pMrH9ID0MfbRPJQlzMfxcBoNlR6Cp3AODUc+
dsdb1L5F7VvUvkXt9wa1I+eMpHNGzDkjXDijVOXOiODUOSOcOyOCHWqn5tQYQWJRu+AWANIgaqdi
c/KPqE8AEiyE2kvn7NXZYh+kEjwOtQu6tvwjGo7LECIE2wVfC7bnlsogbDftWNh+eNwatgvviTFZ
f1aGULeTf6Q9k0GmnhJzOqg1YOma8hUX/Hk4e/XH+E/TzJvJdDTwUe/zrHflpm15LPOeoEZ1wfCL
q3G9sucskMBjXnSTR7SbNmvmg+BAQhu9o3MWmroTSG1j6UZiCfX1zlnY7PatdyUXS8hFLIEgllDt
Y4k8APDjCSsMtIgpUDWm+DvVBUq9KMIsYBdLUD/tjEqQHOA7/0AGy+jn0QZTzItiqADJASIR6UUi
qQLJAeIR5McjGCQHiEqoH5UwkBwgNhF+bCJBcoAIJfUjFASSwzZO2cYp2zhlG6fcmzgldY5OOEdH
naNDztHJwtEhkTs6glShLsDT3pY0M6/Fkzg2TrEQC0kSjlPo5tQFVR+nSBqKUyRZFacoi94li4tT
TF1LcQpaHacgP05Rdan2pgs8FKdItlacklsqgnGKacfGKcft4xRVjlNIWh+nSBmQFzxLDerHS/IC
iZcXTDc0/EWBRynoJjOOGkwnKJD2ROmdhASN3QkkQNGNnIax1PrfGBJsYqfUt/1ipyxCAikWIQG2
IQFBrY/Qt2jejwdaxQKm7Wo8gBs1BhLWGMgS4q+8XAmOtqB+lhHNlQc/v4jmZf3MIgooPBU+sv//
9r69uY1b2fP/fApW7eaWfMv3ZAbAABhWbmplSXZ0Ytk6khznbGorNSJH0lxTHB4+LOvm7Pns2914
zIAcckiRSrxVdJXKgwYINJ7dP6DRsM9fR6FOb2x+OA+1eYMNhAz1eOOwIklDDX7/zPVed9/r7nvd
/avR3ZPUSyTpJRL3EinyEkl5iSS8RJJed6/OGCLUqNI1dXeUUZA+jdp1993drOdxs5lJ2urbOY1W
6O6YLeZSbfWW417+/vICdd4lTRCoJpVW7rLi68GANNr2uGJpk7T6X075NijAVbTd/3LKLQo42RgF
cHQvVaGAJX4V0vZrTmJ31mlLuWi95pSuuubEjV+GVO9gDNqs1jR0S+W2UHRJk7Co1dAtTbdxsmgq
yqJ2Q7c0te5v3hxt7GSRszgYhGlzXXexeLCU6sPbzs9wSq1syqIf/z55vL8uB087P3OciOXnZ7wN
uHJNYLnlKorYpS0eltmITlsMAsXz2OItZafFNFDsxBZvofQ/DizvRDWBhcmdn/mH52IDm9Pu/4JZ
X8FmbmAzVHhj2Gxxbgid8fRLbgif+Tx8/iOO0bgMj7zMI28GLnMVgmhmztZMnA5hd0xxBnzzNITZ
3Jy7GbAtQ7CtzNmaucCThpA7MmdrBnizEHhzc7Zm4HcSwm9pztYMCNcBCE9Sc7a2h+J7KL6H4nso
/tVAce3lXeLlHXPyLk69vJPO9lw6V8kJd+9yiMr7I5eofK3r7cFoWixqh0Fc7g6KiyU6fxsMAj5X
wSBhVPr1vD1QXlvi5/l6WHM/FrV5ewAm517HYpuhF1PVuNXdAxVE+R+cbgBfuG/ROnwRzfAljlu7
Ta/sNsIL8ZqOH8LMfq27LPj2OH2KEwjHwDovZVHpTbTwpSz5+2dsYABQ8eaPZMkX89w1quL/hCaC
8GkfdJV/4vWwf9pTXBa37d+weG7/ZjUiaxh+psVaN3CoIMr/4K8bDL9qZNSHX6Kbh59sMTj9mGef
7LjodqIvMRMiuY7iqPNQTO863pEFRHFQ9MVNL1JR5+DbV2fdj8WwXz68IGcYHc5VGjUM34RW0Fi1
tvmchW8sNmtzW45uX6mXG2avgYtNUaGzjcZmT9tmfbxy1s+XAVmy9uUslrbtDt5uMJ6SWpnVeGq+
KspY/OeOJ7qByarnVZc1b/Bu6LJc+OZ16Ys0WlKX6EbLTENdTi66r2dDAvyuNlGq9HI+ROtgkWvU
JmmbY2x+XUs2m2O2HNk6Dpld15KDsw3GofTVqY/D5luXjHkjmdOJ6aFGLqzroKpLg7JrcoTutzKm
W9twq8drXDFpexO6x2vePWFfVQWb+6rR1pzxaLWJT1hV3JgUCyY+G7yuyOnqDI9bbstytctdy+aq
C9li9c/18+xaLmOn5SYET3eya6n+NKv/LVAcyMkFFAfgxO1VstTCZ0gYWXQMn4kFv5AgstgWPmW1
rynMvqba+NVF2o0M9zRx+zHZdE8TeZjf13R7ms+yn0mGP7Hb8IPGMFuSPNjK5MpQwzsExudPwpNg
+5LbxxlpozR2WbDYOA+KQqMka9ivknCX01B1aFIUG0N/PXdt2TgsSkOvtWbXVabhm42kDO73Mff7
mPt9zP0+5lexj5n6J99S71ZP+3tv2p/bqcRLQP++sOReArrrALC8OmGXmMM8lHCwyKNe1/6ODWdL
MXCrzh4v2m00309mvBWk8ZUgjW7tMr7mQzRhZr/WQdhm+122WLEhNuSpuBFiKTbsJSxHbHj40wI2
ZFGille/FdVxsZW1kS2mHdRhOWRtdL65tVFwN5rr5q2qytXn+8/5eAxMT37MJqfU9r3m/m7i0UG+
hdH9fa2XAL7YXvjhZcfYc9TK+h/fD8vbfPjDd/b/7q8I/lOWRf1e1DyaQret9fGkaWeq9VlUNv8s
ahxt1pG2nHZoad9FjaODv22ALeMXrph6V6aNblKZaMOWfB5bqgVsmWyALVNyWCvbsCXfJbZsrrqQ
LSYo/Jmujyxjp8VAhyc7wZbpn+aw9nkkq8YxKq2qBJ9pg7iFFagClIkBlGmyMaAUC4BSPwVMzoFQ
yihZes9Et98z0fMQkqkAQiYGkSVMBwAQGsiQ0xBZmpvkPAqRpTWMiUNkaUxpUl2HkNAxBkLyAEIq
AwCVDiCkNml1eCtFm7Q69HyVmrRp+PBJmuwh5B5C7iHkHkJ+NRDSe2bX3nWK9qafSntB518Nl9oL
OukFXeWGUXuZxrSHkEyh+tYOIZnaKYRMm08bRSuEFCshJK3ibN23TMPMtoCQtlhRN5lwgLCx0Mtp
Oc5u8+ZjqqZXJRYLS9axz8C7y03lh/YZcfL7aFxOS0yBRhrRE8w0aBs45HKJgshE27V6Juau1a92
MbUIjWwTtd6rp4Io/4PLDaAR86OtBo1EJJqHdLuJAlv+zHCrqUgs5ufWUkY8UnSw9/3NYoM0GPRg
I608V109O5AfKD6JWns93coMx5UTt/d66tr29fHGZjhQTNDrzXsb1buki/c9dAvSxDwRybXc92Dp
DtHtknoI2eKNgEfPgm6XstPiq4HHu0C3C6X/gej2eYR+jKNe+fNS48SeMG3tIc5YEqYVT/CZMHdI
+gQ8K+exrNzRQWiczh8VElptOlZMjP+yuSPIZM7LsjmuTBhvONpMmGg6X2VJ0/kqk/Pnq3sEukeg
ewS6R6BfBwJlibTCiCXOUw9L3EPQLHFmPEz6hwBU7Mx4pHsImkk8pEw8JLu6G5cPuMoVvZPxuBxv
drFXkLMElrSd1sHyWQ5vu8YovHOQAZQsei86BwXahxc3ICledDsXxe3dtANAs9+ZQESnvAHYY1Rj
/Jx0hiC0smGnrB4B7IhF1Ol4anPPzJJV7pldLi1aX9ys9WGPHbz+1/dWT/9htfpnvsh8cEH3AWrD
UyssaVEEWbSML3Fwshlf6SZstSiELF7GFj84/tf3dEVlLab0Oky5Gy9Ji18zxpZxxQ6O/vU9qZtr
caXW4cpdhJAtzoYZX8ZVfPDqX9/XLlisxZtch7dapshhi50mE7uEPPO8WOgm5/egloD2uT2KFryz
EQd8PQ7mDAF22Qb+ULOmZa6zUvuFTMj0z+9LodqGfPI88HUZO23jeye+/ZoXgD8Cvu5OY/CYVFlM
yv/Ec1Y1j03VTs9ZY954oBqLxuPXmLCkdua33CaWTaevsWo6fY114+lr2nj6KhpPX9PG01fRePqa
Np6+iv3p6x777rHvHvt+raevwm/E+kfwtPdSq/wVFiW8JHOOd4RyD1cIVXmpTa2ZUWIvq+A5bMz9
OSyKK1YZby09K4r5Ts+Kmn3eMdnuASEWuzwQXspI+3upeKtxCSNttqvp2mx4mFmdnR1BgQ0gH28z
LtBkA02tMF19gqMxQW4EmWx1tiD1dsdsmH7uqrJqv6os9TZnboH3QhE3n7mpeIszt5jO3FTLzbxY
7hS0NB9yqRaz1lg9E2hZwk6LgWusdwNa/rwzt+da6pmsjtxUdS9R1u4lagtvNve35m4hhhAnvEK4
GczR8zBn13cSozS8OogP92LLGFQSBQiGpQbWmLjQtzmPDLgxcSxEM7GBOAbTzL3Gqg3QMRiGhciG
G7hj4lSAb5Q2oMfgmdABm+YG+pi48B0jrQ0AMoiHhYiHGxi0xz173LPHPXvc89XgHv/4t/avc2h/
dV8pLwyZF4bKC8PEC0PphaEXgbD8o5LGWhV6fFJuOcRZrT42QZwl2iJvubKk2NyVpXT+yhKL1r+y
5BTMlus5cfRHKJhtZ4zxH6tgthwtxuz/dwXz2eYUDNJKl0yNLsnijXVJPa9HPl2HRD7m9ch02XY5
FbN6u5yShFpk+DhlatTAKNwANw9SJlG4AR6bZzGjcAM8Np4mVBwqhJYqQ1XQeNPVoaGYNml1+PyN
NmnTOFT89k9X7lW+vcq3V/m+HpXPv9GsvY95HXvxJL14ip140u6N5iTyNscqdeIpSlC9Emv63BXm
6QnVvvUdJTvzuStY8x2JSjNaZsOlklU2XIyuINQUmie/YOGyWtN9r0q2dd+7tElaN5TVlhvKpqa6
fQ9Z+T3k0yfsIbPg3gZvdmRQvXO/RddxRhWqI52mx0eoPk0Duu4x9yknAcvqxtt6UrOt/DAL9DMz
dzSgRWu3YqnGKfNfjzd2ykxlVt26xJe2TnbQrcbLtJZt3arZsm6N5e891PGe2K/LKtfqbFfLbVzG
CLwxON+tur1bpT2D++l4U/8xIvC0LZJmI7XqhbXlIkNu6fx3WdmpX63e5Q/u0uhiE6ThqoweaaDp
IpmKmkcag9RQwf/hZafZFY39zdytVBwu5qroEUI8N4LqJIIUoxIGxW83gGft4IJJcPKll4+w9MaR
lpAtcvUY3LKBFTwGt/lFTShnYWTh23EtIwtLNbc2z443vrVJZdbGVrPUS/m66ktC0qt6JG6LBSZR
lFX1WkE2aJ5WTStOUyPVhj4oDYfj28n6R8ztY0Q1t1zr7d50q0ezBTrPmh8z7Td9U/eC9rvNVyMs
sRoxstm9bvXe3MLpM2vdHJSSNgdbjNmjnZ4+N9dDqBa73eiZTp+XsKNbLHij3Zw+yz/NV+4W6Avk
ywL6Yso9h83sNiHa26bMu83Vwm8e6shvHrLIbB5CO2y8eWh3+La7/2k3D4ONx7mdyK0On0UaPvCF
YNJtHopUhVt0sTmwNXGh9yAtzUGviUvDbcDYHBCbTcbQya2S5mDZxM1tNcbmQNrEhS9245yvtjN5
sJ1Jj4b5TU0RbGpG2hyO7zcb95uN+83G/WbjV7LZyM1DlQK/nIMDHqVW3PHYue/jcSXuuH/Q0htb
aWbFHSzrqHut+9a2UbR41PrWtkh398CXkI3+cnnU9lIUj1a9tY3ZYi5srR1CymvLHcL5etjrjjxq
21gCJrdS+W1NW7eSqBxj97u5li/rPmuFUs19tu5TcpgBpvdo6CIHyTtc3TJroUQdUcarD81BpXnm
e8K68UIuj3QLX/p57wkvYyttYSt9znvCuvmeMI/bwE30nPeEdfM9YR633FKM4ue/J6xX3RPmcYuZ
drTLp7AXeHHINP4amGhrCf48aH0ZOy2m65HYCVrXf9YF112rL9x7HwbpVoFxZsB4yl90OwdHyGTn
ZDgdP9JG7otN8PmCYQ9gbSaW4XPG5tE3cz+BPwDtTO4KjSc1lLvHqHuMuseoe4z6tWBU7i4Ecc7d
Iu+fL+M8dos8d14MuHmWjNIloJ8wj8lOvkzHWW9Ka7iBLHUMtgAa0oW7dZy1gis2B642NL9oKlPs
kP+klf85PybJ9vzLHfKvWvmfO11X2/PvQRRGvP9pXc8rKadf158EORzfzu5BdB6QjnUIEMscD/+w
qQKa8mU6F+dRU4EL0OBkE2zQzkAICXjczgOAppP1UNOa1cdyWXu5ACFP1sOQ7eU66Mh5e7mAqNeG
1O0lWyTNRXvBycHrZyg4aYHwyXK89ebkX9tyYTeA2h9OovV4noEfT9bej6rWomYGVDsDwiK80/VL
lS2l6vZSpd0d/ev6peqWUtNNZcemsg/9znCxehsG+nz5yPrxCSMrcBueNl6K4SJeq5vn2fnpCeNs
LXb8MncE6GuaH0Ls56zJ6InYWjB6SpMoubmOAH/T21tX1tppQ2umRssUyzUy2aoqie32oW0x7fvQ
wu1Dvz3ZeB86rT+4lUTNM0Mkm1Z1s5mB5WIxq2+KcREvnxk/bTwzaLeqVnXZXHW1VvPPs3O28cxY
kx2vq53PVp2/iEUbrVBzbDqQQZ4azmQauovOtSoX/62zVLBls1Q81yxNyEMJb30IgM8/BLDZm+uu
mPYF1L4DkB68O9n4zfUkcEmSNF9t5NUzAOvWdcNpSrdKecJbpumKR9bPNp+mcbBCsbi56mKt9p9n
5/3m03Q9dtY9uEvoPgpPZM3A14zuADp+++rBvgb6xPlhCxNUWCvGTORWj0W6ctq1uES6xyLPTzZ+
LDIJ7lgkbMmkSNvOvdkqR8mYLeQio/XOvefVkc3PvRfqESJP2WYlDaxuZSXtKtxqGE0FGcPov51s
bBhNz9BUncebxZ1c822lcMT+Wk2XjV5WQi6wUFGTscseO6IS16EF3VH0o9+H2T1etYkWXj0yHb3Q
cPNvHzWLZMt6UmN9zdaqGqvzHz90vj384lea0+MuZ5Fm7Q9Gfezali2GfejU4S1Wqam1G9+znSPS
bxuruLB1Jdtu0IWK6cLkFoTIpFpvcs9rMU+Y3GLpQ1Vc6taZrbab2ba2afvMVm5mXzxhZos6xEuS
ZkhR+UrebGb74bnZzE5IS6t8tu1kZqtgZle36NZ40KxhXsvGeW0ZZ0+Y176paF6fnAfzmtMdha9i
XieLW9KKt7y4cDWe5Q3zWTL6tXja2PJNtNnYsoUmuxxbigdjK9a/P2QTesxiCAOMLQwwu/vZOsjI
VdliF9gqyCeMMt9oZpS9mh9l4isZZZItjjK1JphOmzttN2BaEQKobuO0IQZF+pnaUq3VVKreRq3l
qyUfDyWfjhv32XWrPquj7cCIrWm7PqsjB0YunwBGdP0SaaKbjXB1ixuosLJ4mYsvuIES67uBQjae
30ppmwPsRFgrJc7dK3Kca2elJIQxXoB0sXstnRtzJrxoBKpMZcXEyYopSdmmV4rIDCk0W1phsoQl
zZst8aUeh0S7xyGxYKxEnvhTe7UGak5+faLAKSU3T73JqG7YhK1pfADp+oUfaHekKnMNiHlqbKiB
G31u3P6rKHAtyY2DfxVH9YtL0O97U6q9KdXelGpvSvWVmFIpYxELkkhFzvUdLHBWEsEC6G63pu4V
U1hArfyBBdbKGliAUVKv61EoIRdrXCftl3yW+7BvOxTAc4D5YpNmDaN1R0Sv8imUmDNqveaOiN7a
EdBCPZzJiW7dDtFqO8XQVrV9O0Qrpxh+eIJiGJx4yyUnrJWHj40ArzQHp5XrjBbAGzTZrxVa2wjw
ukLZOoAXS1yHlobbpDH7vZi8J7DLnw52WRPgcuzztcBu0GJVgxmw+8s82OVfB9iV0eKWSuUzZNFj
hGjBETK82f08OGI3qzcsSRVSqMEDQfAAK7IxPLAafggRwusJTTBBzMOEnd9qCO7nS7woVQEDVgcR
JHoqKBG8Gi3JN4GHDirwFUA+7D2ACHwMKFuehRG8DiNUROU5MBE4KlXkR8BBiih4L1vhEr4HFntg
sQcWe2DxNQELc+mORJP0ool70RR50aS8aHIbW7BMW9EEizLK4XVNQ4zQ5alsBxbLX+lqs8pdeBpL
xs24IlVtuCKVK3AFZou5rOdglFt/CCGuiFfjijjAFQv1cCb0aauVb6q3whWmqiJq9TBKBRlc8XFz
XCHjAFewRlwhKq8PSzacg8qiLpgsbDjL9TeckY3nVxS3mI0wsqrZ6BRF6KtKUUyMosg2dk3FFp6A
bVMQsbR5JTFZupcs2/eS5YKKGNfVQKiycSTF6oojmsOTWshDtdAqhDJUCK2X+TRUBa2CyEIl0Kp4
Saj+SUPVgeIXpXuVb6/y7VW+vcr31ah82guZxAsZ/4xK6t/pMwKFhAz3Kh/ze8kxCmG2rsrHyDNn
5eFoucoX73AvWbK0WXkQLTqfiPgqnY+lVJsdeMN2Wcm11Edia7tt6aVN0mY7LaLtbKddTVttp6kg
oz3+/QnaI6v7n5JcNdc2bR+IbIfYYwkbleOipeMwXTUOOTrHEvEOnO27rNia4zDdGsYsa5K2y2ci
ZlsZi7qatt6roIKMsejh642NRaGY+jgUSXNtd7GEkPWriGVwarHoUJ/m1crGLPrx7xO6svQ0z/qO
E7V8Q1624axE/BE4awsRGKVOBBqawVname7AwKoglzSQC+q0MeSyiGkNb8Aecsl5yLWr/Xgtwj33
2GzEE+TSSQh3tNn8NnFz++OJ2TQ3cSqEVMxstps4Hfj8RadyDooJnYawTZrNfQP/ohDocXMosAdg
ewC2B2B7APaVADDBpJU+grnjYMG0lT6COekjuHNQL7g34dECBey6JtVGmoq4XdvVuzThkc1vWgjW
qu7GK9VdethDsHg9HTVOt8ZK8/WwJjyCtd1HBia3A0u2qrxVScWCDFg6er05WAqe5JCyWUll61qM
YQaYPlntrDdsnLVUXEmv/rLVbhSETlY46z3Zgbde5KPB1l+wFi/CWq7w1rsDd71L+WrxIqzVCne9
J9v6613gyk+fFi/CWq/w13uyrcPeBbbsAZrgUQtb6QqHvSe78di7wFxwSVrwuMV504p3r99v7KFg
gRmzIDwzOttKPsapx2SMf/PNm6MO1ZTQEzIOGOe2i5Zm3U7NU0fn4NuTwT+6NXcdL8jyrUNPOi/7
3fXmv7MPkMHvjobdxYfL3K95/ddmBHQOMhCYRe9F56DAwVDcAFR70e1cFLd30w6I035nAhGd8qZT
kJVlL8fPSWcIGDEbdsrKnq8jKPuPefbJmvkRczwVN0JEUeehmN51vGEfRHEEqb2E5RoYP/zJM27Z
5SxKVGOWTIg+jMllWd5omWGWJxcLWUap0suyTK6jeEmW4qYXKWzeV2fdj8WwXz64DLlKo6V9CWD2
SWNARunK3x3nE5gV/c6Dfz7ODsTqPbnOJAdih6inw0ExzGupbaSp9k2kFUxvF4ijWkCKWkC7mDS5
7vdSE+B5P9IsqSVzAYjJejdRZFkwBqmdz2baGMZezW6A3Plc5A+OZK1FR0Z3euz0ymG/ICc1MLnr
/aWzXl+oJf0V531No+rVP2wn18ZU1O0cXk9y3JuAofwwLmiOmIyg3GmJq17ne7uYHbz44YeXYdE4
+rJsedG4D3Tw7bFuGNBCdDsn/5gV0AyOAdPDf7nLJqd2gpmMdzaF5tnfVcuRvfFGzbbODDs6bJhh
C40GuvV9MVlsqe1WhudqqWE2LT7nACsgg1UNFk4VjMZpUYk9M8m/PZTOqLr+7z/t3JSRAo3jV2do
/fv/fYny9XA8zgBBnmO53Vrd/o/Nsho6jVlm15ClSwGZok+OLiwVSzK3M8Rl/mUVv1EidZ1fyjpa
i+tXp0sz5hnLIO1ixi/NEtQFrOCmfpe9xHXmpridjSnM1yvdyYLGaiUpvkL6q0kBpY9AS0HA2KUF
lkKvB2WGYWDFjroY9ytdM0OIv+wQE/CJJuf57cmXEXyjI4JseJufjMflGMIAA9Cw3QUV8oyexXK7
tvjc9XyMyz21BZkVuRsjrry8y2AYhuT4pdUc4Zs5R2TwDYy+m91fUxrg1HKCFldnGXAcA4cANeGD
eKO5CwH0aAO9AV/oamo4hS96jDG/GRC/COg+5teHk0l+fz0APtF3Zw/00PL+ZJCjZ9MJ0PC+w+QS
dJ1xflQOp/kX/KWgX/5UTM9Ay8x+yh/P8skkgyb7nGMfsGQ+/l2e9/O+i5bz0Zfwc+oTpuajkAeo
yY951gesDQF0iJb/A8Qc5MSpPpMRCDCoMYcKvYFhOMr6EGA+8ArWFsycc0+ynHC8lI4FQbPn2b2j
4gi4OjrOptkR6GjDHFoOvb2ENJdYUcRpLz8Cda7oQ+8DUTviFajZwN8YU6ZEPM/zMbTkMLfDEJUA
IF9MRxd5L4eVDLoWXQsa2mU+7BOFOQrl6BNyItv2A82lNy5GNl9hokDtn1zkhgVhagZZ9D5Z/gV2
hp2qphWABnU6HBb35D3vBAZnb3oB7f9+iKNE6FrkVXGfo/oDZKjdcdkjj7gVFbUV6MSbMTS7yQho
cS0DCKJvwPqog4lYTKZjKApdcWCLU5VhipxOc+AuEYvUtwUOhyTBgT6aTW3d0CsCzDNYIi7KEsPq
JcGgokcTHAg4sq7O3h7O+kVpiwcqzlekdGN0l4QJLgfl1MfLeH6Q2hmJTh0g4s1bdkHdBjPZzxnJ
bdzPoHnlX2jiu5VDmvn05vyDWwpk4ihH5f09DCwfIeci/jbLcb2VqkaHFsht9MmwV9IAknouwXkx
ok4iXAjxqYs/zkfTu8spiNdi4EYU1g712MUU9ucq9pHj7IHW+VgxR6sWXcUd7W1xPc6wl5WvvWm1
ec5VEsafZ5PJ4RQA8B12R8ChXEx5VA7K8ZLkajE5VW1Jct2UvBafzsXbBl7BgY6afxKkiZvT2IbX
LIyujzntG/sKwrCCA0nMkYKioKXPQQsrx/eoKdOzK0CVAfUsG38CogqJeTYx+euA/h7UtDGtVLgP
0xBBZZjZi5inlgLW9XI2hhW0uCeJiAeYoXj1MgGtPsKoSiigNXoYV1vwIVqsiKZ1EtIkC9nPL/h4
ormQpGlVTtUiq1m/vviiCfRNDmASPqHNpiDoLmYgLsZdhrrNmyPs3nE5GBAFGiWjw+biuhgU08cg
khzzgFY8zAYTCEJLZKMRlETsBCnRdSGumVbcMFSChtnn4pYW6SAp1LS8/q+QC2Vo54PZbTGEsK6H
/eRnEdXny5TW6HoGqBBdQUXPQYeAEO2OOyHNUBUCbDLGT6jCbAjtmY0wnUDd5HUxLKYYInVoegdf
cpWGmeGSnk0613k+7NAeWTmEdchIisfOIM9unAr6jxYkkNUV4GnpdDfspmlJO/+5p8VWNX5/Y/RQ
QKQA8OwpxqPRRh0uP52cDEGQGnWZlNNicu4wDWUAdf3tt35+A+uAAT6//WY0VUe9rKgKqYOy/DQb
1dLqilpLmyKV4BMGsVt6eP0XIRKpnHHQsm9rbfWwoq1Yom9uNkZNR3o1/sjZE4GNB8GNGac3ebKH
FntosYcWe2ixhxZ7aLGHFntosYcWe2hhocXLzgNphvANrE3ywQ18AVN9K6AglGIFQRtlzLhwNNKI
oVJ0B8OxhJHPGKuirjPgE7Uh+P3MBKB4QAITQCYDQ0jQFArrBEFocNRzJjBLZxMTrRBxlDatdnHw
Dbz0BuUk73cZajQkLYGO+swgH95inVCdmZYj+AAWAIDQeED1BXRdqhAqLUbMWjHFUGWxfVhiYmW6
vzD1OYLlCGqPmsrEjNNLSEbtz82rE9nAU1BHgZoBGINvclUM5f+Y4wE5EJglfCz6yCrqJKYZfoEA
sXib/2J8/QDBN9LfISBN7N99rHIF4W+1C2BSYKoEseVKQc2Cwo4NVCv6+eeiB5LtSz64wFoCldmR
DZ8cE9xks8H00rY8qhKW5DoDdYgSuKFyjdTF5YehLmGIb/MbzM1zeoXdgppEb1BAQehjZ2yVG4aq
xGT6OMhpVeky1CfK4UN+/Qk0LqcDwZyDmLghpiBbcsoJdYuFeGAapwXqFi5uilpRUWWLcwS9BuX9
41cQhNqZdKc1IlZtlOe9u8vH4fQunxTQDqhQwMi+LqkAnNDD68EMxhEqCuWwlw1HAwA3TEW14PRu
XM5uoXcU1aZ3R2oWU8Q7NA+spkwRsz0jo3AyAUkQaZb7H2AnDPvXA/cbSWEYjPCt3DdVUOkqiPYv
TKWOMMizz5CZjhyhREnEdOzCtvk0MwTsR03c9Wem2R0/mhhEw5oCJ6km9nCpxADxlpMGyDQxdwPL
DDShJtYKXOwgkJoA2fV0WUpMfcofYZWC3k1jGxyNYTJCmNnwDHhKiSdcEbvkG9l8530QPTCk0qSi
3OfTzFKlo9pKpsTZfTmDZcYUqT3BtlyaeoppOh5FnnJfEiH2BJh8EGZVGBuXR9wTgHUeCR98uMsB
SPGI2B1lQIEAcUkDiZMQoW+cb5xkyHA0Lm+pRXhEzOHNCtspPCbmxvl/GSSFhjoD6BAex4aOCwqP
mQ0U/40/Ie7M8gMhYg6q/4l+lrgQlR9LEySszGNiDppyYIog5iaz6/sCI1MTgjkEI5Iz4msKGGg2
Iu2AM+JoWt7e4skqI5ZmjmFfAYgh9j6XAxBSrpaMmHzIiimxxYjLcJLTK00wV+vrCWcqoFUrCWc6
iDHjgzNTiTwbg+bBuVmnTJfx2tJEXXmDN6oMg330YdYUTYOMc94U91CAiMxRVeBcNCXAoYMCrTd+
BM20S+/bjSrVEAhUu2u6GjIzU4NzqtddNrlzbcepTgMIzGB5cFRhBrXZsejSC2HlEJZ8Qqz0YAME
hzbEzWi9ze+KPoaFC0/uQL3gwozmcjQhbZwLM2qs3KRnjbCrDYMoz8pxQfUWqcOQ5zDir0HPvMrG
t/n08HNWDDKjyxn9h6OkOz1+dTQDVQNmGMo5H/xYTO/IdgLojOiIjK8znFwo74DwOuuRNsNR2EGY
Fn4IJRQC8GqwMHknB4LBpCj5kaYMDQb28Su368JR1p3WwymFCY9ndihLwzSAXVQtjqjpbX1Q0hkl
m/R7IOBeF31blMtRoNUpBBA4yjLQuT9nk6NshNhlQVXnKN+IekyaAMpiIMpgl6drXmFY/K1epDqW
oYbvYX0z+6wZDI2+gfwcxV9TjP0hysF3JZoUWgWToyy8DIWtS8sXYj7gnq8Z8SgjXz1O87ekECLq
h/UAOIVhdwudixKTHm9ajMGdqxBjcEUbPNngEUAY3kUDirZ7Hq4LVBoQTG+YtChQzYylBA5uchSs
RAHEM8W7clBh+wtmY7AjSXflKGiJZFMIGzzPxsghilgTHpcEb4a3tplQ3r4q/jHL+q+LwdTxb/xD
0sbcWQ4TyZG1J1+C6jut0qN/flprPzsSiuTjHGajDUJtjh8BIxS9CW6ZjOmyoI2jzcXC1g7lMw0c
q3oT3/UGS8NtxuY2SpPFREEmUO/3ZpWyzX4PWI526EzDoIQ33RIms72D8v79pAdLL+IBm2ca9OQ5
NpSJEpFB40XZL3ofURkQKPsNdLR9UrqkuAUBSS7vAJY5mt26o6VIoBpw+be3Zs4IVAEgBBgdVXGQ
0nR/tk65KB9oygtUCiCivrQI1AzwcopdT+jGNCyll2XvE+aFasERyQ1Y2yCIXM+up4PcELt0Mffo
8vI1NAysjfnFDISyQM0AiKf3uFFqSYJIbvvSEpOAOLFUSVTqPktRREH3opNRVYomKsJcS0iJYAKo
ONiAqT3qDUC4RABxnPcGmRXhgrEqwv6WV5RLENv4a8P/5WyEdbKcMsM/fADLx+/PADGPiy8QVLWg
3+wVqCvQsgJTVjDD7Pm4ALWn+JwbwSNoE/7NK9rmghBuXaPOJLhh0qXiVcjUDkW/6wQIJVWIxgR3
q7ZNTXu3Ve1Q2ldhm8YLVewMWzMR1Yi4t1wOTVOI+j60HUso/Q8BQ8EX8Guunr71WxECxb8hfhgO
amRs1OPDq8NLq8kJQRfCM3zZPR/jPAASjohBMbous7H/ITXv/b0J0JIEA9BodjYJSn+7PW4JMfWU
f7oSKIwop7geYFZ2kNDu+fuzczR3hpCoQlX/ohYA1L/BagoBMyRM7yXKB2rJNRHNIZVpcxT+noTH
UQJFf31/HihxdTYAIVaFXoOeZKm8dn7wOIL+QXHvNjMECvaaYBUo092nsp9GgwKCxqEEEMwlSOkw
+a6uhQhlTibqvaFIMSG10J37CBTXweGWoGd2DOUcwbFAyXyGqqtLQHelpvVhpWRF8luiQlWHXYtx
uvoF9EE5hv5BkUz+inGJpaZGSWzWWx2bLyMTIcxM2NxGx4mJAhcppttQ3qLecjMoHyyTtPsLtbry
4MJF4OZmOaINZ0cyJ41WMp/a02cadrQDbGGbS536c8kLh3ZsFApdo4DS5Xc6aATV97wE4P/4c1EO
6s2IYhe3rbvkvhC/YFWkQwLyVosEd2pAj0YTwf4UT3HnK4YS82qc5x+zwSf6DbD+4dRF+sVkbpFI
Ir+izOeYoIz8iKjJhYHjX87e+sFPL/Ze/vymRsAlZVBewxeugAWsTAmKQ/wy8jJBIYhB6rkExR+G
Lmj3G8IpjvbxPa0yCUo/mI5X5ad8aNKjAPxw8RY+mBP2Jsjt2ddgcITbsKb7EpR6RB727mC22fmX
oNwjMm4gTyuytGRQWSqiskR/5lFF2QO3VxcVKbUk0BQ8kdlzt1dl/7EixpZI57kVmRmygQYV2dav
XjlmK3eMTVOltHXDFqyItmbH+RQQWS1bWzlzKQuAVRWjXcznimYrV/U3tzXzSbit1cn9NWAHT7WV
el3kg/5lrcW5rRbKyoooHHF8b/fVJ/V686SKr35ka/i6vmuccFWjBgXb6v1YdR23tcODGE8UUUVE
rd3TbT1/nN4PKqKt5mnIhLCVPL3HdddTEcAipUvvBVICOu31CWyNYF2/zasBImyV3p5WJFuZt9l1
XuPG1udtjnuLnpzYGuFduopoqwPrcEVjjjYGaFwxntjq1EECUIWjDmcVMXHE2lhMpCfm1ZRMbLXO
yhqrtl7vgwGe2HoZbO/J7nD7/Wj6ZlzOqnrI2EcUtYmGgtuQ4JvXkwSDTdp6vZ9N650jbc0Q4N2O
s9FdFSOrmGp4Slu984JuflR0W8XzOi11NCt3XISyVfzbrJxWyZWtn0EzFdl23yVt+lVkW1UDxiqy
reblKKuaSNlKkmZaUW0F6Q4b7l3UW1WpemQ+qIaj0vWYshaR1iI8VUc1KiCoKiKuRVgVtYq0lb7K
QX3Mao2kuYv4Mg2Wd20rjlYeFTFxxGmdJVdx2kvxVFvjD8Eg1ba2H4afhuVDjUFb2Z+Lfu5tNBLU
G2gtMGIvdXtKtVPFJGUOlxs5Sk8tZHbLwQhHpzbAzBoDzu/SyxtYMdJJMCxJel7SvigNUCRCBX7G
fXzQVMwxfIKqgxFAb8ZQhOExdbTzDHcehl2JqoMhzZ/Ws+MuueOHpHf07WxJDnuItWgni/zuENHu
0sjIHue/tbkYtYP88xOZltVrl9iaR5hpkt0DxVpAwPzIx48QtiYObw13/odpQK6ZGMjYWjC8vcwQ
fkDiOHaUO1JQZMwCAszbXoGbgq/pmAziXaUuH4c9CLoqOZsF8lpsKIQo4Gev87yPe6YQ5+r0YVhg
zFt3kitRC6FdDbO9J2NdD1P3S9Q9yKQLEKpkkRkLNj1qGz5oErCQYvJgvEa1JEHKpts+lKhg/Hx1
ZTKR9G2AKARxKOHIdqXqethmh1tx8ye3EhWJV9kYjVMhELtND/jGHcbcLccSFQZjJwnfwkIlu/Uq
STGwx90SFYKq/VAReOePjyUPDTuAEBp0vPPWAl26MluLshYcUpgNJDxFlij4PwDYsUjqRzoLgWJQ
8i/SJ34fBVJ448M60VscGrgrURU4g3lMUFKiBuBCxihTogZg7RUkyn3zbSNR4rvDb5nEPmD7E+U8
KPGHbjWSidHqDwfTN4PH0d1xflNFiSCqoicBHY3Yqjhp4oZ4XkSeRCiEKMRYE1UpdT2uIqd18llZ
X/Eliv0q0s+pKj6ux/ctF5IFVOtXA+g8oFubaDMOpAji0LXXLXayTAK62dIGsmwgmykggzboW2tY
KXUD2f4iaIL+OZ4HArQ+nIxwR4OMA6QKWqJPGx9ShdW3BrlShfX3zWZKU/VWqDe2Mk1wVIx7lVyU
yjQAbgfhel/RTQvQLtAQdzTsFor3Z+ATmvYwh0AV1TQHDL9JRUstbdLzNG3qXYVjGwZ+KhAmtany
65NXg5o6LDW3ZBqKZputihQ+cq4OVZKkngTgc61E6aPM1vx87srGHxc3N7MJrMC3d9MayJBa+wQT
UGd6RK6p6FKnVQJ8MIty8LFp5GJhVTWWo1VcbONeD8pK45apayTso2pFSHmN/Koiixq56oA0qZEv
KrJrjjfZbDIpsuGrwaxqx9Q1RoCS6P0dItM5SEVO62TUgFyUilytz8rx6A469faxinO1NhY6Fd1V
m9bboBVV5Op+CXNtNsjG891Eb/3YFOX8j11TXBWDGouuJa5moJXQHfgqzrYD7XxVVNsMNZisotTT
cJvZ0+MooBvFpIqNg9h3NaCqYhbEXY57VRQPoj6MiyrKVr8c58XtMERlKjYN8KYimLoH4kPFqiJe
VOJGxabaTgmt6Kmjj+5A0fV0Zqr+40+gnlZEU+NgXClmqmoXa8V4LUiLoGKmWgCTa79KPC0bL3DF
TNXO6ougYqZqaGda60+mLXXyqaKllkY7/YqbupxZIxifjJvqnBW0WRm2Ize1sgJFcV4LmlpxU6uA
RZ542mV+C2FZDx+Oe4fXE6CqOepFPgCqrlPpIAu/ISINImYgrabl0ey6MLmJaFk0ZSviZdGX92U5
vTN5sNWJTE68IRGeEKBYt7yIVUlMLsmqJHWeZHtCk2PQnDiipqXJQS9G/FiOi/+GqZcNTJJ0VRLK
PokWk5iIeDECjfhBHTeZJ2x5ApMDDxPgsEqCJjwrP7vaJMlihMnFN9S0Plmtemj0XmUVQrsqU0G2
6uXg8bbSIJTVApE8qE9Yq/016UvK6oCIobPBwmS2miBpUcqqfhf1lc2qfR5Eoj5IdFOxmkairL4X
btAoq+7VdiWVVfNAP/cyXlm1rnZKpaxSF2zLKKvSXT4U0141t60qZ6yzK6qpz1V9rbVa3FV9B0hZ
FQ4RIYHkWgNZpY1OJTxNe1qwwli1jej2QLAuQK0GF+y2KKvGedUUKCykmMawChwgZjppgzFntbYP
k1pmpnI/B4LB6mc/F/lDRVOehvIeCKZK/7t0R5YKla6PJS7nXZWaA4pzvKKHwZgOSH6c4vUnY0+k
UjZPqx/vKVStwujwuEmhkhUm+DAiCyyFetYvuME3hgFc/DcxAFX6hZoeb34S1lWoWRnaFzL7QDCj
UK8iorFSAALU6pfLt1feGqJL7qHIkhs+Y7T8BWyuUVUyFqEaNSOyotVkGDkCJKxR4SHXK9BhGvWc
0Rj04il8K/zGWa1RmRmbqniIQVs7EIXG44iyB/MxqNWAfj21UBoIMSYlyylqKWAI9ZcxWntOKhLw
CO1sbwn1acoAFfi9R+9ZxpBZo5aCJqFXJXxL8/3qEb4VZojWlhSjXYjiUmf63dUsct+YDhUOE8J0
qGkAB9UehkZl46YY9uFLuEOsi+b2YN7C+aixVVDlqMcvy0YRD2fGxZ61yoDWIbv9u/LhrOxng2MY
ReUtEL0ZDeIWWPlp+X0N/UjnqcbESfNoWSqMvyrp8oMmY0u0t3PGMxpVFFC9cVcSbW416igAJrNx
RRGUglxn441PTbaTmKRGgnrD6L6GL6ja9bSETkRVpJi8y97BJ77tYO5VaNQ0+nSw+uHiFIJxLehh
HdDRtH5YJeO1YD0Z7TllA7MJq+kKYg54kHR4S8Nl5REk8RdHULjreupC5kT5CwwNQZ5n3wPDKK4P
yW8f9AqKaLTAK3GokiHkcKrNXo5OFi4A1SMFpY2lCycNiatYSak5c2HVkLqKxdPkolZWOp+6Hovy
mMJHg+x+ZG8GAzlu/NFcImZ+6xmVvOlXVbQw6T2rMmlKX0XjeTRep64oCzWfi9f2F1I4Str4Cx+v
rNUIyhEIxRSC3kQh7TabtLk9mH1C4wdt7g1mn9BaSKukzZ3Acc2LQO1OfKO3SHsnHn35JXnN7VeV
Yv5+fC3HY778SnzeB2iS16/Eo0iLaPqiP668cinwNI9cx8nq+/h9saY/sPVK06t9piVRs880f6+J
rufXnDIwc0fJuloA/XlgLudf4+JPV/MXfQWaK/qYNrf380FRmNn76yg5A+8IUbq6ZmFXpqu6MtLx
zRO9qwU9LV4G7vG6yUvjWHCFd7lGZo9W+5jL5bMwu9ZAqR5Bb5wTvRu9mrdscnU3pmsr6xV33lLc
qn5br4SLVSP/ut/jy0a+93toBr+fCN7hw18QchX5xMyBcM0EZQq3Rc2kmI+ybiiS1R4JgzHjn6Nf
0lB5tm6/uDHLNxixJ//Vslhdb91Ngxb3iLuZE2vyEviyDYYMOZeNgZdagmYR883h5eXJxdXp+3ed
14enb0+Ou3SPtOj91ssm0+9Rlfz3Hw6Gs8FgNB2/6PznfwKj0/EjOb39jx8+Z4B8IO/J4RTtc/5C
1zwPihfffPcz3TqafIcy+LuTj5ffmeO078xJ4Xd/zT5n7t7wOP+uf3P73fHrN3QIDkPwL73R6CCN
X3S6nc9l0QcV7ajbhfhu9yAblsNHvNlD123puO5Ft+t+2O1+tl8HL76JoTmgMaJU3vR0GnU+Xr0+
GmeTu2+YjdD9CIZE9sTseS0XgGe1XHyiikQbpf/2sjNHOZ7dj0D1h74B5rrdIyO4XnwjXN7X1yrv
6drPzgeguHR7oA8Xg/x0CNMF2h1NdYGjpPqV1Fm/7Vc19gwB++rfX3wjfcUEu9Z5LRsE3QPE/PYH
aE7X7T4AFUpXrrlVlGZZbmp0OAOdGoeT+UG3S9fDDkzcNV5x6eFzCQDljVj9N2jt//lb1O2iUyRE
zwcvDl6YqG90rQCle6YAtyZ+TwPl4MUP0IogunFQfoQWhly+34YRyA41Aahe6kvnKs7zpaU3MB5H
7qcAcnRmfur4oOlE0O0goL/LH8yntY2Ajoljn096Eycmn4fpjUl3UmWE3GB6hunVzc1NKiJotLTf
+W00pcS/XUPXfRPzMEGczScQtQQy50ncsdHUfN/8P1BLAwQKAAAAAACMow9LAAAAAAAAAAAAAAAA
EgAcAGluc3BlY3Rvci9ydW50aW1lL1VUCQAD17uTWd7Ak1l1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgAjKMPS4AYDaanAAAA0gAAADMAHABpbnNwZWN0b3IvcnVudGltZS9Db21tYW5kTGluZUFQSS1p
bnNwZWN0LXN0ZGVyci50eHRVVAkAA9e7k1nXu5NZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+x
x/agEYqXIIJoTyKFivacpFsIpLthm1R9e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n
43IeoVgDcQJDgCIs5ULdOOQRJ3U0yai6u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW
1aYqQUP9cBiTZ2pkO7Pvd/B70PrPtY4oA8vYRKQ99TcUPzwLyxzKxQtQSwMECgAAAAAAF6QPSwAA
AAAAAAAAAAAAAAcAHABqcXVlcnkvVVQJAAPdvJNZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIA
CAAXpA9LCj7ExM+/AACSpwcAIQAcAGpxdWVyeS9tYW5pcHVsYXRpb24tY3Jhc2gtbG9nLnR4dFVU
CQAD3byTWd28k1l1eAsAAQT1AQAABBQAAADsnXtz27aWwP/efArueO4Mves0xBtUXY/iV+I0r2un
zZ3tdDqyRNvayJJXkvO4zc1n3wMSfMEkQahJ2ptBZmw5BAHw4KXzO+cAfL4IxsvR6iqYLS6Di8Xt
fAK/l8Hh7fXNaTKfJMtXyyQZEEQJ/e7evdV6srhdD9I/kuUS/rh37+Ea8o5pMJ0H+/DHm2ALRWQQ
vB3NppPRerqYBxej6SyZDIJwtYYL49/Go9V69/likvzXXji/nc1u1svt4IfgPvz6IQiT+Xr54WYx
na/v770dLaej81myerh+nIwm30H5o1k4VXcPUUTJdhA++Hkxu71OVg8OR+vRg6PXZw9eJ+c/TtcP
zha3y3Hy4Mno7ehsvJzerA8Wy+TB5OLyweHxo5+zp0u+G9/cDGK0/V0qx3p6nQSLi/SBb5cJiAe3
pu1xNv3nP2fJ1u58cf8KWmtv8Ev0HmEWJVSMo/t76X9IdI6l/g/ljDAc7QRQwPHtfKza4WA0m+0E
0Djy18G9IDievk+lDFSrJINgP4GKkvzq98HxYnk9CF5dLUHwZHLw8uz74Kf59GI6zhpV53o0W5xD
uR/SpGTyfXCaXARj6Mei3KO3yfLD+mo6vzxZPZ2+TaDqh8tLaLL5epXKdq56bSsaBEN43iGCHww/
BH5oy71pBw8Rj+hO+sGyD559iOxDtmQWscqLcZoJY559iOxDZh/xvXt6LEVBeD7eirZh9Lw4Ow3W
o+Vlst6Goo/eJ+PbtCVSaQcB+i5K/0Hay2UyScbJarVYrlRTn92O8/8FWxgGKFw7XFxP59BAk+D8
A1xdLhZrqK2SoO6N4N40Bwm2aLDFgi0ebIlgSwZbsRrn8APpSBUJdyC4BcE9CG5CcAuCe7DKD+kY
0jGkYUjDUAKGdAL5CaQTSCOQl0A6gXQC6USlQ34K6RTyU0inkE4hnUIahTQG+RmkM0hnUAaDdAbp
DNIZpHNI55DOIZ1Dfq6eH8rmkM4hXUC6gDQBeQWkCSWckg7ySLgu4bqEfBLSJKRJlQZ5JeSNIW8M
98VwXwz3xXBfDPfEcE+cto1qnEi1ToSLVp2Pk+B4uZivp8lyoJJUayGVfrJOlmlv2G48W2d9c7Ze
3o7XMEtXD5fJ69F6fJVMdoKD2+USxtvsw8Hxw5/mMHXGV2r9gHw/j5YrPccGwW5yfbP+sKfqnUPF
q2Ssqq7dAgONDsLDxS1kP7m+gYqej+YfXy1uPh6pvDvBqxcv01/b6lbS/1bc/1bU/9ao560wqxxu
Rf1vxf1vJf1vpf1vZf1v5f1vFf1vlf1vjR26wKW7HPoLOXQYcugx5NBlyKHPkEOnIYdeQw7dhhz6
DTv0G3aZZw79hh36DTv0G3boN+zQb9ih37BDv2GHfiMO/UYc+o24LJAO/UYc+o049Btx6Dfi0G/E
od+IQ79Rh36jDv1GHfqN9uy3TB0Jnk7nb1Za0xjSTI0YkkxHGOJMARii7Nt9qFTTIBrsBmhwf+8/
zpJ1rluHJ6vj2e0qVX9AzV+Fo+2d4PXgbDpJUl1pJ0gV6CC4Aa14CiQyvwxyJFFlIkuZ6jHC/U+7
oHAphphA8t4DnfrkDEDqNrFXWMms6sT2OnF48Gn3xfn/gmrmXt2L9VWyhMyqLmKvi4SHn3aPQe2c
uVeVZlP1UHs9NDwCmdSzbSiSqofl9Tw5O1jMAfKgmidnH1/CeANldgcgcZJcTOeqyrQUlYcPdv8z
UnmeLd4+BroMD66S8ZvBT/P1hxsg8yGw2LPb1fpRMt9JNUTjaQ4AMs9BTT56P11XShUViZ+mZH63
WFVaePypUdz1aPwmvI+2syJ3AlX8yTw1HNRlf76YKxU+kG5iIKsY9TpVFXE/mVD4qEsm3FsmUO+c
ZMLuMiHUTyYcPu6SifSXCbvJRDaQifSTiYQnXTLR/jJRN5noBjKxfjLR8EmXTKy/TI7LAttApp5r
BAt/7JKJ95fJcY3gG8jUc43g4dMumURvmbDjGiHcZcI91wgRPuuSSfaXyXGNkBvI1HONkOHzLpni
/jI5rhHxBjL1XCPi8EXnd27UXyjHRQJFG0jVc5VAUfiyU6z+ugR21SU2UCZwX2UChX/vFKu/OkEc
lwq0gT5Beq4VCIennWL11ygItii9r5PRm0FGC4NAOWCQFBfJeRS8m66vgvPb9TpZXsw+QBKJomg0
AhllEP7t4c+DHIXgWU4OBwGRkYzTx0KprMStYlV6NOEj1FBzBBUexIMnZ0+T91NotaP52+lyMVec
oCunCBFeqdy2nhDiqEhlxVrXEFVuqjyd9VCeYGKAPCA9/E2ae487ymFVnkgqh+gjR4XAUt3pVQ/d
iVRE4s0iFctHWuWr5ehmFRYivB6kDonUkffbxXSZZCN81SAJTyWJ89IetUgC0xRGna6gHH1WTj7V
kmllQ7RiMrUtHCQ2Vg7rYBNKNGpdLFTBaXnhT52rhR5uotI3KGrsHFroFvvL0Xx81SnKq8EWfvBu
kHsPd4LjwRaqXTDBHKX0m/uh9LKV1XQIfZ2uJjuN/qncDfXwYq3cWqUXymoNIrFpDso8OUORuWmG
ceaDGSKUeViGhGX+kyERmXdkiETm+xiiOPNsDDHK/BZDTDKvxBAz7XMYYqE9CkMca3/BkCDtDRhS
VHhoUeqhhcV84OKVzXytdcdsq1e27rFV96I2l6Ldl4hr7sSXV9NAhSKslFNaomg3XUbR3v29EJpw
W7mjpRC76aKkr4r0aszkruorfZXqi7G6iPVFnF0UkbqI9EWUXYypulhUpS5ixOWuMuHpi7Vx5v2d
3t/p/Z3e3+n9nd7f6f2d3t/57+7vVAqUVnKVMqT1XKVB5Zou6E1a2VWKkVZrlY6mFVulmCltnzjb
BshkHI1abAPo4nwilG3g6OHg9XQ+WbzLLQOY5ZaBFD+pjc4pcSUmXTCz0aBqhGYgbKX2U5Paid3q
Qgtuf3kFjbq4viNh1ZrUUKgqwwrplOT897oP/6EqnOMWAJS2Byf1B8epqk0Lex00fBZYC8O2NpYu
06uhGkUSUxXzm7btw/PVYna7TkIac0kxFUyp/pr5G56zAt7MBt7UGbwzaZiVvKkbeatw5rLlZWPL
swK9n9xe34Q1yr5L0lDIFyfpDdcZyiqrTE69rKRenFIvCOBKvRm71sAXqQBi0kG/2KBfH5D8FwpI
rlsQotRWgHKuZyqcnmbILyNZNQ6oIaigX6fFVWuCGrQqY5aGUNUqkS3+pXGCV40TarSqRG2j4HHN
8gAjXV3WBghSNUCouaEyajuEqNoh1LSAy94c4c0R3hzhzRHeHOHNEd4c4c0R35Y5AjSwEhNytxso
sDkk8LiEBFEaI1CJCTzHBKUFKhYido5XmyVbOL4Fy07vYFkLiVmDkaoMnOqlNqxMaY0V1on00RpE
kkW5H11Cuquu6rugWA0yQO0wza2hKfWQgPSpHu13R5pXPei9n0T06Py41avfGSmet5SOTGt8CvUI
stsNzkTdDQ44YzrCSacjnKAvj+9MNMxKvsmsZKSAd5LCO6Gu8I5NcgfGFF3cXsd6lcNz+1+U25nB
2Dmz8yqzM66hmxnQzTVvyzpv81izNjZYO+PsCNdiCNSKoPmbG/wtPHt79vbs7dnbs7dnb8/enr2/
JfZWelCp5ePcRQe6V6nny1LP54WeH1WcdEwRT9wDutgf9JwDNjTxNo8sPmcW133OUI7Khtw3GEh8
MaF/cIOBrt22C4sjw/ls3S+nC7buvVIlpwWGh/ud3meRN3sFvClq7gNq6YOaOFk5Khur+P1BoBW0
vXL8N2Su9sxqvLhJEE1HiPrz5RJ+LQE0VmFqmynd/+bjVrbfc9veCM5ce0ALZQ284CzvgaNePUCr
Oz1o3NwDtsgLboSMQDkqW1zbTlEATmfuX6rbd35V3QBTKJnNflvl2U8Oa72QViWiSmfv57OnqaKz
9WI5ukzKDlcVZDPxt2LaNVSAqhV8eHFxsUru9KpyxDZUWR1e0wn+fbr6x7On/1KHxsHiMZ1fJIB4
k1dwf/BDkD2Jeqrno+tkUhl99dgTs6cqg0/Ypr9ArrEnug2s01+g3Mh5vN8n+ETFqhSDjzWbPAXt
sfzzjp00nYZAYyuN+QwV259gtmalRrNad1az1PYqrOZNVXJ9xxNi4Wl3C/NcoOqup+YFVojaPFWz
rXPI7GZb8WSEUoOiHnl7MJbVwC6PU3wAf10mc32sIuUMxzT6tTqKebqoCdflJct2//6eWeNgNz+z
MVJxTemt0O7pEY1v5ot38wBad5Ykg6C+qzAVpfmrdz8xNxNSLJW9eX57/XB5ufpvZdKBiYt31NGM
4zfZyqAOvsQ4CJV1Irge3ayC9SKDnW1lpAGZ4w0O/AikLaxMGGFlGPc79COQ1rgyEesSw5POkYf7
bwCFarGrQBscKwHVkL7SkfBJt3TURTrqKh3dSDrWVzoa/tgtHXORjrtKxzaSTvSVjoVPu6XjLtJJ
V+n4RtLFfaXj4bNu6YSDdLHzQiI2kS7uvaqI8Hm3dNJFOudVRW4kXe9VRYYvuqWLXaSj7tvmN/mC
y3eWQ43sz8HZvHrbQhMz14UmL9m6tsQsX1te9lpbUE3dsuooe+376+HppKvcvNcWeyg57is3D//e
a9UhG8jdvAkfsCj6nNvwoTzU7TKvKe6vBlvUdJiLToe5+PL+8mZbmqCdljQWV+xoub9cEO2nGGof
Ogf1Wmg7/FAibWUfSqJt6EPJtIV8GAtt/x7GsbZuD2OkbdfDuPTE09QT33cYoMjVY09Mj73yals8
9vBUhtNee+zbvM/S6naWXZ5nupshYObs1a5kSYyg7yiP96aG65lp17MwXM9Sbz6v7UhXAKxd0shw
SWPtkhZVl7QaTtolzQyXNPcuae+S9i5p75L2LmnvkvYuae+S/sZc0pXAU1TsGhXlrlEuSkWaFS5p
Ugk9pbkCrZS8jC9wDw8FbQ8Jb7Hln5q2/JaDsdTLhyoPsP/hZNIcxB21nDc2nWD6++LdPFkeLsbp
Cdf/UrW/XixnE4U7j5PRTTtkoZZd0B+Ls61RZLODggQGyVpP0UQNFhnQxm1cm9aUVhCedYItibaL
epzJFsVtPcW7UbTeEMCi3GRR1n2KWfxVYPRzzqII668P+JMVCMmcEBJjV4SkdxDSzo91yFSZWBs8
cis8cgs/kho/qgVEE2RUJ0iiQ5oFMQhSn13GuUGQehOxMLYtizyoOTIIEmmC5AZBCk2Q1CBI5gnS
E6QnSE+QniA9QXqC9AT5jREkL3XfqNR9Zan78lL3paXuWznfjFQIkmRY0GdfKfnjBAl6cguXSCuh
CVdCg8qysmM7lAk3KFNhTc5QhlmL8OXbeu4cb8Ubdi2zr4JYn3OYRaJErPIlvNwNsZgzYmV8VKMs
2YeyuEFZX8hFh/BuNo416qhoXMWg+ngmYQIYybaOag7DscFhkXbwaRzDBo4R7efTVMYMKuPa3afh
TBhwJrXXL0uWscFokXb+aVRjBqpx7QPUxEYMYqPaFejBzYObBzcPbh7cPLh5cPPg9o2BGys0ahmX
GrUoNWpWatSk0KhxJYoOl+CGSpVaprolYARqxQj5p2HElxQ6BwnhBhLiD4f72SlCGAghvhBC8MYo
PyxbovxQS5QfbYny481RflK2RPnRlig/7KP8vKrvVX2v6ntV36v6XtX3qv43rurTUuuVpdZbOXiG
llovLrVeWWq9qKL18ky9t72tFn7B0AyyfedYZM4PRGyOFfWyXkfHSl42tTpWVOFOjhWxyf61trhE
xFyIiERfhYg+89goiAjRAoikExAR5/1PPAOaGhOlh2pauUgaXORPKv2rnFRqOKPUCUQpZWtvFDO8
UYhrL5UmTlEnTiy1k0qDZ2SAJ9JOKs2fxOBPqp1UGkOZ4Y3i2kmlaVTUaVRK7aTSUEoMKKXaSaXZ
FBlsirWTyiOqR1SPqB5RPaJ6RPWI6hH1G0NUUmKIKDGk8mYSUmIIKjFElBgSVTCElY6ZSHujeI+Q
QtwaUthGjKcmMbbDn+i1KQ3x1k1p7PeJ3o92NEtct6WR9pdzwrNZwx2RcD3/iDRtSEP22Eck8hOQ
/tHrBCSyyYY00rYhDUeWDWnIeJ9IbG5IQ1H360S+zo60LzGdhBI/LgGfF4AfOwE+dd6dJu++TNSO
9vBYBt3HrbyK7KSKumg1dWTCnMhpVXMmoiamas8n5gafam7lsQGmkSZSbBAp0ShKDRTViCq5waBC
wyc24DN/FWZkUCfyuOlx0+Omx02Pmx43PW563PzGcBOX+jEv9ePKAYK41I+jUj/mhX7M44p+TAv9
GFTBjCNQD9xE7bjZQj+nJv3Qth1sGPd72QA8ae1tAwdXg8evnj19vL6eacrs89IBvbUNk3qlt+cH
s9Fq1V0n4EGURNG5hG/1X5RO/Wtj0cWZKer48sMXz6BdQZ1sLLqZnxH/fQ6lq/cIADhPFtdPTl4F
P6gjWB0w2mxvaFf4OJlAO2WPaTsVH2HjWHwSWd82gBtIGltPyU9rSisI/6fb2Y22i3qcSZqhtgEo
LPEB0HSL+eUga8EgHK0Bu8bbQThVjTm9AOzaHgRqLOpjcHd0dVnpMi/9YHF9M1omqpjx+uj/Glvh
zjWA+P3FYpaMKiOkHHNFJYW14uniUh3O+3zR0J+yoaxKISSyjojYNeKhKBvZB0Gc268eHvSJeGCb
nNjL2raSEtwa8YDQXeMI+zpB4F9q8ceoMI5kZ/tA38PV0k6CIidDCRNfyVBSi5RIs0VfylSCSJtJ
hLWYRGSLSQS1mERIi0mEtZhEULNJhMXeJOJNIt4k4k0i3iTiTSLeJOJNIt+4SQSVWjErtWJSasWo
0IqzVylkWnH5dlIuK1pxdpAPIRYIPB7NVlr311HcxHo4KnE+HLUo234eKiGOvLRJhDhvCxIg3ImX
+NcJEf/MI6OEpPJ8U2CG0K0BHckojwc36EhFeONeiIRMRPIB4n9igLiIY5MjiXa5Z9gYRfUAcsLU
5fw4IkwN2GTaLa+ZU9SZk0vtndfoGRnoibSTXhMoNgiUaF+9BlFqgCjTLnvNo5HBo0h77jWWyjqW
qhcup3YKT6eeTj2dejr1dOrp1NOpp9NvjE6jkkFoySC4ZJCoZBBZMggtGUQUDEIq5/akrADgVURn
N4dlg75ZQOfHfu8er58224BuLQgoe0QORF2B6o3geidQvf0BYiuAS+PN7taXUGfqaYBgIFoBXOoy
w6NOAEc0l8P+ktjd+/f/TV+NjqjlZZ31zkjtBPhOSDrufmHn17EifK4ZrC7TqGkyE1naE3BqTxDE
1U6Qcn7dSKAgnfezERjWhDS7txH8aTYCaXB6pOmfGPSvbQacG9ifHz+MDKDXoC+JQfI0Q3gUGwgf
aXYXBrtLD+0e2j20e2j30O6h3UO7h/ZvC9pRXKr8pFT5Ua7yg4JWqvyiVPlJqfJzhUDFSWPPk3en
yWXy/qbmQ85ILhohAGMA3eTy6P3NniJeFcqd0duBUvvz6O7apTLqV6gjdhC1HlBGjQPKELfRry7Z
fjwZxbrE8LibfcW2LrjifBa8iX0RLSLSX16N5uvFdbdAWUEqH++5gaCW/Ze/HVwOsi7osW9A12SL
FH+djN4MqhgeC5j5SQOGE2C6c0bkSCoef2PyOEZYncZU1mzd906Fq6lDl2zf6E5Fbuh41MvQoY6Z
KjpbNkZcIxZZjUcw6ZqNR2pShvufditbGvba7Uj6DUrmc9T2QyCGbO3LIqN9ma19pYoRRwxb21cV
nZnnTrrbtxCl2r6yuX3rG1zU2O4eMruV4boT5MMRVqfdq8VqHVyUF8pZIWUqIXWdtzpfEeMCQ+AR
tN5olk2dxgetTrM7T1CsANmEVlaUu63M7m6vUA/W1BtNo673zhuzRx4ul6MP+UuV4evDOtJ4faRZ
V221UtS33QCwW/tEmH1yt5DYvWPvFMIjWyG1mdVSiH37iGo11Vjhk845pL+PVB3FFIpF4xTi2GLQ
rHWUMmgS055JeKc9MxZfw55pU25YZNVtMnIf6hM4MsNmubOEYU2JcLU8SxOR1LCJIucIqNRAVrds
KrsZ7W/ZVLWb1s3PYtlsMwES+3ujlUm03QBovjdMh/+gNHiI59d5HhWEDbsg0cdFGqdy8Py9A9iw
/+ktKFm1hd0RvnG1XVDW7YLZMSEYCeP0DSa8XdDbBb1d0NsFvV3Q2wW9XdDbBb8xu6AsVWecq86g
rBWhANmfqe4sKhuwcXk6XZzrzqDLKaggPeweotXugcNH+592M0zusHloylG6d8tZiojTXqc8ctJ2
SgVND6l4Bfe5nO5455HSly+o57GeR8Gpq4ULRdFdlLQfR8Fpbu962svelVZT0CSK4macFP1eQ4F2
8lL+v713bY7jNtOGv+dXsCqP9xk9K28aZ4CluCJRlCxZlmSStuz4TalGnKY8a4rDDCnZWm3y218c
uxvoRgM9HFIJC6lyNOwDzkDf13Wf1EvZ0SPoQPQIOh49wtWRNKOifPrI66JZ2oqKNlZU32YOtugO
NkCDg81Sxkg0NEYiPVskPIrdVc03Ad6HTiCKNjyAGvTOqhanY4PTAZ2M09EQTp9igeRgeYjVcdTU
hmRhbUBSeNtP0CePXIu3uYe3uYuPCUEAuG16BxomBnSJvkEAuK0hjqm3NfQRNrYDYAHgtgkASZAA
kBXvmQK4C+AugLsA7gK4C+AugPu2AW7WirugBdxtkjfz0yirOkneQKusAq28yxUSgBmAm24LcAMa
BdwMZQFuBrcMuEHf2kZhQoe7WTKKBUOT0Z+yNApwN0tHtGDIQcEXeVAQdA1NABy2NGE0D3eLu64U
9RLLxd2q0b1rdBx32zqSNj1ssk2PKzpt1MMao56XeYMNiTfYwyQHT2WlYCyFuxM6c1XzTeDuwYMI
bngOtbhbtLibGNyN4HTcbSGyj72V4ppMxt4kxN7/mvpxEuBybtXjFp5XATwHVk1u1eJBZEZqsyg6
sF4FYB1YpbnF7CTA7NTqzu1tHlAJ+jZrkD0NkD2zGnabzyII3kigVbQXnF9wfsH5BecXnF9wfsH5
BeffMpxPW/G6amxSjZeNka9JG9m8E6mvavVa3MnXUjhUyANk4HwSjUYRsRs+COyGlbQ+iHvgJOUu
UrkiAPcZgR+GAmiAPrrkEYZgT4nSb9+v3l/8pzY5/88nEui/P1vIPy+eXKi+PHAOKK/P5cQtj5/V
Z28vf7n75GxR/14v2vdfrlfn9VrK5RcebEWDKSXk7DbG7TxJJvDpZALqZZUAPE0m8IZMOMjDt6ib
VAKgYbcKThP41uufwrc0xLeQjONbxG8E325xA/LWKpx3AmVSg28xmIxvSQ/b8um4VrUgxLaDuDaC
WVOAtY9RQx2xCeLARBBl0RhZy+sowJXEXg/DLlYWSZIASdKCEQtGLBixYMSCEQtGLBixYMRbhhGJ
E1GlSNTqgmEblAE5uVTKXko4ZxkQMJ7KEM0OxxCgwwkYDCODpMctDzxuVUnqRTEtqICKHMDhyQJH
gvvtid2nh88kkpH93z/7sJQCq0qO6AL9AYBot3qRzPrGxdQwEq7otNcuFy6OxFFWHAlZchel4WGU
JmByLkQ4F9qRXKCpAR7krJ684VPjLHZqTCJmMR0x26LTIFk0IPn7PJCMu37TgAwH8hA0Yx/CbZlc
kLjJhUj62ovA1x4mc1yq+lTRPD241BY5ezU6uBA0PfEGd1jDLpJO+V6fbEl/2IFVlRkmxXv/5y8e
/F3nWX24/GDTrN7d+WL/tH/t/pG+dng+P8vPx+raBibvu5MFnx/HAqsgtICpwCquaphYI7ACUyN/
uKJRao3osk3ojx+zQn/oLArtGqGD5x+scMYGRFsMrtJriBddBVYkOcahb08yU46qUhVN02Ns3XnE
7K/j+7BqOtMdYwaGx5glA6z4K+deZ9nmBlhRlau6+OQ9b18U3VzEg+0bKmloBDtrRcpqKkpwKjTK
o9V6//fj+lz1atAyLRzZ9uSGoEquGDF5VzIQEskQgMTI+nMYKwVuMD/9UlCyLTijFJzeEHLoepHB
7z/MOn+YJ3/xwdDcEJCM8wdHzx80e/jPe4+WZ/PTkZPHphXvNUG/p9pAUytIrRhvBeHkCuKVHmKW
HGJVdjDEeLY3PsSk6ZE3xGh4iHk6vpMnOd7rSKve8fNu/mut9UVtyPE/yV9v67Ovdn9WL2FK5AlU
ecnOVbNUK8RkQVu/qHNnDVTcxDqfL44r93xOsPNNhPAg2DmaEOx8ZwfCKiGyfH+2qE+WZ2r6ZT9M
WHkIU3HGIAzijEGYWpWu6GSgMV22LnL2cHQp6nAyquR0wHpZL5rcpSSCqfp55CHE2f1Ds/3x/uEp
/SOT+4c36h/N7h+ePRrvH5nSPza5f2Sj/vHs/pHZ4/H+0Sn9E5P7RzfpH6qy+0dnX4/3j03oH5p+
pLCN+pd/vrDZk/H+8Sn9u0FOxvYUfyZGzlafPHAQnrohXdHpMwZhtwefZu1BXx5EWV92nRkTxeab
Te5+cr8i232e3X06+yZri6JNu09j3ReeYHe0lrJHm1711a5W7Z+v5Li8Plmu67jjDzV9xtXk7YNk
G+cRagWcvFkwRa3s3999tTxbrH6zyxhBwo0LDbMVJ88lHJ5LPBmy1hadwlv+ElEvDhxoOE3PYHug
8dmz8dUg7rhqNlsNAEeWA8Y3PX2yKabmVDhm2baQRLdvZgZk9gv4+Yv7j22bcohDVxfrBJFt7NsG
azq8XK3nb+subfH00Izc62acBuvg3To+GoDQr4L1iROM/cC1ywWkn/Ri+MfdHaDg/PLspF7LeVdu
fRJzHK3OVbuez9/Vi9YKb6YPW69hEeJEtVYk560anjeSJF0wn5rQuikbpDcbd3nBvn2Yk9Ba4fXN
dhuEkd1GkgeLNwKmKPMmyl3z3Fvz+6fHjTySseyb6nDesucbLPumDpKz7AkeWPa8t+zZp/P16nJ1
abxXgWLVMpc+uxM0zpu6h/V6+aFe6Ck3rU7yPiTgfVBS59OMSJr4UYXrMmfPxxexVfpAuLH8BGKL
OMUW+yNgijJvisxF7BUgF/GLXd3cjAXsqqJV1gJWFU1ewE0dIGcBq7R8Q9UGC5h/ujhdHuvFqzSw
mYuX3wka5nOVduOb1iYVUTRQRCGQlHvdSKRFHQpsmbMX4wsXWsF3Y8EfR/I5QpoKJO+PgCnKvEky
F65XwM9d/WDG2m1qo5ukgTjB8TQQJyYNxF9DaIoQpsSvO4mOaKDSRkkCsSk7DY8otWXOXo6vEssg
4mrjVSJiq0SkFW/eGNzrzIDHfCsq+Y+W6vYpb8EgR9CnvLEwo8Sqyfs0yXcSKyUxkL1P0ey78Rmw
HCfZWEoiLDIDDE5VzqEkQicW2jGUpb7SZc4OxkfAQnSyMSqLZZ6FDOe5+1TdnLKQJYkdFjAbiGTm
q4UszewwbMucHY6PG23z1W44bjFuh7FRfTQFA7pn0b/GrkUfHba6lSmTkTpgL1JHeuLQACXBxGhy
ZwjwSG7nQQ1uIrfzxvQVi0EonqbB1WD1Wn+UpX++jgY3PNXT9+/OZ57zFh/IQQxvxD3L2b5C80t7
Z7koSLDCjUNWm2lYEOtuoMJHuNwccjqa3BwCWJt9WQC1JvnKvcha0f8FmqihUNVqkhlDVRik1sT9
LxBRa8Euf3JroC5/Qmt/LoEfcimOJeC31uPyJ7PG4XKHI2v7LX9ya9otFwSw1tjyJ7XG1vInan3J
uPElmzLhYnpcFdrzO1OOYnAz37PAa824sV2b75kOgAJwGyjURD5BOlGIPI3sdedLVsEg8Qey18O4
qND6nvkhUphwCYRx4JNGik9a8UkrPmnFJ634pBWftOKTVnzSbplPGnZyuRSJrGCupKZGMq+gk8KV
UNakyOMq1qYEG4JnWMZWURe1mBHpQWhEKmJop3UfGQ5gAUWYGEH0AljA8aSGNwOQ8icCGojTzEMD
KsQGoIJMBhU8BBUQbA4oVKtDUCG8IoOoihpijAde1I/4cIJzD06oNWliU3Dh4Qk1nhY4gC6gUMNv
r5MuoFAzZK+LLqBQk2gBBQoABS6AogCKAigKoCiAogCKAigKoLhlgAI1cmwlWjmWtHIsaAEFbwVZ
KYkpeR61Xt1xQMH5FgAFGQYUqAJBWoOwflRVsYwGqPp0Liueks4gbEfXhAYlfblR6MudNjlWMSND
PR1Ke3Yj69kN+ezhfo7psCAb2w5XODY3KYMa1PNurbDtYaZFjV/CVIuatrrNTGrYiEnNccqkpq2c
JZcNnWoy2BbO00uFOpvB/f0cm0FtOLzhWgEotlbSZjX+MNzrzIJnVjM/Pz/9OGJXcxy4kppEijso
6fPd271pAzgAuC0c5O5YBGaP9nMs4ADgG08DjBhvIpCRrkYZ6sfO84gi/aDnyB1vAeraaMhPlvwS
XQwO1tBBH14DkTgvJ8v1xaUx3GgcbquNIwmEnbHJbVRvUvF1EECTbdohGPgmgGS4HV2VsXD/ej/L
wh1ubGQJUBWbXxq1d4BgKB5tdSN8Xr4cJNeZE4Pk8nK2B/Kb7GwP5FQ42wN5/DrbA3kENNQfBNOp
P0Cqydyf6HF/6GrcX8AeBnTidrg/GnB/3Mar5czn/uQ5ZLm8KuD+gL2OA+6P2Ovc5/4qWw6AAfeH
CvdXuL/C/RXur3B/hfsr3F/h/m4Z9wdbmZe3Mi9uZd6qkXmNka2WeRHScjyCo7biSpCLGotnsX49
JEBikAKhVFPYiN360XS79ZGmZIQ+5PTqfOhIC1JeHiiMX5ER0ZUYNw+UDuCBbAQLgGaH+1kxXUlO
GBbUhuXow0Y0OEM9jHztGDJzPyE1SrTdWri7tRqICDeBiHAL5iFXgoietbouDm4ZHuKYaQgZNA0B
QoiIaQiKmIawiGkIKKYhBR4WeFjgYYGHBR4WeFjg4S2Hh6AVZ1krzqI2RZ9oZVjeyrDGMATxFCbD
24aHMAYdRKopZNvwMNYUnGMuQ7agXo23IBUWD4Vh8XLgoQlQhHAyRieyIe0mwEOYAw8xmggP4c3D
w8z9pOAhhkNbC1ctPEQGHk73MjbOvz7quxLiQyHi25pXMTPW/g6KyVGRQAzp+BBqn1QBHgNWi2dv
g0DLx6zyz96GAfpDVmdob4fJMYVVNRbMVzBfwXwF8xXMVzBfwXwF890mzIewy8qOsJNQEXY52RFu
5FMlmskC7n355b9zFhWEM5R1bMTYNYJhDnoYZtgdGrUhrg9qKUae9cFSV1PnYZiO/bJ2eEZt0OsY
yK0GQa6a+dn+P+/pGM4j+Y7EEM4N+6ULUY1hqcaAWGOyky8lG2MzMSGcZCJgrDETUkHmjY0Oko1w
kpBAsRZNzI2XbJWXKO+aIXD28SLXfQt0iQW6dLJqk/RUmxKyIroJ2IUkBLnEFAeZ/E++gOTbSL6E
5AsIy/9ITO2pGzCu9kQKWlcKYwPYB8XaN562+k9iQ20hdb0JkcWh0YtyqhWmjb6UM27UmajyQm0J
4a4jL9SWcCG7MAgQsbWmJSyA4UaNCgi5p87kJiIYFQU6F+hcoHOBzgU6F+hcoHOBzrdLXUpYo95B
qFHvoKoNmgvMl17LRk0AXYTMh1JLaubrpoU8CRMIyICncd96Onu6N4ZOXQJ7MZgKDBGYF2McNqWo
l5Dnjf/DgAKQDHhukoiX5p4Sid++X72/+E/NMfznk7MHUuxfyD8vnlyovjSpO16fy4lbHj+rz95e
/nL3ydmi/r1etO+3STF87EyH4JCc3f91UJYkHTgJmqwvVemYfe0jImn3TYIc7bD3KEt1qqpp3Ddh
NUxCtAlrhiOy+f1T+lQaRmRDdDQim6r5BvSrW9yAyESP1liUkBaLUo1FZVWTla59LMo2x6KqJSEe
/TxYlPmYU6fdUP8SH6MazCkHGPlYlNowzlD4ylhkMSeCvg4X2TDROPD4xNbjk1AfixJmsSj2sSgp
YaILFi1YtGDRgkULFi1YtGDR24ZFaSsKw0YUhqIVhatWFG6SuUhxrhWFkcOiXImPiLAMLMqiWBTN
DsegqAUsSrAehCipjJKIsCAtakU0qBKfJ5O6rZ4mI0oRMRU7uqLT8aSIcHBxPwsuypK7cBEMw0UK
k3MhgrkAWkHd5oDMD7F2crKoYwYBcr2bh93oV5BQr8IkcqchcsfJ0bdFp8E6Rc6W/dH46FuHXgi6
mVghrIZHn6ZG3+uTLUm9yCbn8easfiMio7//3B98xBiAXn08OfiTU5a5okV68Jkzl3/8KCetlyzZ
G/zB3I+ozbwYHfzwGIJK6YnatIr5g8+rwSTqo7YwnRqTkShZEMsO0PTwm6LTsScZsEXOvh4ffuaG
X3SHH/Hh4ccJosrrkiKq2FSiCvEbIao2+TojEvk4N0QVbSOUUdL4DFDhErChTkIzyAyThcFkJquX
pExTTldgslRrQjbr5pks6jNQOiyqGl/sMVlyvO116jFfUvaxDBcMGC7LWKHAG8HlLUCBczq2zBch
AZPlrCpQwGQVJ/TCZBUmqzBZhckqTFZhsgqTdduYLNLKysBlIpbSWiMrI9HKyqhV6tJWWIatsIwV
jCAZTFYkQtc0k3ArYMeswBlNZS5gJJa5AFSf3taX+6e1op8uHnzcO51fXDyfv6un5DLoNa5NZoBY
MiY9o5OpK9yLW41YOjw9o47HeprHY+Fu1Go4HCgNMZFCkzRAk3wqmiQ3Erl6aIfIlbPhBmnQJOMt
WDTZryFBk8EiC8Eiqq4GFFVrQrA4BShO90GHgYmD9T5nyM9Uzdz1EDBah3JGAgBoTRYQ9wEgssGo
SZDZupgsFKBXgF4BegXoFaBXgF4BercO6LmEykpUaoEeauVY3topwNZQXkE6nhFVi8GrGieQwdRV
iIOUVpBXgVaQqMQiiMPPZJxgq0cphNfxi85VEdqicRLUqbKNivBZnopQ6TdbUEeHQR0nybmAwVxQ
rVPmdAP1+AbRCjo1JgE2nw6wbdFpTM0bTP1tHqamnoKcDmtoucjYh2hb1ErYiA61IpKGNzwwvIFV
enCVchiJtOENF7bI2YvRwYWg6Ul3cNlgZjQkYIouiuVl2xZdxOJ0kUgeJgJONvdgfbpIpE8WAZ3t
x8s82w/m0UV8+GQROawhvqovVrR2OsUXS5WiXmJJXyyV9LN3jX4eX6xe3xtfLNWXpDmRCM2Jkmn0
IK/66yttWySsbZGYHYzv7upOW01nfQ162+E2j64KkzO4qIe2+1DjOpNnEhxetJO4WX7DXqPboxZX
qXiiuKom73ze84/DVTK0qK6oF771MO8Q4J6r3HC2YVyhjEOARL9v2aFthppgo9ngCifHe7pVoyB6
iEl6iFFviPHs+zwDRy/DMBR8eIhpOg0s76WBtcKYlwZ2IDCVnwwWUwIr7ieDVc1SrWCT5Uj9Ylaq
Dvf8v2BErB3ZdZ741Hwvj/OT5ZmaftkPkxcGt9l7o6uSBwIXTK1KW7RKy5taldwWOfth/EhGZinm
JJzBAEzuUlJA7+ekkfXA7P6h2avx/uEp/UOT+4c36h/O7h+e/TjePzKlf2Ry/8hG/aPZ/SOzn8b7
R6f0j03uH92ofzy7f3T21/H+sSn9m36ksE36B/PPFza7/3i0f3xC/yC4McoB2J5+JsLJVZ88cCCc
uiFd0ekzBkK3Bx88ztmDwBdW8pNwodh8k8ndT+5XZLtPs7tPZ3uPc7Yo2rT7NNZ95gl2R2spe8w6
sS21Evt8Jcfl9clyXcdpCGr7zCdvHyTbOORTodY5OHmzYFx5ttzffbU8W6x+c54tkCigJStmtuLk
uQTDc4mn5tEWjVIOJv4SUS8OHGgIpFeDPdD47OH4ahB3XDWbrQaAI8sBwZuePpOuTdaMUoOMgkFu
3sTeEm5sMMYL+PmL+49tm/6mYJ7srwQ1ry/c208eehFpXF0NFlPkjevtYE2Hl6v1/G3dBflPD83I
vW7GabAO2q3jowEI/Sr6HJGutjtZywWkn/Ri+MfdHVBJOXF5dlKv5bwfyTck5jhanat2Kcpx0dI/
M33Yeg2L0AyqtSy5OXhk3lLkEUYB1Q6T5FFTdpIw0oXrMmf7o5sNWcJI4fXNdhuMJH3BOHmweCNg
ijJvgtw1T701v3963MgjGcu+qQ7mLXu6wbJv6kA5yx7DgWVPe8uefTpfry5X6gm99EH20md3gsZ5
U/ewXi8/1As95abVSd4HB7wPSqs03IikiR+MbJmzR+OL2Ok04MbyE4gt4pTvqz8CpijzJstcxF4B
chG/2NXNzVjATVU8awGriiYv4KYOkbWAeX8BY9RbwPzTxenyWC9epWDMXLz8TtCwiGJItpZUyYUb
6OIQSMq9diRIWtTBwpY5ezy+cKEVfDcW/HEkIzMmMLlwA5d5bLmvNpxeauEKb+E++HXK4dvUhqd7
6B+jExyRyd4QdDJXMtmDv4bQFCFMiV93Eh2RIGs1ShKITdlpeESwLXP29fgqsQwirjZeJSK2SliS
+fbH4F5nBjzmW1HJf7RUt095CwY5gj7ljYUdJT55nyb5TmKlJCKy9ymaPRmfActxko2lJMIiM5AM
19FTZaEkQicW2qXjdejCdZmzp+MjYCE62RiV0dhJRTNjfhodBrX7iyaJHRowGyhJ7DRlp5kdCm2Z
s2/Gx80yO3TjvUtj3A4lY9pbvbaHZnuoJ9vX3oatbmXKNppIdOLIVN2tij/SoyToeD4QXMGRBJyD
GtzxBJx0Y/qKxSAUTdPgarB6rX/2OEf/fB0NFtGMmGjAW4ndTIxWZ+WJKxeiFXHRt/FEvHKhWEUb
4YJzF+ECV02ECzkzTYQLjq2hunxNWDt0+RNY0/G/YFBZy3D5E1rDb/kTW7vuv2CIrdm2/EmtVbb8
WVmja4kBgbWplj+FNZmWO5xYi2j5jQbW4Fn+pNaeWf4U1gRZthdbC2P5EzROVqgyTlZT5n6D5J+8
55ClvKbw1Z2yAtcu4+t1bU5Z4J4xbDDeUXI12KgcOh6tPKTsdepymrDAycpexyRw4nLxZYWXA4Ux
l+sEBU5ZJfpGccoqTlnFKas4ZRWnrOKUVZyybptTFmpiC2DRRKrDneACzEnkSihzIrkSxDQG4TTD
YBbEE2xGbEsPQttSEQNBrZfNcJQHzIMoDwj0ojzg0SgP4mZwU/5EyC5589AADLABwJic6EKDAB9g
oO2AC9WDEGAAr/gw3h9JhwQkPWhBhQct1Pq0ARwqD1uosbXgggbgwl7H2A8piC2IwNyPBIFdxAcY
gAtUwEUBFwVcFHBRwEUBFwVcFHBxy8AFbGVa3sq0uJVpaQsubBhrohFDZWR7ngYXVGwBXJAYuBAJ
j2zZxJhHNqo+ncuKp/hf9zwCu1Y2SY933PN4T1olK4e9niov7f+Onf87n/2QZV0cOgZOMC+uYvbF
ImlzwwObG1WWeTXX6IZfxeimrW4zqxs2YnVznLK6aStPmt0IPNWqsC08bXcjsDMrfJVlVqhtizdc
KyCmvRcZljdi2PKG+ZY38/Pz048jpjfHvumNapJpAZ+6e9M2cgBwW7jI3bEIzH7MMpKTZW88DTBi
30mqnCg+Vfw8j+jaD0Jd+0gLQNeMQ36y5JfoYnCwhg764BqpIm09Wa4vLo1tR+OTW21q3NHrjLbQ
Mb1J5QAhFZhs9g5B/5tAqmRKEF2VMYL/a54RPNzYDhOgKja/OG4SgfrUniroJri9fDkIWwsIopdX
Y5MgGpsEORWNTYKgjU2CEC0NiKbTgIBUk3lA0OMByfZ4wIBVDGjG7fCALOABqckIwij3eUB5Jlke
kAQ8ILV8Hwp4QJv0FrOAB7RGCQQEPCAsPGDhAQsPWHjAwgMWHrDwgIUHvGU8IGjlX9bKv53Ir8TJ
v8QY4mr5FwIt08Nq1LRcCXJR2/IsBrCHCkgMXkCQagofMXPPAK8TmgIzuFF2dW50pAUppxAShrtI
xzcFJqOGLDzpFUJswAuAZt98nRPhVJadEbWFtFE8+hCSDM5QDy9fO57M3E9IjRJutxbsbq0GLuJN
4CLcgtnI9uAiDqEi3jJUJBGTEUpjJiM4YjICIyYjNGIyUhWTkQIVC1QsULFAxQIVC1QsUPGWQ8Wq
FW1pK9rCVrTtyLO0lWeZkd1pCp+RbUNFGIMRLNUUum2oGG1KjhkN3YLaNd4CkYSKfDpUNLGNCKrS
UJFPhYowByoiMBEqwpuHipn7SUFFVA1urTZNpISVCiqiik1Gf8iCsg4C3Br6IyH625oXMjUeAQ6W
EWUaoyC1BX+hGq+y2j17GwaQjlqloL0dKg2h1SXa2yGAxFYFWfBfwX8F/xX8V/BfwX8F/xX8d5vw
H0EuehBBLkUkQdQKq8S6wOoMkVRJmfe+/PLfORkLQTlKvBGD2AieOQjxjJLYByAMaSNlH9RSjDzr
AScvzrWHZzqxQSsVAY+0sbNjgBcMAl4187P9f97ToaBH0iaJAczb65cuRDWGpBoDY43JzuGUbIxN
6ERQkpVAscZMSJiYNzY61jZBSXICx1oEZrJBJnHbk4VEGSOtojmt6hR17XA4+3iR674FvdSCXjEV
9Crg2gWsAPdUoPIqB1OAMKIh2KWmGKTQsNj5I5YPSnj/R4zlf7Jyifr/iOU9LO8RWSKR94m8T2S5
RN4n8j6R94m8T+V9Ku9TeZ/K96m8T2XZVN6n8j6T95m8x+S7TN5j8l2muyD/k9e5aqt8j8t7XN7j
6p58l8t3hXxXyOeEfE7I54R8TshnhHxGyPugqtT/qW5WMKa9BRVRQwGTOtzOgz6iJ8JH3YQbWK2g
OxBWrcuxxv1NdDCOgQk+hvQ/ENmngP8UtE9RE02A2ae07pi2ZdnbqmJAXYXUfwhwUxQ2/9jgZ4aO
aLTQXLGZ6h/zFKX2KRI8ZZqlTjz1jw2ARrgfGE3YZhmSAjr1s/BZCGooDjMeTFh7Zlp1nwJCmEKQ
MA9b62nDaLR8iG69fEoPquC2XZR4gdkEB+Yp+w80T3HmUy/cTKMKmCr/Abb1nPtPAXObmIqJsd4G
BNxT3273FCDUXCbmH2afosFT0FxG5p8SJq7QMoWWKbRMoWUKLVNomULL3DK1PGeNGpFii5yUMN2o
Ec3PalfLUzbEs5KjzYdSy6423LOSiBUEzVBKExHNtDwBGFvwFsXCYYyHQUgs2xsL9IA/nUl4cWTy
A2XHeug16fnq7MFqdWq9ewlOhXsgSExVmcs6QwU0wcloD7oiwzZ9n6U919U0nr0IDOaBJjgzE4G4
60pRLzV+yHurd+fzda3og+PL/b8PNjq8plSsaozreWcCu0luTB2pPEwkzMOUMfK26GQaJmLTMMnB
/iFvsD1HfTScIIy0mZWGoyT6XVL2CyyMksjBaJREBG8kTOLQQST35obnUMP3yCOp4XuY4Xvg9MiI
tMfvKOKFT+N3VAtCjuez8jvbMqYwjEPLJRBhQ7qLgGypLCeCA+LEsiBEBPyG4xeAz2gQywIYQ4sO
72C9szkNOASH9KsA6YOC7Qu2L9i+YPuC7Qu2L9i+YPtbhu1pK1KjxkSYAitTK8GtlamrRqY2uZG0
TG1SHxmZGiu0wTKwPY9i+4kqZiusx7XKBKcyycvHV2dvd81bO7P5pZRnj+/szJaqgOWJlGfvSHi1
Wny0lh9NpapwkQtJMRuApHwckpo6khlWCZ5OBtii0/gfN/j/xzxICokHSQfzYZI2Z2oMkooAkvIQ
kmKegKTiRiDp+P4hxkU7d/s0kJR0XLS5gaRoutc160FSsRkkVa0IYWkUksb097ricc29fiQAjszX
2TulOeI+cEQWUGIUAEdsgSP3gWMDEANDfaciZ8BTa8sjywJHEgBHq0jGIgCOVQGOBTgW4FiAYwGO
BTgW4FiA4y0DjqQVfGGrFGaNMoaBRvLFopV8eSv58lbyRQoTNPboj1br4/rF4YGCK7OkBTqCGsrg
DNjJtqVSRjCqUiYkkTaAqNz2w9pkAD4poDlJlYyGlX4klfybEDIZNaKeDzMhLAkhVUUGQv41D0Kq
aloIicFwB3kCQnr9UxBSTIWQGNwIhBzYSYTgDTdSCyE7ueGEgZASC02FkL2E0hhsBh9VK0IIOQU+
Ttc44gAgcuNbTYKk0MS6ZJMgCBe11sas8jWXxkxcThsOgGBxzi6ArwC+AvgK4CuArwC+AvhuG+Bz
7pNKVGoBX5ujmDX6DSl7KQFdZCAyHPVvRrPDMe9mhxXwYIowQqtEgjBCggRhqiT1IpiWr0sl5eLw
ZIEjruN7Yvfp4TOJZmT/988+LKXA+k6KgM6NHADlMdipPpnVhwZZfQBNwjZbdDqNDwW2yNmDJ6NI
jTWj30VqZBipUZyaC69PtiT1IpmaO20zL/5OjUnUTKejZlt0GijTBijvPckCygR4wz+sa6V8M16F
CN3snF1MtsWrkLipPqtSvEosG+RmvEpkNBlIrRCVxMxbISy9Qvqm+Qwml4uqSJc/2x9fLvxOW027
XOiwaT5rjonn9W86tsZgxXKgTZKzi3ag9dOv5Nb7/mxRH8sOL9SAq3E2C2BP0Q1u6L1L0Vmg2nSe
Ja3yWWiVT5KDrsL1h4OeNtFXFfUiNj4aH39nqEI9a32GhsefZmw4Gt1w2REshprgglYwlhxvGow3
To43Q3qIeXqIaW+I8ezr8SEmTY+8IabDQyw2OxFlcfJtXiXzSfpfiXudL5OXT3Igeo2fVRJTIgUv
P6ukawWY/FHVL2bF+XfP/wuGzdmRXU85D6nj52R5phaP7IdNKsGTGSt4kLFC5ZgYX9Ou6HS+Cg5t
kbMnowtZh5dQJeeEIOVkcpeS0ko1kACS0+z+odnT8f7hKf1jk/uHN+ofz+4fnn0z3j8ypX9icv/I
Jv0TVXb/yOzZeP/ohP4JMLl/dKP+wez+0dm34/1jU/o3/UhhG/Uv/3xhs+fj/eNT+ndz+AvYntLP
g75d9ckDR9CpG9IVnT5jVNlmD77I2oPAF3XyM/ig2HyLyd1Pkw+6+7SqsrtPZy+ztijatPt0uPu0
kx9aNe1oLWWPrlCo1XjnKzkur0+W6zqOWqjtM5y8fZBs4zyS+h2cvFkwlfp9//7uq+XZYvWbS/wO
CTeO0sxWnDqXZNOCeeSpeXRFJ7kcb4moF/sHGq2SOEu3UDds9t34ahB3XDWbrQaAY8uB3vT0AWyH
hyUGWbbNH+TmTe4t4UYLPV7Az1/cf2zb9DcFEmV/Jah5feHefvLQS2vv6mp8HxQh43o7WNPh5Wo9
f1u3Q6fqMCP3uhmnoTpA1a3jowEI/Sr67v662u5kLReQftKL4R93d0Al5cTl2Um9lvOugjdIzHG0
Olftej5/Vy9erlfn9fpyWV/M9GHrNSxCUKnWguS8weF5AynaV47E5GTuruwk76sLN+nbD55kpW/H
m+42GMkSQUHqYPFHwBRl3iSZa94r4Ocv9k+PG3kkY9k31dGsZa8qm7zsmzpYzrJXzP9QtcGyZ5/O
16vL1aWJUQIqkL302Z2gcd7UPazXyw/1Qk+5aTVPLmLmL2JUpRZxMyIivYiZLXN2OL6IwR1b9Mby
E4gsYlglFzELSBkjHlIIchcx8xfxi13d3IwF3FQF8xYw22ABN3WgnAWsZmCo2mAB808Xp8tjvXiV
tiVz8fI7QcN8ptNufNPaFL1MYUAvq4iUqaAvdiTSog5EtszZ0fjChS7qy6YLF1exhUtTC9cbAVOU
eZNlLlyvgJ+/ePDrlMO3qY1PlckEO0YnOCKTvSHoZK5ksgd/DaEpQliRuN26RXKVBHmMUJJAdGWn
0xhRm8YIwdn346vEMoi42niViMgqQSDJfPtjcK8zAx7zrajkP1qq26e8BYMcQZ/yxsKOEpy8T5N8
J7FSEkLZ+xTNfhifActxko2lJMJiMzBZEYaSCJ1YaIfylF+6zNmr8RGwEJ1sjMpo7KRCNC9ymNFh
ULe/UsQORQGzgZLETlN2ktnRhesyZz+Oj5tldujGe5ei2Lg1p5dS6Qyu7aHZHupJR/PYUwEP69cf
rdb7vx/X52r3DxImQatbmTIZCY/2IuGlJw4NUBJ4PLs7YWQkY9+g/nc8Yx/dmL5iMQiFYXohigHt
9U9Z2uvraDCKptDDoD9k7GaCzDVpApgzcyNU9K3ciPHc174WlDXJ8xh3yfPkfFjLYPkAsoa/8gFo
7WT/Qji2ZrDyJ7VWrvInt0asfyGCWxvVv9Cqsiao8iq2FqbyKrEGpFJwRtY+VP4U1vxT7mtirTvl
3FfWeFP+RNbeUv7k1pxS/mzj4GFgPEamTLOYHqBA9LxLlCsI2dzDJPBPMQ4r1+ZhgrzE8HLqbQgC
6OWFl+vAhhoI4ukzG7uOhR4pNi08E140fGZj1lccBZ4nJf588TwpnifF86R4nhTPk+J5UjxPbpvn
CWocpJloYmyx1vOECid+K6HMyd9KENMwg1YZFrUonmgvYnx6EBqfihjOoWDcVZ3SyndVx7Dnqk5G
XdXFzUCj/ImgJtR2Mw8NsIAbAIvJwbg1CPCBBb4aqFAtD4EF9IoNQ5nRdLQz2ocUwIMUal1a73Qf
U6gxtaAiCKxNbVwzhv24acyBCu67uTOXLgsGoAIVUFFARQEVBVQUUFFARQEVBVTcMlABW1mWt7Js
G3aJ8g6oAI0wKyUxI9NnZO9W7rlXBhUkBipQwh+WqqSvw/6wqPp0Liue4g8btsMzoKFJAxqKphoc
CzKgpaNpaxqKnOHwk6c5hsOCbGw5XMVMh2nSnIYG5jSqLPNqrj0NvYo9TVvdZgY1bMSg5jhlUNNW
nrSooXyqwWBTOEub1FDuLAafPs2xGNRmwxuuFRBTzLMMoxo6bFTDfKOa+fn56ccRq5pj36pGNcm0
AE7dvWnzN6BznqnCUe6ORWD2zdMc+zfgZz2bNA0wZrrJcuJHwvh5HlGjH4Rq9JEWkK6FhvxkyS/R
xeBgDR304TUWiaxyslxfXBqzjcbdttrUbqPXGZvAUPUmFUmDMjLZol0lWe99E1gysIauyti3f/s0
y74dbmxiCVDMconxuLUD7lN6qqCb4PTy5SC5zhrbBtbaINDWBoGxxgbB2kkoGwSGWvoPT6f/VCj9
qfwf7PF/9Or8X8AiBrTiVvg/LEL+D1j+r/L5P3kWWf6PBfyfzVPAUMD/2cR3jAX8n8trAAL+Dxb+
r/B/hf8r/F/h/wr/V/i/wv/dMv4PtHIva+Ve1Mq9jU0vNQa3Wu4VRMvyAo9aiytBLmounsX89dAA
icEKQRJNIdWI5fpP0y3XR5qSEboMi6tzoiMtSPp5hBEs0vEbbSovWXja0cPGsFDZ8p7mRHAEJCcQ
C20Dc/ShIx2coR5OvnYcmbmflPm5aCGloN2t1cBEsglMhFswE7k6TCQhRCRbhogsYiKCecxEhEZM
RGDERIRGTESqYiJSIGKBiAUiFohYIGKBiAUi3nKIWLUiLW1FWtiKtNTJsaxqzJ1ZpaTKHVZVKYjI
tg0RI/bnrAKppvBtQ8RoUzLMZjDfgpo13oJUcDwWBsfLgYgmTBGrkpE6mQ1sNwEiwgyIyCoyESLC
m4eImfsJqVHCg1ur40hADUTk050DsAVlHeR3ZdRHQ9S3NS9j603s4BhTNigKQlvQF/oCV1abZ2/j
AMpRqwS0t0mAAKHVHdrbIXCkVuVYcF/BfQX3FdxXcF/BfQX3Fdx3m3Afq7gVU1nlnFwZqKyQygBw
MqoSzWQB97788t85nwqrcpR2I4avERxz0EtWxgc9GVgb7PqglmLkWR8wdTV2sdQ8Ovsya8Nfx4Au
GgS6auZn+/+8p6M5j+RNEgNYt9cvXYhqjEg1Bscak53EKdkYm9GJgSQbQWKNmZDCLW9sdLhsBpKk
BI21CMxkgyTukCU+WUiUMdIqmtOqTlHXDoOzjxe57luwyy3YFZNDbLHBJO4StrJqE9CLeQh0uSmO
yLeIfJjIh4l8lxD5n3yJyPtE3qfyPpX3qbxPJQKn8j6VBVJ5n+rmyP/kPSbfZfIek+8ytjUQrf3q
aasaRSZSFzYRu4x3fTdXvL6MhL2tVa6NxpUTc5tYvaiowozyBibbRPGChInlzW0NsiGoSJhf3hj8
GrtcAGmYZt4AfBMLDGB+Tx367jZQ5hXyH1IViF4geoHoBaIXiF4geoHoBaLfKtWslIoaVZIgjSpJ
ODFaSVXmS69FJJeXXsp55kOpZTrzddPCoYIjKAMGx/356ezp3hgKdjnL+GBsfdZmvxmOEMYACiKE
iTBCGKtGI4Spmq9fx7fNiZF9bgGQMABoeoxh3AM/CqlsCn5US0IAdGXwE7MP1Y0ctw/VjwRQp/Kg
jly0FsQAH+MYB0L5Lw3ADbPWnsLXDQobrVgEKkVBLI7BHo6RE20BDPEADIAOubAAufACWQpkKZCl
QJYCWQpkKZClQJZbBllIKxnjRjLmopWMcSsZs1YyBq1kTFvIUinQQDIgS3VlyDIc1piBzERMqClF
vcS8oGU/DNhHqvw9vWt0uBd7ShB++371/uI/tfr1P5+cPZCAYCH/vHhyofrS5Dd8fS4nbnn8rD57
e/nL3Sdni/r3etG+32YO9NSKYd89TRFLJrxkYcLLtCmprDI0zGTp5JfMJr8EaPbkmxyrUl1NG+FG
8ME5bvNZxmAp82EpqabCUsFvBJZub/PJBdqo6IBoEKqEgDOddQ9MRqi9LDhEQ8XNEapqTYBS/5UQ
KuI+suRGzcaQCJBrZRFqFSBXi2g5DJCrzY8jUIBQsUWoKECo9jrEAUK1yJWhAKEWu9eCUAtCLQi1
INSCUAtCLQj1tiFU3ArJyArJSlprhWTUCMkMtUJy1QjJHDYIVeV2ZG1W+zhCRRFvv2mWh1b0jhkb
wlSIW6YifnpIjaZzd6sU7wwmA9zqsnWRs2/GwVnbkw44w8NhphnEiQDgut7hAOAAfnpbX+6f1u+k
sKrenRIKvNegNhY4gyQ50HgqJMbK5S2AxJCmRx07SPwsCxJjL7ozHg7YzCDLWNLiqqRLtHY+hXTB
OsIzaxPXR0kXyPqkC+Sfh3Tp9d0nXVCVXGGTM0Jj0EsJzVSy+9QKE84p+fk3OSmUdTWdFTZsC9Bm
uY8GBPc3kQ0IDk9EEBD83i+ri8udk/ZCd5CF7iRKBKr3z8XOi3gsnbhu31BJQyO4/XTivZHtfAlQ
8oBCwQHF06tH9FcPTQ4s7g1svxS2wfT0S+HJUkRGKWkSEpkTl89ejG4HcaetpN0NcJiCxCkK0psu
RUGCkIKkcJSCVDXfBAU5IF3J6dtAuJKntYH7svNNDnL5RWzc5BFwiceldNIylCanN0aTGUrNJvoM
Jbw6Q6laFLKUSYYyxkQq3jKDjWweCxhJbeDPnYu9s/s3odZaQrK5LgJC0hKVHPiEJLcB2AQMCEln
+g8DQtJeB9B3KEDOFwAFRKUlMBn0iUpWArMVorIQlYWoLERlISoLUVmIyttGVLZ5qAV02nwpNbWy
NGxladjI0li0sjRwRCXHTphWYqACHDmcJYsSPBHwcxCCHwSG4Q7MS/+mfRG66d/+vvv10bfPHi4/
WFIvIwmcaoOqEvlVvn+zdzq/uBivsfodVHVVveFy5H5WgvTfhkpuoqHJoXwsYfP81JC5g2V3aax+
UU3iP8U3PHzxrSxRyqODBfWuYb/w5QKgT+dzJf6qlv/j7s5i9e7pkyOVCct0a754o3NiyXq0FD2r
fodfVr8r8dxvWYxlwKnsV11/+1wa1I5EMt2VLtswn9/lMZ/I45txNbw0eQKJe11SSBxOReK4uhEk
fi3Hh1x6DRbHrEXdJuE9xmgy6u5FJ1ewmIKro27VqhB5b4S6N7T/IV20rU5Ta/9DAyd9ZuE29+E2
tjCcVwHcdg73IIDb0MJtEMBtex0Azx5JrgQLt2EAty08ZyCA2yVVVoHbBW4XuF3gdoHbBW4XuH3b
4HabIlaAVl7uqK5AKy+DVl7mrbxctXZBtIXbRKEKkQG3yZXhNh62pyBVLtwWV4fbWFtjEJAJt0UA
txcni2N0Uu3+3FbZLxx21fIjMFlELYPwp+XCh8TVFNsgPGq8QZLB18nk4OsY9403SDoOO2nisB/m
gWTsGW8Mx5dnJMMnC9ErmwfFap/kk4V11HpG0j5ZZMAni3wmn6xe34MVlvTJIqFPFk6usH6wfEbS
5hCEuWwO34+vMHKnraazwoYNImjVMGGrd4rFUv0/vtz/++AKH2rTg9XqtJ6fDbJtRNlCMApSg0ir
ydvUFg2T46bKNjvzh7ydqeLxteNGh/cGRQn6yuuSoq9Qj74C4/QVhTdCX23vcyw3dsNetZYkNs27
ClZJOg5uyBBZdHLCBdLLxk7Idkgs1aqQyBoksbYVRxIFgSKxTcOAUEBpEXs9DJYCLBVVBVSUvQ6q
gIqy1yEIqKhCORXKqVBOhXIqlFOhnArlVCin20Y5uWzSSoRqZdxOGMHKCbZSJmsZJaQEfZwBweMJ
DdDscAyBO8xBh7MZUJKytaeh3T/VqQtoCrq/que/7rapIpAUtTk8WeBIrog9sfv08JlERbL/+2cf
llKmVaSRyxsBgGIhOtWzJOKjkx3kbNE8jfioc5D7Mc9BjpIu4mMRxCeSc0GDudCqXMaqaXOxadqO
To1JwM2mA25bdBpwswZw/5QHuJlHVPBhexGWEVEVoSszu7HacXJEUTCiLDmivNIjStIjimyRs/vP
RkeUN73wRnSYrWbNGfG8/k2Ta4MVywHtOVLpp1/J1dnSa2osFZlr1vGeQvGO3/UuRalenf+dseTJ
wehkfzzep3RZ+hhRFfXSlz54luWaxz12lw9zbyxHWYGj/szZaV2GmuAyufCk/yMTkwlOrrk5nnZ5
VGX3ktU+fJZFb3KPphPDBpA8w/vROwvvdc5fz/txICnTn+Svt/XZV7s/q5fkV0QlzPT1KEIb2XE0
+dOhX9z58suv8rJByef/BbNB7ciu48TH7/uzRX2yPFPTL/tRmcS3POlWyQO3SghTq9IVnXb15tgW
OdsfXYragkuVnJNRl7PJXUp+k6te0l1ZD8/uH5o9Gu8fntI/Mbl/eJP+iSq7f3j2eLx/ZEL/BJjc
P7JR/2B2/8js6/H+0Sn9Q5P7RzfqH87uH509Ge8fm9K/6UcK26h/+ecLmz0d7x+f0j92YygD2J7y
z4MxXfXJA0fwqRvSFM2r9BmjyjZ78JusPQh8YSXry/6VDmk5PN+8ApO7n9yvyHYfZnefzp5lbVG0
afdprPu+m8nRWsoes05eR623Ol/JcXl9slzXcdxBbZ/x5O2DZBvnA2tZrXNw8mbBuFzU+/d3Xy3P
Fqvf7DJGkHChK2a24tS5xKvwXEqGkHBFJ6NGeEtEvdg/0HiV9BDRLdQNm307vhosymabrgaAY8uB
3/T0yaaYmlO0kGybP8juTZBpLeYX8PMX9x/bNmVYiTV1gY7vVGMxM1jT4eVqPX9bd6OmPD00I/e6
GafBOmC3jo8GIPSqAH2XKl2t71IF6Se9GP5xdweo1bU8O6nXct6P5BsScxytzlW7ns/f1YvWrmem
D1uvYRGPKtValJw3HJm3FBckRyLYsSL54XFlJ8kgXbguc/Z8dLOhyn558Ka7DcLIbgOpg8UfAVOU
eZNlrnmvgJ+/2D89buSRjGXfVMezlr2qbPKyb+oQWcue95c9gL1lzz6dr1eXK/WEXvoge+mzO0Hj
vKl7WK+XH+qFnnLdalglF3HA+6AqtYjdiECQXsTCljl7Mb6IwR1b9MbyE4gs4jaIX3QRB3GMkBUP
IcpdxL6Z7/6LXd3cjAXcVIXzFrDYYAE3dZCcBTwQg0tXGyxg/unidHmsF6/SKWQuXn4naFgkIKBq
bcoXlsPAF1a5oybkXjcSaVEHElvm7OX4woVW8N1Y8B/2m1WtTAXg8kfAFGXeFJkL1yvg5y8e/Drl
8HW1ocl6L8GO0QmOyGRvCDqZK5nswV9DaIqQVuF1606hI44CDRiC6cCRtuwkPNKF6zJn342vEuSC
RW68SkRklSCUZL79MbjXmQGP+VZU8h8t1e1T3oJBORoh5W1HCU/ep0m+k1gpCZHsfYpmB+MzYDlO
srGURFhsBuhUVRZKInRioR1iWeorXebscHwELEQnG6MyGjupUGZ8UaPDoG5/ieTeDZgNlCR2XNm4
Su9dbsucHY2Pm2V26MZ7l8a4nTZoyFA4TL22h2Z7qCfbD4cZtrqVKXEqLDLHYKrulqIBSqKNMaKn
p7/02/Xxv3ka3ANPgxua4tON6SsWg1A4SYPrweq1/vss/fN1NLjhqZ6+f3c+81wbSH/I2M04LzjD
LsbEqF0Xo9i5JphwmNo1gbWuCSYGh4p3KaemiXdJuTV6lc8SayMqn6XWBFT+5NbC8y9MVNaA8y/c
VCslVfkTWvNL+QC11pXyKrPGk1KGJtY2Uu5rYE0f5U9mLRvlLobWcFH+JNbWUDaysqaE8monPAgx
XhVTZnx6ElztJeF7YCj3CLE9L4zAp8M4eVybF4aOswmcOwTjLsWt9sKQR5S5LteFDQgiAm+Lynph
iMDbwl4HtOu1oUw6rBdGFXhhgOKFUbwwihdG8cIoXhjFC6N4YRQvjFvmhVE5T2MpEjXSetVkzZSC
lRPHgQs6T3TUeqQRCIUZ5rIgagEesyw9CC1LRQwCpXy+ZQsDn28a+nwTMerzLW4GNeVPBLfe224e
GqBBNwAa0129SQ9o8O2CDNWTEGhQr5ow5H9GVoB+jEIoPIih1qn16K48jKHG2IIM7oEMOSUWZPjZ
TuWsWZBBPNdwAKi9LgKQURWQUUBGARkFZBSQUUBGARkFZNwukAFEK9uSVrblrWzLW5ABRSPcSknM
yPgZ7t5QbAFkkBjIIIk8nJziWLQ9VH06lxVPyb4ZtsOztaFJWxtKptomCzKg0KNpwxtKnI3x/rc5
NsaCbGxkXMWsjGnS8oYGljeqLPNqrukNvYrpTVMd28z2ho3Y3hynbG/aypPGN6H7edq2sC08bX1j
HdBRNXv0bY5xIag2Nv4AIKbDZxn2N2zY/ibIuzk/Pz/9OGKAc+wb4ABg3TiSPuu93Zu2lAOA28JJ
7o5FYPb42xxTOQD4xtMAY1aejGaQRlX8PI9o3A9CjftIC1jXmEN+suSX6GJwsIYO+t6SicTJPFmu
Ly6NhUfjmVttauLR64y20zG94cm9zSYbv6u0o71vAhPpjc6cKfyTb7NM4eHG1pgAxYycWg/6vmEE
71N8qqAb4PgmyEHc2EZo2wfW2ijQ1kaBicZGwWYwUTYKjLR0IJ9OBwJSTeYDacgHdqwAtsYHBixj
QDtuhw9kAR8ITRISeZz7fCBDleUDWcAH2iSeFQv4QHsd4IAPJPY69/lAnX+58IGFDyx8YOEDCx9Y
+MDCBxY+8DbxgbyVg9vQjxVr5WDWyMGiyXnPBdOyvaCjhuZKkItammcxgT10QGIwQ7BUU8aM3r+f
bvQ+0hSewZGyq3OkIy1IuoiEwS/SAQ5VbapwkY7+wW34C4BmR9/mhDiUZWfEcBFtTI8elKTV4Az1
cPO148rM/SSfEMYM3mwt3t1aDWwUm8BGeHUzkmuAjSKEjGLLkJFETEggjZmQ0IgJCY2YkKCICQkr
JiQFMhbIWCBjgYwFMhbIWCDjLYeMrBVxUSvi0lbEpU6uFVVjHi0qZGR4mMJpZNuQEcbgBEo1hW4b
MkabkmNWQ7egho23IBVnT4Rx9nIgI7SQMRn0U9gYeRMgI8yCjGwiZIQ3Dxkz95OGjMNbCzeQkVYa
MpJquvKQW1DWQYLbRoEergyA5hW9lKHxFHDwTI6UBGfC+B7Lu0FGN5V9QKN1exsG0A5ZJaG9jQJE
SK1u0d7GAZCkViVZcGDBgQUHFhxYcGDBgQUHFhx4m3CgAM5LVgCXF1kAaIVWAZooQko0kwXc+/LL
f+dULaLKUeqNGMpGcM1BiGuU5D4AZUQbR/uglmLkWR9AdTV6Hq5pbZ9V4bKsNrJ2DPiCQeCrZn62
/897OlD0SFIlMYB9e/3ShajGgFRjYKwx2Rmeko2x6Z4ESLITKNYYOHv8QA6NXqQjzWHZY6MjcQuQ
JClwrEVgJhuk8tWfvX2ykChjpFU0p1Wdoq4dFmcfL3Ldt+AXWPALr540nW1NBUpBCHpBTPXJ0qpP
1lN9cqJVn43mk3MDejlHQ+nTIcD0njoBGzjLbNpzFkmfzshw+nRGh9OnC1zSpxcgXIBwAcIFCBcg
XIBwAcK3WyEqcKPAYa3NH2sUOFKAMl96LXu5TOpSPDMfSi3BKUkfR1VVrBoSz28kGNZWOtcI6NAK
6HiygK4F6p6dIr6qkE5hKJwriR3L/5S6Sj5M5cNUbEdLBXsSuTCRdI0TG4eB/A2NHsnYKwIEAjEc
Gi2Uux1K49BE0HJCPwmEcqPigrjI5kU2L7J5kc2LbF5k8yKbF9n8dsnmmDjxlcNGekWt9Gri6Or7
SMngJKXlkc9FlTxodjim4mk0PIPxk0Qya6QAQfQkooP+CMA+T6JpV30q5IkAQcgTkM7jZItOxjjR
ZesiZw+fj9oNsmb0OzFOCBgMSyPa9I/RuWDBXACVnkK0uR2vPc24qzGVVUhAMNVw0xWNksOvyjbq
zf3nOWabBABv+MXw8DfZf57Xv2mNsRrDXoImfeeVHLfvzyRWlP1ZqN2mAvmYAd5TqNLF9vEuxcK9
ER3vQ8CkMSzEUzM1EZUN0jctFTBtF6sq6tkeP3qek+VI19iONRw+diBLH3lw+MibooIdaoHTusLk
CQLDEwQnh1sjWwHTJ4gqu2do/vX4CJOmR94ID6a6E6hVt6/Wx/WLwwPVyllSWQ+VAaloUzVGA6X5
O/xe51TxAqUNmF/44dIwJbDifrg01wo4+UDUL2Y5rrrn/wXtPnZk11HiSFenz8nyTC0e2Q/rJZ3M
7ygQCgKBJTNsuqKTseV02brI2ZPRhQxtgs0s9+tkwsZ+l5Jfmr6HtqyHZfcPzZ6O9w9P6R+f3D+8
Uf9Edv/w7Jvx/pEJ/cPV5P6RTfqHQXb/yOzZeP/olP7Byf2jG/UPZfePzr4d7x+b0r/pRwrbqH/5
5wubPR/vH5/SP3pjsjOwPf1MyMlVnzxwMJu6IV3R6TMGM7cHX2TtQeCLOhNSzEfmm1STu5/crya2
qyAgu/t09jJri6JNu09j3YeeYHe0lrJHVyjU+pfzlRyX1yfLdR0HLdT2GU3ePki2cR6JaQxO3iyY
imm8f3/31fJssfrNRTSGhAuTxNRWnDyXCJoaBtsVTVJiJw7ETjZwoJE0zCLIhc/+7nlO+Gy26WoA
OLYc2E1PH8B2eFJhuwUJBrl5MzNqt1/Az1/cf2zblBOz29ZFm7BDKvC76+1gTYeXq/X8bd3N5Pz0
0Izc62acBusA3To+GoDQq0I5jg5V252s5QLST3ox/OPujg6gvTw7qddy3o/kGxJzHK3OVbuez9/V
i5fr1Xm9vlzWFzN92HoNixgGq9YmMZm377r9RKkdS8HkKMWu7GTmZl24iUt88DwrLjHedLfBmLsz
TR4s3giYosybNHPNewX8/MX+6fGUUPVNdSxr2avKJi/7pg6etexZf9lT0Fv27NP5enW5Uk/opQ+y
lz67EzTOm7qH9Xr5oV406dQFFclFzKeG0Xcjwqr0IuYuiv7h85wo+grebyg/RUKnizaRQHQRc38R
IyseMpi7iLm/iF/s6uZmLOCmKpS3gPkGC7ipA+csYIYGFjDvLWD+6eJ0eawXr2LKMxcvvxM0LJo2
RLAku8zw1MQDzUikRR2GXd6Bo+c5eQfQxoI/rmILl6UWrjcCpijzJs9cuF4BU/OENLWJjdKE4JE0
IfNUmhBXN0+iIyaCVZIkEJuy0/BIFa7LnH0/vkosg4irjVeJiKwSDtPMtzcG9zoz4DHfikoeyRAC
fcobCztKaPI+TWvWrJTEcfY+RbMfxmfAqdY2lpIIi83AZD0YSqt2LbTjebovXebs1fgION3uxqiM
xk4qnkJlOvXH7o7RYVC3v5LEDg+YDZQkdpqy08wOZ7bM2Y/j42aZHbrx3qUxbkdU3awug2t7aLaH
etLRPPY0wJvlbwlb3cqUIpWaSXZsquKXogFKQow7morR0FOD6t/x0FN0Y/qKxSCUSNPgarB6rf8p
S3l9HQ2OG9hT3B8ydiP29Y2BkoBs1EBJANL4vELUhIFqc/TJCbE2nfJZYc0a/yIQsVaL8iezRony
p7A2h38RWFiTwr8IAqzFoLxKXKYbQajLdCNMKhyV6UZCJJfpRpisOEjVxoG1tZM/sTWPkz+FtX6T
P2nrDYCNN8CUyRWTXXtpz7VXm/bzq3sOBP4HxiHhujwHsBfeWNiEOJxgL7qxaJwFKt9ZAFnfXER8
LwFkgxjjyvM94NBeDlx5MSnuAsVdoLgLFHeB4i5Q3AWKu0BxF7hl7gKttyuuWnGctOJ4k7MD8iYt
pBLDFMIAVRvMKG5Mi8cyv3z9PCs7dgTiyAY0uNIglV68oAp01VIK+pA//bbrxOe7O4/kFe5dCXGR
uBlclD8Tqk/eVDQAg2wAMMhkgIF7AINtB1yoHoQAg3jFh3lRRDp1iuhBC+pBC7lAjTcyCfOmmOsA
igBaVBZa4ABa2JSaSPjBdbF9HqMAWxRX5IItCrYo2KJgi4ItCrYo2OK2YQvUSLRItBItbiRaS+Vr
bNGk2pRymJXsURpa0C1ACxKFFt0cJQ8+PlkMYIuIb/RygapP57Lqf8RUdgN6s7AlXRsaWVVKNa0a
PNXqWJC+qk6Wk9RUm7qM/fCTFzn2w6qmDQ2IKxydoZRZTTAmtjT7cqZlTVDGVNOaToWbGdewEeOa
45RxTVs7rNLrR0w1H+wUDzLWjHAWhE9f5FgQgmpjCw8AUGzRwLSVTTAU9zpz4ZnZzM/PTz+O2Nkc
+3Y2qlG2DWjyZk6bxKnsLrZ4nL2BEZh98yLHKk6WvvFkQBCdjIz4E2QsDdRPz7PSQI20gHYNN+Rn
TH6dLoaHa/D4712EkfaeLNcXl8ago3HErTa16Oh1SJvl2B6x5OLqWFvkWrsrl+v+pwLy9EpTlRnr
929fZFm/w40NMBU3E5tnETeGYAOJsVB1I6xfvoykllvD+slV5swV1Pfa2SuoCXEGC+pMdhYL6kho
WUI2nSVUybCn0oT9LMtiezRhQDoGLORWaEIe0ITGcoAzjyaUx5NlCbnPEkKbRRkFubSQZRUR91lC
ZJ/HMGAJUWEJC0tYWMLCEhaWsLCEhSUsLOEtYwlhKwHzVgJGrQTMWwnYGOkaCRhTI9hjMmpZLuW4
kfzKGRxhP2VuFGNgmmgKGzFy/+n5BvmV403JiHLGr86ejrWAJ2FoGO4iJ8NyZZFnOuCHKd8E6/vx
RV6O5Zy4LaBqA3n0saQYnKYbT7Kcu62QHqcOyMTM22INaOSbgEa4BduS7YFGHgJGvlXAKKphuxIR
sythEbsSGLErYRG7ElDsSgpiLIixIMaCGAtiLIixIMZbjhhBK9p2XEhhK9qyVpwlraV0RayCjIxn
4IUdl+ctIcao+TqBCcQoto0Y403JsLcRW1DFjrQAJxFjGFgvBzFCixgJSSNGGxZvAmKEeYiRTkSM
8OYRY+a20oiRkMgWQy1iFAYxIjoZBDKLzTpAcGsgUIQgcFsey8L4DzTJzuQYKY9lCa41TAuTBGNg
1X3mLgq0gcwqCc3dEBFCq1o0d4M8aZBZhWSBgQUGFhhYYGCBgQUGFhhYYOBtgoFSvBJWXgUVdQ6z
8iew8qr8CZ28KmUzWca9L7/8d87MInuc1umJEWPZCKY56KWsQoMR3GX9jUbvoJai5NkAfOoq9GJp
fpCK367mL4HC8SD0VdM/2//nPR0ZeiQHkxhAv72e6UJUY2iVaAyKNSY7IVSyMTY7lFrDicbAWGPg
7PEDOTR6mY40h2WPjQ69rbZSokUg1iIwkw2S4EOW+GQhocZIq2hOqzpFXTsmnnTGqMXfYF9WWezL
p2Jfh1lpL/c3g5tiYFYFmFc2TxYn/5PvMCL/kw8zth0cjGDl5/xW+SOV1hOYfzTeRUD4iJZRnfpb
EUwqA3hlHgpMahkxCcCx+YeYhwKtKMOmCPuP0Z0KbbSLWxUsMY2h5h9mHqL31LHcInRqELqB09jm
FReBF7+pCEDTNkgL6C6gu4DuAroL6C6gu4DuArpvl+5VOH81KXdZeVjKclYclgKb+cz/BVDjt6Ye
hJX5SMqLCGgwkVQ0yneumnNcSt6DGJbipMs4DZIIqbL0q+QzpR139dOkepSSyYnHXeEsrRxVpQdK
aDr7+mVWFnLkeQ9jEpkdnp6dMCe8DtErr4ubS0Ruq2Rpl3oqJqcid4VnONRT4ZidJy+zkpFjLwoD
QcOz0CbLiW5QIKIZsidwEEON6NIOLO0mz2DgyZyMWaBq1IVnOMmr0nWhs29GBxiCpjfeAEeINEaS
kUUYjEUWAeTT39/X64+H9akc4dX6/unplCgjvUa1YUZkrekjhpHJieAVzPaNGWQxGeeNqsqYljx7
mZX/XVXUjj6NHDJtSp348ubR5T2R0BpqiMdhyfaI9KAHib1A0l9fVaoK51XGOHNb6Oz5+Cqvmg55
4xz51HIwlhLDTO/guh9s4PazYvQa3j16OExOCgeTd4LKvhXuBI7SM6Sq6pl/vcjbFNT78jIWmSyc
3hQsuimySfChJjS8N0+HOOJBVBSA0+l3mBnmjKBGqvSewd9348NMml51h5lXkWFmGcFnaC/4jBVV
vOAzA6osPwQNpgTK/e+FoFEN0+3YQNDSr2Z5/7jn/wW1aMoYj6dExe/PFvXJ8kytAZXL29oPirS4
xwNxDyYzlDWFZ4h7XNhCZwfj5zTKT0Iua4bTu4U2SLMua0L5fZQwb7yPeFIf8fQ+4s36SPL7iGdH
430kk/pIp/eRbNZHlt9HMvv+ZU6y9cw+8ul9pJv1UeT3kc5+eJmTUT2rj6Da4Jhhm/QRVBPOHDZ7
Nd5HPqmP8MbAOnCdRZ+HvWnqTx5BsolTt2dTePrU0aWbHflj1o4EvjwzIX1vdNbp9CFI7l7khoDl
DwGd/ZS1YdGmQ0CjQ+AHnTxaS/lk1rGY0Uri85Ucm9cny3Udh/HUdXs67YVkK+eRoJLg5M2CqaCS
+/dtxnoXUhISdRSoNHG2ZlClZ1NMDUjaFJ7K9BwsFfXq0BEHYMaqEC6U6V9f5oQyZZuuChALZAoA
uulZtNnrZdVJQlxnhfZiqDbvkswQqn4RP39x/7FtV04A1aY2mpNY29Q1ObN2WwvLSK2tGtPnKYAN
B9xNrk0/6WWhM8Pj7OTa9E7QtghPoRvM01tFxCYwST0BwCaHinSlwzT3pIs3wSHvf5cVHBJvuvtg
zO8MwPRh442CKcy+C7O3APMzy58eTwkj3FaIMncB22AXtLXgrF0A0dAuYL1dwD6dr1eXK/WI3gkg
eyewO0H7vDl8WK+XH+pFk89WtijJIYFeCuekyqAdljSJBFwS52r24LucKMeKI9hQ0ALRFZ0MjO2P
ginMvpsbF9svQq7oF7u6yRmrua1M5K1mVdXk1dzUgqq81SwGVjPEvdXMP12cLo/1SlYnfuZK5neC
tsWDvQMEkqsYVVPjQ7fDkSEUqeJNeOi973LCQ6ON4QKORZACCCVXsTcKpjD7Ls5dxV4RU6O7t/WR
jYK745Hg7vNUcPe28jSwQoHaDiWZybb0DGSFiC119nB8uVhqElcbLxcRXS48za3743CvMw8et66o
6pG47tAn1WWTbAvE9G2bYRBgS8dV/rZFs/3xeWgsAjadB8Ji84DBZNUZStupOGSIYZ66TJc6ezQ+
Cs4IYWNIR6OHF05BOh2xfXfHKEuo22w4TRPhgCNBSZqoLT2DJ8LIljp7PD54LnH9xluZRpkiTEdV
x3qZD876YG+2rzoOW94RQDFLTyCdqjhWJml9cqONsDjolaNUyyPRQwbVx+PRQ+jGhBiLgq+MOI56
wHrt//q7HPX3dTR5JPwjg/1RYxY9UJTy64qGB8Wzo7HJGgo6E20+RVVi2dB4mNKIvd+BZ++X3xSY
8gGkgy1Ret/ZvFNvzgB0JOzrDqXSWMkqk4LGbYzBxm2MDRjKKsPTjqVs61fGQBtrpc2TpXaO9TnQ
U2Zt/9UzlbXtV+9ia4//F6Vitvb26jey9vTqN7H28oopItYeXv1m1t5d/QZNugkJiZp0E8AY9+p0
ExIcN+kmVNgYY0+ufjNrL67aXFkbb/WbWBtu9Ru2vnPQ+M5N2aticqBR7RPn+9cpZzi6uY9d4KFn
XPauy8cOe6FG1brQznAQdf3c5IFirsJ7xhbYPU3tdeA5vAldBuAc+wFLgY1gA3jV9cdDwHrEcS8P
LgLuaS/BBQLM+s8F+S1EyW9RPOaKx1zxmCsec8VjrnjMFY+52+Yx1wbi520gft5meOOVwwLESPoa
ALRZL6Sw18j8UjZrZH7CTDhTQFnanw6PpXr47mVWotwoHm69tgyS6gN42tV9KpiM/vTbrhPO7+48
kleodyUEc8JhaDjOeSCItoiho10mDCaaAbcLoUdaAhItAZtDaPEZIfRVt41adNF902BNtAHWJJOx
JuxhTXI1nKlaHmJN5BUbZKvQyHM8oYV+xEeZwkOZSNtcy394kNCC2+tekBWkrdDlP9QDn3JnmMuk
iz2RdqBT0VuEH/KF2xwXPMiiaHNrAB5Ef+EuSkuQE8OcHwVlFpRZUGZBmQVlFpRZUGZBmbcIZbbB
+3kbvJ+36d6YaMRlyp24TFjVokzhpGVkhWgtLOvw+ArjiTTIFFsAmSQGMttgG7GYCYCKWMwEVH06
l1VPiZMQtsQ30GNpAz1WTXV+UMFb+1p+lmGtxyrnwnDwXY4LgyAb+zBUUScGljbXY4G5nirNvpxt
r8euYq/XqXAzgz02YrB3nDLY69SettgLA22kzZQ7xWeY7NnoGqiaHWbZKWv/hQ0XDYha+rAcoz02
bLTHfKO9+fn56ccRq71j32pPNcq2QUzezGlrWwC4LT4jBIfbwAjMjrLMbQHgG08GjJqNtxE74oc8
H0sBNGiT008BNNIC2DX8kh86+dG6GB6uweO/d1EZhQ2192S5vrg01mBN2IBqU3OwXoe0bZ/tUTKG
kez0ZBcbxer1PxU8HdJIV2Ycbn7Ic7iBG1t2q4ymsXkmcRMqMpAPCVkLRsKqBN25TRuqeAcIFYl2
0O0SwGNNSVHiZHMGuFftTVLAV5Vp1ZHQmktx0JVqW3Mm1jFnMjSxMWdirDVn4lVLGZPplLHKWj2V
M0Y9zphdnTMOmOeAit4CZ4wZCDhjbQ2EWeVxxkh7w/wFkcqnjI1dEgIBZWyMm1DlU8Y2LTILo4Q7
+6MgaRZH9joNKGNnmFQFlDEolHGhjAtlXCjjQhkXyrhQxoUyvmWUcdWK17QVr9t8r62TAqGkEa9p
m1wZVm3mV1jBjnhNNTKB1bhtihQWRxItZxDG/bS5MZAEK5hoSjXiKpVBa0xpSjL+uR6Yq1LpYy1I
OhnCaoNEyxajw4xoVLBqEi0/PshLtJwVWQxW8UTLjA1O0wCRQlqTumFITaptsgx5XSNt/PfhRiGw
Zcoht10k0a7qCvzDaBtukoy40mmJ9JInnZMTRU/OhmigmxANcAvGaVcnGmhIMtDtkgx0yDANMzJo
mIYZHjBMwwwNGaZhBocN01jEMA1EDNPIsGEaF8UwrbAMhWUoLENhGQrLUFiGwjLcbpaBi1ZuJq3c
DFq5mbVyM2zlZtyRlVlHVu6apiEL+VgC2tNtswwwij55oilk2yxDvCkizTKQLdhyxFuQDhAMKzGd
ZbCeYBCADJZBTGUZYBbLAOBElgEOsgw4sVrwVlkGmIfmUaJRaNssQ2a7UgQevArLAP81WIarnZaa
ZQAgcnIK7+RsWAZmWQYxmTggFtd3yIMrEwcsJA62FDEFc4P2m7TkcpxUsBNosohjHkQlMYnIgUlE
jg3I74B5Yi0JzN0qoACAtT8wfELg0caYtVowd3mXmtA7XrGL5h7rMhF6gSsyrfAFhS8ofEHhCwpf
UPiCwhcUvuA28QVSLCMudCIETs8mfzIXOhGCjp6taiXgJl6ilPRkyfe+/PLfOUuhyu+ShO8cxeF7
BPAe9DJC88Fw2rL+Bpse1FLAPOtjay+li4eouukmVWhsNavj4I0Pgze1KGb7/7ynE56MZBYVA5iu
1zNdiG4MTTQGxBqTneY02RiX8xSCBHnFq1hjJuTZzhsbk/kWghSHJWItmpgaOdkqP0+y3OOJhvEt
0iWxjSEPnUQr2OY8RH+Z3BT1sIWDV50ILa0gDK0g6J3dndmeas7O/tnl+qPObXZnCtMQmifwKsYy
MBGyB8J7PLArAAAmbQ/MMwVuF7hd4HaB2wVuF7hd4HaB27cHbkPRSH2QN1IfbKU+SJ3UByFR8KBN
6rj/++V6fnyphTuDULvhM4z0F6o95fvJyCmyCl8rnMzEPlwRvGJDUbqhcKr6erimBmurOy++mQ3D
aitP6ze6Fvb312/fq9TTM40xXh5IiOqCYgyqvHslRiCHmvyhaiaDvmSdPtCDkKWrTaDfZJVdxKti
yqbqG4X+6UF1cB+KdFWjlEdex1RVKB12RO80jY+/HzWPsB4lvbocWYQyTDEgdMzUD1mmGPHK4OQD
JGNbcr2vEMoeMzQ7HOtG04tunBZagUifcCIY0T1bxezOV3ddSfrFZLpTWXZwSOF0ujBbeDrbqS7d
WFL9OD6txGULA96A4MiAsOmHb0a/sOkXz1+uePZTZr+w1y8W6VcqXfv3Z4v6ZHmmjgJbjnoNp02p
0GRTqqbwjN2LGkOqv2btXll2dzhANTwcOG5HxQeigKtyboAKmyYUufRN8vBwrJg8e1tWDHcMchBv
GDJeaYZMdWmq4Y0IKTHDUkU4sYAxCyi0jTmxrnUNEESnGGqta5AJtgEF69rVqKHV11FVdS1q1Djb
616cZzXo9jrtWtGoGShmMIWXK7xc4eUKL1d4ucLLFV7uVrnNSLnJGYJLUckZgkvpyBmCS4HIyZ1S
9tKiNIqK0lJg+0yy9OSONNIxsNLxZH92RHsKYzgqIcds0zkIpWZgyuLqWSz/I/I/9SCT/8mXuRS1
hSxNyOeEfE7I54R8Tshn5DD8Ucj7QA7CH1U2Vfl/MCqEVyRTEm8f9I3dvYycgBFhM3syT0rnWBua
AwE8K3TAqXVuF35ovcqUAyFAXuJQQIyTvJTKPTv5ihpneGhC7jXW9RVnRXov0nuR3ov0XqT3Ir0X
6b1I77dLejcRopTQa6liqCx529yFwplSKlHKib9SOnP8sRTItEiP0zbgkcSe0+yDraQdVZBikpmc
QzbZS86x/83u10ffPjusT2Uj9k9rpe28u/PFg7/ryw+XH+y1jMwdqoG6LdRvy/s3e6fzi4tEU6rf
QVVX1Rsuv+0/Kzn5b4NlN4pn5RHw8MW3ctylUDlcdldrs1zgT2ey1CP5wD/u7ixW754+OVIZBUy1
8wWvwvqG8gXIgnlS0YPZZEWP655IK3pU6UbR8+AwS9GjsGWr6IERBSepEnovPQIS1911xei3Gs3U
3urd+XxdK0MBuZD+Ptzu3kUVPO7BanVazztbozMNrpq0RpmAyYPuCs9QKavSzaDv5Q26l5OBQhIZ
dJzIy+t3SyndYJiXV6LL0cS8qvIboBGGTlS1Daccqa1KjrSG6hLQa6IB8qlEg+YHfKIBbUg0qGaE
ZMO/B9FAukQDNsHv5LBTn2cwIfblHHgZYtWcWJ4hCK4nuOUZvFh8amYtz+AH14MmQYBcJcTjGeSq
KTxD4RkKz1B4hsIzFJ6h8AyFZ7hlPANppWLS8AykFYpZKxTDViimrVDMNE4gaZ6BbItnkIJ2lGcg
NJdnIOTaeAZoTIEJy+QZvKYkeAZXNu9mORzhGQiJZbQFVBMOz+fvAsKhmpDjtjcZgSE+EWlgzCdb
4aoUkqELBM0wVldVGZPc/cMsk1zo2V6jiElu61YeS1vrd9KWpV+F2euV+0lr7+9e6KHOWZCuMrRB
wlp48iaesBaZhLW/hvEr5GHBuV93OmEEnZwwoik8I10EbdJFPMpjSJBnf4wjvgSUprPP+j271xlY
L/vsvV9WF5c7J+2Fzgxi47XTZpXIX2nu1cZk/Wj1bPVbvd6bX0SWWXdJDLQhvaUpnzyTtvA2OWe0
g95gmlf7pwEDmwzUQDkwY2XxJmJK3spSFbUri0S4N5barfKwWJ293TUn7s5sLnu5PL6zM1uqw3d5
sqzXd3Z3Vno326gyd12FunycTY2qHvYuqjCeY9Soq6bZm89Wb5dyAJ+vBlaMClvYK6xbSjLbNQyz
XWcsOld4Otc1tLmu5SR/nTfJhHiTHAmS0yavjhGsXrcUwYomE6xE3AjBOiBKKvljiizZEqyskySK
trlTOTJkK51s1cV7WUo0KYo341pVS0K+9Qa41k1pVlIFNCuxNCsJaFZqaVYa0KwuwykNaFZmaVYQ
0KzQ0qw4oFmJpVlxQLOSQrMWmrXQrIVmLTRroVkLzVpo1ltGs+JWNsZWNpYyWSsa01Y0Bq1oTFrR
mGq0kMzIIQvdFs1KR8y5eNqbnIXe5FUSjlFjZMQzvMlV6UHuiEqC41FkBpqOdZEZjcBvDqd3kaa7
aBAnR3ldNDkxvhnvVzNhHuKkPNIvnGRGvH7ZsvSr2UZ8XgnbJdddW+hULhOcLOYAxLhMhE5wkst0
dadDS3A6mYxwhWeEllClGzLiWR4ZQT0em0V4bC62wTgtFx7bxAxFK9InBg+3E0mOmSs848TgwqUl
+nZ8zGxaIso8/pdH4k8ImMH/eqvhXmcxZvO/vDIdRdM3r3sVdzVGw20cLGxwJDufGPm5U0Gq21Uy
rDx6tFrv/35cn6u+DWqSwhHuaJL+twlJJNLRakQQrYYlVxGv+sSvoMmR9mY1Wg7bZMYGyuHp9mSV
k2HBq0bQ/7iy2fPRTcPvtDV29sww6SnP28mTmHF+mkDhqAJ5HTTn54u881MNbdsvASP9giky1+uW
InNJSOZyPM7l+tl+r43LHZBX1UKdIrAaikV1WliyQ63RNtiznKk2t5QATW4pKRy1dC82dK8gk+le
1Kd7N6d6A6JYF4djPC1P07SKI45StaHpq+NqtYstawLYCOOSKypwz4jX7gYHlsQlAYlLLYlLAhLX
XRddjphUlqsFVcDtOlddFHC7zlUXBdwuLtxu4XYLt1u43cLtFm63cLuF271l3C5qZWXUZFwVHVmZ
tLJyZWVlUnXMHogTlaWM14jKUq7TmAKlKV8azeI0HGL2IAgxq8TrYUCT5Apl+wLQKYiBYWQaP6dI
uGpB5yCSI2tP7D49fCYxmByB/bMPSylLK8bQ5csCAFG//qTBEKqmGwy5wtMGQ7p0gzG/y8OYokvf
siqGMXl6Sog/Jaos/arImZJxcu/164vl//zPaf36dZfkczWk83Wj6fm6m8JBxqCLacBelt0d9EiQ
WTSSrJuTPkhnNxMYa6ODR+3Y9MnTgnQAWjBONBhn0+PNNgDaB+TKQIpeCZSTEJT/K9peSQDtJY5G
JnE0qjSQJpXwkz8Loa8Sc5MHWJ1YOyxzl3mUAFd6ii4zUPnMgKhMxuqGIMABQUCs8Ze5jUSXiNCf
mYaOgFA226cFKmsJZtkBGLADyBqEWZIABiQBsnZhhSsoXEHhCgpXULiCwhUUrqBwBbeMK4CtyA4b
OzAnsUtprxHYK9EEtUWiFdixFdil6NeR15tcEVLW1HglTRoocS2e+vnFYU7q5zheSjr7IRA4+4kk
DNSgSr6Y9vXThasyZ0fjKLBq+uGhQBTpFU1TMWJL1ne9RnSs7xBgmXZYCNDrssNSDdRt4XlOzn5T
xp2cm7IbwkIO+GO5IOanZvyGSx92W3SFtVnnxj2mdVH9iyIM1wbQJ+U0d3apmj8Yse2NdqSWNekl
Pat+h19Wv6v4Q37jotOcznOHwjRVClmmtpEdjrRjI7J5qgCY/TC+j2CzaLv7CEYoLNgYPz6vfzuo
39a/n/uZqpSBFKnmJlGWfGD/9/Ov1FAqayKzAPYU4+AMjLxLnbGFhjeC6cMIoqmGnE3hGacRRM6Q
81WWISeDHikVic2GYNJCye+XLUu/mn2AeCX8/MXe210zHzknhKuMb+B1jhCLe52zSltq/jW01EQI
KxvYbt0iPfeTfZVd4Rnp8XTp5pP6Yx4hCT0WGA0nN0MIpD9FPPopyki46D5H1hiy1xA/zANKZ9ST
TZ5q3akq1YWnjaV16ca6869Z1p0MYW+cWWScsbdRbL1mC9gVG26SzgYw0QkQas6Io/VHOV8PPj5Z
2JLU/nEl+J8X9Kn+vT7+hzv2wnJjCTcRisYjcHUhMhCMAJE62xi16RdLm7762+teZ3d7tV3WF5d/
vHe2+vKX+cUvX/1J/npbn321+7P5EpBjxqu/DTaBTz8D3av5wgWMxkRwhbXZ9czaOJL9GVikA9a0
un2Dy3lo82bHZemtEeVcr1uaFipwIFRkbFTWMzRFbWK++NTw3tQMlIM2meKBctK6TO+IipaT8cXH
RnAis/tHY4dRcxZ1Lc1ZJNIIwhnwg0VBXcSC9yCw4I3XzhK2rQjTwLaV9Wxb6ahtK8P0RtRmAxhc
Sf0uN6NcBlkonOhONxo02X9D+6rCSA+c65IhbBVrNsGjLsXkfdTWr1KibBVu1CjcsJiscCM9ZRu/
mqItUNXpImnUApanLWD5iMIM+oaoWp1FgLZzFa0WzdnFajUVaa5je13ohJKgyfgoR9/e4KFazCax
MZa3rKnXxZyFgZoMW/2YnwtHrhCrGWO+Zqyy12EVqMRskASEujo+KbhZFVkVqMhg0Y0V3VjRjRXd
WNGNFd1Y0Y0V3dgt041VrVzu8jxKUdBZs6nk6I1YzlqxvJOfATqxXMqETiwXlRPLiXFU01K5lAEb
qVwKihrg8LTODG5Lu4NFnPbHac4S88l8NTbekSSDs8Tc8dUPj7L4atz1jmQkQvuTZEhGv1+2LP1q
bpRUv4RhhVcOde3q3SBgKqGLeYS6pm/moFbU9X2xaxvzcr26XKnWO0Nm4hhs1wTcoakeuAL7HSdI
IePVev627tJFTw9N6143bRnsJ+lW8vHFyclFPbDsCB6gqkiPuoTVJ/n6/cvL9VLWqnRjQD20PDup
JTpZqAxHO3/ekQeDaqAKP7yQo3BeryUyvJjB6k7YwijXSdI23mSyjXczJhk23qSx8d4/ymL3iafZ
oSCyU/j24zCoynTZ6dOlF5A5TQDawjNiMCMXg5nMHh1lMfUUeGMW0YjQtEYEgCg7FrEUOOhZCkSr
TytAKJga51rVpgvPUIBQ4EJbf32UE9palu0Na0QBQsejRugdMHgID877YKu3H0qi1xsXPgJRkp6m
yZEHZHV9mpjSjDlrwhA8yTs+qEcUswhV2waJ7nsr8AHald0M7Tog3qmlsjX5Tq2mmIDX0q6UNnFl
5b5qKVhatRQs6cSbZYaCZfxfgoJlIQXLrouCRcNkq6giZCuKka0iRrayYbIVRchWHiFbh7hieZlH
OFgQ4WDxMAcLCgdbONjCwRYOtnCwhYMtHGzhYG85BwtaIR04l2IpY7VCOm6FdN4K6bwV0lEjpIuq
FdJZQ8KijowuOjI60tAlg4RFV0fxjEeQU5ocodOpV6YDeyKWQY7Qhnr9Jo96Zd3AnoxHCKV0Nhy/
X7Ys/Wo29Uo3T1DVVDaZbwWcHdfRBFX4mB0nTYVd3WkzcTY5QVVTeIbRGGsSVD3LYwO4R4yJiC8O
o7nW9sdXsrYXxj2HsfQw0sn8oiucZwwjbeK85vGLwnP+ERHnH7aV2Lj/3//5D4+UFcYZIx1OG/Vi
TafZQ1d4RtwMF2saz57nsYfC8/QQESaKZwTH9XfVvc6m9iyE1/X56fy4jhgJgwWXkgUMjIQFNQOA
pp9+7tXmUDDzemBaMVzA4FIcHOqrmfaGox3Y4vM0x8nxVOc70c+NhnjaAYWh3rgOlMM2mZ+BctLG
4IzmlCPS5YiMckTGB5/jaZ6Kops6jlcR1yABJjHAqpybYICvW7hUQx6TLlsGmJGWAeZtCFr5cWkZ
YNZhgLlmgNUYTWWAXXwbnwVWIWnAlZlgHjLB/zLRbrDHEHMVOlnPl+WDgU8UcwEtgWzvM58v5oJb
HtnSxsQLeSNMVBrR0McgoI+hZZUti1x1aW1iA/HYtglEA46ZWerZcsrAo5p10Wr92rs0YJyZJaJt
FF0REM+V5aMt/wy9OD8QIUtLm9tMBDx0ZenpQkcXOrrQ0YWOLnR0oaMLHV3o6NtFR5uEExoxANEi
BtAiBtgiBtoihk5sXWARA2lC5ygZ0gEGgbqAgXUAgw6+2yb3idPROEpHR9w/DwL3zziKQymXSyU7
e+BOhC6XAoy6XN4Q8tviPKpOT5zIBskJi+Sm2/LwEMUZmHV1FKdaFSI5jeJi0ExXOo7MBBhBZySE
X8DiLhriLouoKhwALmKRVhUgLRtUFIIu/iPOfgcKz6BIzpfFXCTAXNTCqcqLigorC5Qk/vNhln0e
cB9fAWvwg0AArCxcY9xHVEwUKFWgVIFSBUoVKFWgVIFSBUrdMijFWxGctyJ41YrgnagnpBXBOxn9
KieCSxmvFcFxI4JD0RHBqRPBpcipwQxOQykSD0kaCUF4EIYgVML9MJgiSTAV5GYU1WQwxW8ETH2u
mVRD1IApCYA0mJJi/1QwJXpgaktAysNNBkxdH5CiAT5x+i0S4iibTaFCAY6ywKgSAY6ywAj6nhYC
OnyFPQRHrGeGgNwHWNAqzBAOAJbL34ADIOXSPbIASFkFFqoCIGUBGWMBkOIFSBUgVYBUAVIFSBUg
VYBUAVK3DEixVvxmTZga2krfVSt941b6xo30bWJKGum7Y8SGWumbd6Rv0kjfUvLTQKaxuny0Wh/X
Lw4PlN1ha+PnoZLWGFYJ6vp1lsZhdEthblSd0TA3ouvq0QmJ3EVkkXCm/eD72cazvSY1+DDt+iG6
Rqha+E9YzXJlXxZYheKqsfXWwzc4+q7HTy7sEE8d/B40BV1fAQ6r6LzgKsNcXI3EpLa96i2M7ObE
Uy8KMNBReCOpF4cOATV0N3MKNBgcGAwOpydk7OJlH4vDbWBxD9Ff7H5ek1Q5fjgE5cQqPa3NqYXi
MIDoyGpAreWpfYr7gL0SVh9qDVCtelQE8L2y2lEdytYpRYOoCXJy9W3bOof4WYDsudWoWpNWi/NR
gPOx1a9a01aL+lGA+rHVqlobVssB0IADYFbHak1ZbSwFETACldW4WotWyxuwLlGiNonV71qbWssi
0IBFYFZLa81fC6dQOIXCKRROoXAKhVMonELhFG4Zp0BbOEEblR5iDZyAooUTqIUTbSZ34y+n4QTo
xEaDLZxgHTiBO3ACaZSVcryX/yeX8U7VAVnyraTLPK4mu8w3hadd5nXpxmX+KMtlnsPKw53Dvt64
oonRuGfrmN356q4rSb/I0gNCp/pxN4XzjAGhHjA3Lt3fZ7l0c4i8saGRsRFxPA6H8PiNBBf8rBuo
cS3FVetaKqerxenQ4nQ6FadrHO3jcw2gt4PRA7Rv4P/nwegUUx8vG5BJMQnANjeXQ6NkaFLEiBDn
Y3PdZHzBLQjl5nqYqcW6iUIY4nJ3gwZQ3DIHCAbg2z6PDcBHbcVOy04ChG2RN+Q+pobOjDkwN0DM
4mYS4GZakHJBygUpF6RckHJBygUpF6R8y5AyaQV90gr6rfodcivoA4I6noTQCfqEOMUbNQkbmb7I
WzmfNnI+Qbwj57dBxKVY18j5BDEFi0CVUqtTTK/sKRoDZQAkjJsxqALjZtQzbsbjxs0ayKnhG1Vf
S4F9UH2tRn822kdyZ7jSoQ4TwhOtwLFW5ORBzW4G4gldvog1A1Szp+MG7WBSQ1iiITzakAg/cODx
A/kNoYmGsMGGKBQ2m3eqzaq0zQVz/QTD9s4dtRm3dPA0BAOyBMPkRLGaAPAJBuxj/CszDKp5IcuA
RnkE04Q0l2CfG+QTSA/Ca4qAEi9AFDX5CyipunyCPD4My+DTCcRxEj6bQIDlJDwygQBLDUASUAbW
HwCBgDKAljKAPmUg59xSBjigDCyVAFlAGTiDfRJQBpZiYDigDEihDAplUCiDQhkUyqBQBoUyKJTB
LaMMcCu641Z0J63ozlrRHbSiO2hEd+M6q+V11HGSJR15HTl5XQqeHXEddsR1qJF6MqIUJXALbtBQ
RJgClGQKgphSAS/waFdJ7gmqQOealcM2DtIJ2CpVICKIFCdaUW2XKog1AyUYi61TBbGGwERDtk4V
xBoCEg25ElUgPh9VcKPnjdqw0QOn4Qew4QckxpzMD1j47nMEdKv0AA7pgYjxwXXYHfAQhgOr0NeY
ngdRyBCx2nh9lwUxzSCxRgKGUwjM4yGzGn5zN4xXhq1dgLnLPJZCnZQtV0E9rkKdXw1jQfzoA/pU
aXgLgj3eQu/0hr0gnmOA3nyOw4BQBGkQGbbGB4U5KMxBYQ4Kc1CYg8IcFOagMAe3izkQLmGNlNas
IE+5i7Ml5btGjIcuzBblHSm+1fKZeFpSipciYyvEWw9f/TA0VgTJIGlUJX2LsANoNgoTnQ28FG2H
qQGSSnuEAfbTHqmy9Kt0Wt4+lZyPw5MFHkjcV+3MvtgTu08Pn9W/L+UI7J99WEox/p0UIm3uPgwA
on79abt7ENrd86TdvSs8w+4e9O3u+eyncbt70cxH1+4exYgbkZ4dGs6O5mEwrDbIqnjyhkcm50Ed
JlPEkBPkVwmSEwKrqVkAm8JhekJU6SYL4F+zsgDKsruzgNnwLECU3qDVtqJnhI3ohkWAadcbGLje
wHS8ClmjLjzD9QYiW+jswfdjA6wt503Z3QEmVWSAkznl/H7ZsvSrLDNTqV/Cz1/sf7P79dG3zw7r
Uzkv+6e1Omru7nzx4O/68sPlB3stI5Fp0xY+ecudLDjhsUSmCM0rncj013DvQQBVSrdu3SK9NMIk
tiy5NGzhqMpYGjaJLZvtjS4NzTyYsr2lETkBEdhGBs6fl4s//99uDk5Vny4eJocNgWBHpZ3ZXOEo
PWyqdF3o7OH4jnIfcuIdWTTyWUdpmSKWknJCSuV49SQ9rEE2Sph2iaPm04xoxrBiW+js0fiwkqYn
3rCSSL+a0+Zo9XK9fLe8XH6oh2u/UrZP1QBdH0+PI5s+jqQfoAiJjEFlblAfZw4q8QZ1OEgvxtU2
tvj//duOt8Gpzr+NcVomwYFMAtMyiSs8QybBlS109vX4oDmZhHaTe3MGIoOWlkmIiMokYCZFkk4G
2RG5xDUrbIiffxbjtGiCQ9EkmURdVaoLzxBNsBVN6Ozp+DizpkPeOOPIONOsHY/RVXe8bICuLw1q
MJ0+jri/43EGwsHUDeo3mYOKvUGNCNRYdBIs780jH93B82dwfw2NvB7oR6v1/u/H9bkSnaysxoy0
S6pUE5QWZXBANqktfQqR8BQC6Vm1hWecQsSeQmD2bHwinSkB8wR3HjmFSHMK7c1PI0LhoCA+2MDO
wP4wX99fv71IbaRgxPtDxOOxCDFJH1kETRaZ+UD0P5JxfqmqAjKBzb7NE6W5d5SJCMoiNP3J4NFP
hhRQ/3nv0fJsfjrysXANCpug39NtSB9vJORs0sebMDCFZJxopM/Z0NmL8WFmTa+8YY7EkWh9ZXTl
CjgmeJB7HfblbmO08NXdnXfzX+v76/X84x/vna2+/GV+8ctXf5K/3tZnX+3+rF7ClMCKV3/z0Kgw
kSNoNZ070q/ufPnlV0NV7+p2ElTNF8eVe15Oh9z5d3d+PVv9drYjh/y0rnd3rk4rnb1/pw6A/1Tq
6Z0/78grF2o2XpycXNSX8oIERDszpUWVLT2/2LlcGcn0jlImq86nYOP3Z4v6ZHmm1oDsiA4fqV5L
w0EKpsrbTeEZcJACJ2K/zBKxK/+wGViQumY8vVtJIbgKzzldE8nvI5l9lyURZ/aRTu8j3ayPLL+P
dHaQJThl9pFP7yPbrI8iv49sdjjeRz6lj6ya3ke+UR8ZyO8jnx2N91FM6uMGx4zYrI8Tzhwx+360
j6ia1Ed8Y/oH4DpLPo9Cqqk/fQQxMnV7NoVnnDqqdLMjf8jakb7YiLI+/F+ph1F01vn0IUjuXuSG
QOQPAZ+9ytqwaNMhoLEh4JUn/x2tpXzSDdSujeTOV3JsXp8s13WcEqC22xxM3klItnIeUSuAkzcL
ptQK+/d3Xy3PFqvf7IJGkHCha2au5vQ5xYNzClWp2WwKR0n51Fsq6tWhI47j9KrgwDZu9uP4EQfu
uIo2WxUAR5cFuelZBNiNUFq9xoORbt/N1q95Rfz8xf3Htl0ZCrS2tgbBqfQArsvDdR1ertbzt3WX
Inh6aMbvdTNaw7WIbi0fDaYYqGSIvOAmXV0nKwGkn/Sy+MfdHaACay/PTuq1XAFH8hUJVI5W56pp
z+fv6sXL9eq8Xl8u64uZFm69tkV4CtVgkYZy3j7sdlakqScugj2cpJ7a0jO4J1W8LnX20/jms9wT
wJvuPghju0+kDxtvFExh9l2cvQWEr2I+PW6Eloxd0FZIMneB2GAXtLXQrF2gguYP1hzsAvbpfL26
XKlH9E4A2TuB3Qna583hw3q9/FAv9Nzbhqc5JBFwSChpBdEOSwaJJKgtdfbX8RVtzSAg3FjQAtEV
nTYNEgG9g6wsSaoqd0V7RcgV/WJXNzljNbeVgbzVrKqavJrbWmDOaibVkF5B0N5q5p8uTpfHeiWr
4LWZK5nfCdoW80ZSDUapVSz7FKzipOVBOxxpoUgXr0ud3f9hdBVb0wO0MVzAVWQVkyppfuiPginM
vkszV7FfxM9de5qMhdzWx6ZKcIIdoxMcM+8h6GSuzXv+GkJbhLBSnXuV8/RyCSwBUJKZbEsXGcuF
2VJnD8aXi6UmcbXxchGx5QKqNLfuj8O9zjx43Lqiqv9oyXSfVBcMcgR9Uh0LO1IATN+2SSqVYFc6
zN+2ZLY3Pg+WPiUbi1OERecBTVadoSTMJ8yNAs5Tl+lSZw/HR8HifLIxpKPRwwuQKfHTqdtsIEkT
6VxA3uAlaaK29DRPpIvXpc72xwfP8kR0461MUXTw+KjqWC/zwVkf7M32Vcdhy1sBlACRnsDJtpYU
DZAbBI7njVOq5ajjdkR9fOCpj0MfaroxIcZi4ItAkLEk+YD6+9EPOerva2nySAI62h81ZtEDQVUi
7gDbYvSDkeYn4jUSus3wByPtSERsHFm9G8U/GGkJS7QEbzcAwkhLaGJLj4RtjLiXHHjuJROakorV
gTYPxhDWeoOxGBoPLmXu0eRphMj6cClrvb4Tl/JzGvXiUma9MTcu60WraoHWS1ZVzq0XrHoGWC9X
PcHW21Q9A603qXqXWG9RVRey3qBKQYest6f6Taw3p/rNrLemosqZ9cZUv4X1tlS/kfWmVKwNtt6S
CvNC6w2pfnPr7ag+u9h6M6rfwnorqvMZWg9D9ZtZD0L1u5OYkpp4E1NOYDE9NgXuxaVgOljEdoNT
BOEuTPyLGwpOYSJN0iZ9BDHBGngQHoKZq0FgCBOGggchIYiJIsGDYBDEBJDgJmEFb2q04SE49MJD
EJffQsfNBE0iDrm4TcQI7AWlpMSmsSBeMkjKK3OZsm4wDEpsBEtR+WEnBCjxJkq8iRJvosSbKPEm
SryJEm+ixJu4ZfEmqiZyHGVN5DjSZrHDTeQ4YCR1AzpwC1FQg0ugSWOncQmsKodFpEzZQBEpvjVQ
BAhheQuRdnHn8QiVERP6g9CEXkShKK4SISoJEkGIStYPUVmNhqgUjqWBieiQfJssTbzPMBEdkm+V
pYm2A4IEW8S3zNLEW1Il6DO+ZZYm2hIgUmOCtkvSjLQkwaFxuDlJIz4jSXMDx546NKLnXkNbsA1o
CzKZtqA92kJsn7FQvQlZC+ZV1eMgQAZPAaJkBcfMIyvkV0KheG4Se7YUgRx8dZ0B6HEY3HAYAnkc
BjcchoA+h8ENhyGAz2Fww2GIyuMw5AY1FIbwKAwOLVNB/TCd2Ma8JEHGTWKvU+oH7qT2OhcBWVEV
sqKQFYWsKGRFISsKWVHIikJW3C6ygotWaqet1N5mxMO0ldqbNHhAMCe1A9EmvAOCNFK7lBCd1C5l
Sie0c5Ot08rsyFIFIMVV6LBzV+YqSJSr6KbzePDxyaJPVuBIwM7lAlWfzmXV/5gQGyZsiW9IjNOG
xBhOddISZMgaCWdYFWPoXK1e/pDjaiXIxr5WFY7OUNqsGAdmxao0+3K2XTG+il1xp8LNDIvZiGHx
ccqwuFN72rIYs6nuFJ3iM0yLMXP+FN/9kONPof2sNlw0IGqRSHKMi/GwcTHzjYvn5+enH0esi499
62LVKNsGMH0zJ70CAOCueJi/gdHsIMstAAC+8WRAEJ0MlD7k46mVY7aDB6Ht4FgLcNdAVX4L5Xft
Yni4Bo//3kUSiRF2slxfXBqr1Sa8SbWp2WqvQ9oG2fYoGZWREDzZFRCCoU8FSQdp1JUZx8CjH7Ic
A+HGHigARa2425BEfVNP0adMVUmWmB03KWQAblGLEO8AEOMGhVSgbaoRxhqSMCcUcLt6hLGmJDQ8
AmxXkTDWlISWR1Tb1SSMNSWRBYyLzVUJvWpvUJdwE6hEHeqtOSdBXVzSmFhKCbkxsZRHYGNiKaWg
1sSSdFJ0iem6B0CqycoHFiofuqaLW9U+BHqNQNGxbe2DzXzltA/c0Pjc5rxizWVqLqOu8oHptIny
KvSUDwKZq8BXPgj7cOUrHwQw6g7hKx9EZS5zX/lg7SExCZQPNkc3CXJ3E3udkkD5YK9z7isfuCjK
h6J8KMqHonwoyoeifCjKh6J8uGXKB96K+aQV89scu5g0Yj6nrZgPWjG/asV83poMAWseqcV84zFl
xHyGWzGfM8MXsHE8x0d8GrNUDz1gRaLUBcOJpuAR5+AMgmxKU0iSryPk6kqZsRak3erD0IPp7FOA
OL/6jPiLxAYfBGS2/yon/xQgWbE0SRtVsUdR6UBLA/M0wMkBARLLBW2TsMrrGxBVolFwq+xVZqu4
SLQKbJnKym0XT7Sr2jKvlduucS6UjyS634zkym0XTbSLX4HxGm3DTdJf1/1d1B7AxsPYfiNJ9Bvp
qC3lIbsBtwWvblh7TdyW72JsKqqujdnicNCu1iSu79nVcgoG7Go5rQbsajkRQ3a1nPAhu1puktKH
drWc0GG7Whyxq8URu1ocsatlxa62UFuF2irUVqG2CrVVqK1Cbd1yaou1IjxuRXjcivC4EeFpk20e
UNqI8CYwkBHhKW5FeBM8yIrtrTecyjrciO3UGgixBOrlcNvUVtQ3lidoAQ62TW3Fm5K2N+ZgC6Zo
Iy1I5mEgYR6GHGrLuUPzdJIYYjMoTKC2YBa1xfFUagsOUVs0gfMp2Cq1ldU3QEmiUdV2qa3MVqVI
Y7FtaiuzXSlenW+b2spsF0y0i22b2spsV4rNpVehtuC/CLV13d9FTW3x2DcSeN/IltoCmtoS1XS2
SjjaKKCsyPVQVqBHWV1HyDpuQ9aRJiKcCo+gOUPDWjGPWtJbWXHV5ibtUlf6pFaqCHOPdAksfWAq
jYC5hz0aS59bipg3N1GXntJ7QZG9lqSCAUmFrVmW5apgwFVha51lKSsYUFbYGmmZ2wwGRlnM2moV
AqsQWIXAKgRWIbAKgVUIrEJg3S4Ci8FWUIetoA5bQR02gjohjaBORCOo22jZ5gnWEdQrJ6hLMVNW
fu/LL/+ds5PLfmamDTHJbRXI0G+lzZt4aN6U9AxtCs8wbuLWuAnNjo5GGSDrFyqqbtYzUQ2608ti
eZpdG4k8GOGjDkI+Kl5/OpkHD5N54PS4EjWucu0mWEy25Xh2FfHGnA/3WdlcJae7n5Aj0qRXXpMm
tAKMUH9kqHNcDypJsdR0m9EbI62XA5RoBdlq8MZoMxKGVyMREzeL3RhtSCKtBRHVttd6rCUJ2pVf
IatFr9Ib5MKu5ROrPRJ5+7klourwYrzDeUHDeYHp3ofouukupNvXo7rgdVBdAvlZGAzfJHwnQktt
icCJEAtzOXAixNa2yw9VaEyngMCmENSafDlbK+TTWNDZWiGfv0KOuEI+caU/1GpdIZ+xYrhQVYWq
KlRVoaoKVVWoqkJVFarqllFVqJWjUStHo1aObtLDVRi3cjRu5WjUkaNhI0cLGyHEPA40xoUTMS6o
DMZNGGmIbbpqqUqHkVTCJENs1Tcr3oyEBYbYsjNWvCEJk4utQ9xIQyqcWB5XCeTTq/QmIe5Nbc0W
1iILa8md3Z3Znmryzv7Z5frj+Wp5dnlnCtKdgHJltT20iq4BrQpBOmjVgM+uSYW54hlSFOxXsF/B
fgX7FexXsF/BfgX73SbsB2jlXOXlT5d1Sv50kSLlz8ZVnlaNgFlh5ATMCsNGwKywwXiN+8T+75fr
+fGlliKNWrWr1jdiZui9IN/HSQ10B+4ZkJdUQA9WRK7Y0LQJgghMENhmDWVXbGg6pLkIQpqDarOW
iiu1lLYJ7+ItFZOtDwZrAldsadIHiVaTfZCGa2pYB3XnxTcta9KHqsS80c1LcH/99v07iU9mIfB9
9uqf95oY7YNmDL3CIzhYHROJGtV5Mnvwz3sSQsl3nyzk7U3q7Lyuq6XpauHssazX2DhtUuWLy1/q
tXxd18fS9aHZQzmuEpKebjSo6kVdFU9XhWf7smeqfRt3TLMn47SWECROrt1/8GA6vTZsekSrjNQI
6uTPIfhedVswUmmFU2TaiN3Kg/HO8ymdBxk2SKotWbziq24TRnufYvDGzGX2xrsf4RJj/QcZ/Wc9
G6wIofnKa8RovRkpINQnZ5LBV7SytGep/moYS77vszxL45VNl6PSBpKA6S8MIHlbVZU5+2G0H848
ErCukRysIp2iCWPRe7aK2Z2v7rqS9Iss+b0GNPhe0+RwuMJ5el5VacYz/NX4vDa5oStvQFBkQMR0
OSSjX0j3C1b565XOfszsF/L6RYf7BUFior8/W9QnyzN1ENhy9GtpsQxOF8tc4RnbFzbb96e87Qup
NxwiMhw4z0i6uuuK0W+R9GjgyUbSrnCaMRp4opE0FN3RQDAyGmyiGhFpu+4Kj9sfKxFkm3rESPMr
JBLNAFv1hI+3g6fasW1NYrQlLDUxOK7BSwCZUeUe+lwZvzfhXvSzoDFllavV0TByxTQ0jJy1Rs8n
N2mj55OiTmPKSmHr4i1P+Y7+jxj9H57syq1Uh9os1jpVB7o/pv6PxhWApKcAJPqN5l1lAFspd3HZ
Vfl/cb9trfVLqAcHNIPcc7vm2kNaaLdtOc5KMSgE8y1PifZlVrpU/RSk5inq+Wgru3djGaBnydqw
Br7ayird6O319NmHhGcWayzGjVJdT6a1egWB8za0xrCm5c6HGwQ+3NCaxpqnXGINELhyQ2soa56y
9rQMBPax0JrNmqeKY3fRmBaNadGYFo1p0ZgWjWnRmN42a1nQmuSB1iQPtCZ5LuySFCmteC466fSE
sdNT0rkQrZ+ZlPYUsEUw5f0rS416/2ZgVCvbD6JqlMycTRGcShhijbwpSqfK1oVrwvAwhy/Enjs1
jpCgiKQHdCQ5eoS3OOjxFtH6aXpMJ2fhULXpwlnGoLY5OH7M4qOw56yMeaRfPD2u8XzEOSzGaO0N
gWJQ+UC3uz7qmhZif/pt16HXuzuP1CXqXepxA9iDMtdm45t3oGg0jxoTDLlZGuyP+NDpoqa+e7y0
2B91sxJQg/cJmI73yQDKHwH4IQFg3qBxM1+WYebLhsG8H9JfDYvF1MQPzCbHwt7wo/2rATM3iIbz
qH3BeoniKsDdwCLtKkDa9jqtAmxtr7MqQNOg4OeCnwt+Lvi54OeCnwt+Lvj5luHnqhV3q1bcrVpx
t3LiriANbJYSXUeWbbNwSYFO4YFWrxtHIyKO8rJ0mVZKHsQjrRlVFOXhykd5MG1gS4BGeThtoaRL
14XOvh5FebDtSRflERzpV8MIvPxlfna5epfoly1Lv9pYH+lXGkE2UcLPX+x/s/v10bfPDutTKa/u
n9bK7vFvajKeHu7Vp6evL1xJTx4aW9kLv95UNLlX9fzX3W7IO8EIXcwHQt4hiXvomzmo+c7si/ti
1zbm5Xp1uVKtdzHwCCV+ExrDCLkaH7gCBzpOFHpcredv67Z5qp+mda+btgz2k3Ur+WhC7Q3UIUH4
YMXdIVkuIPy0rt+tPtT3Ly/XS1lx/Y+7O0BlKF2endQSbSyO5Ms7f96RG1218fn8Xb2QA3FeryUU
u5hBpY30Gxm1FcY8vVnYZIslNywiY7MwZ7H05McsiyUV8brdLDRiiUWqxMqTe2B19nbX2DDvzOZy
Py2P7+zMlsqceXkiIe2dXTkXdlXddZXpstMHDAkOGCCSY+YKzzhgSGULnT0dP2CqO65sb8wiVl6t
R70KTDk8VYMHxmADO+e7/PKoiJTdffVqtT5dqKZ+Xc/P7Wp9tFrv/35cn6u1eTE4RHTYaJoSnJ4R
NHkVU9q3/yckY3qQW9Lf5C1p6lmdsQh72QaxG7CzYgOUGSM3QpltJEOohRMTIlpjGBMpTmIg9Rta
jKPe7eY7YIY0k72dTpo50stnzoC2m+EJ+oz16LMbMI0Bsic+a6Y54i55xkLyjFsLFsuhEY9DEzr9
QEulIRFQaZW1bLFMmwgYtcqatFjCTQTEWmVtWSzvJgJ+rbJGLIVmKzRbodkKzVZotkKzFZqt0Gy3
i2ajohGRiWhEZCwaERmJVkTu6olZIxZrAVYKwWyS5wkzpgkkaR8AtNJ9JI79j1lx7KPQpSEC9lbv
zufrWsHu48v9vw+ApyGQqXJyPVitTut5p2UdhsP2k1ZpGCgmw0BXOMhAfsIhv2/zkB/z7DtYxN+o
zfIXs7DwuqUAIYB9Cws+bmHBxE3AxS3sBWpDhWuISLvx0riBgnwDfwnWR4GVRnIpFBhCRVPctaNA
4KNA2SsL/2gI/ywuJCzAfdYbAXEf8CFhkR73kR621wn3IR6x1yn3sR0VBdQVUFdAXQF1BdQVUFdA
XQF1twzU8VaQ5a0gy1tBlreCbNe3gHZAHdDiPZqUc40bI/42VfoIqANbAHU84qFASTaoU/rH/kU8
DupcPxsF/rPV26Xs5vPVAK5TWv9eYd1S0hFH6PSII67wjIgjtIk48iIPGnLPpYJHdLY0aXzvdUtD
w6oPDcU4NOT0RqDh1XcUtVnUDTTsZogSFhqK6dCQ+9AwCxCG0NGUJCIwMAUB+/Cvh/K017i8QQIU
xu11HKA2dz3Ix4Td9SANOSqe5AXNFTRX0FxBcwXNFTRX0Nwti73d5C+VP1ET/4nhJv4Ta3URlTIZ
k1eqDAAWd7vNy7pjZdZB2Z81dqgHtRTGzvqyP+uaoXpSfRdnmQhybDz2qhItB6N+pULfuv6IoYhf
Ydcai06GUq3BsdaMxvx1reE5rWni/zKcag2KtSYR8di1h2WPjo1+zEiqSTDWpIzYz65ZNKdZXhzo
a4/UNmWnyg3QQkBQGQgowJUhoLMR7ej1EmAQVCEYvC7FIAsVgzaCGamGIaMgKFAM2tBiog8BzfVB
yCivD0JMeb0PSQuULFCyQMkCJQuULFCyQMkCJW+VYlCQRo0hcKPGEG2eUAFbNQZq1Rik6igGmZbx
aZ5i0LonCuOizFgGLmVbUAyKiAM249mKQTbkEcvYuGLQ9VPkKAYZjygGbSk8bTPKptuMusIzbEZZ
YzP6Q55iUHje4iJicsuTNqMsw2YUgHHFoLgRF8Mt7Ci5qFrFIO/YjAJgUSGfjAo1pttAMRgiPwcI
wba0gwgEUI8Y49AKBfGtBDHXQRAPS2CrBQy8/QSy1wObUQELpCuQrkC6AukKpCuQrkC6Aulul3aQ
k0bnwGmjc+Cs0Tlw3moHkTbq5CiNwhDYgnZQRMLy8kZndfTLevVbX/7nKEM5KLgBMiltE6q2rxwM
e9YoBzlNtAZU21cOhq1plIOcpTRx4jqUg4OjY5WDnKeaxK9LORg2K0gSy0UQxGxka/iJhaPpHsfr
d9tBNDi/Az5GsveKG4g3Pe1gkRu2A1uhhq3a72+6r6MFoVz+p9WY8qf6D2biWa129LEr3Bp2pYE2
ElslpQ1eY4Es8QAoUnyWxqE2ho19CnvwFSmbAY1ibSgb+xTywC9SRvMaA9uINvYpGEBnbpWbNrCN
1aUCr/Umc5X8R+em4tAGviY46KPONcUBMHdtMilB/Rq5qUoXCSsd20u3I2iXqVGdOeovp8sN4vJA
UxbUDwtuYv/Ingc0gNC3zXgh42Eq/4XdUcW6WZibaWLQPhOOvJoYHWlI/kb2GX8OgdBzCIQJV0Rd
bSyYaWJuC3OXFuKhEA+FeCjEQyEeCvFQiIdCPNwq4kFKnQ4fSDHV4QMp1zp8UJm0MuYBbZUsQAbv
ELdKHs73dBDke9KwYxhmwWSQagH8INW6MP0umhYtWoWErhZ0DgbCRVc7sy/2xO7Tw2f170o3vH/2
YSlBhwoZ7SJFA6DGwWtAOoysCMPI8pQuuC09I3SssKFj+Wzvp1FlsGgnoqMNVor9yLzQ9Lyg3rww
03A2NYo34KxmLBLFu6Konqso3g9+23WhqO2cICEqElSeDlAt2NSs6W3pGRGqBXPpxx7+lJM23VhX
dOYEDKvoWZXhQIDI8FadztQMNsVnZ1iVjGzNqjCyNUsPNtARtFiVDm2ti9elzh6NDzZvu+QPNo8M
dg4fi6ODPYGpG2xGh51jFU6P8uRo1bpKXTrJGOUmQvXXP+XYnKjCvVGGIDLKNGOUUXSUs9nZwUY4
RpZVLD3AdGqeP12fLp1nDDB1tlRPf8pJ9KcK9wcYRwZYZAwwjA5wNhk/2AhHwDNQpQc4NJrCGQOs
0wYwADIGWDha+Nn4AJO2M/4AD38oGYDjQfDFUHxCMRDfQh9lgztvcLUM9nD7MfT7Hde75n/vr9fz
j7r/ybyjcoimf28h68XSZyCdhlTXZT6+32Z+fKH/8UU0Ms8k4TzndzOiH9Pl6+JSKikEt64g63eu
3aApnRRCW9eQ9ZvTHMggpY9C+BpUZJHxsV9hIFJtItekI+u360Y96OTJ4kClPHkcqJQnkwOV8uRq
kpwK0KQwlfu10UXJM7oxrZQfxMa0UkoflmxTv6El01Q55A9/eLy3o4dHa5Z2towadJFZSV3+7992
LALMf+fn5eLP/7f7Vr/xJwtOeKTxbxCaV7rxv4aNhwBynt+Q/+///MdA41UuJtMMUs0BPFbo9+HX
uwf12/3fz21FgEZH/bh+E2s4PmbHuuF/7Y06wpQMF7mNJE6Rkt8sjo+rSMnz+Rxx3dhD+5IbY4x4
rKXHCMWW3BuCWJXq/PAMwNQMjM/y69cXy//5n9P69evJK7VJWRRdpnMA4sv0BG9lma50laMtkUMP
T97Ehx4dp1oyUCQ8EdHZnNd0O3vwzWrxcXyQOZerMcJKPajD6jHkBMWPxDciUtL+c3+ZI8a0Hn5w
ZE5OFnWsRfLj4BWEK0hofMOcjGyYk01OC1kkHilyPrlIdRjPj+OrfAEnry05Eydv+DbmVPWX1PH+
8nnmKvXPHMBHzpysda0y/SXXNaiuPgaqoxyeLPDmxG2kgWhxXMU+PODkzYKpod2/v/tqebZY/eYW
EiRcxNp5RYI5vpii39z5XIIn/YH8obfkeSVb+rC+kMLgYuc3JfqdryRGcxJVc2HnopYXdV0MicX8
RGJR9UctTvAxt3+oO28UseP+ENTewQv51Rf2Tr2gRCx4p4DK/gHfyA99t4D5sVmgT85Ol2d1p4Gd
9iC2AMfCVkQprWtg/gALfqKWV/sHt3/I8TpZyOOrvaPzTpmV/4YC2pQm3gjW/aP7DnOVyhZUx+07
4MQ9pkojFalsH0yuxZ0PRma1r54gucDutn/w9g8wr82rD96fyHd3Pizr3y60idPOjpl9KfPrLI0f
d45XZ4ulBulSWO8uDXlQMxJdwouamgNW2L3cLAwpcuzu7P/9/VI2t1Y2VquTnXV9fjqXP3VZW5P5
vrrrt3gb0t7uzv03F67ZymXw7FKZhJkyz90LO2G1NYntoTdyGnUfHuyqgvp1YiDCjqihpyPCJTaj
sh+OCkOc9sZeHgmn/YG/0rducOBFdODFQo/A3iudwjUy+Ej+D3qj/7Z2iV4vHnw8mr9V2UVT83DV
6b+Zni0Xn6UfI6BQGGn7g+7Hw+WHSNFQnvp4ale2MXzXukPm5+fy3eEtsqmEeWMTsNEuuY4pubZD
oEk+/Fk2DY5+AY9r3aOHj/uZqXulY4bRhp+W65usa1qO+fN1XSfDtsSWy9Wz1W/1em9+UQ8eD5vT
Btcjurxc181EXHQnYn65Awgypc/d1YudaqgZVxNl/EZ0VrlqQkV7TUD4Zs6RCfvtOk6RK09tsDL/
/r5efzRHzmp9f0jAuxINfGPHxb/CMXhNJ/xnPwllwQoXRrGVMNzTgS7468t3p9GuQeJvpjM5X59X
ztj2fupP1ta46ptccxf/AmvuGg7vdf1u9aH+vHLgNnmF3P2zXVZh2x931Ysj1Wz9aQcZn/bpSoTe
Rt17dv/wcIhHmq7ouKmDJQLPtqYmuJk92Mz2LQJhn/k7NlkT1ltdJ8uzxSCpOnGb3Zi8l72Kruvj
JKqoQLSY6+W595tZSufzs1jhXNDqX5iEuabdMow5blEHp4oZ19W/bX+k9WrUH2n42fD3xefm8bYt
v+WcYtuX37Y/MZN39bYnZ2NDqt7XsP69Ph6m8Te2crixD+O/zuG6VRZyuTAHD+kfPPAaV4Ks4HJ4
JWxsY3f9YxV+fjRpS/JI22sT1m6ZOim7S/9mKObmZGrfJEXdvth1RiUnq3VjjwJo9YfWPtyYBQ0N
2k77vz9b9CLHY17t/hw+eXfn07Fy+lRlrta72kDnTM7lxfn8uP7+4Im8Au4qY/aT5e/yt/HXmJ+q
6ZZ/ors7l0Ywl3/gu/Jkkv+SuzvHp/OLC3uZ2j+fLS8u5Z/s7s7F6Ur94nc7O1D+LeSdX+aL1W8H
K3Vf2Q1dHK9Xp6dHq3P5J3B/PqtP1G3o/n61XFz+Ii8gd+Hrevn2F/UIVlUvZXdNCcT9aUug7m9X
AnMXmhJkG5dnZ/VazaD8UzZxJVtr/4Syhb/Vb35dXh7Ub+XJ9uKDCiwjX1PeXnJQ9Yq7uJyv1SWo
Lpmn52fLd3N1FNZncrwgGriz1FGV5A95Hw/cd6WS9t7len52sWyLpe2tk/enp3Joarm4f5mfvZWz
otxo+nfl8lNrAHJ182R1/P5iqRogmj9l53eBCga3Onujo+acruayLgTa0s7qevFr/VFe7PT42ATp
OT+df3wzP/5VNl6Cu+XFb0tZQn1xYVqlCuqMhf/w/MN8eTp/szxdXn5sH9dDc7w6V9XpoTjWDdRd
P59fXMqeIta21j7JO1f086K9sDw7V5dwp4+2IGz2wYfl6v2F3UWHyzeny7O38p7s61n9+2XvuuzP
8S/L04XsvfxLNvdkub5wj+2pO/KybLncIOFVal91l3XgL4Bld+RmWr49qxeHeh9h2Z1f5hf3O1sJ
yw51yXe1E+VlZVXXvSyvgODBQ3lNbSz/KeRf0U/JvgTfVnmR9C7qZ6nfQnmF+Vf0UzxoizyB5VXR
v6qeVgZ+F72nKehf1U/DfsPMC0gfQvPjXw710SOv6ENjdVGr00rlnX6nXXDk8KlUy2ZpfmsuOclS
3mJ3B+kKeYcP39GtEsG9vfbYVHaOS3mErC/vL/5bHsVn7jF5C4S3juTSk9ehLm5Pn2AH6uiR15C+
9kAunoVcke09eQu78/LJ2eXqh2UtO8+IuyZ/0/b8lX8x99cDuYUYD5tgTkQVdN6diFL4vrh8JM+W
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
6R888BpXgqzgcnglbGxjd/1jFX5+NGlL8kjbaxPWbpk6KbtL/2Yo5uZkat8kRd2+2HVGJSerdWOP
Amj1h9Y+3JgFDQ3aTvu/P1v0IsdjXu3+HD55d+fTsXL6VGWu1rvaQOdMzuXF+fy4/v7gibwC7ipj
9pPl7/K38deYn6rpln+iuzuXRjCXf+C78mSS/5K7O8en84sLe5naP58tLy7ln+zuzsXpSv3idzs7
UP4t5J1f5ovVbwcrdV/ZDV0cr1enp0erc/kncH8+q0/Ubej+frVcXP4iLyB34et6+fYX9QhWVS9l
d00JxP1pS6Dub1cCcxeaEmQbl2dn9VrNoPxTNnElW2v/hLKFv9Vvfl1eHtRv5cn24oMKLCNfU95e
clD1iru4nK/VJagumafnZ8t3c3UU1mdyvCAauLPUUZXkD3kfD9x3pZL23uV6fnaxbIul7a2T96en
cmhqubh/mZ+9lbOi3Gj6d+XyU2sAcnXzZHX8/mKpGiCaP2Xnd4EKBrc6e6Oj5pyu5rIuBNrSzup6
8Wv9UV7s9PjYBOk5P51/fDM//lU2XoK75cVvS1lCfXFhWqUK6oyF//D8w3x5On+zPF1efmwf10Nz
vDpX1emhONYN1F0/n19cyp4i1rbWPsk7V/Tzor2wPDtXl3Cnj7YgbPbBh+Xq/YXdRYfLN6fLs7fy
nuzrWf37Ze+67M/xL8vThey9/Es292S5vnCP7ak78rJsudwg4VVqX3WXdeAvgGV35GZavj2rF4d6
H2HZnV/mF/c7WwnLDnXJd7UT5WVlVde9LK+A4MFDeU1tLP8p5F/RT8m+BN9WeZH0Lupnqd9CeYX5
V/RTPGiLPIHlVdG/qp5WBn4Xvacp6F/VT8N+w8wLSB9C8+NfDvXRI6/oQ2N1UavTSuWdfqddcOTw
qVTLZml+ay45yVLeYncH6Qp5hw/f0a0Swb299thUdo5LeYSsL+8v/lsexWfuMXkLhLeO5NKT16Eu
bk+fYAfq6JHXkL72QC6ehVyR7T15C7vz8snZ5eqHZS07z4i7Jn/T9vyVfzH31wO5hRgPm2BORBV0
3p2IUvi+uHwkz5ZDfbbsAl4N3LxwN4GaIX35pTIprdfPVse/yuvQvfS4tsfso1P5iVAngOwfR2En
npw8lyeQOh1U0DK1dJozU15S4QdMuC+gIq3NtT8VUAHcrDXlq6X6EnDu1ov8LfS+P9enqjIynZ/b
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
WXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACaow9LgBgNpqcAAADSAAAANQAcAGpzL2RvbS9jYWxs
YmFjay1mdW5jdGlvbi13aXRoLWhhbmRsZS1ldmVudC1zdGRlcnIudHh0VVQJAAPzu5NZ87uTWXV4
CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2oBGKlyCCaE8ihYr2nKRbCKS7YZtUfXt/0NsMfDN1
2zathisZGxASQ8pCwASenOCIlEwAkxMvZ+NyHqFYA3ECQ4AiLOVC3TjkESd1NMmouruoDu3JJ3Xh
LA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dqZDuz73fwe9D6z7WOKAPL2ESkPfU3
FD88C8scysULUEsDBBQAAgAIANSjD0uAGA2mpwAAANIAAAAwABwAanMvZG9tL2V4Y2VwdGlvbnMt
dGhyb3duLWluLWNhbGxiYWNrcy1zdGRlcnIudHh0VVQJAANgvJNZYLyTWXV4CwABBPUBAAAEFAAA
ADXMzQrCMBAE4LtPscf2oBGKlyCCaE8ihYr2nKRbCKS7YZtUfXt/0NsMfDN12zathisZGxASQ8pC
wASenOCIlEwAkxMvZ+NyHqFYA3ECQ4AiLOVC3TjkESd1NMmouruoDu3JJ3XhLA4/7cCC6sx9Dm92
R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dqZDuz73fwe9D6z7WOKAPL2ESkPfU3FD88C8scysULUEsD
BBQAAgAIADimD0u/b6sfPV4AANnQAQAvABwAanMvZG9tL3Jlc2VydmVkLXdvcmRzLWFzLXByb3Bl
cnR5LWNyYXNoLWxvZy50eHRVVAkAA9vAk1kcvZNZdXgLAAEE9QEAAAQUAAAA7F3rc9s4kv98/Cv4
YWtWzsQOQfBdPk/ZspV44tdZSjJ3UykWSII21xSpJSknur/+GgAlkRIlGRMnN7tjV+2OzUf3rxuN
fgAN5qbIQ1qWntr+OZ2OJ7c0i2gxKihVf8fI0OzPyg2p7lcfhZ83H/N0Oqblm4/XFx8uz968etN+
XzmPaFYlcUILbzMX5SMtyiTPVhloSj+PqDqaTWj71m+OtW8Zau+KVMkj3QN0BbBRb1ZEuplV93km
ZLA+K7e0nORZmQRpi9wGiT+UtFDPT1cxmRpSlFNS0TejZLwCS9eQva85+8iEXz2MPN0+sJCh7mu2
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
24EWOFMSl/lYy2w1UbODh4Nn8xt1+svP10rQ29Hs9/P59e8n+ty97Pzdqfm1q5ui8KYwvCkIbKrs
G9EUhjdF4U1xeFMS3pSGN2XhTXl4UxHeVEaYIMZcEfaCEQaDERaDESaDETaDEUaDEVaDEWaDEXZD
EXZDMfdZhN1QhN1QhN1QhN1QhN1QhN1QhN1QhN1whN1whN1wzAIZYTccYTccYTccYTccYTccYTcc
YTcSYTcSYTcSYTcS880WYTcSYTcSYTcSYTcSYTcSYTcaYTcaYTcaYTcaYTca80gSYTcaYTcaYTca
YTcaYTcWYTcWYTcWYTcWYTcWYTcW8ywZYTcWaLfCB8leT2e/Lq17cYgL3+EQFY7BISye+g+1/5SB
4X4Gh48P/uUsX5We3uDl8vnVzdL4Osp3XA5Gu3vZh+HZdJIbx2gvMy5ell0rv22qvNvZp+zd6jJf
vPv4D90n9PSphzE4+m5feVfq1IMn9oNXZ8o5v8n9sorzlJ5aGPILQ4Pj7/bNAONlmdO0HOyXgwfP
bi+HlHJenR3PZ8qNV2Jenf1+qoyu3Mi97OfZJL+YzrRI04s+hw73vwP6nDfzLz9O1QnHl/n41+HP
s9W363wyPFTO/Jub5epFPtszblxnNMdX848flYN68nW6avTKGhq/NvhlvVvd2+Dkf53qrkbjXweP
4W7R5V6mu385M3Sorfvb+Uw7zxmPUwN61WjL1CJEmE5w8HyTTihcJxmnE4rXCYIwndDgxSadcLBO
yleM0glvoRMK0Klx82kpgx83qUfC1cNx6pEt1CNhJiODl5t0ouE6Ra4QdAudApcLOni1SScWrlPk
csG20ClwuWCDnzbpxMN1ilwueLxOKHC54IPXm3QSwToh6PlG+5CPfh2qR4d8vBpmGqwzMZ6AC5D9
Nl1dZh9vVqt8cXH1TX0EssG/Hr0alkhdDeHls6FaAAXnwgwHGg1RpEDE6QQz2CfwePjqrCDtr/Ov
UzVhJ7Mv08V8pp8AGkMQoDEE3xqCUOQaWXRLym6NYbqdwrrT30MWx/fNxbH7fKK+XZW2aoLU39ht
WOq7krSW3YG8CVilA2SzyAn2rtLYTDAPUcmszG8DVmbc0IO59RClHkbO+WJ0vRxU4/4wNHsOZk/o
7xfTRV7cbUvH8JkZviyHf7zIlZpPlawvZsfIpUbzltg321YTSicX6jI++/b54/zqXG9qHOjL5Md8
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
WcvPc2IIvDDK5kBoONlxgY+J25L05kpAEk8hm2yTiGxVaRLLdASYK5LfgcyzjG3fgt8rWJCPF+zh
guZGNPHkQZjNaHRGpkFE9tjzKSpk69aT8/VLRIpvX8JeI8ceQz9apGSahEPGZ9mTWvUKAyLWYI2w
ekrAkK4JTdMJYu2hwez3NS3Yi5CedoawVLzFY3n8kFEQXoV84EUIP3sGhuwPVj+fa6/n/XPC/fXP
wZZ47Of3UKaBtv2ONmbCGq/F+L3ASHcS12r0kVv+oLcp3UFIHP/WdrKRbGD2jHElvAIrW1EhyBru
42BPsvxRqKPqRX08NppNSEhH8hUUcgh7DrIjiLOKFSK+wHAQFEAyw5Jhofm6A/zD1zxPvHwhywdb
tfdRmWxWqCVSPLujWfLVEHJsJxQwl7tgV+FJvGGCFZHVs8Z7LzFnX7xyq9qyqg6W6piDNST9ypvY
sBClG5F3ug4ZekPvN7y9Jnax7pB63mIPVa1K3MbxC/plldrYfmBRw1p6LXWt32Al+RKY2HViVPWv
L2U8btfa6w3SaFOm5BMD7EUqr1Qp4terFI3XpVNOT6d6OtXTqZ5O9XSqp1M9nerpVE+nXkKn3J5O
9XSqp1M9nerpVE+nejrV06meTr2ETiGt51M9n+r5VM+nej7V86meT/V8qudTL+JTqOdTPZ/q+VTP
p3o+1fOpnk/1fKrnUy/iU3rPp3o+1fOpnk/1fKrnUz2f6vlUz6dexKdwz6d6PtXzqZ5P9Xyq51M9
n+r5VM+nXsSnDOBTp2lEv4ov6bHX4KjikxJ/KUYV6doGRvWlRabEF/Y2cijLkudQoD50vpnQacZG
MLYt/0a7//eErpmvn/x2nhkamtMTur8RobNkOwg27T+M0NlyYAPbwYYr3nO2CWw3Tv45Ktymb06b
Fz35lVkcGZhalfI8KwoRm/6Hfbhmr32UvaNtf0Uzz2lRkBsqvlOkQ9O172cfizfbfOcZiDRCap92
PD06FBms8TOqslvjvX8W8NnVNSKmogfM5xkA9AA5TwFY/RzUvrj78KPjzTsOScg69wj4Gh3T6SzL
Sb44SSbVtx1zwSDRBlbHQmjTPPZZYYRkrSOhBBH+47zwFI9G+h/Do/GfhEcbfwyPNl+NR1uvx6Pt
V+bR5je8RDswqQ58mb3T71d+fU7LeZ5+I2XWTLtGmb/8uvqUFkR5LP3qNzDYQOJrZQ1ZNZOtv5/J
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
jXhTWPn47DTKR9lVmm+Kig6+pOM71WTVrGEEvovV/8RvJ1k6ScfpcrnIlrJPzu7G5X9FGzDaAOLa
m8XNdC40mUQX9+JqtljkQlrjB1k2FmXFHdXV+TiNDrPFPJ+mmfgZix+O8jRT1fSWOMuL2s7y7G6c
iwdg+TpLP47y8XU62Yr277JM9Mfsfv/w9a9zYZXxtXwyxX0fRtlSm28Ybac3t/n9jhQ4FxKX6VjK
bBURXQOHgzeLO3H70c2tEPR+NP/zfHH754G8dys6Pz5Rf23KosC9aOxYVFjMoyhwLwrdiyL3oti9
KHEvSt2LMvei3L1o4mECH3N52At4GAx4WAx4mAx42Ax4GA14WA14mA142A162A36jDMPu0EPu0EP
u0EPu0EPu0EPu0EPu0EPuyEPuyEPuyGfCdLDbsjDbsjDbsjDbsjDbsjDbsjDbtjDbtjDbtjDbtjn
zeZhN+xhN+xhN+xhN+xhN+xhN+JhN+JhN+JhN+JhN+LzSeJhN+JhN+JhN+JhN+JhN+phN+phN+ph
N+phN+phN+rzLelhN+pot8KxiN5N55+W2mfYhYVDsAuKr/1d6QZF8XA7AsOXO/9xlual1zY4Wh7O
7pbKcRG+33Iw2tyKPg7PppNUeTlbkXLWouhWeGBT4Z3Or6Lj/DrNji/+V9YJLHXKZgz2vtkWrpK4
deeV/uHtmXCs71K7rOI+KQnaJcHB/jfbe4vFLB3N/UXJG6UgVAp6e7a/mAvnWMh5e/bniTCB8NS2
hHM9SS+ncylTVSLvwcPtb2J5zy+Lzz8Jr3ywf52OPw1/nef3t+lkuIu2ol/ulvmP6XxLOVWdxuwL
5/xC+IAHX6Z5o1bSUPmdAhqr1craBm/+z6htPhp/GrwEm0WVW5Gs/miueEtb9feLufRPI+qnBrCq
0ZYpRTA3ncDgYJ1O0F0n7qcTfIBOiZtOcHC4TifkrJPw8rx0Qv46AeCgU2P0SSmDH9eph93Vg37q
4Qeoh9xMhgc/rdOJuOvkOUOQB+jkOF2QwdE6nai7Tp7TBX2ATo7TBR28XacTc9fJc7pgD9DJcbpg
g5/X6cSddYKx5Y32MR19GooXejrOh1EBpVMOLuPo92l+HV3c5XmaXc7uxU9xNPj2YH9YgmrRhKM3
wwjHVLUFSPUg8JOGJOKFl5eTHnGvr4Zvz96lX6aiow7mn6fZYi5f/Vo0SmBDtG3igMBzYiyqRWW1
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
1Qh33HYA1skjX1gGPqpTFCqHA+rSYAy9ZsQ/HyleMVVya6g+Dyhf66P/A1BLAwQKAAAAAACmpQ9L
AAAAAAAAAAAAAAAACAAcAHNwdXRuaWsvVVQJAAPIv5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAAAqpA9LAAAAAAAAAAAAAAAAFAAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvVVQJAAP/vJNZ3sCT
WXV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAqpA9LAAAAAAAAAAAAAAAAJgAcAHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvVVQJAAP/vJNZ3sCTWXV4CwABBPUBAAAEFAAAAFBL
AwQKAAAAAAAqpA9LAAAAAAAAAAAAAAAAPQAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZl
X09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC9VVAkAA/+8k1newJNZdXgLAAEE9QEAAAQU
AAAAUEsDBAoAAAAAACqkD0sAAAAAAAAAAAAAAABEABwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9O
YXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy9VVAkAA/+8k1newJNZ
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAGClD0sAAAAAAAAAAAAAAABXABwAc3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8x
NS4xLjMuMV9kZWNvZGVVUkkvVVQJAANEv5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAA4
pg9LxWSJkrFJAAAYJgEAdwAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjFfZGVjb2RlVVJJL1MxNS4xLjMu
MV9BMS4xMF9UMS1jcmFzaC1sb2cudHh0VVQJAAPbwJNZy72TWXV4CwABBPUBAAAEFAAAAOxdW3Pb
uJJ+Xv4KPpzKkTO2Q4B3ltdTtmwnnviikmRndqemWCAJ2jyhSA1JOfH++m0AlERKlG0kntnZo/hh
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
gWVC/vFu9jNInWLxsIQOcPC2WwyMZefRH3B7t1zvez0xyv5Sd6S6k2akKPB++ufLxefbO3sJv33O
zy+uP0az5v/bf3/Kp5vdXPwn3HXXdx9vox/Wm3VcboqH5bZcVu+i2Y+Hn4kO2rv7X2a23K1+x83g
9qkocQaP/IBxqD+0f0Qzdx4tivI3fHq7w7iOkTZEKzloswpFak/8jLTZhsiLuul2vFGnjYA2aIGu
4fkwkSZHOrThdZu7i4Y+DBAeb5K0bVg0yxp9FAQd5p0/h/EGFHIww686/HSKFp34oUn3Hfx0E/10
cRt9rUugw6soN9WAPipkZxwx1eaHOgAHZ0oUKdmnbf+zfyaCZVpUFcK9RsAopoZ1Jvy72YdQMDSy
eCW6XpcT31V3X9mVvby8difXBSX6jO/Joqpt8/W5eKqib1Pzh9F2HGjzqZZgEXzWb9tldLG+37w4
pW9urfsQnd/Zz9kkcfCayZ42Bvzc7GARvLDQKTtjbRuYal+u5oEje3timUf8MAVkNPt5uUCX8FV4
/RPzmSsUjvs/hm16n75tI8yZOT98nz87BebzzN7aF9kXDVmUAivz+cWVPc9PNxK092nm88uLjx/y
DGb05DBGteNEhGCb2/yX29OkKXKmWtoMtrn7eOGus5PUCUG7tD2GbWFSZgRyEF+xpQ1WZyPSHkEN
efo+KZ8O0wYsk/9Lst9e34Yd5pTAlfSMNFNA4jsIbf4ZPYJA2/YmQj0BmlZnottm9j9QSwMEFAAC
AAgAlqQPS0oWm60XMQAA4GcBAHQAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4zLzE1LjEuMy4xX2RlY29kZVVSSS9TMTUu
MS4zLjFfQTEuMTBfVDEtc3RkZXJyLnR4dFVUCQADy72TWcu9k1l1eAsAAQT1AQAABBQAAADsXetT
48ay/3z3r9AtKlXmhs1q3pJDKMDALptd2ABZzj2pVMrYMvjE2FzZ3iyVnPztd2Y0kvUYuUeAfb44
VUl2ZU1PT/c8+vGb1qtXrw5m3mjSo95w7B3KP/zubbG296U7Gva7s+Fk7A26w1HUb3ut6Uw+6P3W
605nu2eTfvQ/e63xfDR6mMXb3g/ea/mfH7xWNJ7Fjw+T4Xj2eu9LNx52b0bR9GD2Lur2v5PUu6PW
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
EtqgBbqG3/uJNDnSoQ2v29xeNPRhgPB4k6htw4JZ0uijIOgw7/zJj9ejkIMZfnXEz1HRohMfGh0/
g19ugl8u5sGXugQ6PIpiU/boo0IejSOm2vxcB+DgTAkCJbu07T/73wSwTPOyRLjXABjF1LCjCf9m
9t4XDA0sXgmu18XEe9XHj+zKXl5eu5Prggh+xq9avto2X57yxzL4OjV/GG3HUcHsYy3BAnitX7dV
cLG+2zw7pW/m1r0Pzm/tp2SSOHjMZE8bA35udrAInlnolJ2xtg1Mtc9XC8+RnZ9Y5gE/TAF4Br9W
S3QJX/nHP/HcMOhuPw5h/TadV3941ubMnB/ez49OgcUisXP7LPuiIYtSWJ2LxcWVPU9PNxK082oW
i8uLD+/TBGb05DBGteMEhGCbefrb/DRpipypljaDbW4/XLjr5CR1QtBj2h78tjApM+oZGZ2ZljZo
04i0B1BDHr9PyqfDtME2/49kn1/P/Q5zarlJUMSaKSApa9r8K3gAgbbtTIR6AjStcMM8tJn9D1BL
AwQUAAIACAAQpQ9L5nqIYn0xAAAtagEAdAAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZl
X09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjFfZGVjb2RlVVJJ
L1MxNS4xLjMuMV9BMS4xMl9UMS1zdGRlcnIudHh0VVQJAAOvvpNZr76TWXV4CwABBPUBAAAEFAAA
AOxd63MbN5L/fP4r5kqVKuoix4PXAMMoKkmUZMtxLEVSrL1NpVIUOZJ4pjjaIelYlWz+9gMwmOE8
MGyMHtwv3NokNkl0N7rx6McPwKtXr/Zm3jgeUG808fblHz57G6zrfemPR8P+bBRPvOv+aBwNu15n
OpMfDH4f9Kez7Y/xMPqfnc5kPh7fz5JN7wfvtfzXD14nmsySh/t4NJm93vnST0b9q3E03Zu9i/rD
7yT1/rgzUr/epTzY9DpvPsXj+V00fXPQn/XfHF6ev7mMrn4czd6cx/NkEL153//SPx8ko/tZL06i
N8PrmzcHR28/pcJF3w3u77sh2vxOd2I2uou8+FrLO0+i7qtX8qfedZx42zfj+Ko/3tnYnsSvb/vT
253ur/5XhLngggX+653sL8TP/xJeocDf8iSJt7rxlsdR8Fv3lecdjb7q/nlKH1HX248kjyj79Hvv
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
MH+YzZab1eHg228HGcoYefz2n9991HYmQBAoPr6eSYPJ9PDFy18WM1j065cILV+eXV++VBDv5aWU
Qi9/SD+mhnGuspfjye3L01evf0EDBfDyr0fL5UFCDgfDwcfFdDz44fJkOITnw+FBOl/Mv9zD8hvg
uKyX0OPD4dB8OBx+1H8dHL4gMMjQ42CUhjROgsH11auTVbq+e0HNgyBiN0H6SPKsRCUOSIlK/lJR
9HqVLu/+djSolJw+3C/fwhAfYeOGwxPFeQ5fcE37ZkKAkcelz97P0vlwOALQOZ2Bin51B2JufH6/
nEGLRPHVKE7Hvq9KzVMFOFd/P3wR5h1L45s4K5G5Xqx+nSG60B98vxh/GQ4/QSnUHhXDPUnTTPXo
+AE0EVxO6oPhEBbXanOgnt0AH0xHaGX7NVspvvg3GO3/+BAMh3igmgKLPDg8OFSPXsSlCoDhqArM
RvlGLpSDw+9gFIH34qK8hhEGKt88pSFADlk5dC/Ja0/GJMsaa3c0nATm0yylcao+Ne2Q2+k9bqcD
q/xd9kn9qfEnTAwhOZ3JhAhF59Nmot47Kwhha/B9iu9Hk8kk4UEUJMl48AHwOL784Qam7gVh9gsk
rb7ASy+EGRNkoB/L4Xvx/1BLAwQUAAIACAA4pg9L3UMIKHhKAADYKAEAdwAcAHNwdXRuaWsvQ29u
Zm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMv
MTUuMS4zLjFfZGVjb2RlVVJJL1MxNS4xLjMuMV9BMS4xMl9UMi1jcmFzaC1sb2cudHh0VVQJAAPb
wJNZ+b6TWXV4CwABBPUBAAAEFAAAAOxd+1PjxpP/+fRX6Idv7ddsgNXoLRVHCgxsSHgVNmzuUinV
SBqBDllyJBnW99df94xsS36wzC7JpcKSFGv06P50T08/ZlryVVlErKp8tftzNBmNr1kes3JYMqb+
Zuierv+uXNH6fvlS+PlwW2STEas+3F6e3Zwff3j/oXu/chqzvE6TlJX+Zi7KLSurtMiXGWhKv4iZ
OpyOWffUr669Y5tq74LW6SPbAnQlsFGvlkS6mtb3RQ4yENMgvyvXrBoXeZWGWYfcBolvKlaqp0fL
mCyNKMoRrdmHYTpagqVrxNnR3B1iwUff1HyD7LqOpe5ojqYplwN1nZznNFLh1K8q0XYJ2bXVHrE+
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
t8AyId+9mf0MUqdY3K+gAxy86RYDY9l59Afc3q82h15PjHK41B6p6qQeKQq8n/75fPHx9pO9hN8+
ZucX1++jWf3/7T8/ZNPNbi7+Fe6660/vb6PvN9tNvNwW96vdclW+iWY/HH8mOmjuHn6Z2eV+/Ttu
BrePxRJn8MgPGIf6XfNHNHPn0aJY/oZP7/YY1zHShmgle23WoUjtiZ+RNrsQeVE13Y03arUR0AYt
0A08HybS5EjHNrxq8+mipg8DhMebJE0bFs18rY+CoMO886cwXo9CDmb4VYufVtGiEz80ab+Dn26i
ny5uoy9VCXR4Fctt2aOPCtkaR0y1+b4KwMGZEkVKdmk7/ByeiWCZFmWJcK8RMIqpYa0J/2b2LhQM
jSxeia43y4nvqtuv7MpeXl67k+sCc0z4VcNX0+bLU/FYRl+n5g+jzTgqmn2oJFgEn/XrbhVdbO62
z07pm1vr3kXnn+xHP0kcvGZyoI0RaLOHRfDMQqf0jDVtYJzPV/PAkb09scwjfpwCMpr9vFqgS/gq
vP6J94ZBd4dxCOm36Xz6po0wZ+b8+H3+7BSYz729tc+wz87E1eFNACvz+cWVPc9ONxK082nm88uL
9+8yDzN6chijmnEC+/P5bfbL7WnSFDlTDW0G23x6f+Gu/UnqhKBt2h7CtjApMwI5LDlOAQJTuhZp
D6CGPH6bXAetNuT/k+y317dhh3lmuSX1FJDE1G3+ET2AQNt1JkI1AepWZ7zdZvY/UEsDBBQAAgAI
ADelD0tHLVaogjEAAFxrAQB0ABwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEu
My4xX0ExLjEyX1QyLXN0ZGVyci50eHRVVAkAA/m+k1n5vpNZdXgLAAEE9QEAAAQUAAAA7F3rc9u2
sv9881fwjqcz8q3TEC8CVF2PbdlOnKaxazvxue2c6cgSbetUlnwpKo2nPf3bLwCCFB+gFvRD54s6
0zaRhN3FLh77+AF49erVXuKNpwPqjSbevvzD794G63pf+uPRsJ+MphPvuj8aR8Ou15kl8oPBb4P+
LNn+OB1G/7PTmczH4/sk3vR+8F7L//zgdaJJEj/cT0eT5PXOl3486l+No9le8i7qD7+T1Pvjzkj9
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
Bz6yLLP4j6ctEnHz0FBKQmtKV8ZdZ6BklwGWPcqo4Ef58j1ewpQ+Ho2svFbLEO+93zxA6+uy5v18
De02x1DV5TrEzzjt3OOKsvMMvyStcrm36/FyYntuTxPOuNiz+IjU/GonBfCsU3cpoKsIS36BRinA
LVKAW0KajWFtJxZurGKhPv6a3e5CoJ7dnPF9AwaZHpsJJ2DgnQGDpkw6782YV7vSLe67PySDcm9+
12pvNpJ389iaS44Vd37saTRiLlvrusiTlW5cMT4UrVYlft19VeoqgjZ7s7CsQMF2sjdbhq68N4vQ
1Zc8tvel0/0sut5SmlF2u59Fdkvp+1aTOS5fkiF8ap3Mgb/fyYx8YLVOH3bgd8xbn1HuDPsFJgaq
iBb3BR+SQZn9/sNpm+z3spbScMT24XAucqNfNCX88DE7Pmdh0ziOIl+N42pwvFwmX/UwYpalUqVO
83kgOo+iouw2nwdC9/9Fy/4vXyMv7Im42L6v8xAy1RMLnJA/iLqmXNWki+w5rdcDqW+1IXGPR5Ql
bv3naZvErcLIRSWofbMN6Z4HhEppHDJXr4W00mv6Q95qs8WvO2+2WRWizWZruRNe1mputlRttudy
s+VtN1t6WGVr22YbBk6ZFtn70pWTC7qia261jLQzJ5ekrXKrXZ62ya0GlMvzmdn32yI9uBy8nxsE
m40Zm/nsBH0td5v5ZvXNh+XkbjJLplJcf3MOQ7CZjVbfHK/OVziG+Vz8uNjcTifDt+nsbn1/dI7D
n44KOsUwG2NcbY6sBdoTOXWEMO4Yjye9exX5E7nlTxhnZ2TbBOfJSkqjZbdcRLSL5UIFlLOIOYcY
ea2WRdQ+xLKKp42uJNE0sNHWxVvkN28a34h1NI3I8xfV8RXO8cV6pJ3kuo2dRFZSjC+37y5RLppO
5g+LZJm+TVers9+syNvGz9OPPiNnyIgjPzlwah7WYbWzOnzrWR2Z8cbsdOE7Du7QeAdu/xojjTEA
jlPGzH98DEBbJnYeEJA5iwCE2ZxFWUCAiPXtSLBQsqjGKLsniekbkXwULHnaQFZKbU64DCIQPOoc
RMC8P9FqEAHVvnx7EAGvBhHwpiCCjM4TgwiEEUSA+hG6m1QQQWAEEQRERRaoZ6ERRBBQFVmgDhpz
4xByEKrIgj6IoA8i6IMI+iCC3QcRRHkQgcj3hSIVBUfEsG9LBVfg1mmpiLreca4pF6nMm4MIxDMF
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
8CCbL+ZfbsFkG2AXrO7AUjwcDu2Hw+FH89/B4TMC3QktBqOcRamMBu/fvTxeZqubZ9Q8kFecXEXZ
A8mzCpU0IhUqxUtl0atldnfz5+eDWsnJ/e3da+ji58jccHisZ/7hM25py/wqH6WVz97OsvlwOAKw
MZ2BafbuBsTb+Oz2bgYcifKrLM3Goa8q7OkCHKu/HD6Li4Yl8VWaV8i8Xyx/n6FWMR/8dTH+Mhx+
glKoPSm7e5xluW7R0T0gUJxO+oPhECbXcn2gn13BOsxG6Dz7PV/qdfln6O1/+xANh7itmsESPTg8
ONSPnqWVCpJ0pCuwa+I7NVEODn+AXoS1j5PyPfQwUPnuMYwAORQl0DxZ1B5fkTxvrd3DOInsp1cp
TTP9qeVDLae3uJwOnPI3+Sf9r8EdMDCEFHTGEyI0nU/riX7vtCSE3OD7FN9PJpOJ5FEC02I8+AA4
DF/+cAVD94ww9wWS1V/glRfinAkyMI9V9z37J1BLAwQUAAIACAA4pg9LzDpLhb1KAABBKwEAdgAc
AHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09i
amVjdC8xNS4xLjMvMTUuMS4zLjFfZGVjb2RlVVJJL1MxNS4xLjMuMV9BMS4yX1QyLWNyYXNoLWxv
Zy50eHRVVAkAA9vAk1l6vZNZdXgLAAEE9QEAAAQUAAAA7F1bU+PIkn5e/Qo9nOhjeoBWle4Klgkw
0MMMFwc29OxOTChKUgl0kCWPJAM+v36zqmRbsmWgupnZE0Pz0G1Lpcwvs7LyUhd5UOQhLUtPbf8d
TceTK5pFtBgVlKq/6dhx3N+VAanuVpvC36ebPJ2Oafnp5vLs+vz408dP7eeV04hmVRIntPA2c1Fu
aFEmebbKQFP6eUTV0WxC27d+dawdy1B7F6RKHugWoCuAjTpYEWkwq+7yDGRAho5+V65oOcmzMgnS
FrkNEl+XtFBPj1YxmRpSlCNS0U+jZLwCC2vI3tGcHWTCR0/XPaztmthQdzRb05TLodol5zkJVbj1
q4q0XYR2LbWHzM/IRNoWAJ7kRbX2FELKQZZns3E+LdXr6wZGGx8eGAfm4Y57aBs7tqO5O8g2QFcu
OukfHp0cHR8eKYrCkKsHj+SeqsMkC6l6mOeVp+q6pqklDfMsKhVlOCsrOlZPs4reFkk1Y9qtaFhx
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
5t3wy/B8lEzu0kGcRG/GV9dvDo7efsyYi74d3d31Q7T5rR5EOrmNvPhK87tIov6rV/Kn3lWceNvX
0/jTcLqzsT2LX98M5zc7/V/9rwgTHgjG/dc7+V+IX/wl/IS4v+VJEm914y0v8NE/+68872jyVY/P
U/KI+t5+JPuI8k+/847i5LbvXdwkcsjReHB6/p33y2xyNRll4jStMqrTe/1VNP7OO4uuvFG8WNI9
/BIl9+nNZHZ9PH8/+RLJrveSaymtWTrXw/qktKWUtYspa/nWl9/6r14Zxfpe79Now9+Uyjw5P/PS
YXIdpZuy6eHXaLTQ7GkW+h761tf/yO9Ok2gcjaL5PE7mavzni1H+N28DyQ8O4tvJTLI89j7dy4+S
OE5lV6Uv1A/98m9no8g7SuJZOokS+R2W36kBHKdRoum0/YrIH6p/qWlwnmbUz9NkMUql0ud7SXQ5
TEc30XjLGyySRIpjej842vtlJtUxulGzUbb7OEzmRm99bzu6vUvvd1T/M8nAPBopFio/kXLy+72D
eCGbH9/eyY4+DGd/XsR3fx6qtlvexcmp/s+mWkodforcf4rdf0rcf0rdf8rcf8rdfxq4/1S4/zTs
oIIu6uqgL9RBYaiDxlAHlaEOOkMdlIY6aA11UBvqoDfcQW/YUW/Z1uC9n8w+z82q31Ubmef3tz3U
f73zX+dRmm+zveP50XQx11uN3KbnveHmlnfZP5+MI70vbXl6r/W8O7mBTkap3Mi9k/QmSk4+/Z+i
iXKa784H8Uxu+pLku/M/TyV/ciPakkZjHF1NZoq8JqTa4P72f/uqzU/xlx+ktekNbqLR5/4vs/T+
TtroXbTl/bSYp2+j2ZbeiWoMDaTR+SS3uMOvk7RElZRG917b6CZZRa23/9cbM+R359IIL6JsxOlw
9Ln3Gm1mJLc8Rf54pl2I6vA/xDO1/Xq02zAQOIxqn6oL5jYm1BusGhN2HxPvNib8gDEFbmPCvYNV
YyLuYxLdxkQeMKbQbUykd7hqTNR5THK77zQm2n1MCLmNifaOVo2JuY8J5x2+jdKB9CqjqLKTnBmS
RvNIM0lKbc5H8V3UYFJO0TKVoiW4eknHaZGRhVcsMVPh7V/bcg+VftoOPCWkqCPZT1/9mbRuxoh3
HBM4LYgeU+AyppId0bPiB5fhmdlBSsPj7cMrFrLu/iIZ3s17xXAu+9pl1uHLb1eTJMpm3NwyKq5H
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
/fYfP3zU3iJQsyhjv51Jt8f08MXLXxcz4G39EvHXy7P31y8VDnp5LUX1yx/Tj6mRLqvs5Xhy+/L0
1etf0c0AAu/b0XJ5kJDDwXDwcTEdD368PhkO4flweJDOF/Mv9zD1BtjJ6yVMisPh0Hw4HH7U/x0c
viAwYtDiIE7AMEiCwft3r05W6fruBdUPogllN0H6SPKsRCUOSIlK/lJR9HqVLu/+fDSolJw+3C/f
QBcfIXPD4YmaIIcvuKE9HoG0i0ufXc7S+XA4AmQ2nYEd++4OdMH4/H45A45E8dUoTse+r0rsqQIc
q78cvgjzhon4Js5KZN4vVr/NUAXrD/66GH8ZDj9BKdQeFd09SdNMtej4AeA6Tif1wXAIk2u1OVDP
bmC6piP0lf2WrdT0/TP09r99CIZD3FBNYSYfHB4cqkcv4lIFUTxSFZhV952cKAeHP0AvwhLBSfke
ehiofPcURoAcrjhoXpLXzsckyxprdzBOAvNpktI4VZ8aPuRyusTldGCVv80+qX81SIOBISSnM5kQ
oeh82kzUe2cFIeQG36f4fjSZTBIeREGSjAcfALTiyx9uYOheEGa/QNLqC7z0QpgxQQb6sey+F/8P
UEsDBAoAAAAAAGClD0sAAAAAAAAAAAAAAABgABwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVV
UklDb21wb25lbnQvVVQJAANEv5NZ3sCTWXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAA4pg9Lpn4S
5XtLAACoagEAgAAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMV9U
aGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjJfZGVjb2RlVVJJQ29tcG9uZW50L1MxNS4x
LjMuMl9BMS4xMF9UMS1jcmFzaC1sb2cudHh0VVQJAAPbwJNZy72TWXV4CwABBPUBAAAEFAAAAOxd
W1PjyJJ+Xv0KPZzoY3oaWqW7FCwTtIEeZrg4sOme3YkJRUkqgbZlySPJdLO/fjOr5ItsGaiGmZ0Y
zAMYXTK/zMrKS1VKHpRFxKrKV9s/R9Px5IrlMStHJWPqb4bueu7vyoDWt6uXws/7T0U2HbPq/afL
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
DBqRdg9qyMO3Wfl0xto29P+T7NeX12GHOSVwJT0jzRSQXDZt/hHdg0Db9SZCPQGaVmei22bxP1BL
AwQUAAIACACWpA9LoX2q3SwxAADyZwEAfQAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZl
X09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjJfZGVjb2RlVVJJ
Q29tcG9uZW50L1MxNS4xLjMuMl9BMS4xMF9UMS1zdGRlcnIudHh0VVQJAAPLvZNZy72TWXV4CwAB
BPUBAAAEFAAAAOxd63PbtrL/fPNX8I6nM/Kt0xBvUnU9tmU7cZrYqe3G555OpyNLtK1TWfSlpDSe
9vRvvwAIUnyAWtAPnS/qTNuEIhaLXTz28cPy1atXezNvHA+oN5p4+/IPv3sbrOt96Y9Hw/5sFE+8
6/5oHA27Xmc6kw8Gvw3609n2STyM/menM5mPx/ezZNP7wXst//OD14kms+ThPh5NZq93vvSTUf9q
HE33Zu+i/vA7Sb0/7ozU27tU+Jte583neDy/i6ZvDvqz/pvDy/M3l9HVj6PZm/N4ngyiN+/7X/rn
g2R0P+vFSfRmeH3z5uDo7eeUuei7wf19N0Sb3+lBzEZ3kRdfa37nSdR99Uq+6l3Hibd9M46v+uOd
je1J/Pq2P73d6f7if0WY0YFPfP/1TvaXPs7/Elxx7m95ksRb3XjLEwj92n3leUejr3p8npJH1PX2
I9lHlD393juKk7uud3GbyCFHw96n8++9nyej69EgFadplVIdP+ifouH33ll07Q3i+YLu4ZcoeZjd
jiY3x9MPoy+R7HovuZHSmsymelhXSlsbftfb9Rt+k4rcxZS9emUU63udq8GGvymVeXp+5s36yU00
25SND79Gg7lmT7PQ9dB3vv5H/vYpiYbRIJpO42Sqxn8+H2R/8zaQfHAQ340mkuWhd/UgHyVxPJNd
FX5QL/rFdyeDyDtK4slsFCXyNyx/Y/LH41mUaDpNbxH5ovqXmgbns5T6+SyZD2ZS6dO9JLrszwa3
0XDL682TRApk/NA72vt5ItUxuFWzUbb73E+mRm9dbzu6u5897Kj+J5KBaTRQLJRekXLyu52DeC6b
H9/dy45O+pO/LuL7vw5V2y3v4vST/s+mWkotXkXur2L3V4n7q9T9Veb+Knd/Vbi/Gri/GrZQQRt1
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
hHBF59N6ot4bloSQG3w/wveTyWQiWJiEQoyDD4C38OUP1zB0Lwi1XyBZ/QVWeSHOKSeBfiy778W/
AVBLAwQUAAIACAA4pg9La/MICeNIAACIIgEAgAAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0
aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjJfZGVjb2Rl
VVJJQ29tcG9uZW50L1MxNS4xLjMuMl9BMS4xMV9UMS1jcmFzaC1sb2cudHh0VVQJAAPbwJNZGb6T
WXV4CwABBPUBAAAEFAAAAOxdW3PbuJJ+Xv4KPJzKkTOxQ4B3VtZTjmxnPOOLypKd2Z1KsUAStHlC
kRqScuL99dsAKImiKdtwPJcaRw+JTILdXzca3Q2gBY7KImJV5aP1z/58OjtneczKSckY+s0gnm58
0ka0vu42hc/byyKbT1n19vLs+OLk4O3rt+vPa0cxy+s0SVnpb+aiXbKySou8y0DXhkXM0OR2xtZv
/era27aJBqe0Tm/YFqArgQ0adUQa3dbXRQ4yYBObn7RzVs2KvErDbI3cBokvKlaio/0uJkvHmrZP
a/Z2kk47sIiOnW3d3cYWfPUN2zfNHdsmaFt3dF07G6M+OU9ohODWrwjrOxjv2GiArQ/YwvoWAJ4V
ZX3nKYy1vbzIb6fFvEIXFy2MDnm/Z+5Z77e994657bi6t40dE3Tl4cPh+/3D/YP3+5qmceRo7wv9
zNA4zSOG3hdF7SPD0nVUsajI40rTxrdVzaboKK/ZVZnWt1y7NYtqgYTlFLQYa9qwpNU1i9HkumQ0
XgIxMEIfJ4e+vzeviyn0UiQbaNrB14jNOJH1bj34dRi839sP9obDg/EYDcZHH8YHHy63Wu25LSz7
9peD89Pg6PRy7/gIHtrfP+dP0RrpX/XmE4Y0DhlLWhROQYA1jsOz89H4IDg9mxwd/o+mXZ6gc3YF
LSt0ymgJxBZEfG17exdp/LkgmBz8OrkzEhquWE88E3pb315doITAF/QbQq5j//IJldtf35ZfvqLx
yX8Pzz72DCJN25vNsjSiAvV4xiIYQRF0RVKUU3HR14bne+Ofjk4/oMnBeOKjajav8/Tz22EhG0Gv
vsVWIAdIcBb+B3qugis7OJhcs+BDVoQ0a66LyztG898OCWKwgZhdnB8NiymMGBhab8fLm3sYzDSY
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
fmSU/wrm+1JKqii2PpB1qNWLG+GVN0CuLx6WIEEBMqBGjEldvRY6Iab1R6VSwP1981lF4MNjvuGx
lJPwjmiQrwt8TCDZeMUmleOwyWoyqQpf3NyepusxYKcY+gwsm/X5A6iL5Ygitnl9jMO7XEjERxHd
JDLeIbvOZtn6m/GQYs4zsLXmyWwFP5kCmOmFZMd4EwPSUWZqdUMRBM2Tz9mNFNLGq9DSxfX/mlyE
quz97OEmm8PvqPq7WPzUl+35upYyukoAAVHT2odyaF5uTcMvaI86DA1/Iy6ROyojndsNTUP4W2yC
uIgsTzLJDYieHGXuHV1cnJ5fnv36znt1dPbmFEzPldQSH8fJav0DBnX8/af9+cNsdr9eHng//uil
OGvlNty///RZe5tAJuGE/H4m3SbZwd6LD4sZqMPVC1RWL06vLl4opfHiQs7rFz8nn5N8KJbpi8n0
5sXJq9cf0E0Bs+P78f39fkwOvJH3eZFNvJ8vjkcjeD4a7SfzxfzbHdg9HqLv1T3g6oPRKP9wNPqs
/9o/2COAmaH1ABvZJIp97+ry1fEyWd3uUf3AT3h67SePJM8qVCKfVKgUL5VFr5fJ/e3fDr1aycnD
3f1b6OJDZG40OlYI+GCP57SjaZSOo8pn72fJfDQawzTJZgD6L29h4UzO7u5nwJEovwqjZOL6qsKe
KsCx+vvBXlA0LGLXUVohc7VYfpqhvNIfvFxMvo1GX6AUag+L7uZJkqSqRUcPgG1wOqkPRiOYXMv1
vnp2DUgnGaOv7VO6VNba36C3/+2jPxrhxmoCgnn/YP9APdqLKhWE0VhVkC+wH+RE2T/4CXoRLEKc
lFfQw0Dlh6cwAuTQwITmxUXtYUTStLV2C+PEzz8dCxol6tOcD7mc3uNy2jfK36Vf1J9ao8HAEFLQ
SaZEKDpf1lP13mlJCLnB9ym+H06n05j7oR/HE+8jaHh8+eM1DN0eYeYLJKm/wCsvBCkTxNOPZfft
/T9QSwMEFAACAAgAOKYPSzNTfB0vSAAAqBwBAIAAHABzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05h
dGl2ZV9PYmplY3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4zLzE1LjEuMy4yX2RlY29k
ZVVSSUNvbXBvbmVudC9TMTUuMS4zLjJfQTEuMTFfVDItY3Jhc2gtbG9nLnR4dFVUCQAD28CTWWS+
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
cLm93704pW8X1n0ILu7s52SSOHjN5Egbi6DNARbBCwudkrlu2pAApN/Sc2QXZ5Z5wE9TAN7Bz+sV
uoSv/eufeG8YdHccB1TZXpvOpz+9azM3F6fv82enwHKZ2IV9gX02FzVZFD/ncnl5bS/S840E7Xya
5fLq8uOHNIEZPTmMUc04ASHYZpH+sjhPmiJz1dBmsM3dx0t3k5ylTgjapu3RbwuTMqOakdHctD9N
LdIeQQ15+j4pn+aszc//I9kXNwu/w5xbbhIUsXoKSCLqNv8MHkGg7TsToZoAdSvcME9tZv8DUEsD
BBQAAgAIABClD0tQW0otezEAADVqAQB9ABwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklD
b21wb25lbnQvUzE1LjEuMy4yX0ExLjEyX1QxLXN0ZGVyci50eHRVVAkAA6++k1mvvpNZdXgLAAEE
9QEAAAQUAAAA7F3rcxs3kv98/ivmSpUq6iLHg9cAwygqSZRky3EsRVKsvU2lUhQ5krimOLoh6ViV
bP72AzCY4TwwbIwe3C/c2iQ2SXQ3uvHoxw/Aq1ev9mbeOB5QbzTx9uUfPnsbrOt96Y9Hw/5sFE+8
6/5oHA27Xmc6kx8Mfh/0p7Ptj/Ew+p+dzmQ+Ht/Pkk3vB++1/NcPXieazJKH+3g0mb3e+dJPRv2r
cTTdm72L+sPvJPX+uDNSv96lPNj0Om8+xeP5XTR9c9Cf9d8cXp6/uYyufhzN3pzH82QQvXnf/9I/
HySj+1kvTqI3w+ubNwdHbz+lwkXfDe7vuyHa/E53Yja6i7z4Wss7T6Luq1fyp951nHjbN+P4qj/e
2diexK9v+9Pbne6v/leE+1dcsMB/vZP9hfj5X8IrFPhbniTxVjfe8jgKfuu+8ryj0VfdP0/pI+p6
+5HkEWWffu8dxcld17u4TWSXo2Hv9Px775fJ6Ho0SNVpWqVUxw/6q2j4vXcWXXuDeL6ge/glSh5m
t6PJzfH0w+hLJFnvJTdSW5PZVHfrSllLGWsXM9TwrS+/9V+9Mob1vc7VYMPflMY8OT/zZv3kJppt
yqaHX6PBXIunReh66Dtf/09+d5pEw2gQTadxMlX9P58Psr95G4rvQXw3mkiRh97Vg/woieOZZFX4
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
ldgnJSr5S0XR62W6uP/bsVcpOds8LN5CFx8jc4PBqZxzRwdc06bjNBvGpc8up+lsMBiCVJ9MwUa/
uQc9N7p4WEyBo6D4KonTkeurEnuyAMfq70cHYd6wOLiNsxKZ9/PlxynCC/XBy/no62DwGUqh9ijv
bj5M00y26GQDpghOJ/nBYACTa7k+lM9uYQWkQ/S2fcyWckX8DXr7rx/8wQA3VlNYHIdHh0fy0UFc
qiCKh7ICvZC/ExPl8OgH6EVYdTgp30MPA5XvnsIIkMNFDM1L8tqjlGRZY+0WxomvPx1GNE7lp5oP
sZwucTkdGuXvss/yTwVAYWAIyekMxySQdD6vx/K984IQcoPvU3w/Go/HCfcjP0lG3gcA5Pjyh1sY
ugPCzBdIWn2Bl14IMxYQTz0W3Xfw/1BLAwQUAAIACAA4pg9Ll/i6dpFIAADSHgEAgAAcAHNwdXRu
aWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8x
NS4xLjMvMTUuMS4zLjJfZGVjb2RlVVJJQ29tcG9uZW50L1MxNS4xLjMuMl9BMS4xMl9UMi1jcmFz
aC1sb2cudHh0VVQJAAPbwJNZ+b6TWXV4CwABBPUBAAAEFAAAAOxdW3PbuJJ+Xv4KPJzKkTOxQ4B3
VtanbNnOeMYXlSU7szs1xQJJ0OaGIjUk5cT767cBUBIpU7bheGbOjqOHWCHB7q8bjb4AIDQqi4hV
lY+6n4P5dHbB8piVk5Ix9KtBPIJ/00a0vllvCp/3V0U2n7Lq/dX5yeXp4fu377vPa8cxy+s0SVnp
b+aiXbGySot8nYGuDYuYocndjHVv/eLa27aJBme0Tm/ZFqArgQ0arYk0uqtvihxkwCY2f9MuWDUr
8ioNsw65DRJfVqxExwfrmCwda9oBrdn7STpdg0V07Gzr7ja24Ktv6r6Bd1wHo23d0XXtfIz65Dyl
EYJbvyCs72C8Y6MBtj5iC+tbAHhWlPW9pzDW9vIiv5sW8wpdXrYwOmR/z9yz9re9fcfcdlzd28aO
Cbry8NFw/+Do4HD/QNM0jhztfaGfGRqnecTQflHUPjIAJapYVORxpWnju6pmU3Sc1+y6TOs7rt2a
RbVAwnIKWow1bVjS6obFaHJTMhovgRg6Qp8mR76/N6+LKfRSJBto2uHXiM04kW63Hv4yDPb3DoK9
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
ovNP9qOfJA5eMznQxmDa3OxgETyz0Ck7000b+DSfr+aBI3t7YplH/DgF4B38vFygS/gqvP6J94ZB
d1fNH/02nU/ftBHmzJwfv8+fnQLzube39ln2xZ4sip9zPr+4sufZ6UaCdj7NfH558f5d5mFGTw5j
VDNORAi2uc1+uT1NmiJnqqHNYJtP7y/ctT9JnRC0TdtD2BYmZUYgh4Fi3f40e5H2AGrI47fJddBq
Q/8/yX57fRt2mJPLDRSx/RSQ+A5Cm39EDyDQtp2JUE+Afasz3m4z+x9QSwMEFAACAAgAYKUPSxAD
kc9zMQAAOWoBAH0AHABzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjFf
VGhlX0dsb2JhbF9PYmplY3QvMTUuMS4zLzE1LjEuMy4yX2RlY29kZVVSSUNvbXBvbmVudC9TMTUu
MS4zLjJfQTEuMTJfVDMtc3RkZXJyLnR4dFVUCQADRL+TWUS/k1l1eAsAAQT1AQAABBQAAADsXetT
G0e2/3z9V8wtKlXiBsfT7xmFUIAAG8c2BIjZu6lUSogBdCM07EhyTCWbv/129/SM5tGj0wNI+0Vb
m8SW1OecPqcf5/Hr7levXu1NvVE8oN5w7O3LP/zubbCu96U/Gl73p8N47N30h6Pouut1JlP5weC3
QX8y3f4UX0f/s9MZz0ajh2my6f3gvZb/+sHrRONp8vgQD8fT1ztf+smwfzWKJnvTd1H/+jtJvT/q
DNWvd6ngm17nzed4NLuPJm8O+tP+m8PL8zeX0dWPw+mb83iWDKI37/tf+ueDZPgw7cVJ9Ob65vbN
wdHbz6lw0XeDh4duiDa/052YDu8jL77R8s6SqPvqlfypdxMn3vbtKL7qj3Y2tsfx67v+5G6n+4v/
FWE+EAHj/uud7C/Ez/8SXiHub3mSxFvdeMsTiP/afeV5R8Ovun+e0kfU9fYjySPKPv3eO4qT+653
cZfILkfXvdPz772fx8Ob4SBVp2mVUh096q+i6++9s+jGG8SzOd3DL1HyOL0bjm+PJx+GXyLJei+5
ldoaTye6W1fKWht+19v1G76ThtzFDL16ZQzre52rwYa/KY15cn7mTfvJbTTdlI0Pv0aDmRZPi9D1
0He+/p/87jSJrqNBNJnEyUT1/3w2yP7mbSD5wUF8PxxLka+9q0f5URLHU8mq8IX6oV/87XgQeUdJ
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
Brr4CJkbDk/UPD98wQ1tRkfZKC599m6WzofDEYjg6QwM6us7UErj8/uHGXAkiq9u4nTs+6rEnirA
sfrr4Yswb9hNdBNnJTLvF8tfZ4gF9AffL8ZfhsNPUAq1R0V3Z2maqRYdb8BuwOmkPhgOYXIt1wfq
2Q2sunSE/rZfs6VahX+B3v6vD8FwiBurKSzIg8ODQ/XoRVyqIIpHqgIz5b+RE+Xg8DvoRVjpOCnf
Qw8DlW+ewgiQQ8EBzUvy2tMRybLG2h2Mk8B8OklonKpPDR9yOb3D5XRglb/NPqk/NVqEgSEkp5NN
iFB0Pq0n6r2zghByg+9TfD+aTCYJD6IgScaDD4Ce8eUPNzB0LwizXyBp9QVeeiHMmCAD/Vh234v/
AFBLAwQUAAIACAAqpA9LSH+xXlcxAABCZwEAfwAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0
aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjJfZGVjb2Rl
VVJJQ29tcG9uZW50L1MxNS4xLjMuMl9BMS4yX1QxLWNyYXNoLWxvZy50eHRVVAkAA/+8k1n/vJNZ
dXgLAAEE9QEAAAQUAAAA7F1tc9s2tv588yt4x7Mz8q3TEO+k6nocy3biNE1c2433bmenI0u0ra0s
+lJUGk+7/e0XAEGKL6AOaMfaL+pM24Qizjk4B8B5wQPwQ+yNkuH81pvGN951vJiN5X8T73Bxd38W
zcZRcpFEUZ8giti3L17M03G8SPv6D1GSyD+8ePE6lW1H1JvMvAP5h9+8Ldb3Pg+nk/EwncQz73o4
mUbjvtebp/LB6NfRcJ7ufojH0f/s9WaL6fQ+Tba9772X8j/fe71oliYP9/Fklr7c+zxMJsOraTR/
nb6NhuNvJfXhtDdRb+9T4W97vVef4uniLpq/Ohymw1dHl+evLqOrHybpq/N4kYyiV++Gn4fno2Ry
nw7iJHo1vr55dXj85lMmXPTt6P6+H6Ltb3Un0sld5MXXWt5FEsm+yVe1MnZvpvHVcLq3tTuLX95K
Ze31f/G/IHwVjQLG/Zd7+V+Iv/wLGWJ/x5Mk3ujGO57w0T/7LzzvePJF989T+oj63kEkeUT50++8
4zi563sXt4nscjQenJ5/5/08m1xPRpk6TauM6vRB/xSNv/POomtvJO1X0D36HCUP6e1kdnMyfz/5
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
YPDh+vXxKlnfvqDZgyBi0ShIHkmelajEASlRyV8qit6skvvbv74cVEpOHu7u30IXv0TmhsNjDcUP
X3BDW4C5BWZ/8dnFPFkMh2OYr7M5WB/Xt7CCJ2d393PgSBRfBXEy8X1VYk8X4Fj97fBFmDcsHI/i
tETmw3L1xxwFZ/bBz8vJ1+HwM5RC7VHe3YwlSapbdPQAIAunk/5gOITJtdoc6GcjgFzJGN1rf6Qr
bbL/FXr7Xz4GwyHuuCagIQ4ODw71oxdxqYIoHusKzEL5QU2Ug8OfoBeT+Rwn5QfoYaDyw1MYAXK4
ywDNk3ntISFp2li7g3ESmE+TlMaJ/tTwoZbTBS6nA6v8XfpZ/5mpVhgYQgydEZsSoel83kz1e6cF
IeQG36f4fjSdTiUPokDKyeAjQA18+eMIhu4FYfYLJKm+wEsvhCkTZJA9Vt334sX/A1BLAwQUAAIA
CAAqpA9LpGJ5mygxAAACZwEAfAAcAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVj
dHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjJfZGVjb2RlVVJJQ29tcG9u
ZW50L1MxNS4xLjMuMl9BMS4yX1QxLXN0ZGVyci50eHRVVAkAA/+8k1n/vJNZdXgLAAEE9QEAAAQU
AAAA7F3rc9s2tv9881dwx7Mz8q3TEG9SdT2OFTtxmsSu7cZ7t9PpyDJtayuLvhSVxtNu//YFQFB8
gTqgH9ov6kzbhCLOOTgHwHngB/DFixevU28Sj6g3nnp78g+/eRus730ZTsaXw3QcT72r4XgSXfa9
3iyVD0a/joazdPtTfBn9705vOp9M7tJk0/veeyn/873Xi6Zpcn8Xj6fpy50vw2Q8vJhEs9fpu2h4
+a2kPpz0xurtXSr8Ta/36nM8md9Gs1dvhunw1f756avz6OKHcfrqNJ4no+jV++GX4ekoGd+lgziJ
Xl1eXb96c/D2cyZc9O3o7q4fos1vdSfS8W3kxVda3nkS9V+8kK96V3HibV9P4ovhZGdjexq/vBnO
bnb6P/tfEb6IRgHj/sud/C/EL/5Chtjf8iSJt7rxlid89Ev/hecdjL/q/nlKH1Hf24skjyh/+p13
ECe3fe/sJpFdji4Hx6ffeT9Nx1fjUaZO0yqjOrnXP0WX33kn0ZU3iucF3f0vUXKf3oyn14ezD+Mv
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
Bu+vXx+v0vXtC6ofBBGLRkH6SPKsRCUOSIlK/lJR9GaV3t/+9eWgUnLycHf/Frr4JTI3HB4rKH74
ghvaAswtMPuLzy7m6WI4HMN8nc3B+ri+hRU8Obu7nwNHovgqiNOJ76sSe6oAx+pvhy/CvGHheBRn
JTLvl6uPcxSc+oOfl5Ovw+FnKIXao7y7GUvTTLXo6AFAFk4n9cFwCJNrtTlQz0YAudIxutc+Zitl
sv8VevtfPgTDIe64pqAhDg4PDtWjF3GpgigeqwrMQvlBTpSDw5+gF9P5HCfle+hhoPLDUxgBcrjL
AM1L8tpDQrKssXYH4yQwn6YZjVP1qeFDLqcLXE4HVvm77LP6U6tWGBhCDJ0RmxKh6HzeTNV7pwUh
5Abfp/h+NJ1OEx5EQZJMBh8AauDLH0YwdC8Is18gafUFXnohzJggA/1Ydt+L/wdQSwMEFAACAAgA
a6QPS5G91DYMMQAAp2YBAH8AHABzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3Rz
LzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4zLzE1LjEuMy4yX2RlY29kZVVSSUNvbXBvbmVu
dC9TMTUuMS4zLjJfQTEuMl9UMi1jcmFzaC1sb2cudHh0VVQJAAN6vZNZer2TWXV4CwABBPUBAAAE
FAAAAOxd63PbNrb/fPNX8I5nZ+RbpyGeBFXX41i2E6dpktpuvHc7Ox1Zom1tZdGXotJ42u3ffgEQ
pPgAdUA/tF+0M9u6FHFwcA6A8/oB/BB7o2Q4v/Gm8bV3FS9mY/nPxDtc3N6dRrNxlJwnUdQnWIT+
ty9ezNNxvEj7+o8oSeQfL168TmXbEfUmM+9A/vGbt8X63pfhdDIeppN45l0NJ9No3Pd681Q+GP06
Gs7T3Q/xOPqfvd5sMZ3epcm29733Uv7je68XzdLk/i6ezNKXe1+GyWR4OY3mr9O30XD8raQ+nPYm
6u19GvjbXu/V53i6uI3mrw6H6fDV0cXZq4vo8odJ+uosXiSj6NW74Zfh2SiZ3KWDOIleja+uXx0e
v/mcMRd9O7q764do+1s9iHRyG3nxleZ3kURybPJVLYzd62l8OZzube3O4pc3Ulh7/V/8rwj7IhCM
+y/38v8gfvEf4SXi/o4nSbzRjXe8wEf/7L/wvOPJVz0+T8kj6nsHkewjyp9+5x3HyW3fO79J5JCj
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
coUyCpMLVPBmthXy5QTaE1IPVaUpGySTm2szTe8+wfmVWL1N7R7W5UdK+mLr/kqlJJkpK90MgZUp
l2/eb5mQ0/Z7rQ8jxYqYwXhyU9VyVe2KKbA4+GnV/W4uj+fm6thuzve4+WQKCrrcqbOaRjbPZ/9I
/o6RSdv+brOaUZlHPMnps3udXtCW05cVrsm49/Fuwgkaj8uP09t/IsahqJznOBIwhTp3P8zdxR53
t58dn5d/gld9NsXyb/RG73Nn9oednI1yYPYeJ6cU283LnZMf5ORyn5Mv4a/50owMlNoPY9nPBVa7
/g/L7/pMnvcbNx9skO53JE0JEmjE146kKeZZ5UgSIUGeQOh7/egkXq/BymkDpw1Ohza10wZOG/zg
Tk6Q0wZOGxzBj7DTBk4bnA5tEqcNnDb40Z2cOm3gtMER/Ig5beC0wenQJnfawGmDH93JhdMGThsc
wY/kCWuDZ86YThYc1dOVkwVOFvzoTq6dLHCy4AifZEVuycAtGZwMbVLstIHTBj+6kxOnDZw2OIIf
UacNnDY4HdpkThs4bfCjOzl32sBpgyP4kTi5d/ypPD2T1emZrE/OZIZOz2R8eiaf3q4sjJ6eyez0
TOanZ/LpqS92euqLnZ76YqenvvjpqS9+euqLn5764qenvvjpqS9+euqLn5764qenvrh9jLTc8NVf
Lef2BmdelfxQHzAwhD75CwKa7/2CgJKHf87gb/8FgcM+mSBVNsrG7gsCJ/QFAX6wg6Tj7/YFAXFg
+MrRKNP3g03mxb1Qr40ltEX1eRLehIRJ56sGj8GUMt5L4ptvJVVl2WJZpPnSYjHFzgH2f/iJIzw4
a1VZ7fKNRHv//cfAlOqAHeO/wZyHdoXXg++zKzx6JrvC4++zKzw52q7w9Hi7wrPj3jHm2ukpp6ec
nnJ6yukpp6ecnnJ6yumpb9FTAjk95fSU01NOTzk95fSU01NOTzk99U16Cjs95fSU01NOTzk95fSU
01NOTzk99U16ijg95fSU01NOTzk95fSU01NOTzk99U16ijo95fSU01NOTzk95fSU01NOTzk99U16
ijk95fSU01NOTzk95fSU01NOTzk99U16yu4s/JvJ/jlZws9378OfzdJu/fCEfSOQBMwfF+bW5E0d
9cVkxTJvXjzoDpxRLJM8H8C5ML1++rqYQFBc22hZXpvisykuLqzwuS4bOIORrCabkpc4QoOzu/U1
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
2hu/9savvfFrb/zaG7/2xq+98Wtv/Nobv/bGr73xa2/82hu/9savvfFrb/zaG7/2xq+98Wtv/Nob
v/bGr73xa2/82hu/9savvfFrb/zaG7/2xq+98Wtv/Nobv/bGr73xa2/82hu/9savvfFrb/zaG7/2
xq+98Wtv/Nobv/bGr73xa2/82hu/9savvfHrlilFmiSJt59wzgbedyL/rTNRkKTdlntNs+MW6QH2
vuYBVvfxCKy4ZEr4oUhd9UMp7TzknYvW6Xwxzt6evXe2JKElX2AC4u1fNi+2hH/Km9vpNBivKGMp
aZlGSD4u6SUlrTcxetfBxEiGJkaq2cRIYWAIdrxYjL4/vb26yhaV5SfDv+f/nz9HRFodRv5H6zy8
ilecT1bXxS87enrttN9RhYGMooxpFNdXSYktyxxFutSotcnSrx1MllToUqNMM9SqA9RwBzVYvMMa
Qd4/2KbAgTKxUqoKtiXBNttgk45WbhYXPH7fasicDO6m2Bh07ihs0wFtvEMbndPi+mfEe0dbl6Vt
KbRNzSiaNLzW27WtExJu46PHZ614ewdsXTFEba5uDR3wFhu8VYC30vePd1HdmrIX13VjbtKZW2+X
tybtxrX35ob4Qyve3p1bh/WdNte3lh3wlgHeJsDb3DveaVHfWlF4yxrepGt42lDfpIGxm6aIHn9s
xdubRqdhfac76jvtgLfa4O2sMjc/3z/eZX1TfuY6reFN2tKmDfVNWpq7aYro8adWvP3jXxrWt2mu
7zTpgLcO8A52S33/929T1HdKWR6nNRdgIP2rzXZ9p6TpsZumiB6ft+LtnW9NWN+mub5T0QHvNMBb
Bnjf/9OJKeo7pezY05pdOJAe02a7vlPSOzQVPnr8Wyve3lPahPVtd9S37oC3CfAO9kt9//ulLeub
smdPdQ1v0hTSNtQ36dbupimix39txdt7RNqwvu2O+rYd8LYB3sF+qe9/v7RFfRuKSKY1Igkkk7Tb
9W1IWplaHz3+WyvenljasL4haS5w04VZwoZaYhrsmOn975juOt1lUezS1NglkPQyj7yNOckvDfrw
8XH7KTSeYhazBKg3l7npRDIhQD3YN1PcA+ploVM009RoJlga9YZKJ4mmUT58/LQVdUwGm1k2qMOO
Wu9CNiFgm2mwe6b3v3u663SXRdFNU6ObSNJNgO1atyTfNMaHj0/aUfeEs5glQL251m0XygkB50yD
PTTVe0C9qHVLkU5bPzkJaNS3a92SrNP605MgftaOOg42swSHYTTXuu1CPCFgnmmwk6b3v5O663SX
RVFPW6OeiPQJHQ21TnJPK334+Hk76usTi7BS67ij1rvQTwj4pwl2U7OH3RTLWqcIqK0RUOxwLkpD
rZMM1KY+fHzajvrdKSSVWm+2+HcWQB1QD1ioCXZTs4fdtDghwJkNEacoJTUeiiQPBbFV7M6niDpW
KUl8/PhFO+7rQ1gqxxGAMM24dyGjELBRE+ynZg/7qTAFHuTpYEmNj6KicTfbuNNn/SXCx49ftuOu
B5tpNrjLHfXehZRCwEpNsKOaPeyosqx38tSwpMZLkeSlIBvqnT5GLNE+fvyqHXdPTaFyfgHIHfXe
hZxCwE5NsKeaPeypsqh3+jzBpMZPMaVx3673DocKJtbHj1+3424Gm2mCY6aa6x26cFQMOKoNdtU9
NECh6IA6wzACd6iRVKRJ6nYT1HmNUbgD+vjxT+24r1lqpRMKza1Q51vWAfeApYa9ULuHfVWV9U4e
eQo1moo0TVUN9U6fewrKx49/bsVdrHlqpScKeke9d2qKBjzVBvuq3cO+qst6tyTuNaIqaKK63RgF
TGjcjY8f/9KO+5qpVnqj0Nwcdc50HXAPmKoN9lW7h321aI86DzwCd6wfiEtT1e0GqbPPo3BH8PHj
N+24r7lqpUcKzU1SZ8XXAfeAq9pgX7V72FeLNqkz/aNwr5FVQZPVtKHe6ZNeUfr48dt23NdstdIr
hXRHvXdhq7hhqyLZ7Kv5z3vAvax38vhnrNFVQdPVtKHe6TOgMfXx43ftuK/5aqVnCs1NU2e22AF3
HeCOAe572FeLtqmzdaRO/a2fnkrz1e3GKQiar4rEx49/bcd9zVcrvVNobp46d8kOuKcB7jLAfQ/7
atE+BUGfZl0/zprmq9sNVKAPXywmKuLH79txX/PVSg8V7I5678JX0QS46wD3Peyrtqx3+pTrGl8V
NF+1DfXe4dhr7ePHZ+24r/lqpZcKdke9d+GraAPcTYD7HvbVop0KkuSrosZXBc1XtxuqzuSUxN36
+PGHdtzXfLXSU8XmnirILnxVbPiqgGBfhfvfV7HoqQJ5lCTUz5IUJF/F7aYq0EdLgj9bUpj4Yzvu
nq9ipauKzV1V5xDbAXcIcBcB7mIPuJf1TvJVWeOrwtK4N9Q7zVel8vHjT624y2SwmWaDO+yo9y58
VWCAuwpwV/ePO5T1TvJVWeOrkuSruN1Ydb69JO7Gx4/P23H3fBUrnVVs7qyC6vRhXhHgnga4p3vA
vah3RfJVVeOrEmjct+td0XxVgY8f/9aOOw4202xwb+6tgurCV4UMcLcB7vb+cS96q85emcK9xlcl
0kepN9Q7zVeV9PHjv7bjLgabaQLcd9R7F74qAr7q5IrNz3vAvax3kq+qGl+Vgsa9od5pvqpSHz/+
WzvucrCZZoP7jv6q7sJXRcBXMdhXcQ/7atlf1SRf1TW+Kkm+ig39VU3zVZ34+PHxSSvunq9ipb+K
O/qrugtfFQFfxWBfxT3sq2V/VZN8Vdf4qlQ07tv1rmm+qoWPHz9tx10PNtNscN/RX9Vd+KoI+CoG
+yruYV8t+6ua5Ku6xlclyVexob+qab6qtY8fn7Tj7vkqVvqruKO/qrvwVRHwVRHwJrEH3lT2V1OS
r+oaX5Upjft2vac0X9XWx4+fteNuBptpNrjv6K+mXfiqDPiqCPRIcf96JJb91ZTkq2mNr0qarzb0
V1Oar6bo48fP23Ff89VKfxV39FfTLnxVBnxVBHqkkHvAvax3kq+mNb4qab7a0F9Nab6aKh8/Pm3F
Xa35aqW/ijv6q2kXvioDvioCPVLcvx6JZX81JflqWuOriuarDf1VQ/PV1Pj48Yt23Nd8tdJfxR39
VdOFr8qAr4pAjxRmD7gX9W5IvmpqfFXRfLWhv2povmrAx49ftuO+5quV/iru6K+aTl9CDfiqDPZV
uYd9teyvGpKvmhpfVTRfbeivGpqvGunjx6/acV/z1Up/FXf0V00XvioDviqDfVXuYV8t+6uG5Kum
xlcVzVcb+quG5qsm9fHj1+24r/lqpb+KO/qrtgtflQFflcG+Kvewr5b9VUvyVVvjq4rmqw39VUvz
VZv4+PFP7biv+Wqlv4o7+qu2C1+VAV+Vwb4q97Cvlv1VS/JVW+OriuarDf1VS/NVK3z8+Od23Nd8
tdJfxR39VduFr8qAr8pgX5V72FfL/qol+aqt8VVF89WG/qql+arVPn78Szvua75a6a/ijv6q7cJX
ZcBXVbCvqj3sq0V/1Z2+Q+Fe46uK5qvb/VV3cA+Ju/Xx4zftuK/5aqW/Kpr7q5h04asq4Ksq2FfV
/e+rouivuuOG2nHHpMZXFclXxXZ/1Z1UROBeTFTEj9+24+75qqj0V0VzfxWTLnxVBXxVBfuqknvA
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
Ra/BthjhU0OGdBGxhAwDLzpGF0VXQdGFJb7xhAUytHnRMVZbhp6iwaZoSlo2gEOG0mKEzwwZGkXT
2YumNMoGF0VXSdEsf5R4RolOezaQLUNP0ZAdMmjZwA4ZsMUInxsylIuIJWQYeNExuSi6SopmOWGd
sWqPNi86JpOiV+/jLINN0aR40THZFL0G22KEV4YMjaLp7EXTwIuOyUXR9UbRUNfedLdXeUZ12Nzo
mIotRM/RUB1CKPmQqkOI3GKE14YQcBGxhBBllA93HN2Hv9617N+q92/R3VvXetm/Ve7fwru3ro3q
+rfy/Vtw/xbfvUX3R0/3R0/3R8/3R8/3R8/3Rx+XRXkvK++B8t79GcSYlPeq8t79ScQUlfeK8p5y
Hlk5j6ycR1bOIyvnUZTzKMp5FOU8qnIeVTmPqpwHKOcBynmAch6gnAcq54HKeaByHqScBynnQcp5
sHIerJwHK+fB9+eRlqS8V5X37s8jxai8V5T37s8jpUV5LyvvgfKech5ZOY+snEdWzqMo51GU8yjK
eVTlPKpyHlU5j6qcByjnAcp5gHIeqJwHKueBynmQch6knAcp50HKebByHqycB9+fx7ov0d17RXnv
/jzWDtp372XlPVDeuz+PtfPS3XtVeU85j6ycR1bOIyvnUZTzKMp5FOU8inIeSgHPSgXPSgnPSg3P
ShHPShXPShnPSh3PSiHPSiXPSinPSi3PSjHPSjXPSjnPSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0v
Sj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0vSj0v
Sj0vSj0vSj0vSj0vSj0vSj0vSj0vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2v
Sj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2vSj2v
Sj2vSj2vSj0HpZ6DUs9Bqeeg1HNQ6jko9RyUeg5KPQelnoNSz0Gp56DUc1DqOSj1HJR6Dko9B6We
g1LPQannoCG5xuQalCv1HJR6Dko9B6Weg1LPQannoNRzUOo5KPUclHoOrN1dUG4vKPUclXqOSj1H
pZ6jUs9Rqeeo1HNU6jkq9RyzdptEOQ+lnqNSz1Gp56jUc1TqOSr1HJV6jko9R6WeI2j3e5TzUOo5
KvUclXqOSj1HpZ6jUs9Rqeeo1HNU6jmyduNKuXOl1HNS6jkp9ZyUek5KPSelnpNSz0mp56TUc1Lq
OSn1nJR6Tko9J6Wek1LPSannpNRzUuo5KfWclHpOSj0npZ6TUs9Jqeek1HNS6jkp9ZyUek5KPSel
npNSz0mp56TUc1bqOSv1nJV6zko9Z6Wes1LPWannrNRzVuo5K/WclXrOSj1npZ6zUs9Zqees1HNW
6jkr9ZyVes5KPWelnrNSz1mp56zUc1bqOSv1nJV6zko9Z6Wes3azXbvbrt1u1++3azfc1Tvu6i13
7Z77ot10X7S77ot2233R7rsv2o33RbvzvmTVQtDOSLv5vmh33xft9vui3X9ftBvwi3YHftFuwS/a
PfhFuwm/gOqKaGek3YdftBvxi3YnftFuxS/avfhFuxm/aHfjF+12/KLdj19YNXo0p2fRrJ5F83qU
or+tIlHXNKgOu+r3qt7j6w//47vf/fLRL//815s5e1ivH//8l1//9M9/+/lvf/2P+69lN8LR9l+7
BbT28lkqmg1ODvd1Wz4L4YuH3mtbOkvnB1CpjCzwYyXY+7/9+uLfXv0h3N3k0eSQ5/2nP6S/v/nb
/7yO+/c///LnP7TRfjjEm8Wdj8Wx7//ld3/59ed/vYsuA62frHX75LFK4dOff/n9H999+Pr67eH4
tycZ9uM4ff5YefD6w9O189dfn8KfbP+3f/vzn7uP2EtIc7eE1F7He3y5Y81o3taMYnjz8BJoy3bp
Wr7FJQBJvwSyb73obRE733q1xBkNT69Huh6YvVg0d4tFHSt2rxPoPgGzY6lo3paKUvjy4egfq3Wv
ceTo42D0fctEb2vXo9jIPc7Yx/16qOuR2YtEc7dI1LFS9zoH7Ie/OJaI5m2JKIe3D4f/2L53DSTG
HwdXf3GtD4XbovXVPb/9PWH8cbv8i706tHSrQx3b96670N8J4FgcWuIeIrx7rMCxQhfPGYCDDCiu
paEQhQIgFJixTBq3DCj2wtDSLQx1bN+74vWdAo51oaXsIcL7xwoci3PxnAM0ygHXqlC4LVVfV0q0
v8sMBWjPAXtNaOnWhDq27133f75TwLEktOAeInz1WIFjXS6dc4AGOVBdC0Lhtko9ldsi9TTjocrr
oa5HZi8Hrd1yUMf2vURKDlTHatC67CHC148VOJbk0jkHeJAD1bUWFG4L1FNFocCMddG85UC114HW
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
30mrx+f9tLp/JC02rfKzafX4cgetcqPV9z5azecHc5/qlnoZpOWOVsPDfFv/+PDrz7/87p//+B/P
uJK3ATDJdG1Y88yMuxbuLuPSYpPpGmrNuK+cGVfyeahpMNTVzDhl49ju1J8yLv3927/86fc//+GP
b/74669//OXN356Xfk+Htx4NPDv9Nl8m3R5xeGb6tc+TP/3aR9i+QOjZ6bd/eVwc1wTt6fe1M/3O
1k+GpF8TMf5Xph+kbQBMDksxPjv9IN2nX7QxbA21pt8HZ/pBOg81Doa6WOmXlI2Xu1N/Sr/cpd+f
n5d+gNtI1GenH5btk/DvTL/2efSnX/sI2RcIPjv92pez45rAPf2+caYfnidBg5amKS3PS7/fcra5
dS5NyYSNdcHjM5NPaVyaks0aa6g1+b51Jt+5bWketC1Ntx1NhsmnbFvenfpT8pUu+X59XvJtjUpT
Ks9OPt5mKrf1/M9MvvZ58Cdf+wjaFwg8O/nal5PjmoA9+b5zJh+f5kNl8PRMSvxfWPvK9phMyos9
uvzc9CvKUzIpR8dQ855+3/vSr5yfkSmDZ2TSbQePYfol0NKPz+lXu/T712elX9keikk5Pzf9Stxm
KrfF689Lv+Pz1Z1+x0dMy2Zd/vm89Du+3HZp1m9f0+8HX/qVeJoPlcFNuJTpvzL9tlttKdsT+0zP
Tj/lTlsqjll+pj39fnSm3/k+WxncZ0u3HSuG6ZeVO2rnU39KP+jS7+fnpd92fyuV9Oz023rGpdtK
7WemX/t88adf+4jpTaRSnp1+7cttN2L99jX9fnKm37ktXcmDuwEFn5d+3/7lD3/8/dNJ/eE/nnt5
uwNQ7Fl9wWfn3vWavcs9xxS/4J57H7335d41kBjn0Q2u2/YMw9wryu3o86k/5R6ec+/t87Cv7He6
anx27m1rktNtTfIzc699Pvtzr33EvBH+9K3Pzr325fa97/Xb19x78d6Xe+dlz6UObgVU+C/Lvbrh
f7Un9fXZbULKdcFfn3vVMcOvrU3Ix87cuwYS4zy6u1XZzL2qrKU8n/pT7tE59778y/Nyb7/NBc9u
GlJgm6XAv7NpyPF5f9OQ4yP2LXF4dtOQ48sdd8GhNQ156cw9OM+FBq1jEtT/stzbmscksGf0UJ+d
e8p+PQkc03uoe+594sy98249ZXRr67akc5h7oFi751N/yj3ucu95Zl/Z73IBPzv3aJul3NaJPjP3
2uejP/faR+z74RifnXvtyx23wDHuufepM/foPBcatIxJWP7Lcm9rDJPQns5jeXbuKY1hEjrm9lj2
3PvMmXvnvjB1dGfr1mV+mHuorIs4n/qf/pCWbs75vGXhdb/FhfTc3KvLNku5LZR8Xu61z99WP5q5
d3zEvh1Oy3Nz7/hyxx1wWvbc+9yXe3U5zYXqYO1ZovxflXt1W16WyJ7O07PXtVRldVkix9ye2rqW
V77cq+e1ZXV0W4vMdS2rxI9P/Sn34jn3nrnIpe73t+jZi1zqtklCon/nIpfj8/5FLu0jbN8Lp2cv
cjm+3HH7m9oil9fO3Dvvw1Dz4B4AW/PvfV3h8r8e37N+zDatSFuwwecFGyn9/U9Pyfz/vnreFdQO
wrpn9v0ff/f//OP2S/B0Bv9vfPq9//21Des//PenX5F/+L//dr16/+nP//b0v/KyLL/Pf1xw+Yfw
//no//7H758O6+f//jSWr15e+2DBdcnQGnprCZDsduCJn33v7fjyZ68/qUovgcSOKTa3W3hfOC+r
cyeBpyn34LL696Zo2cqRuQ5thrRr6LxYLJzTaT3b6bNHJn/2x19ftIPQv2D3C26n9PU/vv6wndH/
dRy/Njj5tjDtGuXf3v3TP/31j/cXYNa6Fa+R5TieczBd79D+6S//9MdfniT95ukz//B//MM3P/+3
67G9/d2//vEP73/5+b/98Zdf//THv4b1Ue7u4LRLIS/ZHs8yGk+zLuclPT/N9i+3S3FeGuq/8ebH
ecoz6C6QF/jPv763NV3ZbsOb+za89rNux5c/f0KtNB3ICzukgf0puS/fu56Sq+d1Z3VwZy7HfydV
1+1eWo7xP1/aFtqyr65H149/+2x+7mFTgd89HZx+2PhP1911nw775dt/XCfu+1HHpV6fDDpFLuZR
LzA6arMO55if+9Tg8eU2J6/fvj4o+Pa970HBel6TVwfP+ud4pOn6I6/MsNbYTwrtJ3f6Tc9///Mf
//LPv/7L8+ZVyrG8+PnnP69TwPWYyB5tfPbTgVV5Wj07lr7lfelbXMK7976nA+v5efWKOinldPwG
fPzzv/633/3yRDp//ateHdSjuo7aH3/3l3tpniPGikn5tgjuxS+/+8vv/+X+KE4Lwb75x/8l/W//
/R/j8v9d1v/+13/49B//l3p953jjJMceqhcAl9s2H+u49mExi8Zj/+PVX/fBXwWp4dX/73/ffin+
z3tVvm6qwMVzLCd93v36L3/85emb1wNcrAPM6gH++i9/+mv4nTiQ+h85jn9YP/PXf/yH/d9tIr38
0y9PJ/+nn/9yneb98rff//qk/18/+uWP3//u198/HcTTx7773S9//YeP/unpN/Mf/+F//+O//rdf
/+3/3N79hzd/+sv/8/R9v/vln5ens3g6zXUHvmvlXMd2fS+u9wdWyqrr/GS9Gtc/af2T1x+l9XKE
LUfWv3l7inN9pihvTxKuf2//Jq9/b/+mrGvu09b6cO3XQVsDvrX5RtzawK1/l60Z2fo3bi2x1g4b
y9aYaf07b+2B1r9ha1Kz/s1bo5T1iZo1VirrXhPbv6nr39u/gXW/iO3f4Pr3eraJ1r/XY0u8bgoR
t+3l17/Ltsv5+jdum22vOz9sY5rXv/O29fD6N2w74K5/87YR67qrQ9r2A13/rtu2lOvftO2OuG7d
ELdN+ta/y7ZX3Po3bluWrfszLNvOWevfedvAaf0btn2E1r95285m3RMgbbuqrH+vcctT3CfNt3/D
17+3cavL+vf6b2pc/16Prabr37geW83r3+ux1bL+vR5brde/aT22Cuvf67FVXP/eLrs17nZt1DXu
/5+9f+uR68badcH7/SsEuC8k2I2ePJPG6o0tyyfZsmRLsnxAAwWVlXYJrZJUKWntvVD19W9vHiZn
BOckY5ChjIhvA++FqpyRwTHG5ODgKSKfN40NHf266FdHvy761cGvm8epiP8d/WoZ/zv61cGvY9Gv
1vG/o19t4n9Hv9rG/45+dfDrePRrpvjfafCz+N/Rr4l+RfRrol8R/ZroV0S/JvqV0a+JfmX0a6Lf
VGYm+pXRr4l+VfRro1+VKi36VdGvjX519GujXx392uhXR782+jXRr41+TfRro18T/drgV4nky8X/
jr7cFP87+nLBr0o16Hj87+jLifjf0ZcLflWqQafif0dfTsf/jr6cif+dporoN40lF/2msRSUqMIP
qfin6DmNpiDOFH5I5T9F32k8BXEi/0MaUEE+KPyQZpspup+nmyn6n+ebKQYwTzhTjCCNqiBoEX5I
EYS5i+s0roLgRPghRRBmL/9DiiBMX1ynoRW0GMIPKYIwgfkfUgRhBvM/zLNiiECn4RUo/eGHFEGY
xPwPKQIeI0gjLJDkww8pAh4jSGMsoNf9D2mQBdR5+GGecWMEaZgFNnj4IUXAYwRpoAVadvghRSBi
BGmoBVi0/yGNtYBzDj+kCESMII22QDP2P6ThFnjD4YcUgYgRmHnSjxGYFIGIEdgUgYgRpAUm8GDD
DykCGSNwKQIZI3ApAhkjcCmCMLlxkxawQPgMP6QIwvTmf0gRhPnN/zCvOz4CptRswIUf0mwdoIzh
h2QgzHH+h2QgTHL+h2QgzHJMmXnlkvGH9AhhnvM/pEcIEx1TadIOlLnwQ3oEFSNI03bgrvkf0rwd
MGjhhxSBjhGkmTtgwcIPKYIw3/n3pgjChOd/SBGEGc//MK+kIQLNUgRhzvM/pAjCpOd/SBGEWc/b
TxGEac//kCII857/IUUQJj7/Q4rAxAjSLBKIM+GHFIGJEcxruYkR5MU8RjCv5iZGMC/nJkaQ5pJA
7Qg/pAhsjCDNJgFZEX5IEdgYQZpPAuMh/JAisDGCeUKxMYJ5QrExgnlCsTGCeUKxMYJ5QnExgnlC
cTGCeUJxMYJ5QnExgnlCcTGCeUJxMYJ5QgkTou/WFEGYEf0PKYIwJfof5i1NiMCweU8zxR/SpibM
if6HtGMJc6L/IW1Zwpzo85L2LGFO9D+kTUuYE/0PadcyxQjShBL+gDD8INMPMYI0oYS/8/M/pAkl
/F1e+GHeVsUI0oQS/mAt/JAiYDGCNKGEP/IKP6QIWIwgTSjhz6b8D2lCCX8DFX5IEbAYQZpQwl8j
+R/ShBL+PCj8kCLgMQIz7+xiBGlCCX/c4n9IE0r425LwQ4qAxwjShBL+9sP/kCaU8Fcd4YcUAY8R
pAkl/FnE/+FHYIogzIn+hxRBmBP9DymCMCf6H+bNZYjAshRBmBP9DymCMCf6H1IEYU70QzhFEOZE
/0OKIMyJ/ocUgYgRiBSBjBGIFIGMEcw7VxkjmLeuMkYw711ljGDevMoYwbx7lTGCtH0NX4ENP6QI
4pxo05zI45xo05zI45xo05zI45xo9bx3jhGkOZHHOdGmOZHHOdGmOZHHOdGmOZHHOdGmOZHHOdGm
OZHHOdGmOZHHOdGmOZHHOdGmOZHHOdGmOZHHOdG6efseInBpTuRxTnRpTuRxTnRpTuRxTnRpTuRx
TnRpTuRxTnRpTuRxTnRpTuRxTnRpTuRxTnRpTuRxTnRpTuRxTnRiPkHECNKcyOOc6NKcyOOc6NKc
yOOc6NKcyOOc6NKcyOOc6OYzTpwT3XzIiXOim085cU508zEnzoluPufEOdHp+RATI0hzIo9zoktz
Io9zoktzIo9zoktzIo9zoktzIo9zoktzIo9zoktzIo9zoktzIo9zoktzIo9zoktzIo9zonPzOSqs
zvMhk8dd4pTmRB63iVOaE3ncJ05pThRxnzilOVHEfeKU5kQR94lTmhNF3CdOaU4UcZ84pTlRxH3i
lOZEEfeJk5iPcjGCNCeKuE+c0pwo4j5xSnOiiPvEKc2JIu4TpzQnirhPnNKcKOI+cUpzooj7xCnN
iSLuE6c0J4q4T5zSnCjiPnHS82kyRpDmRBH3iVOaE0XcJ05pThRxnzilOVHEfeKU5kQR94lTmhNF
3CdOaU4UcZ84pTlRxH3ilOZEEfeJU5oTRdwnTm4+0IYI2HxLEPeJLM2JIu4TWZoTRdwnsjQnirhP
ZGlOFHGfyNKcKOI+kaU5UcR9Iktzooj7RJbmRBH3iSzNiSLuE1maE0XcJzIxH6pjBGlOFHGfyNKc
KOI+kaU5UcR9Iktzooj7RJbmRBH3iWw+0sd9IpvP9PEgzOZDfTwJs/lUH4/CbD7Wx7Mwy+f6GMF8
sI+nYTaf7ONxmM1H+3geZvPZPh6IWZoTRTwRszQningkZmlOFPFMzNKcKOKhmKU5UcRTMUtzoojH
Yubmq4UQAU9zoohzIpsLI86J/tTwv/1vX/gf/7+3PuG3bsdLKSvufH7r9qMnj2+9f37919X7O//b
rVtf/V9Xf3wId023/gjfdglX7PNVn//lj9dXL67+uHr37s31u89vfcJufSLDndWHP3avifTal2/+
+fL18/dXL279/X/5V6/fvHl/65MpNuF7vw4t+KrR6z+ubn19Hf7+N9xmhV8r/7v776+uo73mm7wN
/38+U5/40vpEh0YP3rx5e+sfV89fXF1/5p/n9fvnL1+XLu+lF8Mt3Kvdm+N7wvP+4+Wth29ehDD/
D+OH6f8I3fkZ+9//n//77fAz/yy8LMN1cPjRhV+r3a9F+jVPv5bT/wh3hbtfy/Ry+PLBcu1Xu977
7Na9D9fXV6/fv/pf976++/Pr66vnf/zj+d9fXeV7vy+u/nxzfbV/8Xf/te+td1d/hP4q3hKvAW9/
+eaDb37/n2+9o4fPX//n6Zu3//kqtP3s1tNHP8b/uRNGzsBbWf9bef9bRf9bZf9bVf9bdf9bTf9b
bf9b3UAKRtI1kC82kDA2kDE2kDI2kDM2kDQ2kDU2kDY2kDc+kDc+UmcDeeMDeeMDeeMDeeMDeeMD
eeMDeeMDeRMDeRMDeRMjE+RA3sRA3sRA3sRA3sRA3sRA3sRA3uRA3uRA3uRA3uTIyjaQNzmQNzmQ
NzmQNzmQNzmQNzWQNzWQNzWQNzWQNzWyJRnImxrImxrImxrImxrImx7Imx7Imx7Imx7Imx7Imx7Z
Sw7kTQ/kTQ/kTQ/kzQzkzQzkzQzkzQzkzQzkzQzkzYwcAgbyZgbyZgbyZgfyZgfyZgfyZgfyZgfy
ZgfyZgfyZkdObwN5swN5cwN5cwN5cwN5cwN5cwN5cwN5cwN5cwN5cyPH7qFz98jBexo5eU8jR+9p
5Ow9jRy+p5HT9zRy/J5Gzt/TyAF8Gsng2NXJSAaHLk+Gbk+Grk+G7k+GLlCGblCGrlBG7lDYyCUK
40O3XyMZHLlHYSMXKWzkJoWNXKWwkbsUNnKZwkZuU9jIdQobuU9hYugCcySDI1cqbOROhY1cqrCR
WxU2cq3CRu5V2MjFChu5WWEjVytMDt1Bj2Rw5HaFjVyvsJH7FTZywcJGbljYyBULG7ljYSOXLGzk
loWpoY8RRjI4ctHCRm5a2MhVCxu5a2Ejly1s5LaFjVy3sJH7FjZy4cL00CdBIxkcuXNhI5cubOTW
hY1cu7CRexc2cvHCRm5e2MjVCxu5e2Fm6MO8kQyOXL+wkfsXNnIBw0ZuYNjIFQwbuYNhI5cwbOQW
ho1cwzA79HnsSAZHbmLYyFUMG7mLYSOXMWzkNoaNXMewkfsYNnIhw0ZuZJgb+kh96DP1kQ/VR+5k
+MidDB+5k+EjdzJ85E6Gj9zJ8JE7GT5yJ8NH7mQ4G/paxEgGR+5k+MidDB+5k+EjdzJ85E6Gj9zJ
8JE7GT70vZahL7aMfbNlJIND320Z+nLL0Ldbhr7eMvT9lqEvuIzcyfCROxk+cifDxdCXk0YyOHIn
w0fuZPjInQwfuZPhI3cyfOROho/cyfCROxk+cifD5dD3y0YyOHInw0fuZPjInQwfuZPhI3cyfORO
ho/cyfCROxk+cifD1dBXBEcyOHInw0fuZPjInQwfuZPhI3cyfOROho/cyfCROxk+cifD9dC3PEcy
OHInw0fuZPjInQwfuZPhI3cyfOROho/cyfCROxk+cifDzdAXdUcyOHInw0fuZPjInQwfuZPhI3cy
fOROho/cyfCROxk+cifD7dB3rUcyOHInw0fuZPjInQwfuZPhI3cyfOROho/cyfCROxk+cifD3dDX
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
wr9P+PcJ/z7h3yf8+4R/n/Tvk6zF842QXprou2H5lrRe7la0Xp54u2zG8U4rWq9Iv+bzr9mK1ivT
rwVovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9o
vaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1
gtYLWi9ovaD1gtYLWi9ovaD1gtYLWi9ovaD1gtYLWm+VUcEXWi93O0aFiPySCwARXYL++QmcxNXo
Yf5XNm5pWi93N0brdbKP1qsESTr0oa9pSq5COpQd9KPQfRFw9k0n4MwVFFM3NeBH8vyAsxBLdN0J
UJ1WzUQfw0+yYxh+ixfZBd+UosIlCp63L/ITwjeXqGk2YlGHc9vKkNQXGBYJ9yfpuUQOzyWLcTte
s75tpYMcXbMy1+y3fTUbHe3VLFP1mlULUvnrN9d/XD168jhEd3sJuuiL/bHtDcb2F6j57JqEnyq1
JtAtbTsLXx1X+NmL7IJ3qlrhB88ngXe2hwJd8FK3+lOThabkcKFl44auj2A91sf9zvpgqqgP3uBC
Knv+8c0TyFDRlEQ1TDvPxvV0xOTFxXby0qwjORmb/l0ftDM62kuOaAD/ND9y8hKJ0qfF+ZObXUuy
/7VY939uq46Aflr+RxP6ySZzGPq5eKZRpcq2oqbXYq1GoZ+LcUuPwmA9Qj+/74R+euPlMGwArLUj
oZ9a3Sz0sxZLAf00E93bbhj66URl+2I6ZoDgK0E/H3RCP6Orvc6Xpt75hndBP8P6UI3qBqCfIbYY
iqCgn4aX0E+9gX66w9BP76oC/RQUU3M6BfRzE0sb+smpANlHQD974zg99DNfqIS1c+9CZYF+KrNA
PzVboJ/a7qCfhi3QT52gn06xO5/fuu3XtlvvvaOr93eqBNCpiQBVtz6xawSoSa8dQoD6AFYUUL1q
twJrzljRw/RNHQGiGwbngzdv3t76x9XzF1fXn/lHev3++cvXpct76cWQ0Ve7N8f3bBmeumR48umz
hPZMkE5uSoZnwFTHIpl/bUuGJ+cz2hMMTzA8wfAEwxMMTzA8wfAEwxMMTzA8wfAEwxMMTzA8wfAE
wxMMTzA8wfAEwxMMTzA8wfAEwxMMTzA8wfAEwxMMTzA8wfAEwxMMTzA8wfAEwxMMTzA8wfAEwxMM
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
RqXPG7rA5sOa5FqRNcPGNx/ZuD5ikbem0kGGLj6WF/mfOxd5W4ISnWwU3wVwrk6mx6ZwriG6df/N
bfnUWbjH4VyzF9a1yPNajbKT4VwrqSwWec7pfpWtfhVkwXA2XDDZuKTHOWfzOH/WOc5dgZXWE6+P
c67OPs511JnwrjXdp2p04V6MH3HS0FsRC2/IdiRHzTuAX/p2ALoUsdB1EQtv110gOS4+tpjIYuFu
039zW3ZuePzimS7xYkgVbekSF2yUALwY7yhxwWbo76+d0F9dakToukaEN1zymu+/qPuuXQb42Vn8
+1Xk7v7XCPS1FksxGQu6+IUaRvVrVtlGiI5thFCZ2/9bJ7dflwIQmutG59sKg7c+v1ejugECb4gt
huIOE3hDsCsC71TSdgOAV4SX2vxdHfQe1/zdHaG+gbed3Cn4u5tYmvxdYyn+7vQR/N3eOE7O313u
QsPqt3cXOkN3w1Zkhu6GhW+G7obZK0N3QzXt4LoiwXW1mBpw3SZb180k3BKtK/0/04XWFWusrpib
+98zHcz4f9b/82/mviX3TTn3//z7/DN+wv37uH8f9+/zD/oJ9+8T/n3Cv0/49wn/Pv/Unwj/PuHf
J/z7hH+f8O+T/n2StTC+kcurSIzvBt+74vOqks8bLmvDKDQzn1eXfN5QPuHXdv61WfF5p/RrBz4v
+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg
84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LP
Cz4v+Lzg84LPCz4v+Lzg84LPCz4v+Lzg84LPu2VSmImZHZ9XzUwK/6oOxBJ5fgRigFlE14wE1Mhp
lPi1GOcdfF51U3xe77ULP+LjEiQ/SfI1P0lU2Iayg3cUui8ize4+60KaRUd7xB3RwB3JCyDNREIf
yk5k6rRqZvqofVIdQ+1bvNgu3KY0FRJR8Lx9UZ8Qt7lETdMQizqc226HpLrAXCIT4E/Rc4kan0uy
cX5EzUpZ6SBB16zKNftFZ83KEkOoWL1m1QJR/vrN9R9Xj548DtHdXoIu+mJ/bHuDsf0Faj671mT/
qw1zLrftLHx1XOFnL7YL16lqha/UiXCd7aFAF7yaGv2pJ7rQ7HChZeOsoz7sXB/3OutDsbI+GiRI
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
em8y1svSjNVWDewgS9PZ9JAkjdQxNjxxZOM0jTRaj3PFV51zhbP7HSgn3uhASbA0y+cKLE05ytIM
ziO3UlMsTX0Klubm2QuWpqFiMh/B0jzg+vQsTbOwNO1Uv9zILE0/AjNL08+NmaXpK3vH0nRux9KU
iaUpJzXM0hQblqaiWZrB5Zqn+X8HliZfsTTVzMwUK5amnl+XJUuTmcTS1G7F0mRgaYKlCZYmWJpg
aYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKl
CZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYmWJpgaYKlCZYm
WJpgaYKlCZYmWJpgaYKlCZYmWJpV3ITbsTT5DjdhF9yEdpE3os7OJgqciuha0wyXYUjgYtx0sDT5
TbE0vdc+lqZjlsQN7RFOGtajIdcBqckUxG/6mEnR0R6khjUgNXw6/6BhEVToOAkq9NGt+y+35Uex
NHkjbO6m6bkNLM2HBUuTTWqSK8+CzrpqRU0jvDgfLpNsXNGjKFiPo+jbzlHEClqj5A3yFtfnH0U8
MbK4oftUjwK4FuPHlHgYtOsS5x0lzvVM8rrfSfKKnvaz0yAMigvUOI8cZCfoGhebGs9teRdLMxoY
Z2kuXkQPS9MHU0GcBc+nYGnWMrnP0nRC0lOnbnWrIgtGiGGW5mK9g/8nRGZpftfJ0vTWi5EuVGOk
G5KlGefAaki1/cO9QKT668ObD+9ukKS5Cb8kaQpLJ8iMAvGkqGw8RMesFFxFOt73fXS86GgvVZLV
UyUvMClJFh9b0qhSOQ0vw9k4P2LJkGybHNmBLpTTvJ4/6FzPg6P95DTYj5KeX+Rm2pYJuSjVGElz
aUefIaQaXsizcdPRmWpef3/oXX9lCYJUutGbtpukGaqtGtghkmZwHP3QLFJphyeO2bjqYJFKO88V
DzvnCqWLDtSN7aViFEmzeK5A0lTDJE09JZKmpaiV4iQkzfWzFyRNR8UkP4ak2XZ9epJmvtoIs2L9
amMhaappIWlKsZA0pVlImn7zsSNpqpmkqcUwSVNuSJq6j6QZ3K5pmv/NSZqTW5E0+UzMnFYkTTG/
zlYkTTmTNG1J0oxodZA0QdIESRMkTZA0QdIESRMkTZA0QdIESRMkTZA0QdIESRMkTZA0QdIESRMk
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
bqgdTN1h1Nl2ID/JpzxNtfvwpk8rmh7l03ia2vrYg/SJbXiQWswysU2cMF/MMMt6kFrc8I+rz3K4
cTnT8kkuRi0OtGZVv9q7c/eG5QXtik1r1llLlIcrppWHyz+VmnUrjqSuZl2Y1qnC96lZtwr3069Z
V92CbJeVy7YgqyyXaaRYK18XhrXydcVitXxdbCdJWSz7hJeUvTJfziVlrcyO80nZKsN+UpbKHDJI
yk4ZjpbK4JWSMnhemPv/bBm8UmMZvNLTL4NXDJuXwStGzcvgFUuuDJ4rg+fK4LkyeK4MniuD58rg
uTJ4rgyeK4PnyuC5MniuDJ4rg+fK4LkyeK4MniuD58rguTJ4rgyeK4PnyuC5MniuDJ4rg+fK4Lky
eK4MniuD58rguTJ4rgyeK4PnyuC5MniuDJ4rg+fK4LkyeK4MniuD58rguTJ4rgyeK4PnyuC5Mniu
DJ4rg+fK4LkyeK4MniuD58rguTJ4rgyeK4PnyuC5MniuDJ4rg+fK4LkyeJnK4JVqZfCK4VIGRUSQ
yDOo1WCpE3CX0tNaorVHyiatL1Wba10Gz2Kef6AyeJ4l4GQpgxcU8mm5bUFhZfZvY/O0lCVpKKqW
wcuamhs2xFeGYfMMmoL3LKQT6sjTM88K3jqCLKvNB+uaorDJFGWICSp4tTJ4mVMwjWv5JEV+i0kK
04/EW3Ekka/ORz9imY8aaborFNZeLKraupfLMB/V+lD/OWP+fdx4/WyUWsTXec8iLLmk+DkvNSw5
8NZRA6LWvLeeJVNaWbwo8NLDT+lpUgbvzayJ1qWGnLxSixAxL33xeyvDkksKT1uqRLfW9LVqA+HT
q6PX+pCjdG2E69FGckylDDMa1urnZZ/R+rQ0P9fiTOXn1jkp1iIN5FeNxMMxmvpq08N8GpF4rY89
fdn7+TXbaUy3cuH66UUV4FLtvTezeStMyyc5X2xxoM+gLpx1Bu4ge22RwOp4rD4HP1DtvVrvUuvK
1V9nV7/cZIafQf0Wv+CJO92j/HDttUVqzZfWcf7yCyvD/oMgwyWGH1Zri7z0ZsbaInAtXwhe87D/
IEi/v/BXlFq01vhy4UesLVIjTU1TD4LCmm8Ea61nuJ4ICsld0stvZrtLohJu3Wy0SOoMgqdQW8TY
aLyYPnDrqHtbaz7MMHK1ure/yHreptDo8rFrkXAeBM/g4YSf5IgH6bchwToKSVabT68l18xu/JVV
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
JF2P1uPcQZN7fq/UOr3Va5pgWswrvbWQFpRaeDrprcX8KumtXlqnvO+V3tqa++mnt1afutl147Kn
btX01ti0q+mt8RWjkiTtVX8pyLVQDXItFje2t23YZJ1oe3lXT/cHu7ti99q4lmzX7HmuxUJjNmvh
6WWzBqVlqatJxGpuWVyry1N1eaouT9Xlqbo8VZen6vJUXZ6qy1N1eaouT9Xlqbo8VZen6vJUXZ6q
y1N1eaouT9Xlqbo8VZen6vJUXZ6qy1N1eaouT9Xlqbo8VZen6vJUXZ6qy1N1eaouT9Xlqbo8VZen
6vJUXZ6qy1N1eaouT9Xlqbo8VZen6vJUXZ6qy1N1eaouT9Xlqbo8VZen6vJUXZ6qy1N1eaouT9Xl
qbo8VZen6vJUXZ7qymSHYtEPaskOfmkp2cG3eA6/lsTz8vs93R1bewhtUBrM8jSWaq7DyoAPP58a
UuM3JPQFGUJqmlIVvndn0xN1/MLaI9maUtUiP+2dN369FH3SLPdDuXd+sCyS58Xud/fuLMddbJYj
0ryN1rklfkpuSVBqHaby6//ULPsnNUalReqhnyFi1ASzlkiXd5b3JW004uYzhH/5hSTw7sXfZgy8
a3nA0ZoXiJdFc4qw9EtpiTS5VjPrbfj5b1edWb/FzDbkbIUtAneD3HpmevUg43dWBhmndWf5zAdp
0V8/S6g2bPz7F5ba46vpSaRBfu1hXNXWMySRWvOEcb3024xhXGFD8G7YIowr8Ndsi5mOTWFSQZB5
uUUbXs58bA2xz2HY4tiKKVP+D7u2lbd37jL51Vrii2H6hBfXfq6oth5lmPBi4kG/yOpBYVg/KFGL
0M1gzalcUU6pXMGqdmP2/nRSuRqPpO7sVkzrVPC9Urlacz/lVK66a7egmsplg1yL4gqiWhRXECxF
cXnVKK647+1ryd0ixusnxfyK/C2/Zf6W15i/5bXM3/K/d/5WcVnYVpKIz9goiysIl8VzJRlxjFfy
dvQzm/Oltz29HbjYLhfb5WK7XGyXi+1ysV0utsvFdrnYLhfb5WK7XGyXi+1ysV0utsvFdrnYLhfb
5WK7XGyXi+1ysV0utsvFdrnYLhfb5WK7XGyXi+1ysV0utsvFdrnYLhfb5WK7XGyXi+1ysV0utsvF
drnYLhfb5WK7XGyXi+1ysV0utsvFdrnYLhfb5WK7XGyXi+1ysV0utsvFdrnYLhfb5WK7XGyXi+1y
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
3fiYuq2zGzpiQXdu3di2IT6sXfF66ix3b2xva9vSsa3tH3Z1bu3aVm7b+l5Hd8fWuDdtnbvaZBt+
9qbe7urp2NFW7u7uio9mzd9e+zf+/Zq/8ZPl32j0VW9bh9/R0cxXzU5//sv2X+zdxWwmhpqPSoXS
Go7v79ryq9H7QZgLvO0tbL0QFMNyZLa+tbEfQfxmPns/8msetef/t73p4xauY9xWnNmiclQIO1oN
ge9v8WwIXnql/cXu7o4Pqie2+K186/aiYov2il6wtYP2Xq9rL58Lcv4q/dvSor381o6t0Tr6V27V
XuBHW9fRv62rHG9h7f3raDV+gR9P1Tr6t61Fe9H2vM+Vy9r6t61V//Jbcrn1zG95lfErrnn8PK9V
/wpRyS+uvX9RrkV7WzpKubWPn+d1tNZzYR36i1pdmZa2r71/8QDlvVXWR2Ed/Su0mo/S2vUS968Q
tmrP27J9HfqL/JbrI/LXMX6FVn4Qbo/va9bRv6Bl/4J1zG+HV27Zv/guZ239+x53RstPh5vKO3Yk
p7ZtJb9c5Eu/q53HFORoN0nVHnlNv13oKAVbclvt25s+aN/8wc4tXTveXv616LmXynvia8RtbX+o
3bwk125LdzNte8rxi1whFPMlW//Lbn3yUfJHqaMc5iK++uquHZ27ysuaXGqh4OW256IwacH+KAT6
w9tWDrb73rJ3iv6yP/K5ZX9EuaXvlIteLmHdHl/5xYfye12BtvHqz/duj19u+31n+Q/VlzRf8WV0
1+5yd88HbVu7dm3rtGGNP/CzH2gy2y1Qc0/Zoi27titus62jp63g+Wqtoye+4ImbLO9py/39Cz8g
7cv/dW9nPABV5t/sUjM/zDnrafb0tZ4mPV23uz3Nnr6+rfmYru866qmO6Y4WY7ouR36aPU3u/14r
WyutBnh9F75Ps9tvbm0hhXVd8v9oA9yq2+u783mqa21H056u85r2x1PwjhYDvK5L+x+t263OFuu7
Y/rRuv3azharcF03Ak+z2+UYr+jr93vu8lTPH3ubnj/WecX8g/Z0+eVV/Hb5fV1eBT/u5VW9DFss
+vXdTz210eLx6KalK1Lvxx2y17paOPq6ngI81Z7ubH71tL7nAT+eDLtayHBdj22e7qJ9VRLMP8tV
u7fFcK3rKcNTvZdrcdW2vuejP95FRauLzXU9Jn66evyV9Fh4lnrsaaHHdT01/Pvnln7303OdpT61
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
EBwPDMGxYAgOm3PW+Tc256zzb2wuWeff2Fyyzr+xuWSdf/OZITgeGYLD5pd1/vhDQ8bxeJ8h43gc
e3HAOn98wJBxPD5oyDgeHzJkHI8PGzKOx0cMGcfjo4aM43GvITiOGYLjhCE4Yt8NWOePTaes88em
Ndb5Y9Ma6/yxaY11/ti0xjp/bFpjnT82rbHOH5vWWOePTWus88emNdb5Y9Ma6/yxaY11/ti0xjp/
bFpjnT82rbHOH5vWWOePTWus88emNdb5Y9Ma6/yxaY11/ti0xjp/bFpjnT82rbHOH5vWWOePTWus
88emNdb5Y9Ma6/yxaY11/ti0xjp/HGutyDp/fMcQHHcNwTFtCI4ZQ3DMGoLjniE45gzBcd8QHPOG
4Ii1VmSdP14wBMdHhuD42BAcnxiC46EhOD41BMdnhuB4ZAiOzw0Zx7ex1oqs82/3GTKOb/cbMo5v
Dxgyjm8PGjKObw8ZMo5vDxsyjm+PGDKOb48aMo5vew3BEWutyDr/9rghOPoMwXHCEBwnDcFxyhAc
/YbgOG0IjgFDcJwxBEesPzYdP//toCE4zhmC47whOIYMwXHBEBzDhuC4aAiOS4bguGwIjlh/Rdb5
t1cMwTFqCI6rhuAYMwTHNUNwjBuCY8IQHJOG4LhuCI5Yf0XW+bc3DMFx0xActwzBYfpjnX9r+mOd
f2v6Y51/a/pjnX9r+mOdf2v6Y50/sTlnnT+xOWedP7E5Z50/sTlnnT+xOWedP7E5Z50/sTlnnT+x
OWedP7E5Z50/sTlnnT+xOWedP7E5Z50/sTlnnT+xOWedP7E5Z50/sTlnnT+xOWedP7E5Z50/sTln
nT+xOWedP7E5Z50/sTlnnT+xOWedP7E5Z50/sTlnnT+xOWedP7E5Z50/sTlnnT+xOWedP7E5Z50/
iec8ZJ0/uWIIjlFDcFw1BMeYITiuGYJj3BAcE4bgmDQEx3VDcMRzHrLOn9wwBMdNQ3DcMgTHbUNw
3DEEx11DcEwbgmPGEByzhuCIPSdknT+ZMwTHfUNwzBuC4xNDxvHd6IcGA+A+g0XgfoMh8IDBCHjQ
YAkYayVktX83ethgHnjEYAF41KAH7DUotmMGxXbcoNj6DIrthEGxnTQotlg1oS+2foNiO21QbAMG
xXbGoNjOGhTboEGxnTMotvMGxTZkUGyxfsJAbMMGxXbRoNguGRTbZYNiMxEFYjMVBWIzGQViMx0F
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
L4HFexks3hGweK+AxTsKFu9VsHhNn9pYu3j8Gli842DxToDFOwkW73WweKfA4r0BFu9NsHhvgcVr
+tRm28Xjd8DivQsW7zRYvDNg8c6CxXsPLN45sHjvg8U7Dxavea824C4eXwCL9yOweD8Gi/cTsHgf
gsX7KVi8n4HF+wgs3s/B8PaZnrUpd7FvHxjevv1gePsOgOHtOwiGt+8QGN6+w2B4+46A4e07Coa3
rxcsXtO8Nuou9h0Hi7cPLN4TYPGeBIv3FFi8/WDxDoDFewYs3rNg8ZrOtXl3sQ9ty6/60Lb8qg9t
y6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/6
0Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8
qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/60Lb8qg9ty6/6TNvaDLx4
4kMwvCf2geE9sR8M74kDYHhPHATDe+IQGN4Th8HwnjgChvfEUTC8J0zb2iC8eOIYWLzHweLtA4v3
BFi8J8HiPQUWbz9YvKfB4h0Ai9d0rk3DiyfOgsU7CBbvObB4z4PFOwQW7wWweIfB4r0MFu8IWLym
c20kXjzJOMuvTjLO8quTjLP86iTjLL86yTjLr04yzvKrk4yz/Ook4yy/Osk4y69OMs7yq5OMs/zq
JOMsvzrJOMuvTjLO8quTjLP86iTjLL86OQoW71WweMfA4rV1qg3HiyfHweKdAIt3Eize62DxToHF
ewMs3ptg8d4Ci/c2WLy2TrUJefHkXbB4p8HinQGLdxYs3ntg8c6BxXsfLN55sHgfgMVr61QbkxdP
fgQW78dg8X4CFu9DsHg/BYv3M7B4H4HFyzqVX51CP/KrU+hHfnUK/civTqEf+dUp9CO/OoV+5Fen
0I/86hT6kV+dQj/yq1PoR351Cv3Ir06hH/nVKfQjvzqFfuRXp9CP/OoU+pFfnWKdyq9OsU7lV6dY
p/KrU6xT+dUp1qn86pStU21qXjx1Dize82DxDoHFewEs3mGweC+CxXsJLN7LYPGOgMVr61cbnRdP
jYLFexUs3jGweK+BxTsOFu8EWLyTYPFeB4t3Cixe0782Py+eugkW7y2weG+DxXsHLN67YPFOg8U7
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
nUP/8qtz6F9+dQ79y6/OoX/51Tn0L786j/7lV+fRv/zqPPqXX51H//Kr8+hffnUe/cuvzqN/+dV5
9C+/Oo/+5Vfn0b/86jz6l1+dR//yq/PoX351Hv3Lr86jf/nVefQvvzqP/uVX59G//Oo8+pdfnUf/
8qvz6F9+dd70n+xvP38OLN7zYPEOgcV7ASzeYbB4L4LFewks3stg8Y6AxWv6T/a3nx8Fi/cqWLxj
YPFeA4t3HCzeCbB4J8HivQ4W7xRYvKb/ZH/7+Ztg8d4Ci/c2WLx3wOK9CxbvNFi8M2DxzoLFew8s
XtN/sr/9/H2weOfB4n0AFu8CWLwfgcX7MVi8n4DF+xAs3k/B4jX9J/vbzz8Ci/dzMLxDH4LhHdoH
hndoPxjeoQNgeIcOguEdOgSGd+gwGN4h03+yv33oKBjeoV6weI+BxXscLN4+sHhPgMV7EizeU2Dx
9oPFa/pP9rcPDYDFewYs3rNg8aJ/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/
+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ
+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdfDaF/+dUQ+pdf
DaF/+dUQ+pdfDZn+k/3tQ5+AxfsQLN5PweL9DCzeR2Dxfg6G98KHYHgv7APDe2E/GN4Lpv9kf/uF
g2B4LxwCw3vhMBjeC0fA8F44Cob3Qi9YvMfA4j0OFm8fWLym/2R/+4WTYPGeAou3Hyze02DxDoDF
ewYs3rNg8Q6CxXsOLF7Tf7K//cIQWLwXwOIdBov3Ili8l8DivQwW7whYvFfA4h0Fi9f0n+xvvzAG
Fu81sHjHweKdAIt3Eize62DxToHFewMs3ptg8Zr+k/3tF26DxTsNFu8MWLyzYPHeA4t3Dize+2Dx
zoPF+wAsXtN5sr/9wkdg8aJz+dUFdC6/uoDO5VcX0Ln86gI6l19dQOfyqwvoXH41jLblV8NoW341
jLblV8NoW341jLblV8NoW341jLblV8NoW341jLblV8NoW341jLblV8NoW341jLblV8NoW341jLbl
V8NoW341jLblV8NoW341jLblV8NoW341jLblV8NoW341jLblV8NoW341jLblV8NoW341jD7lV8Po
U341jD7lV8PoU341jD7lV8Omz2R/+/AkWLzXweKdAov3Bli8N8HivQUW722weO+AxXsXLF7TbbK/
fXgGLN5ZsHjvgcU7BxbvfbB458HiJZ1cfjVMPrn8apiEcvnVsOk22d8+/AlYvA/B4v0ULN7PwOJ9
BBbv52B4L34IhvfiPjC8F/eD4b1oGk72t188CIb34iEwvBcPg+G9eAQM78WjYHgv9oLFewws3uNg
8faBxWsaTva3XzwJFu8psHj7weI9DRbvAFi8Z8DiPQsW7yBYvOfA4jUNJ/vbLw6BxXsBLN5hsHgv
gsV7CSzey2DxjoDFewUs3lGweE3/yf72i2Ng8V4Di3ccLF70L7+6iP7lVxfRv/zqIvqXX11E//Kr
i+hffnUR3cqvLqJb+dVFdCu/uohu5VcX0a386qJS9cWLbuVXF9Gt/OoSGpNfXUJj8qtLaEx+dQmN
ya8uoTH51SU0Jr+6hMbkV5fQmPzqEhqTX11CY/KrS2hMfnUJjcmvLqEx+dUldCW/uoSu5FeX0JX8
6hK6kl9dQlfyq0voSn51CV3Jry4xp/KrS8yp/OrSGDUGxHsNLN5xsHgnwOKdBIv3Oli8U2Dx3gCL
9yZYvLfA4r1NRQPx3gGL9y5YvNNg8c6AxTsLFu89sHjnwOK9D4b38odgeC/vo34CvJf3g+G9fAAM
7+WDYHgvHwLDe/kwGN7LR8DwXj4KhvdyL1i8x8DiPU61BvH2gcV7Aizek2DxngKLtx8s3tNg8Q6A
xXsGLF6qO8ivLl+lNoR4mWv51WXmWn51mbmWX11mruVXl5lr+dVl5lp+dZm5ll9dZq7lV5eZa/nV
ZeZafnWZuZZfXWZ+5VeXmV/51WXmV351mTmVX11mTuVXI8yj/GqEeZRfjTCP8qsR5lF+NcI8yq9G
mEf51QjzKL8aYR7lVyPMo/xqhHmUX40wj/KrEeZRfjXCPMqvRphH+dUI8yi/GmEe5VcjzKP8aoR5
lF+NMI/yqxHmUX41chYs3kGweM+BxXuemh7ipUqI/GqEOiHyqxEqhcivRqgVIr8aoVqI/GqEeiHy
qxEqhsivRlQzRLzoSn41gq7kVyPoSn41gq7kVyPoSn41gq7kVyPoSn41gq7kVyPoSn41gq7kVyPo
Sn41cot6JeK9DRbvHbB474LFOw0W7wxYvLNg8d4Di3cOLN77YPHOUx1FvA/A4l0Ai/cjsHg/Bov3
E7B4H4LF+ylYvJ+BxfsILN7PqcUC75UPwfBe2QeG98p+MLxXDoDhvXIQDO+VQ2B4rxwGw3vlCBje
K0fB8F7ppfKLeI+BxXscLN4+sHhPgMV7EizeU2Dx9oPFexos3gGweM9QZ0a858HivQQW72WweEfB
4qWWjfzqCtVs5FdXqGcjv7pCRRv51RXVtBGvqtqIl7o28qsrVLaRX12hto38apRxkF+NMg7yq1HG
QX41yvHKr0Y5XvnVKMcrvxrleOVXFhBaSPa3W0JoIdnfbhGhhWR/+yhjIr+ykNBCsr/dUkILyf72
UcZEfjXKmMivRhkT+dUoYyK/GmVM5FejjIn8apQxkV+NMibyq1FV+xEvYyK/GqXij/xqlHUqvxpl
ncqvRlmn8qtR1qn8apR1Kr8aZZ3Kr0ZZp/KrUdap/GqUdSq/GmWdyq9GWafyq1HWqfxqlHUqvxpl
ncqvRlmn8qtR1qn8apR1Kr8aZZ3Kr0ZZp/KrUdap/GqUdSq/uso6lV9Zlmkh2d9uYaaFZH+7pZkW
kv3tFmdaSPa3W55pIdnfboGmhWR/uyWaFpL97RZpWkj2t1umaSHZ326hpoVkf7ulmhaS/e0Wa1pI
9rdbrmkh2d9uwaaFZH+7JZsWkv3tFm1aSPa3W7ZpIdnfbuGmhWR/u6WbFpL97RZvWkj2t1u+aSHZ
324Bp4Vkf7slnBaS/e0WcVpI9rdbxmkh2d9uIaeFZH+7pZwWkv3tVy+BxXsZLN4RsHivUEVKvKNg
8V4Fi3cMLN5rYPGOg8U7ARbvJFi818HinQKL9wY1q8R7Eyxeal7Jr65S9Up+dZW6V/Krq1S+kl9d
Ve0r8VL9Sn51lfpX8qurVMCSX12lBpb86ipVsORXV+fB4n0AFu8CGN6xD8HwjqFP+dUY+pRfjaFP
+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY
+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRf
jaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP+dUY+pRfjaFP
+dUY+pRfjaEx+dUYGpNfWRhvIdnfPjYHFu99sHhVa028VFuTX41Rb01+NUbFNfnVGDXX5FdjVF2T
X41Rd01+NUblNfnVGLXX5FdjVF+TX419Dob32odgeK/tA8N7bT8Y3msHwPBeOwiG99ohMLzXDlMj
Dt5rR8DwXjsKhvdaL1i8x8DiPQ4Wbx9YvCfA4j0JFu8psHj7qUgn3tNg8Q6AxXsGLN6zYPEOgsV7
Dize82DxDoHFewEs3mHq34n3Ili8l8DivQwW7whYvFfA4h0Fi/cqWLxjYPFeA4t3nGp74p0Ai3cS
LN7rYPFOgcV7Ayzem2Dx3gKL9zZYvHfA4r1LbT/xToPFOwMW7yxYvOhffnUN/cuvrqF/+dU19C+/
GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH
8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtx
dCi/GkeH8qtxdCi/GkeH8qtxdCi/GkeH8qtxtCe/Gr9KTUbxjoHFew0s3nGweCfA4p0Ei/c6WLxT
YPHeAIv3Jli8t6gAKd4ZsHhnweK9BxbvHFi898HinQeL9wFYvAtg8X4EFu/H1JsU7ydg8T4EwztB
hUn51QQ1JuVXE1SZlF9N9ILhnTgGhnfiOBjeiT4wvBMnqG4Jr6WIF5L97RYjXkj2t0/0g8V7Gize
AbB4z4DFexYs3kGweM+BxXueWpriHQKL9wJYvMNg8V4Ei/cSWLyXweIdAYv3Cli8o2Dxoiv51QS6
kl9NoCv51QS6kl9NoCv51QS6kl9NoCv51QS6kl9NoCv51QS6kl9NoCv51cRtsHjvgMWL3uRXE+hN
fjWB3uRXE+hNfjWB3uRXk1QulV9NUrtUfjVJ9VL51ST1S+VXk1QwlV9NUsNUfjWpKqbwTqIx+dUk
GpNfTaIx+dUkGpNfTaIx+dUkGpNfTaIx+dUkGpNfTaIx+dUkGpNfTaIx+dUkGpNfTaIx+dUkGpNf
TaIx+dUkGpNfTaIx+dUkGpNfTaIx+dUkGpNfTaIx+dUkGpNfTaIx+dUkGpNfTaIx+dXkKPVdxXsV
LN4xsHivgcU7DhbvBFi8k2DxXgeLdwosXqrAyq8mqQMrv5qkEqz8anIGLN5ZsHjvgcU7BxbvfbB4
58HifQAW7wJYvB9Ru1a8H4PF+wlYvA/B4v0ULN7PwOJ9BBbv52B4r38Ihvf6PjC81/dTKRfe6wfA
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
PuVXs+hTfjWLPuVXs+hTfjWLPuVXs+hTfjWLPuVXs+hTfjWLPuVXs+hTfjWL9uRXs2hPfjWL9uRX
s2hPfjWL9uRXs2hPfjWL9uRXs2hPfjWL9uRXs2hPfjWL9uRXs2hPfjWL9uRXs2hPfjWL9uRXs2hP
fjWL9uRXs2hPfjWL9uRXs6a9ZH/77FWweMfA4r0GFu84WLwTYPFOgsV7HSzeKbB4b4DFa9pL9rfP
3gKL9zZYvHfA4r0LFu80WLwzYPHOgsV7DyzeObB4TXvJ/vbZebB4H4DFuwAW70dg8X4MFu8nYPE+
BIv3U7B4PwPDO2c6Sfa3z50Gwzs3AIZ37iwY3rlBMLxz58Dwzp0Hwzs3BIZ37gIY3rlhsHhNG8n+
9rlLYPFeBot3BCzeK2Dxog351RzakF/NoQ351RzakF/NoQ351RzakF/NoQ351RzakF/NoQ351Rza
kF/NoQ351RzakF/NoQ351RzakF/NoQ351RzakF/NoQ351RzakF/NoQ351RzakF/NoQ351RzakF/N
oQ351Rx6kF/NoQf51X3zqGR/u5X/9ZL97ff3g+G9fwAM7/2DYHjvHwLDe/8wGN77R8Dw3j8Khvd+
L1i8dg5N9rffPw4Wbx9YvCfA4j0JFu8psHjRp/zqPvqUX91Hn/Kr+2fA4kWr8qv7aFV+dR+tyq/u
o1X51X20Kr+6j1blV/fRqvzqPlqVX91Hq/Kr+2hVfnXftJrsb79/BSzeUbB4r4LFOwYW7zWweMfB
4p0Ai3cSLN7rYPGaVpP97VbT2Uv2t9+/CRbvLbB4b4PFewcs3rtg8U6DxTsDFu8sWLym1WR/+/05
sHjvg8U7DxbvA7B4F8Di/Qgs3o/B4v0ELN6HYPGajyX7261atZfsb7//CCzez8Hwzn8Ihnd+Hxje
+f1geOcPgOG1stdesr99/hAY3nnTf7K/ff4IGN75o2B453vB4j0GFu9xsHj7wOI9ARbvSbB4T4HF
a/pP9rfPnwaLdwAs3jNg8Z4Fi3cQLN5zYPGeB4t3CCzeC2Dxmv6T/e3zF8HivQQW72WweNG//Goe
/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv
5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG/
/Goe/cuv5tG//Goe/cuv5tG//Goe/cuv5tG//Goe/cuvHqB/+dUD9C+/soLrXrK/3Sque8n+9gcH
wfBa+XUv2d9u9de9ZH+7FWD3kv3tVoHdS/a3Wwl2L9nfbjXYvWR/uxVh95L97VaF3Uv2t1sZdi/Z
32512L1kf7sVYveS/e1Wid1L9rdbKXYv2d9utdi9ZH+7FWP3kv3tVo3dS/a3Wzl2L9nfbvXYvWR/
+4PzYPEOgcV7ASzeYbB4L4LFewks3stg8Y6AxXsFLF7Tf7K/3Wq3e8n+dive7iX72616u5fsb7fy
7V6yv93qt3vJ/nYr4O4l+9utgruX7G+3Eu5esr/darh7yf52K+LuJfvbrYq7l+xvtzLuXrK/3eq4
e8n+divk7iX7262Su5fsb7dS7l6yv91quXvJ/vYH98DinQOL1/Sf7G+30u5esr/dart7yf52K+7u
Jfvbrbq7l+xvt/LuXrK/3eq7e8n+divw7iX72x98ChbvZ2Dxmv6T/e0PPgfDa2XgvWR/u9WB95L9
7QvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvo
X361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361
gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lVwvoX361gP7lV1bR3kv2t1tJ
ey/Z32417b1kf7sVtfeS/e1W1d5L9rdbWXsv2d9ude29ZH+71bX3kv3tVtfeS/a3W117L9nfvmD6
T/a3L8yCxXsPLN45sHjvg8U7Dxbvp2DxfgYW7yOweD8Hw/uJjXOyv/2Ty2B4PxkBw/vJFTC8Dz8B
w/vwIRjeh/DKrx7CK796CK/86iG8+FXF6sh72t9esTrynva3V6yOtqf97ZV9jAN+VbF6xJ72t1es
HrGn/e0Vq0fsaX97xeoRe9rfXtmvdiLwIBheq0fsaX97xeoRe9rfXrF6xJ72t1esHrGn/e0Vq0fs
aX97xeoRe9rfXtnPuOFXlQMTYHgPoB/8qnIA/eBXlQPoB7+qHEA/+FXlAPrBryoH0A9+VTmAfvCr
ygH0g19VDqCfQLzoJxAv+sGvKgfRDH5VOWhep/3tlYPMEX5VOcgc4VeVg8wRflU5yBzhV5VDh8Dw
HjoMhvfQETC8h46C4T3UC4b3kPmM9rdXDh8Aw3v4IBhenrtqf3uF567a317huav2t1dm9F14Z/Rd
eHnuqv3tFZ67an97heeu2t9e4bmr9rdXeO6q/e0Vnrtqf3uF567a317huav2t1d47qr97RWeu2p/
e4XnrtrfXuG5q/a3V3juqv3tFZ67an97heeu2t9e4bmr9rdXeO6q/e0Vnrtqf3uF567a317huav2
t1d47qr97RWeu2p/e4XnrtrfXuG5q/a3V3juqv3tFZ67an97heeu2t9e4bmr9rdXeO6q/e0Vnrtq
f3uF567a317huav2t1d47qr97RWeu2p/e4XnrtrfXuG5q/a3V3juqv3tFZ67an97heeu2t9e4bmr
9rdXeO6q/e0Vnrtqf3uFZ63a317hWav2t1d41qr97RWetWp/e4VnrdrfXuFZq/a3V3jWqv3tFZ61
an97ZeYjsHg/BovXfE/72yszD8Hi/RQs3s/A4n0EFu/nYHh5lqv97RWe5Wp/e4VnudrfXuFZrva3
V3iWq/3tFZ7lan97hWe52t9e4Vmu9rdXeJar/e0VnuVqf3tl9hhYvMfB4u0Di/cEWLymee1vr/C8
V/vbKzzv1f72Cs97tb+9wvNe7W+v8LxX+9srPO/V/vYKz3u1v73C817tb6/wvFf72ys879X+9grP
e7W/vcLzXu1vr/C8V/vbKzzv1f72Cs97tb+9wvNe7W+v8IxX+9srPOPV/vYKz3i1v73CM17tb6/w
jFf72ys849X+9grPeLW/vcIzXu1vr/CMV/vbKzzj1f72Cs94tb+9wjNe7W+v8IxX+9srPOPV/vYK
z3i1v73CM17tb6/wjFf72ys849X+9grPeLW/vcIzXu1vr/CMV/vbKzzj1f72Cs94tb+9wjNe7W+v
8IxX+9srPOPV/vYKz3i1v73CM17tb6/wjFf72ys849X+9sosmpdfzaJ5+dU9NC+/umea1/72yr39
YHjvHQDDe+8gGN57h8Dw3jsMhvfeETC8946C4b3XCxbvMbB4TfPa31651wcW7wmweE+CxXsKLN5+
sHhPg8U7ABbvGbB4z4LFa5rX/vbKvXNg8Z4Hi3cILN4LYPEOg8V7ESzeS2DxXgaLdwQsXvN57W+v
3BsFi/cqWLxjYPFeA4t3HCzeCbB4J8HivQ4W7xRYvKZ/7W+v3LsJFu8tsHhvg8V7Byzeu2DxToPF
OwMW7yxYvPfA4jX9a3975d59sHjnweJ9ABbvAli8H4HF+zFYvJ+AxfsQLN5PweI1/Wt/e+XeI7B4
PwfDO/chGN459C+/mkP/8qs59C+/mkP/8qs59C+/mkP/8qs59C+/mkP/8qs59C+/mkP/8qs59C+/
mkP/8qs59C+/mkP/8qs59C+/4rcb7W+v8NuN9rdX+O1G+9src+hffsXvONrfXuF3HO1vr/A7jva3
V/gdR/vbK/yOo/3tFX7H0f72Cr/jaH97hd9xtL+9wu842t9e4Xcc7W+v8DuO9rdX+B1H+9sr/I6j
/e0VfsfR/vYKv+Nof3uF33G0v73C7zja316x31987W+v2O8vvva3V+z3F1/72yv2+4uv/e0V+/3F
1/72iv3+4mt/e8V+f/G1v71iv7/42t9esd9ffO1vr9hvKL72t1fsNxRf+9sr9huKr/3tFfsNxdf+
9or9huJrf3vFfkPxtb+9Yr+h+NrfXrHfUHztb6/Ybyi+9rdX7DcUX/vbK/Ybiq/97RX7DcXX/vaK
/Ybia397xX5D8bW/vWK/ofja316x31B87W+v2G8ovva3V+w3FF/72yv2G4qv/e0V+w3F1/72iv2G
4mt/e8V+Q/G1v71iv6H42t9esd9QfO1vr9hvKL72t1fsNxRf+9sr9huKr/3tFfsNxdf+9or9huJr
f3vFfkPxtb+9Yr+h+NrfXrHfUHztb6/Ybyi+9rdX7DcUX/vbK/Ybiq/97RX7DcXX/vaK/Ybia397
xX5D8bW/vWK/m8Q4/OcX2l7v2vVid3fHBy+0vdnd1dPVnns/X+goFLayI+ilzq09nV27Orrjt18r
d2z/359ri//3717c2v6Lvbt4q23pf3/XFn/X21YOtnvbcu3/pfqJF9r+uKtjZ7mdLc07yrve7Xkv
xvkW1KXtxS2IeTnd72p0L79f3rq3p2PLjrLoCl5uey4oL6Nb+kRMXEeyrMWf/3L1AwgK9QewemeT
Rjd90L75g51buna8Tf+WN0o343uR9v+y7BOr9O+lV9p5sa3uf7X+lQMb4ORr1gjwnc6e9wCbe7q6
O94t181obJT85rqc5PXVSYp+C5JNXbt6Ot/d27V3TxOK//25517cvPnlt95+9Y3X237x4quvvfxS
e9ueno6ezq3/tLVjT8/PXu/aVv5f/37Drr07duzu6d7Y9nd/11be1dP9we6uzl09//7vf9/R3Wmj
s+fFnl+WO7b9hx1dWzt2bOjc+NxP/7Frx96d5T0/famjp+OnL7+z+afvlLf8urPnp5u79nZvLf/0
Vx2/79i8tbtzd8+mru7yT7dtf/enL/3ilX/s2NG5raOn/B+27t69oZTf2Nbe9vuuzm1tv9q8qb09
fr+9fUPHrq5dH+yMj6bNdLpnd8fW8sb29uoX29t/n6ANG5/LxwMUH2susgCIUq7tnbd/sam7Y897
zxWSN+L77vyWXMc6m/eWtRLfJS9rpfahpZde6e7Y/d7/8kJbwysv7d25+zfxEL9gnWtv37S5p7tz
17sbn/OrbYeFLeWt0bKvvbmjY1d7+9aunbs7d5Rf3fX2e93xuL+6c/eOuEfB0rc6oo5tad9a1j29
YHP1v258rlg7sC3FLVF5WTPvdHX/bkfnnp7qF37ete2D9vY/xK/G7OHScG/r6CjriF7c29O10+Sk
L7S3x+Lq7tmg97bs6enu2NrzWtfW35W727Z27drT87/Eo/38P+Xa27t2l7s74qWxYeOGjXrruWgZ
QRhtFUF13f8MoWzY+PfxKHbs2GGifCce4biVn32fjsTNxYq2wS3V2Du25MvlluxNOp7PVb+6PSpE
HfpqtR8spzdtOW2oe/318h8EbQGX3++JJyafr7WzbXs+UDt/6Nmuz7281JD1xj5fsM+H27dvj6+g
w1yptK3tn3b38OF/2hJP3XN5r/4D+Y7GD/jLPlAse0G+LXmb4XvuJ5veenHzL19+6bn/F1BLAwQK
AAAAAAC3pQ9LAAAAAAAAAAAAAAAAHAAcAHNwdXRuaWsvVW5pY29kZS9Vbmljb2RlXzMyMC9VVAkA
A+q/k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIALelD0v4/aNNlUUCAIM+IwAzABwAc3B1
dG5pay9Vbmljb2RlL1VuaWNvZGVfMzIwL1M3LjZfQTMuMS1jcmFzaC1sb2cudHh0VVQJAAPqv5NZ
6r+TWXV4CwABBPUBAAAEFAAAAOxda3PbOJb9vPkV3HJtFbXldIh7ARJQZ1J2nDiPTifpOI951NSU
LNOxJo7kkuh0UtU1v33BhySIogieKWu/DPuDW5FAgDj3iuA5lzp4PQvG89HiKriefQ4uZ7fTC/t3
Hjy5/XrzLp1epPP38zQdspCkf7p3b5FdzG6zYfEinc/ti3v3jjN77JiDyTR4bF98CQ5iGgbfRteT
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
0IPVCOtbmeZ7GY5BOLT3Xqa4meGk41R0+GvbVEx1M+PezfCOjNL/3xnFZeSNc90t3Y8/VhbRW3PW
29de9+tbGjqH+eXyIndx1lGBxfH5YnZ9ay+oKlJaCBnrPMK77sbKs5JRpyvyZQRfkXk7caXwJP9G
Fu3ogyDlRRZpJn3fZkng1bHqV/rSV1J1QXzd4YIo3fSVzekrV/Tq5e3Xm3Wk3g8PxPZtkCyCvHRj
rmB8PB9Nx1dPbACLxe2w0aV5acZ8fJnlFs9rL+YtjY3i0lv5iEvj5CNVuiIfJaXl8RGp0tD4SOjS
rviIqDQjPpKytBo+YlUaCR9xsvLqFoVXt53CEPHnLo23Nyy6KThQO126Nx28C0fv/xSX7rdXkyD3
sl/kDuo6Fg+Le3nx6P6j0AbN5mT+Lj0s6Ez1LlXv8sP81rN6Nxr0lt+95Xdv+d1bfveW373ld2/5
3Vt+95bfveV3b/ndW373lt+95Xdv+d1bfveW373ld2/53Vt+95bfveV3b/ndW373lt+95Xdv+d1b
fveW373ld2/53Vt+95bfveV3b/ndW373lt+95Xdv+d1bfveW373ld2/53Vt+95bfveV3b/ndW373
lt+95Xdv+d1bfveW373ld2/53Vt+95bfveV3b/ndW373lt+95Xdv+d1bfveW373ld2/53Vt+95bf
//GW34miqDIeyj1tKsch+25unyO9Rov5Mc1ei173x3c198e6g5NjwigTjxOWjDedsEojJ7nyTzyd
zcfpm7N3uSGVa8bq2D9Vxl/rg43HOev17fW10175LAWlAS3wqn69LoLSVPZ1bzvY10nXvk4129cp
cqwgj+fz0Y/Ht5eX6Xxj+tHwb/b/lkEGsToMqpcmd28sjvg0ya6KNzu6Oe40XlOFdZjyWZIp1FFP
8ZZZmvL6k6mlvd5vHez1lOtPpnQz1KoD1GIFtTC0wpqEvHuwdYGDz75QqU2wjRdsvQ2218swHyXv
PHzXasUfDVZDrK2ZdyS27oA2rdCm3GN3+ZroztGOy9Q2PrR1bYsA71YH8XZux5EXbl31Hp614l3t
fRBvWGE3Z3csOuDNa7yVg7eK7x7vIrtj38YScX1LBu+eDPF2esfejSbialcGEb5vxbvalyF28ztp
zu9YdsBbOnhrB29953gnRX7Hyoe3rOHt3S8iachvr3V9PkzRe/ihFe9qu4DEze9kR34nHfBWa7zj
aI13fPdLZVLmt28nizip4e01JE8a8tu7mUU+TNF7+LEV7+r2L3HzWzfndxJ1wDt28HZWy/jur9+6
yO/EZ3af1PzfhXfnAr2d34nX7j4fpug9/NSKd+V5rt381s35nXAHvBMHb+ngffd3J7rI78S3EUdS
2yhCeHcX0Nv5nXhdoxOueg//3Ip3tZuAdvPb7MjvuAPe2sHbWS/ju18vTZnfvo05kriGt9cO2DTk
t3efjnyYovfwL614V+7Axs1vsyO/TQe8jYO3s17Gd79emiK/tY9IJjUiKbxM0mznt/bSysRUvYd/
bcW7IpbGzW8RNSe47sIsxZpaUuKsmMndr5j5eean5WOXusYuhZde2p63MffyS01V9+Fx+/5jFcUs
RnFQb05z3YlkCgd1Z91MaA+ol4nuo5m6RjOF8aPekOleoqlV1X34uBV1igbrUdaoix253oVsCodt
Js7qmdz96pmfZ35aPrqpa3STvHRTiO1cN16+qXXVfXjSjnpFOItRHNSbc910oZzC4ZyJs4Ym8R5Q
L3Ld+Einqe+ZJ/yob+e68bJOU+2bJ8In7ajTYD2Ksw1Sc66bLsRTOMwzcVbS5O5X0vw889PyUU9T
o55E/r2ZGnLdyz2NrLoPn7ajvtyrjjZynXbkehf6KRz+qZ3VVO9hNaUy130E1NQIKHXYEash170M
1CRV9+FpO+qr/ac2cr15c5fc/K0D6g4L1c5qqvewmhZ7w+Q2c57986IaDyUvDxW8ley5Q51vQ70o
qvoPn7Xjvtx+a2MjGsG6GfcuZFQ4bFQ766new3rKusDDuy9kVOOjpPy4623c/bu8Rlz1Hz5vxz0e
rIdZ4y535HsXUiocVqqdFVXvYUWVZb5794uMaryUvLxUyIZ8928gGcVV/+GLdtwraio2dq4Rcke+
dyGnwmGn2llT9R7WVFnku38n2ajGTynx476d7x22k41M1X/4sh13PVgP42ww2JzvogtHJYejGmdV
3UMBVBQV0Nwq0oO7qJFU8pPU7SJo7jLpw11Q1X/4SzvuS5a6UQkVzaXQ3LGyA+4OS3VroWYP66oq
89272bWo0VTy01TVkO/+Ha+FqvoPX7XizkueulETFfGOfO9UFHV4qnHWVbOHdTUu8914ca8RVfYT
1e3CqKDIj7uu+g9/bcd9yVQ3aqOiuTiae5J2wN1hqsZZV80e1tWiPJq7n3pwp/pW6H6qul0gzY1T
fbiTqPoPX7fjvuSqGzVS0VwkzU1YO+DucFXjrKtmD+tqUSbN7V59uNfIKvvJatKQ7/49vklW/Ydv
2nFfstWNWqlIduR7F7ZKa7bK0Xpdta/3gHuZ79qLe42usp+uJg35bvy4J1X/4dt23Jd8daNmKpqL
prnNbgfcYwd3cnDfw7palE1zQ1/ffu/1fbP9fHW7cCrYz1c5qvoPf2vHfclXN2qnorl4mvsKd8A9
cXCXDu57WFeL8qlgL1/lGl9lP1/dLqAK/7a7xUBF/+G7dtyXfHWjhirMjnzvwldJO7jHDu57WFdN
me9evso1vsp+vmoa8t3PVzmu+g/P2nFf8tWNWqowO/K9C18l4+CuHdz3sK4W5VQhvXyVa3yV/Xx1
u6Ca21t7cTdV/+H7dtyXfHWjpkrNNVUhu/BVXvNVFs66Ku5+XaWipiq8mwiL+i7C7OWrtF1UFf5N
hUW1qzDr8EM77hVfpY2qKjVXVXNv8A64Cwd3dnDnPeBe5ruXr8oaX2Xjx70h3/18Vaqq//BjK+4y
GqyHWeMuduR7F77K5OCuHNzV3eMuynz38lVZ46vSy1dpu7CaO7Z7cddV/+GndtwrvkoblVVqrqwK
1elhXnZwTxzckz3gXuS78vJVVeOrUvhx38535eerSlT9h39ux50G62HWuDfXVoXqwldZOrgbB3dz
97gXtdXcWN+He42vSi9fJWrIdz9fVbLqP/xLO+4VX6WN6irRjnzvwlfZ4au5XLF+vQfcy3z38lVV
46uS/bg35Lufr6qk6j/8azvucrAeZo37jvpq3IWvssNXyVlXaQ/rallfjb18Na7xVenlq9RQX439
fDWOqv7D45NW3Cu+Shv1VdpRX4278FV2+Co56yrtYV0t66uxl6/GNb4qlR/37XyP/Xw15qr/8HE7
7vFgPcwa9x311bgLX2WHr5KzrtIe1tWyvhp7+Wpc46vSy1epob4a+/lqHFf9hyftuFd8lTbqq7Sj
vhp34avs8FV2eBPvgTeV9dXEy1fjGl+ViR/37XxP/Hw1NlX/4ZN23PVgPcwa9x311aQLX5UOX2VH
j+S71yOprK8mXr6a1Piq9PPVhvpq4uerCVX9h0/bcV/y1Y36Ku2oryZd+Kp0+Co7eiTLPeBe5ruX
ryY1vir9fLWhvpr4+Wqiqv7D01bc1ZKvbtRXaUd9NenCV6XDV9nRI/nu9Ugq66uJl68mNb6q/Hy1
ob6q/Xw10VX/4bN23Jd8daO+Sjvqq7oLX5UOX2VHj2S9B9yLfNdevqprfFX5+WpDfVX7+aoWVf/h
83bcl3x1o75KO+qrutOPUB2+Kp11Ve5hXS3rq9rLV3WNryo/X22or2o/X9Wy6j980Y77kq9u1Fdp
R31Vd+Gr0uGr0llX5R7W1bK+qr18Vdf4qvLz1Yb6qvbzVZ1U/Ycv23Ff8tWN+irtqK+aLnxVOnxV
Ouuq3MO6WtZXjZevmhpfVX6+2lBfNX6+aqKq//CXdtyXfHWjvko76qumC1+VDl+Vzroq97CulvVV
4+WrpsZXlZ+vNtRXjZ+vGq76D1+1477kqxv1VdpRXzVd+Kp0+Kp01lW5h3W1rK8aL181Nb6q/Hy1
ob5q/HzVxFX/4a/tuC/56kZ9lXbUV00XviodvqqcdVXtYV0t6qv5vms+3Gt8Vfn56nZ9Nd+yzYu7
qfoPX7fjvuSrG/VVbq6vUtSFryqHrypnXVV3v65yUV/NN5prx52iGl9VXr7K2/XVfI86D+7FQEX/
4Zt23Cu+yhv1VW6ur1LUha8qh68qZ11Vcg+4l/kee3Gv8VVl/Lg35Hvix11V/YdvW3GPo8F6mDXu
Yke+d+GryuGrjmsP78G1h0WZ78aLe42vxl6+ytv11XwXQi/uuuo//K0d94qv8kZ9lZvrqyS68FXl
8FXHvYf34N7DRX013zvRg7uo8dVY+HHfznfh5avFQEX/4bt23GmwHmaNe3N9lUQXvqocvuq4+PAe
XHy4qK/mm0X6cK/x1djLV5ka8j324y6r/sOzdtwrvsob9VWmHfneyTzJ4auOmw/vwc2Hqcx37cW9
xldj9uPekO/Gj/v/8fYmy5LjSJb268B2xKTDMib3CI/BPcJj3pV0tlSXSHWlSFbmoqW63/2/lyRo
CpjCVL3/RO/CTMLvIXGopvh4QBDPvx9+fj7u5XaXuY+7nq+m5OHVKnhV7OqTF+zqk/d89fV1oMa4
p4FXweTV/Jivvr5J1Br3tJ1/P/zyfNxPXs1dvpr1fDUlD69Wwatid5+8YHefvOerr+8/tcZ94FWo
9rg/Xu+p2uOez78ffn0+7nC7y9zHvUyudw+vVsGrYpefvGCXn1yO6x3NcR94FUxezUW53skedzj/
fvjt+bifvJq7fDWXyfXu4dUqeFXs9ZMX7PWT93z19Q231rgPvApoj/vj9Z6jPe58/v3w+/Nxp9td
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
xY/SkUWnaFJ0iiNFs4OilSw6RZuid7FDI3xv2HBRdJ9F8ySLTtFF0XSnaKj728bvn/KKudKRRqdY
bCNGjmYHRytpdIrVYURuGuEHw4iLo/s0mnlWDw8cPcq/xm3jV/XxK3r46vUJqPGr8vgVPnz1uvZu
/Co/fgWPX/HDV/R49PR49PR49Px49Px49Px49HHblO+y8h0o3z2eQYxJ+a4q3z2eRExR+a4o3ynn
kZXzyMp5ZOU8snIeRTmPopxHUc6jKudRlfOoynmAch6gnAco5wHKeaByHqicByrnQcp5kHIepJwH
K+fBynmwch78eB5pS8p3Vfnu8TxSjMp3Rfnu8TxS2pTvsvIdKN8p55GV88jKeWTlPIpyHkU5j6Kc
R1XOoyrnUZXzqMp5gHIeoJwHKOeBynmgch6onAcp50HKeZByHqScByvnwcp58ON55C0q3xXlu8fz
yHFTvsvKd6B893ge+7t0H76rynfKeWTlPLJyHlk5j6KcR1HOoyjnUZTzUBp4Vjp4Vlp4Vnp4Vpp4
Vrp4Vtp4Vvp4Vhp5Vjp5Vlp5Vnp5Vpp5Vrp5Vtp5Vvp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5
Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5
Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Ufp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5
Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5Vfp5
Vfp5Vfo5KP0clH4OSj8HpZ+D0s9B6eeg9HNQ+jko/RyUfg5KPweln4PSz0Hp56D0c1D6OSj9HJR+
Dko/Bw3JNSbXoFzp56D0c1D6OSj9HJR+Dko/B6Wfg9LPQennoPRzYO3ugnJ7QennqPRzVPo5Kv0c
lX6OSj9HpZ+j0s9R6eeYtdskynko/RyVfo5KP0eln6PSz1Hp56j0c1T6OSr9HEG736Och9LPUenn
qPRzVPo5Kv0clX6OSj9HpZ+j0s+RtRtXyp0rpZ+T0s9J6eek9HNS+jkp/ZyUfk5KPyeln5PSz0np
56T0c1L6OSn9nJR+Tko/J6Wfk9LPSennpPRzUvo5Kf2clH5OSj8npZ+T0s9J6eek9HNS+jkp/ZyU
fk5KPyeln7PSz1np56z0c1b6OSv9nJV+zko/Z6Wfs9LPWennrPRzVvo5K/2clX7OSj9npZ+z0s9Z
6ees9HNW+jkr/ZyVfs5KP2eln7PSz1np56z0c1b6OSv9nLWb7drddu12u36/Xbvhrt5xV2+5a/fc
N+2m+6bddd+02+6bdt990268b9qd9y2rEYJ2RtrN9027+75pt9837f77pt2A37Q78Jt2C37T7sFv
2k34DdRURDsj7T78pt2I37Q78Zt2K37T7sVv2s34Tbsbv2m34zftfvzGatCjJT2bFvVsWtajNP1j
X0B1lzp1zzR1By91Pyl1dyN1rx115xd1HxJ1Vwx1jwZ1xwD1+XX1aWr12V71SVP1uUf1KTz1mTD1
CSX1eRn16Q31WQJ1Zbu6zlpd9auuQVVXRKrr89TVYuraJXUljbquQ11loCbe7z7+71//5W+f/e1f
//O+JOAK/L/463/8/d/+9R9//cd//v9P/flcfoF26j8s23Ys2mZt8QU5Mv9j0TaE908T/2vBdv/Y
M/Ns4cW1/vDDP/7++f/65i/h4daiZoc873/7S/qv7/7xf17H/be//u3f/9JG++kQHwsr0rUk+8P/
+Jf/+Ptf/+eDuhR6+Zdp2+rxL6+1MW/++rf/9t/ff/zp9a+H6//tbDiPo/v313qXdx9frp3//PuL
fLfY5Id//Pu/D//EXLic0rBw2Vw9fv/j9krl/a+//tHw4eklcC4Wf/3T4hJ4KcukXwLJt0r5/ugE
3xdAxQX7u+5Huh8Y2AM+LFEme8BfZ3JjASZ0jP6xQJnCj09Hn29CR44+Tkbftzj5/sRExPsywJf/
XjH8eAwK28M/LE1mx/Dj4/DnzTH8x8JkDj89Hf643YSQGP80ufqza1Uy3x+V2Nds3P97wfin4/LP
9prkPKxJjpttQFKu/+xYkpzjKRE+Pncg3oSSdGBSAdm1IJmjcACEA7DCgaMCsr0cOQ/LkWN0OKCV
gGM1ci6nRPj5uQPpJpSEA3lWA661yHx/QGJfn9P+u6xwIJ81YK9EzsNK5JhsB7JWA46FyBlPifDL
cwfyTShJByY1UFzLkPn+bEQq9weF0oIH2/dD3Y/MXoRchkXIMTscUGqgONYgl+2UCL8+d6DchJJw
oExqoLhWIPP9sYhUUTiACxwoRw0Ue/VxGVYfx2I7UJQaKI7FxyWfEuG35w7Um1CSDsxqwPUIL1fh
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
rJCIV7cVveIItGM0YTvGNFrhgG0l0I7Rhu1d7NAIHy0rLtjuA+04CbRjfIDth0dgXyrs5XQeviTl
y9ddGR+/LNqXqHz5+v7dxy+z9iVoX7Ly5SsDPX6pnVHRzqhqZ1S1M6raGYF2RqCdEWhnBNoZoXZG
qJ0RamdE2hmRdkaknRFrZ8TaGbF2RqycEWxJ+7JqXypnBDFqXxbtS+WMIG3al1n7ErQvtTPK2hll
7YyydkZFO6OinVHRzqhqZ1S1M6raGVXtjEA7I9DOCLQzQu2MUDsj1M6ItDMi7YxIOyPSzoi1M2Lt
jFg5I9yi9mXRvlTOCOOmfZm1L0H7UjkjTEn7smpfameUtTPK2hll7YyKdkZFO6OinVHRzqhqZ1S1
M6raGYF2RqCdEWhnhNoZoXZGqJ0RamdE2hmRdkaknRFrZ8TaGbFyRvtruR6/zNqXoH2pnBHFpH1Z
tS+VMyJtzkDanIG0OQNpcwbS5gykzRlImzOQNmcgbc5A2pyBtDkDaXMG0uYMpM0ZSJszkDZnIG3O
QNqcgbQ5A2lzBtLmDKTNGUibM5A2ZyBtzkDanIG0OQNrcwbW5gyszRlYmzOwNmdgbc7A2pyBtTkD
a3MG1uYMrM0ZWJszsDZnYG3OwNqcgbU5A2tzBtbmDKzNGVibM7A2Z2BtzsDanIG1OQNrcwbW5gys
zRlYmzOwNmdgbc7A2pyBtTkDK3OGYxMbdT8VdWsPdZcJdcMD9dl79TFw9Ylk9eFY9TlN9ZFB9ek1
9UEq9Zke9fES9UkHddG9uv5bXYqsropVF2iqawXVZWvqCip1MY+6rkRd4qCm7Wrwq0aQahimxjJq
QKDeqlZvmqq379QbSeotjXcf//ev//K3z/72r/95v+lz3dH54q//8fd/+9d//PUf//n//7YOnnfY
wL6tMyT3jvtrqN1fQ8dNnSO3h/Dz81s61721fl18xNm9tStz+vCPv3/+v775i3I/J2mOyFP/t7/A
f3331//zOvS//fVv//6XNuBPR/m8eXaF8h/+x7/8x9//+j9H/e75qP1fEuz/8r5rxpu//u2//ff3
H396/evh+n87J87j6P79dVfz3ceXy+c///4i391R/OEf//7vwz8xY+v9RSPyknDc52t/3M6p97/+
+kfDL8+vguu23murElcBZ/0qSM6MWry6gFBsEf4yYVxwf/XlaPeDq/aoDwm1YwHN63xyLMQEDguO
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
cMZYxN7eFh7jc2Tu1bgZ0TvZciCP0bSgsvVXf/OKT6s959iD4SIfcblhOqPQaZfi9qQzztfj6Yzz
JfBxuBumM86NI07AXaEzvkDmnq73Qr2nz5w+We7lB8wcvJ13w0+2iNbzZQ6xt3flyZZfkblXP10m
esdaDnyyxbSIzPVX97nH6twbfMxFpPMtOw0/5iKSroSd9nzMZb4e/5jLfAl4Fm6n4cdc5sbh4+/Y
esy935C5Z+u9kG2fAdgJ2n/nJwunr+Z24mXgTSvbonPbqX5kg/N/vvHJ/L8fjI2g4gR0Zvbi4uX/
vJ1mAv8N/jdTzPqN58vp1v/ys8it//oURu/rt//t/ySmienXfDLTrbP/4469/cK7dfm/fF8+uHf7
lt+YqPL9E2jAwvBkOw2fvc2NDz+BIhqEAssmxLAqR3i/I4dVzSeQU/sYwe77JFpoMF7Pjx7a2TRU
CwfvVv0/Xztn8rcXH78uTrQbyPcLdl/pye3vf0nf6I/Z/3bnqKWV/378+vWHi8YAbKHso+VlP9Y5
yEMF9ebd64srH9Kn/ppb/8+tp5fvg2+PXv794tVPV5fvL64+vrn4cBbBISvn2kNBg/1ZpUr1TcF1
2bLhUn9uHF6KLSul/p0XqPyIwsSL/OgwCyxzxx/f6akuC/OO7Zp3DP/abW58eEMtGygDyzkiNC7/
Tu7rF6jfycn6yTPZOZmzfM+qWqazNMvlCUKbTSsw1aqHtqpr9bjb3DHXdntiL19PzHq37/3X7bhx
z15bJ8JN2MqygSdc1/MaXoe5Hv3d4Nw4XCfH1uNPBe++wP1UUNZP5ckOQcCKOU3jJN/aYQXbPkL5
y1Vzuvjn24t3f33829C+quXL15eXb+MWMPoE3haz68fdEL8PlI3fq1vEw282P/zGprN7L3C/D5T1
L9alkJ3On+eAu5d/f//yylc6Hz60V4emV6HXLl6+24ZmIBgilUm7h+C+vnr57s+/NbphWfQ/vf0F
/7//1202/V9T/L+vbn1z+wsV3pnfqMKRTa0DYNRuJo/9ujbrZ5/dJuhfDz7kzk9KSmcP/r//SDPF
f26j8qRERZ9jfKni8/jj3y6ufMvRwQlyUDQd/Pi3Nx/OXi4cUZ/jx614zYfbt/LnUpDuvbnyX/7N
5buwzbv69OdHH/8Pd64uXrz8+Kd3wl/2/OXVh1t3Xvs58/at/7j4+/uP//2f6d1bD9+8+5++vZdX
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
J/I0J4q4T+RpThRxn8hZLpZNfJE8iPtEnuZEEfeJPJ9TxH0iT3OiiPtEnuZEEfeJPM2JIu4TeZoT
Rdwn8jQnirhP5GlOFHGfyNOcKOI+kctcr0cP0pwo4j6RpzlRxH0iT3OiiPtEnuZEEfeJPM2JIu4T
eZoTRdwn8jQnirhP5GlOFHGfyNOcKOI+kac5UcR9Ijf5yCB6YPOZQfQgzYki7hN5mhNF3CfyNCeK
uE/kaU4UcZ/I05wo4j6RpzlRxDlRpDlRxDlRpDlRxDlRpDlRxDlRpDlRxDlRsHxsweKL5EGcE0Wa
E0WcE0U+MYlzoshHJnFOFPnMJM6JIh+axDlR5FOTOCeKfGwS50SRz03inCjywUmcE0U5OYke5KOT
OCeKNCeKOCeKNCeKOCeKNCeKOCeKNCeKOCeKNCeKOCeKNCeKOCeKNCeKOCeKNCeKOCeKNCeKOCcK
kw9vogdpThRxThRpThRxThRpThRxThRpThRxThRpThRxTvRv/Y//8bV/+T9vfcFvnaUTRHt++9bZ
41+e3Pr48uqvi4/n/+PWrfv/++LPT+Fg8Naf4dGk27fmg1r/x5+uLl5d/Hnx4cPl1Yfbt75gt76Q
4YDx05+790R6797l39+8e/nx4tWt//pv/+7V5eXHW19M8RK++HO4gq8uevfnxa1vrgIcKBw9hj8r
/7cHHy+uYnvdD/k2/P/4yc1/M/9fuOjh5eX7W3+7ePnq4uor/33efXz55l1t8m56MxyZvt19OH4m
fN+/vbn16PJVcPP/NVbZ/wjd+RX7z//zP8/Ca/5VeFuHs/vw0oU/q92fRfozT3/W03+Eg93dn2V6
OzxZOp/Rts5iv7p199PV1cW7j2//++43d569u7p4+effXv7X24tySPv1xevLq4vlKe2Dd763Plz8
Gfqr+kg8sz27d/nJX/7g7++9oUcv3/3r6eX7f90P13516+njn+L/Ow8jZ+CjDP9Rjv+owH9U4j+q
8B/V+I8a/Ect/qNuIAQj4RqIFxsIGBuIGBsIGRuIGRsIGhuIGhsIGxuIGx+IGx/Js4G48YG48YG4
8YG48YG48YG48YG48YG4iYG4iYG4iZEJciBuYiBuYiBuYiBuYiBuYiBuYiBuciBuciBuciBucmRl
G4ibHIibHIibHIibHIibHIibGoibGoibGoibGoibGtmSDMRNDcRNDcRNDcRNDcRND8RND8RND8RN
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
3uo63HKaJkS4y93TH5AnUKY+gTLNNcnbZjgpvFidNL26ASm84F10hl8vhRfc/WwpPB2U2jdSeAaS
wtOHkMLb+NKXwtOQg+YzpPCwfhxeCq88hxZ2dIvn0JIqVzh3Y0UVz9fUWRUvZNCsiuf0rIrnt+Oz
Kp7f+u1U8ZyYVfFkUsXTlp/fbgvhDeng+fcUqIMnVzp4sqeDl1sDdfBaCnh9lbuGxB2/XuJOXC9x
J0nijiTuSOKOJO5I4o4k7kjijiTuSOKOJO5I4o4k7kjijiTuSOKOJO5I4o4k7kjijiTuSOKOJO5I
4o4k7kjijiTuSOKOJO5I4o4k7kjijiTuSOKOJO5I4o4k7kjijiTuSOKOJO5I4o4k7kjijiTuSOKO
JO5I4o4k7kjijiTuSOKOJO5I4o4k7kjijiTuSOKOJO5I4o4k7kjijiTuSOKOJO5I4o4k7kjijiTu
SOKOJO76EndyJ3HHd2ghFcFTJyBnWp6YVxA5M3g3jB0ujSuEthy/KW05bxVFkfJ+QQI/wfU1NtG2
0GkgvD91X+Qq/4jkKtsandbW4/HtngDeH6V3vGkH95/d9F+6lk0YnGdqYA+cZ7HCEDjP4MyGKpcs
Hwbn2Qjlgvnn3eFwv4pevwowkRkb5gWWxiU8zkPrERH4CIkIrLWWtDPtcc7UGBAyCgH5yzQkEpJc
3r6pxkRCij0D978e7v/SuEX0v879/xjZ/ysxIteZZ5g7/jzj0rDjyLki0Jf3mCuKFYYQCQnOtAaL
a72pa5EQzOzxoj17tIZE9nqfucK57RrGj7/5MJNOpuHNBx/efMyNq/FF3l/b6CANJx8vi/xPuEU+
Gtoln2GinXz8+Mzu4Es0bcH+42tm93ytwyUu34vZXayICbXI81aO8kMxu1uhrBZ5weB+FZ1+FRxM
GDENJ0xpXMDjXEx5nP+MHOes0g4wnLXHuZDHH+dRTMibVnCfytGFe258j0rDbJWKfEOISkPIvAN4
gtsBmFqpyPAOpFnYEwQnIZkFXGkIu+m/dK2cjq0QMluGU7waUtW1cIrLaRTzPjeOSHE5ZbL7L0iy
u6mFgExbCMg3XEP5H7xq224dBvjZWfzzbYSr/3uE7N3ypZqMJZz8Ug7rsRjR2EZIxDZCyiLO8hQp
zmJqlR8jVafzTQO03p7fm17dAGY9+BZdsRBmvVIYfXr7C14z1b+5/YUK7/Qh695UA7KuIIa5OARk
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
3etXuIgSYjhhSuMaHueh9TjOf0COc1MvMsZ1xrk5wTh36WtbuE/NeL1fWnd7zEJmKzIXACJwdEw5
OHiIPTgwlcyctW2ZuUAkOXp8rE5fHC6g5KYHy7Xi6CdQxTKc5dWoqq6Fs1yK8RFZWkekuRRlIP2I
HUhWVwPJyc5AOkGiu7QhkHCiSzN+AlVa3yfRXWO7oRCJLk05gXqEPYFy1YbDTZ0Nhzp+ogdfomk4
0TfyWPO1yEohNDC+4ZitSNSGQ7UqBcUOdALVCmW14VAKnkBNr1/hEw0lh0+g5tYRpxhKlhOox8gT
KN96PdQ7e46d2Gb/PEI2QylPfAK1+UrzCZRycLyGBb+8ue00pRHTlCrqXz8hT6CipUXoOjcsA5wJ
dQLFvprbiZdxOOLB582bmp3kBKr1/avU1vABseajJ1CucQOUacRhseb5BOpn3AmUq29/Ot5Zk3RL
buz+P9rVSdOrGxAcC95FZyDBMe9uLThmouBYpThmaw2yzfMh3lhDcowBil6LWfwGJcc2vvQlxybI
QfsZkmNYPw4vOTbNkmNuITnGiuSYL6SL5JhPmyI55ifMWXKMpaeHfEDDhDNlIaHwbzNLkZkkRea4
QkmR9bXIgp7Xflpk6cKlHJnpCZHlBkEhsvC5MTkyc60QmWlqkYmVFplIImM6i43JlRaZzBJl+c9q
pUWmskQZaZGRFhlpkZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZaZGRFhlp
kZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZaZGR
FhlpkZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZaZGRFhlpkZEWGWmRkRYZ
aZGRFhlpkZEWmVGT3WmRiZlCNLnIqBrRIguEoXjRjWmROZ5Io/r4WmSOJzq6gdH8eliLbG4co0Um
bkqLzFvFaZGF50Yh0KPZADR5AwlvECJFumiR/YIjQUdDC9ib6ABizfElioIv0TQMyjRrqZb52j0o
+q+t6pGGuf4zuX3/XkUa1swPrZVlA3qtXc9rGIlrhgH8c+MIbr4p3PynyFEkaoytbCumhUd7jz6K
ZFL4sgzsUzsNMxlL4/ukuOTbFLeIFLdT5jk+Q/IcJa+D0wGv2hOkuEw4dgunuN2keLlW4xjDoYE9
GMPFikExhgNuu2n5IKIGrVBWIFJr4X6dev0KM2utGWbW5sYdAlNrTcbUPsdiamWNqe1J5zgIU/v0
6lPZhWVZFwerD7qV5JeGO6M0jkh6lxS/9NmL6zvDnM9tV32hO9KDrlbZed5bDZrRua4P/uU3x3eu
/vIjNS6UOfNWUN7Hnz4+fr3i8qLJrzppDAap0mNPWzrtzR2M4XZqeJ0ujZs91hTdYATvZEqvGV4q
L/i/Ihd8XTOCTWfBdyeoNUxck8NPGKD+c5sNWLmW4daU0MAea0qxwjFrCg/c9Kblw6wpjVAu15Tw
mwywX1WvXyWUML5ThjdhpXEFjvPYetw7/YbcO5l672Tb02j4hcgQ+dxOyeU5x+9c+fF+59Wrtsvb
N/2U/OjT331HbGvZR5cffQfUQS32LNz/Zrj/S+MO0f8m9//vyP63U93/7XmGsxMUFjYNO4abKzjb
S1RrtsIxanicNeYK3pJereN802p4s9f7zBV2WxdxdoLaxLpkGpT98d4NL/Klcb3HIm9do4NgzY7o
Zlzk7/yOW+RtvZ92upN8x5dHDr5E06C8D2dreeRyLZ+QibuXPPJsBSWP7J1pJa491CLfCGW1yHMO
96vs9SuofsE5G06Y0jgseBFbj+P8a+Q4d0uRLDNN7TPQ8Hu1I4/z6Es0reE+VaPaY7vWx0uNcO12
FuIWER1VRMzu/o4SMUumFvFhrBMfd/z4sCg/En7pB+ULd+seLNeyI6vh7SzDWc5Vz2s4ywUbH5Gl
dUSaC1YG0j3sQGKsHkjtk9Dws8bjD6S0IRBwogs1qoa3a32fRGeN7YZAJLpQRQ3v/u8oNbxkahEf
3tlwiBMkerp5Gn4QCqWM2CR6uRZZKYh9ThV2VnCnCrJVKQh3GDW8ZiirDYcUcL+qXr/CpwqSj6rh
7VpHHCtIXtTwvvkdpYYXWq+Geue+a/jJLaSNFsPSdOmUanjbr1TU8MIvg8F46cE7C8HcdpqSiGlK
6nyb4dvfUbcZkqVF6GTnTEi6kTOh2E64TE1wxKVuRdydQg2v+f2r1FbgnVeuRu+8BqvbcCsOh1uV
u6ff/Y45gUqGltHurElK4NTwYnXS9Orz1fCid9EZCajhcSU+Vw0vGNuq4U0OEpuTB1DD2/rSVcPb
HYH2HFT7q+Gh/Ti4Gt78HFrY0S2eQ0uqXOHcTRRhPF9TF2E8n0FFGM/PnbMwnt+Oz8J4fus3C+P5
tXEWxrNRGM9Majq/3dbCG5LC8+85jBSeXUnh2Z4UXm4QlMJrieD1he4aKnfT9Sp37HqVO04qd6Ry
Ryp3pHJHKnekckcqd6RyRyp3pHJHKnekckcqd6RyRyp3pHJHKnekckcqd6RyRyp3pHJHKnekckcq
d6RyRyp3pHJHKnekckcqd6RyRyp3pHJHKnekckcqd6RyRyp3pHJHKnekckcqd6RyRyp3pHJHKnek
ckcqd6RyRyp3pHJHKnekckcqd6RyRyp3pHJHKnekckcqd6RyRyp3pHJHKnekckcqd6RyRyp3pHLX
V7nTO5W7aUcXMpE9dQJ4psroNBieqUb1OHaNG4S83HRD8nLBKk5eLtySgsiJyqzJiapFT0Pw+1XR
CfkehVZOhhb0tI4kT7j7dfxBE9V3wr00qP/0tOm/fC3HET31tBfRs1gRKKKnbglF6OlQRM9GKCvs
n5bwuFS9foWZ+1oMIwNL4xoe56H1SAn8AUkJrOSWzKRVZ5ybMSZk0gLiOxHQvk5IcHn7phnRCdnZ
c3D/2+H+z42bCdH/Nvf/Q2T/V3pE/mVnnjHs+POMTsPOIOeKAGDeY64oVgRKJ8S05grTIlNWcUbO
Hi/as0drSGSv95kr9FYiNdyiPnp8TYLoG3jzYcY3H6Vxs8cibxpEXIMg4pqyyP+IXORNDcS1HT6/
OQG22yaevIWx3WaD7S7XIrHdZj9sd7GCw3bbVo6ag2G7G6GsFnkLY7uN6vUrjO22fDhhSuMIarfl
eZw/Qo5zW8sH2I58gNUnGOcJ8G9htLbVwwt3aXyfSqMlVmQRlYbVeQfwGLkDsLV2QE+syJ2g0sja
NQ6uNNym0ijX8qOLhBTLcIpXQ6q6Fk5xx4dJ76VxRIo7nuHuP2Hh7rUWEOtpAbmay//gVdt26zDA
z87in28jX/3fI3Dvli/VZOzg5Hd6WJKFtYR+EJqi0VbSZ/kZqc/CaqEfxkSn812Dtd6e35te3QBp
PfjmXRE7ldEeab0SGX16+wtdY9W/uf2FC+/0OeveVIOzbiCMOTsEZ33jS5+zriEH+Wdw1rF+HJ6z
Xk5Cw9q3OAmd4epWzXB162a4ulM7uLqzM0TdJYg6Y6YDUe8y1FVCn1cMdRZA6QKkqLsVQt3lK/1f
GQ8t+P+k/89/lGn/n/H/Wf+f/xz3n+P+c9x/jvvPcf857j/H/ee4/xz3n+P+c8J/TvjPCf854T8n
/OeE/5zwnxP+c8J/TgTyuv+cZD2Ee+SyKxDivsG314B2YVaA9ikh1l0isAu7ArSz+Laa8p/dCtDO
058ZAdoJ0E6AdgK0E6CdAO0EaCdAOwHaCdBOgHYCtBOgnQDtBGgnQDsB2gnQToB2ArQToJ0A7QRo
J0A7AdoJ0E6AdgK0E6CdAO0EaCdAOwHaCdBOgHYCtBOgnQDtBGgnQDsB2gnQToB2ArQToJ0A7QRo
J0A7AdoJ0E6AdgK0E6CdAO0EaCdAOwHaCdBOgHYCtBOgnQDtBGgnQDsB2gnQToB2ArQToJ0A7UZN
cga0iwWWSEVk1fEZuAFoFE1ziFDmvRtFPs6NCxjQLsxNAdq9VRygPRw+AQA97/oKoLdpPTYEA+9i
90Wm5S84pmU0tECu8TbvLpxzHX3QcJm+NpKZvb7MorCt/pvtg22drTgMb9k7s0XRRcvbN80BecvF
azbBQ5KthyTfcgDD6eDRh4VgyTQ8l7DxuaQ0LvbI2RCeTQdJOGdZydmnyJwVFYeWCdvOWTZT9L+5
vPrz4vEvT4J3Z7PTVV8sx7ZvMF5/gpwvpkHetfdu0//5WmTis/0Sv1hxGF6zd6aR48HyQXjN3aHA
4YRnrNOfnMGJ5sYTLTfOEfnhcn48w+aHrfJD6k6niOOPb6nT1wbBuN67UU7z3LjaY/KSejt5cVgp
I7oZOc3PcZzmaGgRHCU6wTF7Tl4qgVm5PX5wi2kH9j+36/7P14ppL87znx3Os3w5MXY953m2zGCv
Rc9reC0W0yjneW5cwKMwtB45zy+QnGffeDUMdVuzINzzADjP0faNcp719dD9cGsF7G05znnWje2L
QMwAwVbiPP+K5TzregNjpk7nGwznOa4PTa9ugvNsptQRFuA8C2FqzjObNqBnJgDSs5kapGcFgJSF
PQjp2UxY0rOEHHSfQ3pG+nF40nM5Ugmr5+JIpZCe/VamkJ79wllIz372mknPPptm0jObMurZyPPb
t8788nbro7d08fG8yX2euuDnQGvmG/Izy+8C5Ofgx4r+vEM/9zDMM1b6egxz+lgDx/zw8vL9rb9d
vHx1cfWV/4LvPr58825j+W56P8T47e7z6WNbpLOskc5hdY2HPZnZrGqkM3eZ9Jz/rGuks5gy6ZmQ
zoR0JqQzIZ0J6UxIZ0I6E9KZkM6EdCakMyGdCelMSGdCOhPSmZDOhHQmpDMhnQnpTEhnQjoT0pmQ
zoR0JqQzIZ0J6UxIZ0I6E9KZkM6EdCakMyGdCelMSGdCOhPSmZDOhHQmpDMhnQnpTEhnQjoT0pmQ
zoR0JqQzIZ0J6UxIZ0I6E9KZkM6EdCakMyGdCelMSGdCOhPSmZDOhHQmpDMhnQnpTEhnoya+QzrL
HX9IRDrVTJwLcJ2IBGuD8gpyKFwkZyZkJDY9vXr5/sPyski5eX/pG/vj9Zuri2shWSq1eAIarEnM
QwkT6OQ4DbY0jiFLyxsjSxuNJEtLmCwtN8g+0wA9SgRZWhZK7e9ICqepQY+2A3qUJ6DM2kQWlAYe
NHocpFdat3tEx4pGdBwiOrpA+O7cuYuD8NmagOg6ED41HT8+LkH3FIykVNO6B8u1/OggzWIZZkdL
3fMa5sIqPj4iS+uINA/Np4H0NXYguakeSB0GsTpBortEGVZwoqt1ojNEt+bW90l0Z7eJrhCJrnKi
s7O7QHz4+cLULj58Uu346OMnevAlmoYTXa8Tfb6W43DfoYFx3PdsRaBw35o3UKR6OhDuuxXKihSr
4Q2C0r1+hSmzeoWoZhzMmbl1BFhWi9zq2T1gqIvzufVqqLPOnkObiur7vDcRNl1q7fICrvLNX58u
P3348vHVm7/evHv5Nq4SXz7wAfn07tWHL+98ePAhxHQeoX+895XAmz8fRkDwVw/CcLh4tWtnF/Y6
5OuvFM3E72TheJlRBrM3t52mNGKaCqYikPk+ELoCZI6WlqFz7dCZaUgNJLQTL2NwxIPPmzdNh+4c
zXxesGMT3Ti761PbwAWPYaMEeR5QyutwGwR/27BMgf/m+nC784WhRbR5Z00y8vhrEk8zlFG4dcXI
vdaVYkWj9GOMag1N2XqT1foxMq0038eVhqP1Y2RTP2b2GpbnkGs5CX9tY2wdn9LveyGZdnAC2dET
g9K4nca3hDE86w6yDJF8Nlfm316ffKUyj4YWySc6U63lJwhOmq4tXENZvum/fK3EJW5oYI/ELVYU
akNoWzkaLK82hJg0fdJO05Vz164aVoP9amyvX+EiyqrxhMmNW3ich9bjOP8OO87rRUaazjh3xx/n
MmnWuQnuUzdc78+tsz1mIdlQnnMIlR7rysHBA+TBQTS1iI/qaM+54+v0BF+iabiAcpseLNeqY59A
zZbhLK9GVXUtnOVOjY/I0joizZ0qA+l77EBSshpImncG0gkSXccNgZzgRHdu+ARqbn2fRNfb7Yac
EInuXDmB+gF5AhVNLePT3nDI6QSJrl364mCiy2nbg/laXKUQG9hjw1GsaMyGQ06NSiFaPswJlL5+
wyEnuFJwrtev4ImGnPT4CVRpHT7FiM2nE6iH2BMoXe85THvPIXcKnP3zCNcMpT71CdT6K5UTKMlA
oUDJhlXAvLntNMXgaSqaiidQP2JPoEy9HencsJRM4E6g2FdzO/EyCUY8+rx9U5zmBKrx/avUZgoO
txw+gWrcAJVMI8It8wnUI+QJVH37k9vOmsRaGmT3/9GuTppe3YAKWfAuOgOpkEm2ViFjUYWsliHj
tTLZ5gkRbl1Dh0xAMl/qEDpkG1/6OmQcclB/hg4Z1o/D65DxWYdMLnTIxKxDZm3RIfOJU3TI/JS5
0yFzNksNhfWEZymh8G+30ydjSZ+MO4HSJ+sLlCVZr89RKMvXVyplrKtOVhpGqJPFj46qlLHr1clY
W6GM1QplYccVHxrKEmS8VigLJ0Axo/KfxUqhTGThMlIoI4UyUigjhTJSKCOFMlIoI4UyUigjhTJS
KCOFMlIoI4UyUigjhTJSKCOFMlIoI4UyUigjhTJSKCOFMlIoI4UyUigjhTJSKCOFMlIoI4UyUigj
hTJSKCOFMlIoI4UyUigjhTJSKCOFMlIoI4UyUigjhTJSKCOFMlIoI4UyUigjhTJSKCOFMlIoI4Uy
UigjhTJSKCOFMlIoI4UyUigjhTJSKCOFMlIoI4UyUigjhTKjpmmnUMZ2ZCIWyVUjCmUBOhQu4jem
UMadTC3esELZhYIJk04l0yCw33s3jE8ujWMUythNKZRxp3AKZZLDWE2+wWq6LShecli6KHZf5EP/
hORDu0otRExtbKzk+uiDJvgSTRu4/9YCLvO1e7D1X1vFu27r5Pb9exV/WDMTIOeVZQd7zTpeiwlO
k2Es/9w4Q4yiQtP/GTeKfNvVKGJtHTUp+PFHEZvS1xZgnwo+SmqcG98jxUUAXa5TXCBSXPBMeXyC
ozxGQ8vgdHCs4gQpzkz62nCKi02Kl2stjjwcGhgnD89WHIo8LGwDgCn0gaQOWqGs8KRygvuVd/pV
wiRb4UZJtnPjCHitcBle+wsSXitYBa8VHUEdKSF47dOrT3kXJpLYi5SgJqGUKyEwDXdGaRyR9DLp
gOmzp9d3hjmf2677wnb6otbeed5bDZrRua4P/uU3x3eu/vIjNS6UOfNWqN7Hnz4+fr2i9WJ5sOEr
xW9gjj9tibQ3lzCcW5rhdbo07vZYU0SDHLwTL71meJm84D9DLviiIgcL2Vnw1fFrjeBLNM3B/lOb
DVi5VuDWlNDAHmtKsSJRa4oSjUxT7FBrSiOU1ZqiFNiv1aCvvrEGE0YN47Lnxg08zlUhZD9H7p1k
vXeSnWlU2SEeemgnXjbn+J0rP97vvHrVdnn7pu+WR5/+7jtiW8s+uvzoO2AV1GRPw4WFcuP9nxtH
FBbK5f5/ge3/SrdVqM48o09QWKg07DRyrtB7SW3NViRGI0/q1lzREmSt43zTGnmz1/vMFapRF+kT
1CYqbVU1KAbkvRte5Evjdo9FXjXUIBB6pNHNuMj/ilzkVb2f1m1tKmmm4wdHp7NMA4r+SLMWTZ6v
xYkmxwb2SNxiBSWa7J1p5KiZDrXIN0JZLfIGPtDQutevsCaGEcMJUxpHyGAYkcf5b8hxrivpLGE6
Z6DmBJWGSYd2Bq40jBlWJJtb36fUMA3pLIsoNYwp0ma/I6XNoqllfDoyJfYExYZJoiQWLjbsptgo
14pja+TNluEsN6bnNZzlVuwxInPriDS3ogykO19jB1IlTCVs5yTUniDRbdoQWDjRrRnWyJtb3yfR
bWO74RCJbk3RyPv6a5xGXjS1iI/rbDjcCRI93zx1cKK7TaKXa5GVgtvvVKFYwZ0quFal4NiBNPJa
oaw2HA6uFKzp9St8quDksEbe3DriWMHJopF392ucRp5w1Z5D9u67OgsrptlmKOWJNfI2X2nWyHMO
jpcdvbMgp+1+RE2IacrZfJvh3te42wyyvtkpp/aZkJrY0JlQaCdexuGIu8aJvLd3Eo281vdfpvZC
NK0XbjUN33n1VhvhlmC4o6l4AnX/a9QJVDS0iDaTnWgrnEZerE6aXt2ARl7wLjqjAY08Nakb0MiL
0n4bjTwGSdDxQ2jkbXzpa+RNkIPiMzTysH4cXiOvPIkW9nSLJ9GSLlc4eVNFLs9X1UUuz+dQkcvL
LUS5PL8h38nluWknl+fMTi6PJ7k8yez57bZC3qhAXnhXoAXy+Fogj3cF8krDCIG8ljDeNdp3W907
bq/VvePuet27iXTvSPeOdO9I945070j3jnTvSPeOdO9I945070j3jnTvSPeOdO9I945070j3jnTv
SPeOdO9I945070j3jnTvSPeOdO9I945070j3jnTvSPeOdO9I945070j3jnTvSPeOdO9I945070j3
jnTvSPeOdO9I945070j3jnTvSPeOdO9I945070j3jnTvSPeOdO9I945070j3jnTvSPeOdO9I9450
70j3jnTvSPeOdO9I966neyednXXvuC20IelcpFEdH6cZGETRtIXZY8MKHXPjDhacC9opNyM4563i
BOcUA1V/vOsrluKm9dgQQ/DUinLIt1+jYMvR0IKn1hHpUez4RH+Z9HgUE2D/sbVq0nytRDE+YwPj
jM/ZisIwPhVrSEdEywdhfLZCWYEAmYbHpen1K0jh950yDBEsjVt4nIfWIzfwOyQ3sBZgkkJ0xrkb
o0QmdSC1kwXtKodEl7dvuiHlkNkeqAbmXRru/9I4rAYWW4/9/wDZ/7VCkRSdeYaL488zIg07jpwr
ApJ5j7miWFEY5RDvTGOw8BarsoozcvZ40Z49WkMie73PXCG2oqmKn2DzIXkyDW8++PjmozTu9ljk
ZYORKyZE8pVF/nvkIi9rRK5sE/uVYCcIjktfGwR5K8E2/ZevxYG8YwN7JG6xggJ5K9HKUXEokHcr
lNUiL0CQdz3oq28Mgrx9p4wnTG4c5njH1uM4/wE7zitBAalMZ5zb44/zpDCkhIP71A4v3LlxuU+l
0ZAvUhJRaQibdwAPkTuAWr5IduSLlDxBpZHUbJSEKw25qTTKtfLYsiGzZTjFqyFVXQunuJTD7PfS
OCLFpcy49x+xuPdaHUh21IGUrEn9D161bbcOA/zsLP75NhLX/z2E+274Uk3GEk5+aYdFWmRD+kch
VEajraTY8gip2CJr6R9pWbvzFWvQ19vze9Orm2Cve9+iKxxir1eyo4G9PtWc9YBeF+Gta8jrQU1o
RV5f6Cp0wObcHYS8vvalR15fiFn0yOvT55DXkX4cmry+OwsNq9/iLLTg1v1WZMatSzbj1qWZces+
m3ZYdZGx6lZ1sOpdqrrLDPQaqi79fwYFVRdroLrIl/u/Mx2a8f9Z/5//MPdXcn8p5/4//znuP8f9
57j/HPef4/5z3H9O+M8J/znhPyf854T/nPCfE/5zvl++EP5zwn9O+s9J1gO4RyK7AgHuG3D7isyu
ajJ7OKwNo9BkMruuyewhfcKfbf6zWZHZp/RnR2R2IrMTmZ3I7ERmJzI7kdmJzE5kdiKzE5mdyOxE
ZicyO5HZicxOZHYisxOZncjsRGYnMjuR2YnMTmR2IrMTmZ3I7ERmJzI7kdmJzE5kdiKzE5mdyOxE
ZicyO5HZicxOZHYisxOZncjsRGYnMjuR2YnMTmR2IrMTmZ3I7ERmJzI7kdmJzE5kdiKzE5mdyOxE
ZicyO5HZicxOZHYisxOZncjsRGYnMrvJsKFEZleFRqSEjqyqE8BvbQK8+t0LhCZTYpj1WBpXCDK7
ujEyu1VIMruCqbZKrcl5tkG1VQjSXei+CLP8CQmztDWx2nVAd+oEMEuXoLcKCcteXaYnHK9V2b14
rcUKQ4GW9dRg0AXL2zfdIUHLxWuYg1vlYb52OyT1CeYSl9CuGp5L9PhcUhpXe+Ssc40O0nDO6pKz
PyNz1lUAWjXpds7qGZ//zeXVnxePf3kSvDubna76YjG2Q4Px+uPn/GwaBl3rNW20XGuQia/3SvzZ
CkOBmk0r8bU9EKi5OxQMnPBa9PpTgIlm2GiizY1LOD9C6zE/nuDyw7dd5QfrMICNOv74Zglaa2Ai
rhlWtpgbN+OTV5QNWU9eBiGRYYpExi84QHM0tAgO78Bdjdtz8uKJyGqn4we3mGZg/9tp3f/lWr4P
4PlP1nFbOivk9YDn2TKMpTaq5zW8Fls+CnieG1fwKAytR8DzUyTg2TdeD8OOWIHVIODZ8psFPLd8
qQDPFpbFsXoY8Kx4Y/tiETNAsJUAz8+QgOdoatH5wnY636EAz2F9aHp1A4Dn4FtwxU0Q4Nm6FeBZ
bgHP5nrAcySorwDPC32EHuBZHwLwvPGlB3iOGgvXO2g+A/CM9ePQgOfdkUpYPRdHKjPg2cgZ8Gzs
DHi2agd4tnYHeJYJ8KwkP79968wvb7c+eksXH8+btOepi3uOeGa94T2r/C6C9xycWTOf5aaJFWR5
Bkpfz2JOH2swmR9eXr6/9beLl68urr7y3/Ldx5dv3m0s303vh0C/3X0+fWzLdeY115npBGxWGdws
aq4zMxn3nP8sa64zsxn3TFxn4joT15m4zsR1Jq4zcZ2J60xcZ+I6E9eZuM7EdSauM3GdietMXGfi
OhPXmbjOxHUmrjNxnYnrTFxn4joT15m4zsR1Jq4zcZ2J60xcZ+I6E9eZuM7EdSauM3GdietMXGfi
OhPXmbjOxHUmrjNxnYnrTFxn4joT15m4zsR1Jq4zcZ2J60xcZ+I6E9eZuM7EdSauM3GdietMXGfi
OhPXmbjOxHUmrrNRwu24znwHIbIRUTVj5wJcJ3LB2rS8wh2KF81gyIhtenr18v2H5WWRcvP+0jf2
x+s3VxfXkbKkSC0eHwmrZAIfOhhD54aRsHPjGLw0vym8tLeKxEs7GC/tNtw+2aA9OgRe2hVU7Qsk
ilPWtEfVoT26E6BmVcILOgcPGjtO00ut62naIzqKbaKjJ4aIji0kvl+xJD5VYxBVm8SnJ36C+Nj0
xUEupfdu04P5Wnl0mmaxDAOkne15DcJh/RfbY0Tm1uE0j82ngfQbeiDZaiBp3RlIJ0h0rdMXd3C3
rhOdwd2aW2f7JLrW20RnDBGfnOjs7HcgPvx8YWoRHyPa8WEnSHQj0heHE51tEr1cK1HM79jAHszv
YkVhmN86EI6blg/D/G6EcomL1UzDE6jt9SuImvWdssoZDudMaR2my8bmY6tnd+5eP9TF+dx6NdQt
6wx1V6F9n/cmwqZLrV1ewFW++evT5acPXz6+evPXm3cv38ZV4ssHPiCf3r368OWdDw8+hJjOI/SP
974SePPnw0gJ/upBGA4Xr3bt7MJeh3z9laKZ8J34BMfLDYOYbWM/whHTVDAVqcxf30VSmW29HbGm
HTrOhyRBQjvxMgFHPPi8ebO3r49mPi/YsYlunM31qc3Bgsd/52GMvDWNcMMQ7mgqouDv3sWh4IOh
RbRdZ03i+vhrkkszFDe4dSUwmPdYV4oVixGR0YGj3LR8fdD9SiPTSvN9XGk4WkRGNkVkZq9hjQ63
0ZQI76zHljg+qt/XZck0AxNITKMnBnPjfHxLqAMYfNNBAk6+4GaszO/dRVXm0dAu+XxZ0E4+IU8Q
nDRdC7CG8t5t+i9fq3GJGxoYT9zZikFtCEUrR4Pl1YYQk6ZP2mm6cu7aVUNYuF+nXr/CRZQw4wmT
GpcTYpybPM7vY8d5tcj4zVt7nEt2/HHOVPraHOxTyYbr/bl1sccsxLbyc1rCUj3Rz3Rw8M1d3MFB
NLWID+ed+BxfrCf4Ek3DBZTc9GC51hz7BGq2DGd5Naqqa+Esl2Z8RObWFSLNpSkD6VvsQAqb9MVA
ElN7IKkTJLpIGwIFJ7piwydQc+v7JLpobDcUItEVKydQ393FnUBFU8v4dDYc6gSJLtL6Ayt1arXt
wXwtslIIDeyx4ShWLGrDoVqVglIHOoFqhbLacCgH9yvr9KuGTzSUHT6BmltHnGIoW06gHiBPoOIm
ZTHUZWfPsZPh7J9HyGYo7YlPoDZfaT6B0qBaoP/aoydQcX1dT1MaMU3pogv2PfIEKlpahK5zw1Jr
hTuBYl/N7cTLNBzx4PP2TXWSE6jW969SW8MHxFqPnkDp1g1QjTgs1jqfQP2AO4HS9e1PP292ot0S
Irv/j3Z10vTqBqTIgnfBGQNJkXl3V1JkKkqR1VpkupYn2zwhEheRjRiZhbS+xCHEyDa+9MXIHOSg
/AwxMqwfhxcjc7MYmVuIkdkiRuZL6SJG5hOniJH5KXMWI/Obnyw1FP4ts5RQ+AzbiZSpJFLm30OJ
lF2jUhZlvT5XpSy3USmVqa5CWWkcoVAWPzqqVKauVyhTTZUy5lYqZS7pjPEsQzbVKmV8yuJl+c+s
VikLIpZxTJNKGamUkUoZqZSRShmplJFKGamUkUoZqZSRShmplJFKGamUkUoZqZSRShmplJFKGamU
kUoZqZSRShmplJFKGamUkUoZqZSRShmplJFKGamUkUoZqZSRShmplJFKGamUkUoZqZSRShmplJFK
GamUkUoZqZSRShmplJFKGamUkUoZqZSRShmplJFKGamUkUoZqZSRShmplJFKGamUkUoZqZSRShmp
lJFKGamUkUoZqZQZJdmsUsbcTCeSU6RXjaiUBfBQvOjGVMq0TgxSc3yVMq0TN93A0H4zrFI2N45Q
KQvMoZtRKfNWcSpl2sBoTbNBa+oGLN4g5ItMUSn7EcmI1pViiDYddKw5vnhR8CWahhGaZi3iUq61
e/D1X1sl2m5P6rVLbt+/VzGINTNWriwz2GvR8xqG5dpxNH9pHEHUt4Wo/wg5ikwNuDUdLTV7AqK+
SdpfVsF9KodpjaXxfVI8DNp1iltEiluZSY+PkaRHU+mT+Z7oBOcEKW4TqN3CKW43KZ6vdROOPhwa
2IM+XKwwFH3YTQ0IprWHkjtohLJClDoO96vs9StMs3VsmGZbGkcAbB3LANufsABbWwNse6I6DgLY
Pr36VHZhWfDFwbqEbiUGpuHOKI0jkt4lLTB99vP1nWHO57brvuiIErpaf+d5bzVoRue6PviX3xzf
ufrLj9S4UObMW+F6H3/6+Pj1itiLZsK6pD4YREyPPG2ZKe7NzQQDup0bXafnxtn4muIv2qwpZidg
es3wcnnBf4Jb8KOh3fAyU3vBN5M4QXBs+toS6j/v3ab/8rUKtabEBsbXlNmKxqwp3pltpkXLB1lT
WqFcrilmMuC4rAZ99Y0tlDC+U0Y3YXPjDhznsfW4d/oFt3cyU7V3Mqw9jRo2DTHRQzvxsjnH71z5
8X7n1au2y5s3g+TIo09/9x2xrWUfXX70HVAHtdgDCwvD2HD/l8bhwiK2Hvv/KbL/ma77vzPPsOMX
FsGXaBo5V7C95LZmKxqjk2dYa65oibLWcb5pnbzZ633mCratiww7fm1iuEqmHZwzdniRz43zaY9F
nm8VIQxCkzS6GRf5Z8hFnlf7aSPa+lSGH184OfgSTYPCP4avhZPna3HCybGBPRK3WEEJJxveylHO
D7XIN0JZLfIcPNCoB331jUFdjDiwBhOmNA5LYcTW4zh/jhznopLPMnLqjPMTVBoyHtoZMcF96oZV
yebW9yk15FY+ywiOiI4r8mYvkPJm0dQyPm2pEiNOUGxIk744XGyITbFRrlXH1smbLcNZzl3PazjL
hdpjRObWEWkuVBlIv6IHUiVOZZTqDKQTJLpKGwIJJ7pwwzp5c+v7JLpqbDckItGFKzp5vyF18qKp
RXx0Z8MhT5Do6eapkXCiy02il2uRlYLc71ShWMGdKshWpSDFgXTyWqGsNhzSwBOo6/UrfKog9bBO
3tw64lhB6qKT9ztSJ8/oes/Rue9q1ASqpsWJsOnSSXXyNl+p6OQZBSqPGzWN3lkwprEfUYhpSk35
NsOde7jbDKa+2elD2QmdGDsTMukYRUk44qpxIu/tnUQnr/X9q9RWCg738J1Xb7URbo0Id7l7+vU9
3AmUqU+gbGdNUgankxerk6ZXN6CTF7yLzlhAJ88ocwM6ed7cVidvt4PpydBNh9DJ2/jS1cnbbYJ6
DrLP0MnD+nFwnbz5SbSwp1s8iZZ0ucLJmymSeb6qLpJ5PoeKZJ6fPWfJPJP09aJknt/8zZJ5fnXc
SebpJJnnd03nt9sqeaMieeFdMySSp9cieborklcaR4jktcTxrtG/a2jf6Wu175i5VvuOWdK+I+07
0r4j7TvSviPtO9K+I+070r4j7TvSviPtO9K+I+070r4j7TvSviPtO9K+I+070r4j7TvSviPtO9K+
I+070r4j7TvSviPtO9K+I+070r4j7TvSviPtO9K+I+070r4j7TvSviPtO9K+I+070r4j7TvSviPt
O9K+I+070r4j7TvSviPtO9K+I+070r4j7TvSviPtO9K+I+070r4j7TvSviPtO9K+I+070r4j7bu+
9p3Yad/pHXEoQcBOgNS0CaimYaSmGlfpKI0zhOicvinROW8VJzpnNKj8411f8xRtg6mmEVR/VdRD
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
4TNiJ1TmolCZ/9oOJVR2jVJZlPW6CaWy3E6lVua6KmXFAKxSlj46qlbmrlcpc02lssmslMpM0hqb
khTZZFdKZTYLmOU/u5VSmcsCZqRURkplpFRGSmWkVEZKZaRURkplpFRGSmWkVEZKZaRURkplpFRG
SmWkVEZKZaRURkplpFRGSmWkVEZKZaRURkplpFRGSmWkVEZKZaRURkplpFRGSmWkVEZKZaRURkpl
pFRGSmWkVEZKZaRURkplpFRGSmWkVEZKZaRURkplpFRGSmWkVEZKZaRURkplpFRGSmWkVEZKZaRU
RkplpFRGSmWkVEZKZaRURkplpFRGSmVGSTcrlU0LQpGNBKsBpbIIH4oX3ZRSmZ1E4pBydXzSpGDJ
NAjud3xUqWzXOEKpbDI3pFQWrOKUyhyH8Zp8g9cUrIGCgyWMYvdFTvT3KE50MrRAwYkOPlZMJxg0
CfAqYIymmDb9l6/dg7H/2irZ4RDrC5vcvn+v4hBrZqxcWRZw1FXPaxiYK/h4muTGYap+bD2Ooh+w
o6iG3ErdGUX6+KNI6vS1DdynepjYWBrfJ8Wl3qa4QKS40Jn2+BBJe5S6Co7qYFnlCVJcRVi7k3CK
y02Kl2s5jkAcGtiDQFysCBSBWPIGCFNOh5E8aIaywpRKCU+dutevMNFWimGibWkcAbGVIkNsf8RC
bFUNse0I6zgJQWyfXn0qu7Ak+uKkhTtjJQim4c4ojSOSXiY9MH326PrOMOdz23VftIUJnao1eJ73
VoNmdK7rg3/5zfGdq7/8SI0LZc68FbL38aePj1+vqL1oLqyOCoQuCJkee9rSaW+uYEi3YsPrdGlc
7LGm6AZBeCdi2h9eiuUF/zFywdc1Qdh0Fnx1glrDpDVZabD/1GYDVq41uDUlNLDHmlKsWNSaokwj
04Llw6wpjVBWa4pycL+yTr/qCU6YcWx2aZwhxnkhZf+E3DuZeu9kO9Oo5mNcdJvmLj3n+J0rP97v
vHrVdnnzpvbxffTp774jtrXso8uPvgPqoBZ7cGGhxXD/l8YRhYUWuf9/Rva/lXX/d+YZfYLCwuZh
h5wrtN5rrihWLEYrz+nWXNESZq3jfMNaeTuv95krbKMuMieoTVzaqhpQFMh7N7zIl8b5Hou8a6hC
IHRJo5txkX+CXORdtZ9mU1ujypmjiydHX6JpUPzHmZV48u5anHhybGA8cWcrKPFkZ1o5auSBFvlW
KKtF3sAHGmbq9SusjWHMaMKUxi1CDsOYPM5/wY1zNk31OO+cgVp2gnGeDu0sXGlYNqpMtmt9j1KD
TQ0JLYsoNSwrEmdPcRJnydQiPqwjV2KPX2wEX6JpuNiw62JjvtYcWStvZxnOcst6XsNZbs34iMyt
O0SaW1MG0jPsQGKVQBXjnZNQd4JE52lD4OBEd2xUK2/X+j6JzhvbDYdIdMeKVt5znFZeMrWIj+hs
ONwJEj3fPHVwortNopdrkZWC2+tUYbaCO1VwrUrBqQNp5bVCWW04HFwpONbsVzVN8KmCs8NaeXPr
iGMFZ4tW3gukVh4T9Z6jfd/VW+ewcppthtKeWCtv85WyVp7/TpD6ePjao3cWmNjsR3wz4DSVTMXb
DL8ibzOw+mYnk7ITOjV0JhTaiZdpKOLJ5+2b6iRaea3vv0ht75eBwz1859VbbYTbIsJd7p7+hjuB
ioYW0VZTJ9oOp5UXq5OmVzeglRe8C86w6XqtvODuDWjlsbA6brTyLCBFN9lDaOVtfOlr5TnIQfcZ
WnlYPw6vlVeeRAt7usWTaEmXK9ysc0U2z1fVWTYv5FCWzQuz5042z0072Twni2xeWB1n2Tw+Jdk8
puT57bZS3qhQng3CdKNCeZW0Xmhm8UZDAS8agIXymgJ512jgNfTv5PX6d+p6/TtN+nekf0f6d6R/
R/p3pH9H+nekf0f6d6R/R/p3pH9H+nekf0f6d6R/R/p3pH9H+nekf0f6d6R/R/p3pH9H+nekf0f6
d6R/R/p3pH9H+nekf0f6d6R/R/p3pH9H+nekf0f6d6R/R/p3pH9H+nekf0f6d6R/R/p3pH9H+nek
f0f6d6R/R/p3pH9H+nekf0f6d6R/R/p3pH9H+nekf0f6d6R/R/p3pH9H+nekf0f6d6R/19W/U2yn
fydn6pCaIpXqBFhNlaBqjIMMMjas1DE3LhDCc/KmhOe8VRRgyvsFqf8E19dMRdXgqjEFc9VYURC5
8w0OuqxqrlpbrMe3e3yyP4u6PN60gftvrZ40X2sxrM/UwB6sz2LFIVifwZkGci5YPgzrsxHKCgjI
J7hfWadfOYMT2Q3DBEvjHDHOXeYHfv0Njh9YCzEx7drjnIsxWmRUCfKXSUhBJLm8eTOgdgcURGZ7
Cux/Lsf7Pzeu4f4Prcf+v4vt/0qpiJnOPMPN8ecZk4cdcq4IaOY95opixSEURIIzrcHSYlZWcUbO
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
L32BMgc5KD9DoAzrx+EFytwsUCbN4jmgWaDM8SJQ5hOnCJT5KXMWKPO78Cw1FP6ts5RQ+IzYCZep
JFymJoYSLrtGuSzKeh1CuSy3W6mXqa5qWTGIUC2LHx1VL1PXq5appnKZcivlMpe0x3iWJptq5bJw
sy5mWv4zq5XLgthlHOekXEbKZaRcRsplpFxGymWkXEbKZaRcRsplpFxGymWkXEbKZaRcRsplpFxG
ymWkXEbKZaRcRsplpFxGymWkXEbKZaRcRsplpFxGymWkXEbKZaRcRsplpFxGymWkXEbKZaRcRspl
pFxGymWkXEbKZaRcRsplpFxGymWkXEbKZaRcRsplpFxGymWkXEbKZaRcRsplpFxGymWkXEbKZaRc
RsplpFxGymWkXEbKZaRcRsplRlk2K5cpNxOL7BSJViPKZQFGFC+6MeUyNSUuKT++cpmaRDINgvy9
d6NY5blxhHJZYA7djHKZmgROucxxGLfJ17jNTeuxIVjSKHZf5Eb/iuNGR0M7NJxiHZysOL6gUfAl
moaxmmIt7DJfy/fhEvt87XCJ/7zgfwYu8f17FZdYMxMU4CrLAo666nkNA3TFMK5/bhym7MfW4yj6
DTmK2FSPItsZRfoEo8imr23gPtWjBMe58X1SPPAS1ykuECkudKY//o6jP0ZDi+DwDqZVniDFeYS3
OwmnuNykeLmW44jEoYFxIvFsRaCIxJI3wJhyOpAEQiuUFbZUSnjq1L1+hQm3UowSbufGEVBbKTLU
9s6POKit4hXUVnWEdpyEoLZPrz6VXVgSgXHSwp2xEgjTcGeUxhFJL5M+mD77+vrOMOdz23VftIUK
nao1eZ73VoNmdK7rg3/5zfGdq7/8SI0LZc68FcL38aePj1+vKL5YTmz4SvEbsONPWzLtzRUM7VZs
eJ0ujYs91hTZIArvRE37w0uxvODf/RG34MuKKKxkZ8FXJ6g1ZFqTlQb7T202YOVag1tTQgN7rCnF
ikWtKco0Mi1YPsya0ghltaYoB/cr6/SrnuCEGcZoz40zxDgv5Ox7P+L2TrLeO6nONKr5ECc9tBMv
m3P8zpUf73devWq7vHkziIA8+vR33xHbWvbR5UffAXVQiz24sNBiuP9L44jCQovc//eR/a903f+d
eUafoLBQedgh5wq9lwTXbMVitPOcbs0VLaHWOs43rZ03e73PXKEadZE5QW2i01bVgCJBzkzDi3xp
nO+xyOuGSgRCpzS6GRf5b5CLvK7306atWeXM8cWUgy/RNCgG5MxaTHm+FiemHBvYI3GLFZSYsnem
kaNGHmqRb4SyWuQNfKBhpl6/wloZxgwnTG7cIuQxjMnj/FvkODeVpJaynTNQe4JKw6ZDOwtXGpYN
K5XNre9TatiGpJZFlBqWFcmz737ESZ5FU8v4dORL7AmKDZvESixcbNhNsVGuNcfWzpstw1luWc9r
OMut2WNEptYdIs2tKQPpAXogVYJVfvPRHkjuBInu0obAwYnu2LB23tz6PonuGtsNh0h0x4p23vc/
4rTzoqldfPTU2XC44ye6zjdPHZzobp3o87XISsHtdaowW8GdKrhWpeDUgbTzWqGsNhwOrhQca/ar
nib4VMHZYe28uXXEsYKzRTvvhx9x2nm+9Wqot++7euscVlKzzVDaE2vnbb5S1s7z3wlSIw9fe/TO
gmab/YhvBpymkql4m+Eh8jaDrm92aqY7oVNDZ0KhnXiZhiKefN6+qU6indf6/ovU9n4ZONzDd169
1Ua4LSLc5e7pj7gTqGhoEW3OO9F2OO28WJ00vboB7bzgXXCGTddr5wV3b0A7z5vbaufZCZKmmw6h
nbfxpaudZxnkIPsM7TysHwfXzpufRAt7usWTaEmXK9ysc0VGz6V3bRwYNsvohdlzJ6Pnpp2MnpNF
Ri+sjjsZPZ1k9DTX57fbynmjwnnhXfPZwnl6LZynu8J5xSBCOK8lmHeNJl5DD09fq4enzLV6eMqS
Hh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunhkR4e
6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunh
kR4e6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEeHunhkR4e6eGRHh7p4ZEe
Hunh9fXwxE4PT+8oRBEMxo6P2Qxsomiag0wyNqzcMTcuEEJ0+qaE6LxVFHDK+wWpAQXX14xF3uCs
MQVz1lhRFHmMgzBHQwvOWlu8x7d7fNK/jjo93rSB+2+tpjRfazHsz9TAHuzPYsUh2J/BmQaCjulD
sT8boawAgXyC+5V1+pUzOJHdMFywNM4R49xlnuBPSJ5gLcykJWuPcy7G6JFRNchfJiFFkeTy5k0u
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
tYiP6Ww45AkSPd08DT+BhFJGbhK9XIusFOR+pwrFCu5UQbYqBakOpJ/XCmW14ZBwpSBZp18VfKog
7bB+3tw64lhB2qKf991jnH6eb70e6p09h+KgmlqcCJsunVQ/b/OVin5e+C0sFC/FR+8sONPYjyjE
NKV4vs3w4DHuNoOrb3Y62zkTUmrsTMimYxSl4Yirxok8V+ok+nmt71+ltjJwuIfvvLpwv30TbosI
d7l7+j3yBMrWJ1CusyYph9PPi9VJ06sb0M8L3gVn9ATo53HlbkA/z4U7mxv9PAvI0y3m4hvUz9v4
0tfPc5CD7jP087B+HF4/rzyJFvZ0iyfRki5XuFnnipSer6qLlJ7PoSKl52fPWUrPb8hnKT2/+Zul
9PzqOEvp+Y+cpR6Q57fb6nmj4nk2CNPdhHheJcEXml680VDFi0Zh8bymaN41ungNTTx5vSaeul4T
T5MmHmnikSYeaeKRJh5p4pEmHmnikSYeaeKRJh5p4pEmHmnikSYeaeKRJh5p4pEmHmnikSYeaeKR
Jh5p4pEmHmnikSYeaeKRJh5p4pEmHmnikSYeaeKRJh5p4pEmHmnikSYeaeKRJh5p4pEmHmnikSYe
aeKRJh5p4pEmHmnikSYeaeKRJh5p4pEmHmnikSYeaeKRJh5p4pEmHmnikSYeaeKRJh5p4pEmHmni
kSYeaeJ1NfEc22niyZlE5KZIqjoBatMl0JqGUZt6XL2jNC4QYnTypsTovFWcGF24CQNxFrVYcxZd
g7WmEbR/XVRFHiJBzG7JWmPT1FHwCTd8jjxqkjPRtoF7cKWptLjY4hCgeh+xgIUZh2KA6pa0RDB9
CAZoO5wVKdBMcNeyXtcamNOv3SBmcNE6Rwx3l9GCP6LQgrHx1Xh37fFuxAhKMjUUr5OwvkjwevOm
ESP6IguDoGiY92mPIOTWYdWw2HwMwiN0EFwdBNaZdIw5waTD8vBDzhuB3rzPvFHMOJTKiGnNG6bF
tayCjZxJXrRnkta4yG7bveYNtpVYDbdpTxDjROG38H7Eju5HFq2L4YU/XtzoIwRU15aV/zFq5c+W
llnIO5B/q04QIZ6o9BaGf1u16cNyMZL+bdV+KVzM4PDftpWtVh1s6W+Es1r6Lcz/tqzXtQ4GgFs7
njmldQQA3No83n/Cjneu6vEuOloEjp9gvGd1IgeDuh0fX81L63KfGaklfuQQtYjjeV/wM3ZfUKkf
+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
19/R23ssq8y1z8r+W480mca/xcACbjfSpPTK/eFeaSwd3XGkS/OQeznuws3ey2k5KqX+m5A0n2JC
dcthKg04J6R5Obu7gmdXN+7mdMfdXGpuRV7/x+btnJb7rdR/q5E2v4lMQ2ZSms8CEkZafH+Yzj7g
mbxsNHmN2znTcTuXxZ7bOd5TWv3Z2s9+t3NGbrgy/6kji/s/eShbDzh1UPP8sOHB4IcNpnE/ZzoW
/6gA5o7B4uLOx7sOPa2ntNaOjs2xy5/blx89OpkrRr/7GK8SNpY+Gv5onT/V8usQHpL/pJM1Tjoq
xF8tySWgtiZrkcTsQ+s7T28dVxr3nc07fLcZZx6by8j9Z55M9z+Kl61PdeShoopND+UBGSzTxaF+
d+ih3ta/rLYd31Eaf51MM1mB1Mq3gCbvf+CxUfuBJ8oaB562Ho9/xWNy/5knT3o/w6qGFnDkyZPi
GdaewGdYtvGlpI07bt3zPKxIZxnz1BBfp0JrdHLnJ1/MPTU6KyHtn/z+tTWr1k3A5Je1NfeGTn4c
NSY/65h8X21NM1FbM2/W1syVp7YmqXMZS+MrY5luSG3NidHXamtaX6eym6mtuY72xtfWtFVtTTX+
I9mitiZtmGVtTZeZy9qaLiKlpB99IC1K9tERQxcl+egMooqSe3SS00VJPfp8NCrLmRdlOW2se5fl
zJplOcdqY950SU7qW7MsZ95ZejMOK70Zr1d+U1nbKL+ZFGU2o0b5zbR4PW6U38xQfhPlN1F+E+U3
UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+
E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPl
N1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3tUrisvym
srYiCyURIaU2o/ymlYImxl9+00xRfrNq3V9+003HLSu/aZuVRrrKbxp/+U0zCeizbYVMAspvmqr8
5sOBgD7bqGNikw4ambf85kaETpLJyP0U3GZ1zgBOZdW6nsZDhFOd8FAAL66o86lm9wVCLllp3ENp
B9hb2U3wUCrkbX8hTte9iTksL46DKohxC1NUEKtkkpAKYq43LUBCZTeoglibN2t4SR2QP/LOmfVW
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
CysLjw/bu9D2TXaPImfUBVZMvRMaJ1NMqI4n10uc+Wc3TsrZ3Rk8uzpuzG7WMbv5rdgQ/qGxIehM
Bqf8E9l8rJCGTGTRvA6Yu+JhQDp7l2fustHcNW4dte6Yu824q9Baxm79U9v8LjMLmVppPpnmu0x3
8WSAJwHpoyhrGWezd3uclG8d1xp3kukIcG9hy8ZEVa3xxem0G0LZQNb/iY1p3xDGv2bxDDn3xkaS
TREb5ZgCtnhqXzz65WCPmsaya/9ywbWtgzYE6sLNbgj8zN81ZfwTqqeY0MlvBVxDNmB2dTm79wTP
buNbgdjm7bOb3pI7hJnGhsAV4Vzj/juEtHmHkIdMZNF8wB1CWtwh5LP3euZOjeaucXdlTcfcVenC
zc6OQcf9T+v+3rpxtYVv2zO/qlfciczXiTRt0Ut0y4tpNG0n/CkozXoX5a1aD8hAaVYU5f3Kw4FF
eV3rNTcnUUcCGv2wsueuQC1yA2b9R8a27emwbYuSNNuYR8bdY/efO9LGuUP5HevkJjNhFgV4WU4O
ava+9b2st44rjTs57rjtGP3A8t5jh47MjheJVa11YKklLrmqfCVX4w2pAzsxklodWO3rVHIzdWDX
0d74OrC6qgOb6rEfd0upy/9GcVSVhLW2KglrdFESltJJUWqSPpEXpSQpWSdFqUhKx1lRCpJsXZR6
pLRpi1KO1E4yKi1ri9Kyibsn+3stLWubpWXtxpeWNbq9tKwx7aVljUVpWZSWRWlZlJZFaVmUlkVp
WZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZFaVmU
lkVpWZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZF
aVmUlkVpWZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZFaVmUlkVpWZSWRWlZlJZtoQ/ZqrSsGaMPGUZI
bQKgnnhDrO1n2GZJb4h51XrmLy1r9C0rLZsQFTagtKzrWO6lfWZZk/Y50Ty3FMCYy5KytGwgp52V
xuljSdRBH9uEAlrUGdb20y6zKQpoVc3baVyURJMuygMAcVlVQOuBUHYya9Wc1MH/zWP/SPTkSISw
m9/WAlqVqj8t5P0LaFWtB8Cs87KA1oMPhxV5SZI66TdJO8il+SYU0KLOsLafdJ1PUUCral5Ps2bS
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
aX8uUOK33TZT4bdTNcJv5yV+22a98duE3I6bSG2lZj6vo06kdt5EaudyidLuf+P+t3S5+z/pQG37
GNuTUO06/llnsRCw04KTHdcJ2FlSQLaLt5M6wDhLC7p2wXDOxynIKk3SAu0MgDAAwgAIAyAMgDAA
wgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAI
AyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAM
gDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwlplyQggHFWgoCwegYJyYkqNuEnrYHajW4fZ
tVk3WTfzw+GySTica5EvrpCydy0tzw8f2LObcE2z1YdrTKcaWa1sIPVwwnYdW1xsXpN5uWlZ2h84
WLae+7lpWVpgAu8JxQTarMZNy6O4nZuWqbHIuPPJw4NDC/Muztq70BYeCweS/FvD5eWl5R3Elfq3
Xswz6hb3wo90zFRvMp1rfZLKmJmA6VYFpu7eQEwdK9Wm23ZMtw3D1EXbRg3RdXnUQNTdvTx0w15u
7/vki/bWMOqq7sQ+Rl0e1Rl1SjUZdTryMOqc2CSjbpQ9ughw8YYw6iY6082oS3w9TG6GURfakY1n
1FVbT5J1bD0Voy7LK0ZdZkaMOlUw6vI47c2oyyf4dAya6+bTkV6TUVfj03Vw6QR6ty6aTj5Sp9Mp
XaPTue1VuHPK1LB0Ll6L122NR+eiBKQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNp
DqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5
kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZA
mgNpDqQ5kOa0yrKKNKf0CPeTMg4q8VCt9g0H/zIn6KW5meiJOI+NNtEgmvnmwspjM/uPrawMlw8u
PuneSqMoVsM80tHM7H/abub2LRw+sPTNrdtm7rlzbkYblVdkrDgVFFXqRYflSW84W9V65gfnKX3L
wHlONowyRV+O+Sh6edak6E00zy0pPxCNZpD5c/cF8udYaRyIlkTtQLRc+8eRTIzDtcYXmzCaWp7l
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
V1Ljdf5XUuN1/ldS43X+V1Ljdf5X8iqv87+SV3md/5W8yuv8r+RVXud/Ja/yOv8/NJO8zv8PzSSv
8/9DPeB1/n9pxnmd/1/+HGn8X/4cafztZbJI42+vkEUaf3PrI+N1/rcfkEUaf3uVLNL42w/JIo2/
/Ygs0vjbj8kijb/9hCzS+NtrZLHG62SxxhtksYYbecbr/G8/JYs13iKLNX5GFmv8nCzW+AVZrPFL
sljjbbJY4x2yWOM4Wazh4jnjdf63k2SxximyWOM0WazxLlmscYYs1jhLFmucI4s13iOLNc6TxRpu
djNe53+7SBZrXCKLNS6TxRqrZLHG+2SxxgdkscYaWaxxhSzWuEoWa7jclPE6/9uvyGKND8lijY/I
Yo2PyWKNX5PFGr8hizV+SxZr/I4s0rj+FFmkcd3t3Rmv8+vPkEUa158lizSuf5ss0rj+HFmkcf15
skjj+gtkkcb1F8kijevfIYs1vksWa7j9MuN1fv0lsljjZbJY4xWyWIPij9f5dYo/XufXKf54nV+n
+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufX
Kf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5
dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1
ft3FX87r/PoaWaxxhSzW+Igs0vj07afIzNh8msyczWfIVGw+S6Zm89tkGjafI9Oy6YIl5+X+6dsv
kBmz+SKZCZvfIVPUvkumqH2PTFF7iUxRe5lMUXuFTFH7Ppmi5sImT0TtVTJF7YdkitqPyBS1H5Mp
aj8hU9ReI1PUXidT1N4gU9TeJFPUXADlqai9Raao/YxMUfs5maL2CzJF7ZdkitrbZIraO2SK2nEy
Re0EmaLmQinPRO0UmaJ2mkxRe5dMUTtDpqidJVPUzpEpau+RKWrnyRS1C2Sy2jvkeU4Ln75Dnue8
8Ok75HlODJ++Q57nzPDpO+R5Tg2fvkOe59zw6TvkeU4On75Dnufs8Ok75HlOD5++Q57PRY08r0SN
PK9EjTyvRI08r0SNPK9EjTyvRI08r0SNPK9EjTyvRI08r0SNPK9FjTyvRY08r0WNPK9FjTyvRY08
r0WNPK9FjTzPGePT4+RNThmfHidvcs749Dh5k5PGp8fJm5w1Pj1O3uS08elx8ibnjU+Pkzc5cXx6
nLzJmePT4+RNTh2fHidvGlEjbxpRI28aUSNvWlEjb1pRu0imqF0iU9Qukylqq2SK2vtkstoJ6iRn
kU9PUCc5jXx6gjrJeeTTE66TihPJpyfOkMlqJ86SyWonzpHJaifeI5PVTpwnk9VOXCBT1C6SKWqX
yBS1y2SKmuukklxy4n0yRe0DMkVtjUxRu0KmqF0lU9SukSlqvyJT1D4kU9Q+IlPU3KaqJJec+DWZ
ovYbMkXtt2SK2u/IZLWTT5HJaie/TSarnaR2JZec5HZZ7dQrZLLaKRfKSnLJqZ+QyWqnXiOT1U69
TiarnaJ5kFxyiuZBcskpmgfJJadoHiSXnKJ5kFxyiuZBcskpmgfJJadoHiSXnKJ5kFxyivorueQU
9VdyySmaB8klp2geJJeconmQXHKK5kFyyWmaB8klp+mzkkvepRFLLjnzNJmsduZZMlnt7KtkstpZ
6rrkknMvkclq771DJqu9d5xMVnvvBJmsdp4uk1xygRwgueQCfVZyyQX6rOSSCzSTkksu0uxILrn0
AzJZ7dJpMlntMg1Icsllml/JJZdpbJJLVt8gk9VW3yST1VZJWHLJKglLLnmfBi+55H2aVMkl73Nj
rPYBX8ZqH/BlrPYB9VdyyQfkeckla9SY5JI1WnqSS9bIhZJL1qhdySVXaEokl1whX0guuUJqkkuu
kJrkkivUguSSKxQEkkuuUH8ll1yhdiWXXKEgkFxyhYJAcsk1mj7JJdcoVUguuUapQnLJNeqv5JJr
LlVoySXX3iOT1a6dJ5PVrl0gk9WuXSST1a5dIpPVPv4Fmaz28S/JZLXfcGOs9htujNV+6yJKSy75
7ctkstpvXyGT1X77fTJJ7cZTx8nM2DxDZs4mtcu55MZTH5Cp2Vwj07B5hUzLpptJzbnkxlMfkxmz
+WsyEzZ/Q6ao/ZZMUfsdmaz29E/JZLWn3yKT1Z7+GZms9vTPyWS1p2keOJfceJrmgXPJjaffJpPV
nn6HTFZ7msbGueTG0yfIFLWTZIraKTJF7TSZovYumaJGU5KJ2lkyRY28mYkaTVQmauSATNTIm5mo
kTczUSNvZqJ2mUxRWyVT1FzY61zUaNZzUaNZz0WNZj0Xtatkito1MkXtV2SK2odkihp5KBc18lAu
auQhJWrkISVq5CElauQhziU3nnmKTFZ75mkyWe2ZZ8hktWeeJZPVnvk2maz2zHNkstoz7sSkOZfc
eOYFMlntmRfJZLVnvkOmqH2XTFH7HpmiRlGtRY2iWosaRbUWNYpqLWouy2kjaq+SKWo/JFPUfkSm
qP2YTFH7CZmi9hqZovY6maL2Bpmi9iaZokbxa0WN4teKGsWvFTWKX84lN56lwXMuufEsjYJzyY1n
yVmcS248S87iXHLjWfIQ55Ibz5KHOJfceNZ5iP8dkzN/RyarPfdTMlntubfIZLXnfkYmqz33czJZ
7blfkMlqz58gk9WeP0kmqz1/ikxWe96tC8O55Mbz75LJai98RCarvfAxmaz2wq/JZLUXfkMmq71A
/ZVc8gL1V3LJiy+QyWrfYZPVvkum5JLvXiKT1b73fTJZ7Xv8Kqu9xK+y2ku/JJPVXuYWWO1lGrHk
kpdpxJJLXubPstorLqqN5JJXniaT1V55hkxWe+VZMlntlW+TyWqvPEcmq73yPJms9goJSy555UUy
We2V75Apai6qjeSSV75Hpqi9RKaovUymqL1CpqjRMCWXvHmNTFZ781dkstqbH5LJam+SWySXvElu
kVzyJrlFcsmb5BbJJW+SWySXvElukVzy1iqZrPbW+2Sy2lsfkMlqb62RyWpvXSGT1d5y2chILnmL
Oim55C3qpOSSX5IvJJfQ2d5ILqFDupFcQod0I7mEDulGcslxEpZccpyEJZccJ2HJJcdJWHLJcRKW
XHKchCWXHKfZkVxynGZHcslxmh3JJcdpdiSXHKfZkVxynGZHcslxmh3JJScoYCSXnKCAkVxyggJG
cskJChjJJScoYCSXnKCAkVxyggJGcskJChjJJScoYCSXnKCAkVxyggJGcskJChjJJScoYCSXnKCA
kVxyggJGcskJChjJJSd+QKaovUqmqP2QTFFzadBKLjnxYzJF7SdkitprZIra62SK2htkitqbZIra
T8kUtbfIFLWfkSlqLgis5JITvyBT1H5Jpqi9TaaovUOmqB0nU9ROkClqJ8kUtVNkitppMkXNpSsr
uYTu36zkErp/s5JL6P7NSi6h+zcruYTu36zkErp/s5JL6P7NSi6h+zcruYTu36zkErp/s5JL6P7N
Si6h+zcruYTu36zkErp/s5JL6I7KSi45+TSZrHbyGTJZ7eSzZLIa3XJZySUnXURZySUnnyeT1U6+
QCarnXyRTFY7+R0yRe27ZIra98gUtZfIFLWXyRS1V8gUNRdRVnLJyR+QKWqvkilqPyRT1CiiJJec
pIiSXHKSIkpyyUmKKMklJymiJJecpIiSXHKSIkpyyUmKKMklJymiJJecpIiSXHKSIkpyyUmKKMkl
JymMJJecpDCSXHKSwkhyyUkKI8klJymMJJecpDCSXHKSwkhyyUkKI8klJymMJJecpDCSXHKSwkhy
yUkKI8klJyk0JJecpNCQXHKSQkNyyUkKDcklJyk0JJecpNCQXHLyKpmido1MUfsVmaL2IZmi9hGZ
ovYxmax2ikJDcskpCg3JJacoNCSXnKLQkFxyikJDcskpCg3JJacoNCSXnKLQkFxCt/ZWcgnd2lvJ
JadcaMSRJJNTr7Itej9kWwR/xLYo/phtkfwJ26L5Gtsi+jrbovoG2yL7Jtui+1OyJa2ceott0f0Z
26L7c7ZF9xdsi+4v2Rbdt9kW3XfYFt3jbIvuCbZF9yTZkmBOnWJbdE+zLbrvsi26Z9gW3bNsi+45
tkX3PbZF9zzbonuBbdG9TLakGnpa4mzRfZ9t0f2AbdFdY5t16cGFs1n39NNss+7pZ9hm3dPPss26
p7/NNuuefo5sSTqnn2ebdU+/wDbrnn6RbdY9/R22Rfe7bIvu99gW3ZfYFt2X2RbdV9gW3e+TLenn
NMeY5J/THGOSgE5zjEkGOs0xJinoNMeY5KDTHGOShE5zjEkWOs0xJmnoNMeY5KHTHGOSiE5zjEkm
Os0xJqnoNMeY5KLTHGOSjE5zjEk2Os0xJunoNMeY5KPTHGOSkE5zjElGOs0xJinpNMeY5KTTHGOS
lE5zjElWOs0xJmnpNMeY5KXTHGOSmE5zjElmOs0xJqnpNMeS5KbTHEuSnE5zLEl2Os2xJOnpNMeS
5KfTV9gW3atsi+41tkX3V2yL7odsi+5HbIvux2RLmjr9a7ZF9zdsi+5v2Rbd37HNuu9yPEuuepfj
WZLVuxzPkq3e5XiWdPUux7Pkq3cpnmPJV+8+zzbrvvsC26z77otss+6732FbdH/Atui+yrbo/pBt
0f0R26L7Y7ZFl+Iwlnz17mtsi+7rbIvuG2yL7ptss+6Zp9hmXXrGGMeSr848wzbr0gPHOJZ8debb
bLPuGR6v5KszPF7JV2d4vJKvzvB4JV+d4fFKvjrzXbZF93tsi+5LbIvuy2yL7itsiy6t31jy1Rme
N8lXZ3jeJF+d4XmTfHWG503y1RmeN8lXZ3jeJF+d4XmTfHWG503y1RmeN8lXZ3jeJF+d+SnbovsW
26L7Ntui+w7bonucbdE9wbbonmRbdE+xLbqn2RZdWo+x5KszZ9gW3bNsi+45tkX3PbZF9zzbonuB
bdG9yLboXmJbdC+zLbq0fmPJV2feZ1t0P2BbdNfYFt0rbIvuVbZF9xrbovsrtkX3Q7ZF9yO2RZfW
byz56syv2Rbd37Atur9lW3R/xzbrnuV4lnx1luNZ8tVZjmfJV2c5niVfneV4lnx1luNZ8tVZjmfJ
V2c5niVfneV4lnx1luNZ8tVZjmfJV2c5niVfneV4lnx1luNZ8tVZjmfJV2c5niVfneV4lnx1luNZ
8tVZjmfJV2c5niVfneV4lnx1luNZ8tVZjmfJV2c5niVfneV4lnx1luI5kXx19qdsi+5bbIvuz9gW
3Z+zLbq/YFt032ZbdN9hW3SPsy26J9gWXYr5RPLV2VNsi+5ptkX3XbZF9wzbonuWbdE9x7bovse2
6J5nW3QvsC26FPOJ5Kuzl9gW3ctsi+4q26L7Ptui+wHborvGtuheYVt0r7ItutfYFl2K+UTy1dkP
2Rbdj9gW3Y/ZFt1fsy26v2Obdc89xTbrnnuabdY99wzbrHvuWbZZ9xzFtvzC9ca559hm3XPPs826
515gm3XPvcg26577Dtui+wO2RfdVtkX3h2yL7o/YFl2KSfnV641zP2FbdF9jW3RfZ1t032BbdDkm
JV+d4xiQfHWOfST56hz7SPLVOfaR5Ktz7CPJV+fYR5KvzrGPJF+dYx9JvjrHPpJ8dY59JPnqHPtI
8tU59pHkq3PsI8lX59hHkq/OUV6SX8feOM8+knx1nn0k+eo8+0jy1Xn2keSr8+wjyVfn2UeSr86z
jyRfnWcfSb46zz6SfHWefST56vx32Rbd77Etui+xLbovsy26r7Atut9nW3TZ15KvzrOvJV+dZ19L
vjrPvpZ8dZ59LfnqPPta8tV59rXkq/Psa8lX59nXkq/Os68lX53n/CP56jznH8lX5zn/SL46T/lH
fll74/wv2BbdX7Itum+zLbrvsC26x9kW3RNsi+5JtkX3FNuie5pt0aU4lF/b3jh/hm3RPcu26J5j
W3TfY1t0z7MtuhfYFt2LbIvuJbZF9zLboktxLr/AvXH+fbZF9wO2RXeNbdG9wrboXmVbdK+xLbq/
Ylt0P2RbdD9iW3QpzuVXuTfO/5pt0f0N26L7W7ZF93dss+6Fp9hm3QtPs826F55hm3UvPMs269KX
zrH8TvfGBYp/+aXujQvPs826F15gm3UvvMg26174Dtui+122Rfd7bIvuD9gW3VfZFt0fsi26FM/y
690bF37Mtuj+hG3RfY1t0X2dbdF9g23RfZNt0eUYkHx1gWNA8tUFjgHJVxc4BiRfXeAYkHx1gWNA
8tUFjgHJVxc4BiRfXeAYkHx1kedc8tVFnnPJVxd5ziVfXeQ5l3x1kedc8tVFnnPJVxd5ziVfXeQ5
l3x1kedc8tVFnnPJVxd5ziVfXeQ5l3x18SW2RfdltkWXco788vfGxe+zLbrsI8lXF9lHkq8uso8k
X11kH0m+usg+knx1kX0k+eoi+0jy1UX2keSri+wjyVcX2UeSry7+lG3RfYtt0f0Z26LLOUfy1UXO
OZKvLnLOkXx1kXOO5KuLnHMkX12knCO/EL5x8QTbonuSbdE9xbbonmZbdN9lW3TPsC26Z9kW3XNs
i+57bIsuxZv8avjGxQtsi+5FtkX3Etuie5lt0V1lW3TfZ1t0P2BbdNfYFt0rbIsu5Rz5JfGNi9fY
Ft1fsS26H7Ituh+xLbofsy26v2ZbdH/Dtuj+lm3R/R3brHuJ4l9+XXzj0tNss+6lZ9hm3UvPss26
l77NNuteeo5t1r30PNuse+kFtln30otss+6l77AtuhT/8ovjG5e+x7bovsS26L7Mtui+wrbofp9t
0f0B26L7Ktui+0O2RfdHbIsuxb/8CvnGpZ+wLbqvsS26r7Mtum+wLbpvsi26P2VbdN9iW3R/xrbo
/pxt0aX4l18m37j0S7ZF9222RfcdtkWX41/y1SWOf8lXlzj+JV9d4viXfHWJ41/y1SWOf8lXlzj+
JV9d4viXfHWJ41/y1SWOf8lXlzj+JV9d4viXfHWJ41/y1SWOf8lXlzj+JV9d4viXfHWJ41/y1SWO
f8lXlzneJF9d5niTfHWZ403y1WWON8lXlzneJF9d5niTfHWZ403y1WWON8lXlzneJF9d5niTfHWZ
403y1WWON8lXlzneJF9d5niTfHWZ403y1WWON8lXlzneJF9d5niTfHWZ4k1+6Xzj8o/YFt0fsy26
P2FbdF9jW3RfZ1t032BbdN9kW3R/yrbovsW26FK8yc+eb1z+Odui+wu2RfeXbIvu22yL7jtsi+5x
tkX3BNuie5Jt0T3FtuhSvMkPoG9cfpdt0T3DtuieZVt0z7Etuu+xLbrn2RbdC2yL7kW2RfcS26JL
8SY/hb5xeZVt0X2fbdH9gG3RXWNbdK+wLbpX2Rbda2yz7upTbLPu6tNss+4qxaf8KPrG6rNss+7q
t9lm3dXn2Gbd1efZZt3VF9hm3dUX2Wbd1e+wLbovsy26r7AtuhR78vPoG6s/YFt0X2VbdDn2JF+t
cuxJvlrl2JN8tcqxJ/lqlWNP8tUqx57kq1WOPclXqxx7kq9WOfYkX61y7Em+WuXYk3y1yrEn+WqV
Y0/y1SrHnuSrVY49yVerHHuSr1Y59iRfrXLsSb5a5diTfLXKsSf5apVjT/LVKsee5KtVjj3JV6sc
e5KvVjn2JF+tcuxJvlrl2JN8tcqxJ/lqlWNP8tUqx57kq1WOPclXqxx7kq9WOfYkX61y7Em+WuXY
k3y1yrEn+WqVY0/y1SrHnuSr1V+xLbofsi26H7Etuh+zLbq/Zlt0f8M2637AcSL56gOOE8lXH3Cc
SL76gGJDflB944OfsM26H7zGNut+8DrbrPvBG2yz7gdvss26H/yUbdF9i23R/RnbovtztkWXYkN+
Wn3jg1+yLbpvsy2677AtusfZFt0TbIvuSbZF9xTbonuabdF9l23RpdiQH1nf+OAs26J7jm3RfY9t
0T3PtuheYFt0L7ItupfYFt3LbIvuKtuiS7EhP7e+8cEHbIvuGtuie4Vt0b3Ktuj+im3R/ZBt1l17
im3WpV/kxvKz6xtrz7DNumuUo+SH1zfWvs026649xzbrrj3PNuuuvcA26669yDbrrn2HbdH9Ltui
+z22RfcltkWX8pj8BPvG2itsi+732RbdH7Atuq+yLbo/ZFt0f8S26HKsSr5a41iVfLXGsSr5ao1j
VfLVGseq5Ks1jlXJV2scq5Kv1jhWJV+tcaxKvlrjWJV8tcaxKvlqjWNV8tUax6rkqzWOVclXaxyr
kq/WOFYlX61xrEq+WuNYlXy1xrEq+WqNY1Xy1RrHquSrNY5VyVdrHKuSr9Y4ViVfrXGsSr5a41iV
fLXGsSr5ao1jVfLVGseq5Ks1jlXJV2scq5Kv1jhWJV+tcaxKvlrjWJV8tcaxKvlq7RrbostxK/lq
jeNW8hX9TjyW32vfWPuYbdH9Ndui+xu2Rfe3bIsu3bPIj7ZvXHmKbda98jTbrHvlGbZZ98qzbLMu
/RI9ll9u37jyHNuse+V5tln3ygtss+6VF9lm3SsU//Lz7RtXvsu26H6PbdF9iW3RfZlt0X2FbdH9
Ptui+wO2RfdVtkX3h2yLLsV/8UPuKz9mW3R/wrbovsa26L7Otui+wbbovsm26P6UbdF9i23R/Rnb
okvxX/yk+8ov2BbdX7Itum+zLbrvsC26x9kW3RNsi+5JtkX3FNuie5pt0aX4L37cfeUM26J7lm3R
Pce26L7HtuieZ1t0L7AtuhfZFt1LbIvuZbZFl+K/+Jn3lffZFt0P2BbdNbZF9wrbonuVbdG9xrbo
/opt0f2QbdH9iG3RpfgvfvBN/84hLn7xTf/QIS5+8k3/0iEufvN9heNf8tVVjn/JV1c5/iVfXeX4
l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5
/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVV
jn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1
leK/+GH41ZNsi+4ptkX3NNui+y7bonuGbdE9y7bonmNbdN9jW3TPsy26FP/FT8SvXmRbdC+xLbqX
2RbdVbZF9322RfcDtkV3jW3RvcK26F5lW3Qp/osfi1/9Fdui+yHbovsR26L7Mdui+2u2Rfc3bIvu
b9kW3d+xzbrXnmKbda9R/Bc/G7/2DNuse+1Ztln32rfZZt1rz7HNuteeZ5t1r73ANutee5Ft1r32
HbZF97tsiy7Ff/ED8msvsS26L7Mtuq+wLbrfZ1t0f8C26L7Ktuj+kG3R/RHbovtjtkWX4r/4Kfm1
19gW3dfZFt032BbdN9kW3Z+yLbpvsS26P2NbdH/Otuj+gm3RpfgvflR+7W22RfcdtkX3ONuiy/Ev
+eoax7/kq2sc/5KvrnH8S766xvEv+eoax7/kq2sc/5KvrnH8S766xvEv+eoax7/kq2sc/5KvrnH8
S766xvEv+eoax7/kq2sc/5KvrnH8S766xvEv+eoax7/kq2sc/5KvrnHcSr66xnEr+eoax63kq2sc
t5KvPuJ5lnz1Ec+z5KuPeJ4lX33E8yz56mNeL5KvPub1IvnqY9aVfPUx60q++ph1JV99zLqcrz57
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
x7MdVxLk74UVPOv3xPqj6wqM8l3dNtf6tvT2dplmapHGSj83Ny29/lDopH2RbTXFR9Tsr7fz9D/z
5SRZ+MGgqQJMXgHrzySvZ8vJ5Y9P88ky2dxL0jc4ncd8zhQ03VhaK8xsv5/Wn05eJ7+f3k7HTTcZ
ChpvMhyxTp9ZvaowBy3vNRfJePJ1dP1+9jz5fracp/BunFUfpH99TqaFw+oqzt/3en+i/L3F0sch
iqvv2VB6zxJtIcriB6Jsliy4/0vb1hMN1jOs3x3UvPkwCUTrUzL6MixQHHqlk60NRoH3+2R55Z3f
LpfJ/PL6R/oUB0FAPDJj6/n/c2yHnybTi9nv6aW8eDL0Ihua4LC8kGxe6R7IVMUzEvEs4q7vgW+v
0qXMvrbeW/OXbadBvG9lF5ddk/+qLQ12sJ5h81Gm+bMMhyAcVvwsk3+Y4ajjUqz/a9tS4vLDjPtp
hndUlP3/riguMh87993C/fhjaRG9tWa7fe91376FobOf3S4vMhdnG+RYHJ8vZte36Q3VBMYqpUOb
ZXjXp7HiqnTQ6Y58GcB3ZN4uXK2E4q9U0Y4YBCkvOi8zLb2bNYF3xzKulspXU3lDfN3hhqjd8tXN
5avX9Orl7debTabeDw/U9scgnSd55cZcwvh4PpqOr56kCcw3t8NGl+aVGfPx5TKzeN54MW9pbBQW
3spHXBgnH5nCFfkoKiyPj8gUhsZHyhZ2xUdEhRnxkdaF1fARm8JI+IijtVe3yr260yUMEX/uwni7
YtFN3oHZ6dJddfDOHb3/U1y6315NvMzLfpE5qNtQPcw/y6tH9x/5adLSmswepYc5nSkfpfJRfph9
9CwfDQa95Xdv+d1bfveW373ld2/53Vt+95bfveV3b/ndW373lt+95Xdv+d1bfveW373ld2/53Vt+
95bfveV3b/ndW373lt+95Xdv+d1bfveW373ld2/53Vt+95bfveV3b/ndW373lt+95Xdv+d1bfveW
373ld2/53Vt+95bfveV3b/ndW373lt+95Xdv+d1bfveW373ld2/53Vt+95bfveV3b/ndW373lt+9
5Xdv+d1bfveW373ld2/53Vt+95bfveX3f7zld2QoKI2HMk+b0nEofTSzz9Gi0WL2mmavRdH98V3N
/bHu4OSYMOpIcMLSYdUJqzBy0mv/xNPZfJy8OXuXGVK5ZqyO/VNp/LV5cSw4Z72+vb52xhvJUlDH
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
sMZXtchXqaG/Gsp8NQzK+P7xSSvuJV+lSn+VdvRXwy58lR2+Ss6+SnvYV4v+aijy1bDGV7WRcd+u
91DmqyGX8f3H7biHg800G9x39FfDLnyVHb5Kzr5Ke9hXi/5qKPLVsMZXtchXqaG/Gsp8NQzL+P5J
O+4lX6VKf5V29FfDLnyVHb7KDm/iPfCmor8aiXw1rPFVHcm4b9d7JPPVMC7j+0/acbeDzTQb3Hf0
V6MufFU7fJUdPZLvXo+kor8aiXw1qvFVLfPVhv5qJPPViMr4/tN23Fd8tdJfpR391agLX9UOX2VH
j2S9B9yLehf5alTjq1rmqw391Ujmq5Ep4/unrbibFV+t9FdpR3816sJXtcNX2dEj+e71SCr6q5HI
V6MaXzUyX23or1qZr0a2jO8/a8d9xVcr/VXa0V+1XfiqdvgqO3ok2z3gnte7FfmqrfFVI/PVhv6q
lfmqVWV8/3k77iu+Wumv0o7+qu30I1SHr2pnX9V72FeL/qoV+aqt8VUj89WG/qqV+arVZXz/RTvu
K75a6a/Sjv6q7cJXtcNXtbOv6j3sq0V/1Yp81db4qpH5akN/1cp81UZlfP9lO+4rvlrpr9KO/mrc
ha9qh69qZ1/Ve9hXi/5qLPLVuMZXjcxXG/qrscxX46CM7//SjvuKr1b6q7Sjvxp34ava4ava2Vf1
HvbVor8ai3w1rvFVI/PVhv5qLPPVmMv4/qt23Fd8tdJfpR391bgLX9UOX9XOvqr3sK8W/dVY5Ktx
ja8ama829Fdjma/GYRnf/7Ud9xVfrfRXaUd/Ne7CV7XDV42zr5o97Kt5fzU7d03CvcZXjcxXt/ur
2ZFtIu5xGd9/3Y77iq9W+qvc3F+loAtfNQ5fNc6+au5+X+W8v5odNNeOOwU1vmpEvsrb/dXsjDoB
93yiPL7/ph33kq9ypb/Kzf1VCrrwVePwVePsq0bvAfei3kMR9xpfNbGMe0O9RzLupozvv23FPQwG
m2k2uKsd9d6FrxqHrzquPbwH1x5WRb3HIu41vhqKfJW3+6vZKYQi7raM7//WjnvJV7nSX+Xm/iqp
LnzVOHzVce/hPbj3cN5fzc5OFHBXNb4aKhn37XpXIl/NJ8rj++/acafBZpoN7s39VVJd+Kpx+Krj
4sN7cPHhvL+aHRYp4V7jq6HIV5ka6j2UcddlfP+sHfeSr3Klv8q0o947mSc5fNVx8+E9uPkwFfVu
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
Tdw0whvDBroJLWHDLItmF0XTJm0AacOK3nBm0WxTNI8UTQ6K1rJodlA0p6YR3ho2XBTdZ9E8y6LZ
RdEUpQ0kbaAVNpzVYFM0jxRNDorWsmh2UDTXphG+fm4DXxTdZ9E8y6LZRdEkKLqwxDdecIeVzyya
bYrmkaLZQdFKFp02B0UzNY3wjWHDRdF9Fs2TLDptLoomSdEsf5R4RYs+sui0mRT9cvijDQ6KVrLo
tNkUvYsdGuGdYcNF0X0WzZMsOm0uiiZJ0SwnrCsWyPCRRaet2jaMFM0OikatGsBhQ2ka4VvDhoui
+yyacVYNLoomQdFVPIL48mEFReNZDWTbMFI0OygatWpghw3YNMJ3hg0XRfdZNE+y6BRdFE0gbUBp
w4ofpSOLTtGk6BRHimYHRStZdIo2Re9ih0b43rDhoug+i+ZJFp2ii6LpTtFQ97eN3z/lFXOlI41O
sdhGjBzNDo5W0ugUq8OI3DTCD4YRF0f3aTTzrB4eOHqUf43bxq/q41f08NXrE1DjV+XxK3z46nXt
3fhVfvwKHr/ih6/o8ejp8ejp8ej58ej58ej58ejjtinfZeU7UL57PIMYk/JdVb57PImYovJdUb5T
ziMr55GV88jKeWTlPIpyHkU5j6KcR1XOoyrnUZXzAOU8QDkPUM4DlPNA5TxQOQ9UzoOU8yDlPEg5
D1bOg5XzYOU8+PE80paU76ry3eN5pBiV74ry3eN5pLQp32XlO1C+U84jK+eRlfPIynkU5TyKch5F
OY+qnEdVzqMq51GV8wDlPEA5D1DOA5XzQOU8UDkPUs6DlPMg5TxIOQ9WzoOV8+DH88hbVL4ryneP
55HjpnyXle9A+e7xPPZ36T58V5XvlPPIynlk5Tyych5FOY+inEdRzqMo56E08Kx08Ky08Kz08Kw0
8ax08ay08az08aw08qx08qy08qz08qw086x086y086z086L086L086L086L086L086L086L086L0
86L086L086L086L086L086L086L086L086L086L086L086L086L086L086L086L086L086L086L0
86L086L086L086L086L086L086L086r086r086r086r086r086r086r086r086r086r086r086r0
86r086r086r086r086r086r086r086r086r086r086r086r086r086r086r086r086r086r086r0
86r086r0c1D6OSj9HJR+Dko/B6Wfg9LPQennoPRzUPo5KP0clH4OSj8HpZ+D0s9B6eeg9HNQ+jko
/RyUfg4akmtMrkG50s9B6eeg9HNQ+jko/RyUfg5KPweln4PSz0Hp58Da3QXl9oLSz1Hp56j0c1T6
OSr9HJV+jko/R6Wfo9LPMWu3SZTzUPo5Kv0clX6OSj9HpZ+j0s9R6eeo9HNU+jmCdr9HOQ+ln6PS
z1Hp56j0c1T6OSr9HJV+jko/R6WfI2s3rpQ7V0o/J6Wfk9LPSennpPRzUvo5Kf2clH5OSj8npZ+T
0s9J6eek9HNS+jkp/ZyUfk5KPyeln5PSz0np56T0c1L6OSn9nJR+Tko/J6Wfk9LPSennpPRzUvo5
Kf2clH5OSj9npZ+z0s9Z6ees9HNW+jkr/ZyVfs5KP2eln7PSz1np56z0c1b6OSv9nJV+zko/Z6Wf
s9LPWennrPRzVvo5K/2clX7OSj9npZ+z0s9Z6ees9HNW+jlrN9u1u+3a7Xb9frt2w129467ectfu
uW/aTfdNu+u+abfdN+2++6bdeN+0O+9bViME7Yy0m++bdvd9026/b9r99027Ab9pd+A37Rb8pt2D
37Sb8BuoqYh2Rtp9+E27Eb9pd+I37Vb8pt2L37Sb8Zt2N37Tbsdv2v34jdWgR0t6Ni3q2bSsR2n6
x76A6i516p5p6g5e6n5S6u5G6l476s4v6j4k6q4Y6h4N6o4B6vPr6tPU6rO96pOm6nOP6lN46jNh
6hNK6vMy6tMb6rME6sp2dZ21uupXXYOqrohU1+epq8XUtUvqShp1XYe6ykBNvN99/N+//svfPvvb
v/7nfUnAFfh/8df/+Pu//es//vqP//z/n/rzufwC7dR/WLbtWLTN2uILcmT+x6JtCO+fJv7Xgu3+
sWfm2cKLa/3hh3/8/fP/9c1fwsOtRc0Oed7/9pf0X9/94/+8jvtvf/3bv/+ljfbTIT4WVqRrSfaH
//Ev//H3v/7PB3Up9PIv07bV419ea2Pe/PVv/+2/v//40+tfD9f/29lwHkf376/1Lu8+vlw7//n3
F/lusckP//j3fx/+iblwOaVh4bK5evz+x+2Vyvtff/2j4cPTS+BcLP76p8Ul8FKWSb8Ekm+V8v3R
Cb4vgIoL9nfdj3Q/MLAHfFiiTPaAv87kxgJM6Bj9Y4EyhR+fjj7fhI4cfZyMvm9x8v2JiYj3ZYAv
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
1IBAvVWt3jRVb9+pN5LUWxrvPv7vX//lb5/97V//837T57qj88Vf/+Pv//av//jrP/7z//9tHTzv
sIF9W2dI7h3311C7v4aOmzpHbg/h5+e3dK57a/26+Iize2tX5vThH3///H998xflfk7SHJGn/m9/
gf/67q//53Xof/vr3/79L23An47yefPsCuU//I9/+Y+///V/jvrd81H7vyTY/+V914w3f/3bf/vv
7z/+9PrXw/X/dk6cx9H9++uu5ruPL5fPf/79Rb67o/jDP/7934d/YsbW+4tG5CXhuM/X/ridU+9/
/fWPhl+eXwXXbb3XViWuAs76VZCcGbV4dQGh2CL8ZcK44P7qy9HuB1ftUR8SascCmtf55FiICRwW
HPk0hV+fW3AtnnkVkhbQxAJfNh03sbufeJDxhQ1WZHAvR7sfHNkWDMm0Y+HM65znwQJ2WHDk0hx+
M1YwXatmXpXuHrym1aoH2RdKx9jt7Fe7nf0WZD6vx7sfnh1K53H1t71oZs+tRxuyI5PO5+LvLfxu
+NCWzOxS0odJLWRfIh3lDotZvOLp9ROv8OGohmwn0nlc+x0dPijlkB2BdD6Xfsfwh+FDugkp4UOc
1YMvjo79/oql219xwSqy1+PdD8+Oo/O48tteLpOiVg+ONDqfC79T+NPwoS2W2aWkD7N6YCt1O/qS
+kup1q16Ealn9P9q2v168q/nWuxgO/OnTrtTVGqrOGLtzOe0+7P3rmn3LiQcTZPKur/OdTLtPuZ6
z0/93/6C//XDv3/StPv1gHb9/KnT7pS341+W/7tp9/Xvq3vaff0Tm8RK/dRp9/XHHfBV6jnt/vy9
a9qdXktMXAUZJ1eBb8F0vC+CQ7GzDq3Yp/P1WPdDY3vM6VMn3en1ps5YhnVzGEDnpPuL965J9y4k
DChJN6D6lknH+9K3/R337b9XTLlfj3U/NJs1a/zUKXd6jSoeDHCAZ43nlPvL974p964kHZiUQPWR
ZxSbpO7vy7x/oBUeHEVQbfKs5dMn3EWrAgd61tIm3F+9d064S18HdVYHTvgUG6SWJFwoZcEK9dej
3Q/Ohs+Knz7drlopOOizYptuv3nvnG7XvhbqpBbAiZ9ic9Qid6ktsAI+61ELYMMnbJ8+2a5KLYAD
PmFrk+23752T7drXAkxqAZzwKTZGlU+7vnxY0RXgqAWw0RNG9LSXpSdQagEc6AkneubwteFCW5S+
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
ZDYLkemVEJnO+mT5z2YlRGayPhkJkZEQGQmRkRAZCZGREBkJkZEQGQmRkRAZCZGREBkJkZEQGQmR
kRAZCZGREBkJkZEQGQmRkRAZCZGREBkJkZEQGQmRkRAZCZGREBkJkZEQGQmRkRAZCZGREBkJkZEQ
GQmRkRAZCZGREBkJkZEQGQmRkRAZCZGREBkJkZEQGQmRkRAZCZGREBkJkZEQGQmRkRAZCZGREBkJ
kZEQGQmRkRAZCZGREBkJkZEQGQmRkRCZUUzvhMjUDkFkIqBqRIgs4IXiRTcmRKaUTS0eX4hMKZdM
W5iKNixENjeOESJTNyVEppTDCZE5DtIzvetryqPa8uAdZwjSWxEie47EQKtKFETpNh3W8ePrEwVf
ommQkum9W/dfuXYPhP5rq6YOZli8Vsnt+/cqzLBmxsqVZQVH3fS8Bnm4/osNp0lpHIbmx9bjKHqB
HEW6Ztga2RlFJ4DmG5m+toP71A4DGXPjYp8UDyz5dYoLRIpzm2GOvyJhjqaSIFO2Q10VJ0hxy9LX
hlNcbFK8XCtRgOHYwB6A4WJFoQDDQjY4l4IfStGgEcqKQio0PHXaXr/CwFqhhoG1pXEEo1aozKj9
DcuotTWjtqOb4wTEqH169answpKmi5MT3BkrvS+N6IzcOCLpRZL70me/X98ZZu6Lel13bd1BJ2uJ
nee91aAZnev64F9+c3zn6i8/UuNCmTNvReR9/Onj49crKC8a++p46j1x/GnLpb25hBncUgyv06Vx
tcea4hqA4J1GaX94SZEX/Du/4hZ8VwGC9dRZ8OXxa43gSzRtwf6T6w3YfK3DrSmhgfE1pVhRE2pN
ka6RacHyQdaUViirNUUxuF9Fp18VBxNGDVOx58YFPM5VAWF//Stq7+TbrsY560yjSg5hz0M78bI5
x+9c+fF+59WrtsvbN71bjz793XfEtpZ9dPnRd0Ad1GIPLiyUGu7/0jiisFAq9/9dZP8zXvd/Z55R
xy8sgi/RNHKuUHspahUrC7HSa6TwnGrNFS3d1TrONy2FN3u9z1zBGnWRPn5tonnaqmpQ88dpPrrI
z43L8UXeX9voIIRgh+Z5kb+HW+SjoUXy8bYEldP6BMFJZ5ka1PZxWm/6L1+L00aODeyRuMUKShvZ
O9PIUa0Ptcg3Qlkt8gY+0NC8068Glr7QbjxhcuMItQvt8ji/jx3nlUKWFp0zUHP8SiP4Ek3DlYYR
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
RE83T8MPQqGUEZtEL9ciKwWxz6nCzgruVEG2KgXhDqOG1wxlteGQAu5X1etX+FRB8lE1vF3riGMF
yYsa3je/o9TwQuvVUO/cdw0/uYW00WJYmi6dUg1v+5WKGl74ZTAYLz14ZyGY205TEjFNSZ1vM3z7
O+o2Q7K0CJ3snAlJN3ImFNsJl6kJjrjUrYi7U6jhNb9/ldoKvPPK1eid12B1G27F4XCrcvf0u98x
J1DJ0DLanTVJCZwaXqxOml59vhpe9C46IwE1PK7E56rhBWNbNbzJQWJz8gBqeFtfump4uyPQnoNq
fzU8tB8HV8Obn0MLO7rFc2hJlSucu4kijOdr6iKM5zOoCOP5uXMWxvPb8VkYz2/9ZmE8vzbOwng2
CuOZSU3nt9taeENSeP49h5HCsyspPNuTwssNglJ4LRG8vtBdQ+Vuul7ljl2vcsdJ5Y5U7kjljlTu
SOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U7kjl
jlTuSOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U
7kjljlTuSOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U7kjljlTuSOWOVO5I5Y5U7kjljlTu+ip3eqdy
N+3oQiayp04Az1QZnQbDM9WoHseucYOQl5tuSF4uWMXJy4VbUhA5UZk1OVG16GkIfr8qOiHfo9DK
ydCCntaR5Al3v44/aKL6TriXBvWfnjb9l6/lOKKnnvYiehYrAkX01C2hCD0diujZCGWF/dMSHpeq
168wc1+LYWRgaVzD4zy0HimBPyApgZXckpm06oxzM8aETFpAfCcC2tcJCS5v3zQjOiE7ew7ufzvc
/7lxMyH63+b+f4js/0qPyL/szDOGHX+e0WnYGeRcEQDMe8wVxYpA6YSY1lxhWmTKKs7I2eNFe/Zo
DYns9T5zhd5KpIZb1EePr0kQfQNvPsz45qM0bvZY5E2DiGsQRFxTFvkfkYu8qYG4tsPnNyfAdtvE
k7cwtttssN3lWiS22+yH7S5WcNhu28pRczBsdyOU1SJvYWy3Ub1+hbHdlg8nTGkcQe22PI/zR8hx
bmv5ANuRD7D6BOM8Af4tjNa2enjhLo3vU2m0xIosotKwOu8AHiN3ALbWDuiJFbkTVBpZu8bBlYbb
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
4Tuv3moj3BIMdzQVT6Duf406gYqGFtFmshNthdPIi9VJ06sb0MgL3kVnNKCRpyZ1Axp5Udpvo5HH
IAk6fgiNvI0vfY28CXJQfIZGHtaPw2vklSfRwp5u8SRa0uUKJ2+qyOX5qrrI5fkcKnJ5uYUol+c3
5Du5PDft5PKc2cnl8SSXJ5k9v91WyBsVyAvvCrRAHl8L5PGuQF5pGCGQ1xLGu0b7bqt7x+21unfc
Xa97N5HuHeneke4d6d6R7h3p3pHuHeneke4d6d6R7h3p3pHuHeneke4d6d6R7h3p3pHuHeneke4d
6d6R7h3p3pHuHeneke4d6d6R7h3p3pHuHeneke4d6d6R7h3p3pHuHeneke4d6d6R7h3p3pHuHene
ke4d6d6R7h3p3pHuHeneke4d6d6R7h3p3pHuHeneke4d6d6R7h3p3pHuHeneke4d6d6R7h3p3pHu
Heneke4d6d71dO+ks7PuHbeFNiSdizSq4+M0A4MomrYwe2xYoWNu3MGCc0E75WYE57xVnOCcYqDq
j3d9xVLctB4bYgieWlEO+fZrFGw5Glrw1DoiPYodn+gvkx6PYgLsP7ZWTZqvlSjGZ2xgnPE5W1EY
xqdiDemIaPkgjM9WKCsQINPwuDS9fgUp/L5ThiGCpXELj/PQeuQGfofkBtYCTFKIzjh3Y5TIpA6k
drKgXeWQ6PL2TTekHDLbA9XAvEvD/V8ah9XAYuux/x8g+79WKJKiM89wcfx5RqRhx5FzRUAy7zFX
FCsKoxzinWkMFt5iVVZxRs4eL9qzR2tIZK/3mSvEVjRV8RNsPiRPpuHNBx/ffJTG3R6LvGwwcsWE
SL6yyH+PXORljciVbWK/EuwEwXHpa4MgbyXYpv/ytTiQd2xgj8QtVlAgbyVaOSoOBfJuhbJa5AUI
8q4HffWNQZC375TxhMmNwxzv2Hoc5z9gx3klKCCV6Yxze/xxnhSGlHBwn9rhhTs3LvepNBryRUoi
Kg1h8w7gIXIHUMsXyY58kZInqDSSmo2ScKUhN5VGuVYeWzZktgyneDWkqmvhFJdymP1eGkekuJQZ
9/4jFvdeqwPJjjqQkjWp/8Grtu3WYYCfncU/30bi+r+HcN8NX6rJWMLJL+2wSItsSP8ohMpotJUU
Wx4hFVtkLf0jLWt3vmIN+np7fm96dRPsde9bdIVD7PVKdjSw16easx7Q6yK8dQ15PagJrcjrC12F
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
k8f5few4rxYZv3lrj3PJjj/OmUpfm4N9KtlwvT+3LvaYhdhWfk5LWKon+pkODr65izs4iKYW8eG8
E5/ji/UEX6JpuICSmx4s15pjn0DNluEsr0ZVdS2c5dKMj8jcukKkuTRlIH2LHUhhk74YSGJqDyR1
gkQXaUOg4ERXbPgEam59n0QXje2GQiS6YuUE6ru7uBOoaGoZn86GQ50g0UVaf2ClTq22PZivRVYK
oYE9NhzFikVtOFSrUlDqQCdQrVBWGw7l4H5lnX7V8ImGssMnUHPriFMMZcsJ1APkCVTcpCyGuuzs
OXYynP3zCNkMpT3xCdTmK80nUBpUC/Rfe/QEKq6v62lKI6YpXXTBvkeeQEVLi9B1blhqrXAnUOyr
uZ14mYYjHnzevqlOcgLV+v5Vamv4gFjr0RMo3boBqhGHxVrnE6gfcCdQur796efNTrRbQmT3/9Gu
Tppe3YAUWfAuOGMgKTLv7kqKTEUpslqLTNfyZJsnROIishEjs5DWlziEGNnGl74YmYMclJ8hRob1
4/BiZG4WI3MLMTJbxMh8KV3EyHziFDEyP2XOYmR+85OlhsK/ZZYSCp9hO5EylUTK/HsokbJrVMqi
rNfnqpTlNiqlMtVVKCuNIxTK4kdHlcrU9QplqqlSxtxKpcwlnTGeZcimWqWMT1m8LP+Z1SplQcQy
jmlSKSOVMlIpI5UyUikjlTJSKSOVMlIpI5UyUikjlTJSKSOVMlIpI5UyUikjlTJSKSOVMlIpI5Uy
UikjlTJSKSOVMlIpI5UyUikjlTJSKSOVMlIpI5UyUikjlTJSKSOVMlIpI5UyUikjlTJSKSOVMlIp
I5UyUikjlTJSKSOVMlIpI5UyUikjlTJSKSOVMlIpI5UyUikjlTJSKSOVMlIpI5UyUikjlTJSKSOV
MlIpI5UyoySbVcqYm+lEcor0qhGVsgAeihfdmEqZ1olBao6vUqZ14qYbGNpvhlXK5sYRKmWBOXQz
KmXeKk6lTBsYrWk2aE3dgMUbhHyRKSplPyIZ0bpSDNGmg441xxcvCr5E0zBC06xFXMq1dg++/mur
RNvtSb12ye379yoGsWbGypVlBnstel7DsFw7juYvjSOI+rYQ9R8hR5GpAbemo6VmT0DUN0n7yyq4
T+UwrbE0vk+Kh0G7TnGLSHErM+nxMZL0aCp9Mt8TneCcIMVtArVbOMXtJsXztW7C0YdDA3vQh4sV
hqIPu6kBwbT2UHIHjVBWiFLH4X6VvX6FabaODdNsS+MIgK1jGWD7ExZga2uAbU9Ux0EA26dXn8ou
LAu+OFiX0K3EwDTcGaVxRNK7pAWmz36+vjPM+dx23RcdUUJX6+88760Gzehc1wf/8pvjO1d/+ZEa
F8qceStc7+NPHx+/XhF70UxYl9QHg4jpkactM8W9uZlgQLdzo+v03DgbX1P8RZs1xewETK8ZXi4v
+E9wC340tBteZmov+GYSJwiOTV9bQv3nvdv0X75WodaU2MD4mjJb0Zg1xTuzzbRo+SBrSiuUyzXF
TAYcl9Wgr76xhRLGd8roJmxu3IHjPLYe906/4PZOZqr2Toa1p1HDpiEmemgnXjbn+J0rP97vvHrV
dnnzZpAcefTp774jtrXso8uPvgPqoBZ7YGFhGBvu/9I4XFjE1mP/P0X2P9N1/3fmGXb8wiL4Ek0j
5wq2l9zWbEVjdPIMa80VLVHWOs43rZM3e73PXMG2dZFhx69NDFfJtINzxg4v8rlxPu2xyPOtIoRB
aJJGN+Mi/wy5yPNqP21EW5/K8OMLJwdfomlQ+MfwtXDyfC1OODk2sEfiFiso4WTDWznK+aEW+UYo
q0Wegwca9aCvvjGoixEH1mDClMZhKYzYehznz5HjXFTyWUZOnXF+gkpDxkM7Iya4T92wKtnc+j6l
htzKZxnBEdFxRd7sBVLeLJpaxqctVWLECYoNadIXh4sNsSk2yrXq2Dp5s2U4y7nreQ1nuVB7jMjc
OiLNhSoD6Vf0QKrEqYxSnYF0gkRXaUMg4UQXblgnb259n0RXje2GRCS6cEUn7zekTl40tYiP7mw4
5AkSPd08NRJOdLlJ9HItslKQ+50qFCu4UwXZqhSkOJBOXiuU1YZDGngCdb1+hU8VpB7WyZtbRxwr
SF108n5H6uQZXe85OvddjZpA1bQ4ETZdOqlO3uYrFZ08o0DlcaOm0TsLxjT2IwoxTakp32a4cw93
m8HUNzt9KDuhE2NnQiYdoygJR1w1TuS9vZPo5LW+f5XaSsHhHr7z6q02wq0R4S53T7++hzuBMvUJ
lO2sScrgdPJiddL06gZ08oJ30RkL6OQZZW5AJ8+b2+rk7XYwPRm66RA6eRtfujp5u01Qz0H2GTp5
WD8OrpM3P4kW9nSLJ9GSLlc4eTNFMs9X1UUyz+dQkczzs+csmWeSvl6UzPObv1kyz6+OO8k8nSTz
/K7p/HZbJW9UJC+8a4ZE8vRaJE93RfJK4wiRvJY43jX6dw3tO32t9h0z12rfMUvad6R9R9p3pH1H
2nekfUfad6R9R9p3pH1H2nekfUfad6R9R9p3pH1H2nekfUfad6R9R9p3pH1H2nekfUfad6R9R9p3
pH1H2nekfUfad6R9R9p3pH1H2nekfUfad6R9R9p3pH1H2nekfUfad6R9R9p3pH1H2nekfUfad6R9
R9p3pH1H2nekfUfad6R9R9p3pH1H2nekfUfad6R9R9p3pH1H2nekfUfad6R9R9p3pH3X174TO+07
vSMOJQjYCZCaNgHVNIzUVOMqHaVxhhCd0zclOuet4kTnjAaVf7zra56ibTDVNILqr4p6yL17OOCy
rZlqHaEeo09A9U+aPEYruP/WyknztRrH+dT7KQIUKwbF+dQt+Yhg+TCcz0YoKxigtmC/KtfrV5jE
r80wSDA3biZ4nIfWIzvwPpIdWIsw2Ym1x7lhQ6RImxWCdtKgffWQ4PLmTcOG1ENme6AimHdptP/n
xmFFsNh67P9vcP1va5UiO3XmGaOOPs8EX6Jp5FwRsMzjc8VsxaDUQ0xrrjAtXmUVZ+Ts8aI9e7SG
RPZ6j7nCTlvhVGOOv/mwLKH1Lbz5MMObj7lxNr7IW9bg5FoEJ9eURf5b3CIfDS2Sj3Wo/VacIDiJ
Mm9hmLcVm/7L1yJh3nYvmPdsBQfztq0ctYeCebdCWS3yFoZ5G9frVxjmbfV4wuTGESxvq/M4/w47
zitRAcs7ogJuOv44zypDDgZuu2l44S6N71Fp2JaEkUNUGm7KO4AHyB1ALWFkexJG7viVhs2KNg6u
NNy60piv1ceWDpktwyleDanqWjjFnR7lv8+NI1Lc6Yx8/x6JfLe1QpDtKATZqab1P3jVtt06DPCz
s/jn20hd//cI8rvly3IythOY/HaahoVabEP+xyKURqOtpNrywz2caout5X+sdJ3OFw0Ce3t+b3p1
A/z14Ft0RQL8dVtJjwb+uqxZ6wG/bsJbffq6N9agr3MAbs7MIejrG1/69HUBOWg/g76O9ePw9PVy
FhpWv8VZ6Ixct25GrjsxI9edm5HrPpt2aHWT0OpWiQ5avU9WFxmCXpPV7a0vOEOT1c2aqm5SE8x/
gE+hKf8f9//5D3Pp//PXcu3/85/jwZT/nPCfE/5zwn9O+M8J/znhPyf854T/nPCfE/5z0n9Osh61
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
zKwlyUSUJKs1yWQtU7Z5QkQ40RAlk9drfhnnDiFKtvGlL0qmIFGy6TNEybB+HF6UTM2iZM4sngMq
omS+lC6iZD5xiiiZnzJnUTKWFMwYi//WWUoofEbsxMpEEisTzqDEyq5RK4uyXjelVpbbqhTLRFep
rBhBKJXFj44qlonrlcpEW61MrdTKVFIps1mtTK/UynQWMct/Niu1MpNFzEitjNTKSK2M1MpIrYzU
ykitjNTKSK2M1MpIrYzUykitjNTKSK2M1MpIrYzUykitjNTKSK2M1MpIrYzUykitjNTKSK2M1MpI
rYzUykitjNTKSK2M1MpIrYzUykitjNTKSK2M1MpIrYzUykitjNTKSK2M1MpIrYzUykitjNTKSK2M
1MpIrYzUykitjNTKSK2M1MpIrYzUykitjNTKSK2M1MpIrYzUykitjNTKSK2M1MqMUmanVqZ2lCId
KVYjamUBQBQvujG1Mt8NqcXjq5X5Tk2mYXi/GVYrmxvHqJWpm1IrE87h1MrCk5IQCtJsEJuuAY03
CBkjU9TKvv0Wx4p2lXKInDoIWXt8EaPgSzQNozTtWsxlvnYPzv5rq1THbakN04FFfP9exSLWPshy
ZVnAUVc9r2Forh1G9M+NI8j6tpD1v8ONIjlVoFvJOppq9vhk/eBLNG3gPtWj1Ma58T1SXAZ5pHWK
W0SKW52Jjw9wxMdoaBEc3kGzuhOkOE/AdgenuNukeLmW4yjEoYFxCvFsRaAoxI43YJhuOpDsQSuU
FarUSXjq1L1+ham2ToxSbefGESBbJzLI9nskyFZyVg/0jriOg0C2T68+XXw1txEvgfUJ3UoUTCM6
IzeOSHqXNMH02Q/Xd4aZ+6Je10VbnDA86L3U4XneWw2a0bmuD/7lN8d3rv7yIzUulDnzVtjex58+
Pn69Ivdi2bDhK8VvwI4/bQmTTIOgbu/d8DpdGhd7rCliSxHmOyHT7vCKbsYF/yFywRcVRVhK2Rle
x681gi/RtIb6z3u37r9yrUGtKbGBPdaUYsVi1hTvzDbTouXDrCmNUC7XlPArBLBfWadf2QQnzDA6
e26cIcZ5oWX/iNw7yXrvpDrTKONDbPTQTrxszvE7V36833n1qu3y5s3A+3/06e++I7a17KPLj74D
6qAWe2Bh4V0a7v/SOFxYxNZj/z9C9r/idf935hl2gsJC5WGHnCvYXrJbsxWL0cvjrDVXtMRZ6zjf
tF7e7PU+c4Xa1kWcn6A20SyZBoWBvHfDi3xpnO+xyGvW6CBY1SO6GRf5x8hFXtf7ad3WqeJcniA4
Nn1tUACIc7npv3wtTkA5NrBH4hYrKAFl70wjR7k81CLfCGW1yHML9+vU61cHJ4wZT5jUuJgQ49zk
cf4TdpxXMlrStM9Awy+0jj7OjU5fG640BBtWJ5tb36fUMFsZrfDjMTA6ghWZs5+RMmfR1CI+VnTi
c4Jiw4r0xeFiQ2yKjXKtObZe3mwZznLBel7DWS7M+IjMrUtEmgtTBtIT7ECylUiVdO2T0PBDvqMP
JJc2BBJOdMmG9fLm1vdJdNfYbkhEoktW9PJ+QerlRVPL+HQ2HPIEiZ5unoafQEIpIzeJXq5FVgpy
v1OFYgV3qiBblYJUB9LLa4Wy2nBIuFKQrNOvCj5VkHZYL29uHXGsIG3Ry3uK1MvzrS+Huurcdw0/
MoXU0+JE2HTppHp5m69U9PLCb2GheCk+emdBTY39iEJMU4rn2wzPkLcZVH2zU7HOmZBSQ2dCoZ14
mYYjrhon8t7eSfTyWt+/Sm1l4HAP33lVIYM34baIcJe7p89xJ1DR0DLanTVJOZxeXqxOml7dgF5e
8C44oydAL48rdwN6ed5cQy9PQ3p5+hB6eRtf+np5BnLQfIZeHtaPw+vllSfRwp5u8SRa0uUKN+tc
kc7zVXWRzvM5VKTzeNLWi9J5fkM+S+f5zd8snedXx510nkzSeX6In99uq+WNiuWFd9VeYnlyLZYn
u2J5xQhCLK8lkneNDl5DA49fr4EnrtfAk6SBRxp4pIFHGnikgUcaeKSBRxp4pIFHGnikgUcaeKSB
Rxp4pIFHGnikgUcaeKSBRxp4pIFHGnikgUcaeKSBRxp4pIFHGnikgUcaeKSBRxp4pIFHGnikgUca
eKSBRxp4pIFHGnikgUcaeKSBRxp4pIFHGnikgUcaeKSBRxp4pIFHGnikgUcaeKSBRxp4pIFHGnik
gUcaeKSBRxp4pIFHGnikgUcaeKSBRxp4pIFHGnh9DTy308DjO/KQjWSq46M1A48omobRmnpYrWNu
XCDE5/hNic95qzjxuXATBuIqarHiKm5ajw0h6P66qIj8igMvR0MLtlpHsCfc7zn+oHHpaxu4//Sm
//K1Fsf71HspA8xWHIr3qVsyEsHyQXifrVBWUEAzwf3KOv1qYCK/dsNAwdI4R4xzlxmCvyEZgrUY
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
llszPiJz6w6R5taUgfQYO5AUqwdS5yTUnSDRVdoQODjRHRsWy5tb3yfRVWO74RCJ7lgRy/vpAU4s
L5paxEd3NhzuBImeb546ONHdJtHLtchKwe13qlCs4E4VXKtScOpAYnmbUM47DQeXCI61O1RN8HGC
s8NieXPriPMEZ4tY3s8PcGJ5Vtebjc4NVzVxWDrNNmNoTyyWt/lKRSxPTaDuuP/ao7cUrNluRNQE
z0/RVLy/8AR5f8HWdzmtnTqhU2OHQXZKPmsw4tHn7ZvqJGJ5re+/LCLUZOBwD99y9VYb4baIcJfb
pr8gj55sffRkdSfaDieWF8uSplc3IJYXvAvOsAkQy1OTuwGxPBtk3DdieRLSopOHEMvb+NIXy1OQ
g+ozxPKwfhxeLK88ghY2c4tH0JIgV7hL54puni+ni26ez6Gim+dnz51unpt2unlOzrp5fnXc6ebZ
pJtn3XR+uy2VN6qUF951eyvl2bVSnu0q5RVDCKW8lkLeNSJ4DQG86XoBPHa9AB4nATwSwCMBPBLA
IwE8EsAjATwSwCMBPBLAIwE8EsAjATwSwCMBPBLAIwE8EsAjATwSwCMBPBLAIwE8EsAjATwSwCMB
PBLAIwE8EsAjATwSwCMBPBLAIwE8EsAjATwSwCMBPBLAIwE8EsAjATwSwCMBPBLAIwE8EsAjATwS
wCMBPBLAIwE8EsAjATwSwCMBPBLAIwE8EsAjATwSwCMBPBLAIwE8EsAjATwSwCMBPBLA6wvgmZ0A
3rSjD+lIpzoBV9MluBoDuZqKjUt1lMYFQnluuinlOW8VpzynGCj/411fsxVdg6/GYLR/7L5IXX6G
pC67mq/WUetR7ARo/yTMo5iB+09v+i9fa1Gwz9jAHrDPYsVhYJ/emQZ6Llg+DOyzEcoKDMgnuF9Z
p185gxPZDUMFS+McMc5d5gg+R3IEayUmN6n2OOdiiBrpkkyQ2umDdiVEosubN7kYkhCZ7YGyYN6l
0f6fG4dlwWLrsf9f4Prf1VJFburMM9wcfZ4JvkTTyLkisJnH54rZisNIiHhnWoOlxa6s4oycPV60
Z4/WkEheiz3mCn/tdg0Tx998OCaTaXjzIYY3H3PjYnyR99c2OgjBzBVlkf8Vt8hHQ4vk4210vxLH
J3oHX6JpkOjtvVv3X7kWR/SODeyRuMUKiujtnWnkqDgU0bsVymqRFw7uV9bpVznBCWOHE6Y0zhDj
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
Ee5y9/Qn3AlUNLSItuqsScrhdPNiddL06gZ084J3wRk9Abp5Rrkb0M3z5hq6eRySpeOH0M3b+NLX
zROQg+IzdPOwfhxeN688iRb2dIsn0ZIuV7hZ54qEnq+qi4Sez6Eioednz1lCz2/IZwk9v/mbJfT8
6riT0ONJQo8re367rZo3KpoX3hWfJZrH16J5vCuaV4whRPNaYnnX6OFttfC0vVYLT7vrtfAm0sIj
LTzSwiMtPNLCIy080sIjLTzSwiMtPNLCIy080sIjLTzSwiMtPNLCIy080sIjLTzSwiMtPNLCIy08
0sIjLTzSwiMtPNLCIy080sIjLTzSwiMtPNLCIy080sIjLTzSwiMtPNLCIy080sIjLTzSwiMtPNLC
Iy080sIjLTzSwiMtPNLCIy080sIjLTzSwiMtPNLCIy080sIjLTzSwiMtPNLCIy080sIjLTzSwiMt
vL4Wnpq18LTdEYhkJFSdALGpEmBNw4hNPazaMTcuYBE6bW9KhM5bxYnQGQ0qAXnX13xF1WCsaQTl
Xxc1kSdIALOqGWsd4R6jj0/550mjx2gD999aSWm+1uK4n3ovhYDZikNxP3VLTiJYPgz3sxHKCg5o
JrhfWadfDUzm124YLFga54hx7jJL8BckS7AWZeJGtMe5EWPkyKwYtJMK7auJBJc3bwZ+2ICayGwP
VAjzLg33f2kcVgiLrcf+f4rs/1q1iJvOPGPM8ecZk4cdcq4ImOY95opixaHURExrrjAtfmUVZ+Ts
8aI9e7SGRPLa7jNXmK2QqrEn2HzYhNq38ObDjm8+SuNij0XeNri5FsHNtWWRf4Zc5G2NzbUdir89
AdzbJuq8heHedgP3Ltci4d52P7h3sYKDe9tWjtqDwb0boawWeQvDvS3r9KuD4d7WjidMbhzB9rY2
j/Pn2HFeiwy4jsiA48cf51l1yMEAbseHF+7S+D6VRkvSyCEqDcfzDuAFcgdQSxqJnqSRO36lIbLC
jYMrDbeuNOZr7bGlRGbLcIpXQ2pxrZ3gFHd2lAc/N45IcWczAv5XJAJe1IpBoqMYZKea3v/gVdt2
6zDAz87in28jhf3fIwjwli/LydhOYPJ7t4eFW0RDDsgilEejraTi8htSxUXUckCCs07nqwaRvT2/
N726AR578C26ogEeu62kSAOPfarZ6wHHLsJbfRq7N9agsUsAdr6okG+Qxr7xpU9jVxCNffoMGjvW
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
74uBZKbmQHLTCRLdTOmLg4nuvRs/gSqt75PoZrvdcBOc6NHPdAL1C/YEytQbDmM68TlBohuTvjiY
6G7a9mC+FlcpxAb22HBkK2zCbDjc1KgUouXDnECZ6zccjjG4X0WnXxl4ouHYNH4CVVqHTzFi8+kE
6in2BMrUew7b3nM4JuHzCNcKZXDptCdQ669UTqDcTqm0H69heTBvbjtNMcQ0xYpW2DPsCZSttyOd
G5YOVCTNJ1Dsq7mdeJkFI+5aIq6OmdOcQDW+f53aDg73sDihbNwAdQiJ02gqnkA9R55A1bc/peus
SbwlTnb/H+3qpOnVDciTBe+iM5A8meNreTIV5clqfTJdS5ZtnhCRzjQEyiyk/yUOIVC28aUvUOYg
B+VnCJRh/Ti8QJmbBcqkWTwHNAuUOV4EynziFIEyP2XOAmV+F56lhsK/dZYSCp8RO+EylYTL1MRQ
wmXXKJdFWa9DKJfldiv1MtVVLSsGEapl8aOj6mXqetUy1VQuU26lXOaS9hjP0mRTrVwWbtbFTMt/
ZrVyWRC7jOOclMtIuYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTLSLmMlMtI
uYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTLSLmM
lMtIuYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTLSLmMlMtIuYyUy0i5jJTL
SLmMlMtIuYyUy0i5zCjLZuUy5WZikZ0i0WpEuSzAiOJFN6ZcpqbEJeXHVy5Tk0imQZC/924Uqzw3
jlAuC8yhm1EuU5PAKZc5DuM2+Rq3uWk9NgRLGsXui9zoX3Hc6Ghoh4ZTrIOTFccXNAq+RNMwVlOs
hV3ma/k+XGKfrx0u8Z8X/M/AJb5/r+ISa2aCAlxlWcBRVz2vYYCuGMb1z43DlP3YehxFvyFHEZvq
UWQ7o0ifYBTZ9LUN3Kd6lOA4N75Pigde4jrFBSLFhc70x99x9MdoaBEc3sG0yhOkOI/wdifhFJeb
FC/XchyRODQwTiSerQgUkVjyBhhTTgeSQGiFssKWSglPnbrXrzDhVopRwu3cOAJqK0WG2t75EQe1
VbyC2qqO0I6TENT26dWnsgtLIjBOWrgzVgJhGu6M0jgi6WXSB9NnX1/fGeZ8brvui7ZQoVO1Js/z
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
6qTp1Q1IlAXvojOQRBkza4kyFyXKao2yqZYt2zwh4s01RMo0pAHGDiFStvGlL1JmIAf5Z4iUYf04
vEiZmUXKnFk8B1REynwpXUTKfOIUkTI/Zc4iZX4XnqWGwr91lhIKnxE78TKXxMusdijxsmvUy6Ks
16HUy3LblYKZ6yqXFaOwcln66KiCmbteucw11cukWamXmaQ/NiV5MmlX6mU2i5rlP7uVepnLomak
XkbqZaReRuplpF5G6mWkXkbqZaReRuplpF5G6mWkXkbqZaReRuplpF5G6mWkXkbqZaReRuplpF5G
6mWkXkbqZaReRuplpF5G6mWkXkbqZaReRuplpF5G6mWkXkbqZaReRuplpF5G6mWkXkbqZaReRupl
pF5G6mWkXkbqZaReRuplpF5G6mWkXkbqZaReRuplpF5G6mWkXkbqZaReRuplpF5G6mWkXkbqZaRe
RuplRlk3q5fJBbXIRqrViHpZABLFi25MvcyaxCY1x1cvsybx1A0M8zfD6mVz4wj1MmluSr3MGoZT
LwtPSkJoSLNBbpoGRN4gZI1MUS97hmRHm0pJxAe6jYez0wkGTYK+WhitaadN/+Vr+T5sYuXabk/c
vnx5EdjE9+9VbOIQZLmyLOCoq57XMETXjiP7S+MI0r4tpP3n2FFUg29tR2PNnoC0b5Mm2I6a1+9T
PUxxLI3vk+LB3DrFLSLFrc4EyBdIAqStdMus66Ba3QlS3CWAu4NT3G1SvFzLcVTi0MAeVOJiRaCo
xI434JhuOpQMQiOUFbrUSXjq1L1+hSm3TgxTbkvjCLCtExls+ysWbOsqsK3rie04CGz79OpT3oW5
LATjYL1CtxIJ02BnzI0jkt4ljTB99tv1nWHO57brvmiLFYYHvZe6PM97q0EzOtf1wb/85vjO1V9+
pMaFMmfeCuP7+NPHx69XJF8sKzZ8pfgN2NGnLTe5ZBoEd/OJja7Tc+NifE3x127WFL4TNu0Or+hm
XPB/xy340dBieDHdGV7HrzWCL9G0hvrPe7fuv3KtQa0psYHxNWW2YjFrindmm2nR8kHWlFYol2tK
+BUC2K+s069sghNmGKU9N84Q47zQs+88Ru2dHKv2To53plHGh1jpoZ142Zzjd678eL/z6lXb5c2b
gf//6NPffUdsa9lHlx99B9RBLfbAwsK7NNz/pXG4sIitx/7/Gtn/XNb935ln2PELi+BLNI2cK9he
MlyzFYvRz+OsNVe0xFrrON+0ft7s9T5zBd/WRZwfvzZxQiTToFCQ9254kS+N8z0WeSEaHQSrfEQ3
4yJ/9zFukRf1flq2das4P76gcvAlmgYFgThfCyrP1+IElWMDeyRusYISVOa8laNcHmqRb4SyWuS5
hft16vWrgxPGDCdMblxMiHFu8ji/hxzncqrHefsMNPxC6/jj3KavDVcagg2rlc2t71NqyK2sVvjx
GBgdwYrs2f3HONmzaGoRH6U68TlBsaFU+uJwsSE2xUa51hxbP2+2DGe5YD2v4SwXZnxE5tYlIs2F
KQPpG+xAUpVoldPtk9DwQ76jDySdNgQSTnTJhvXz5tb3SXTd2G5IRKJLVvTzvn2M08+LphbxMZ0N
hzxBoqebp+EnkFDKyE2il2uRlYLc71ShWMGdKshWpSDVgfTzWqGsNhwSrhQk6/Srgk8VpB3Wz5tb
RxwrSFv08757jNPP863XQ72z51AcVFOLE2HTpZPq522+UtHPC7+FheKl+OidBWca+xGFmKYUz7cZ
HjzG3WZw9c1OZztnQkqNnQnZdIyiNBxx1TiR50qdRD+v9f2r1FYGDvfwnVcX7rdvwm0R4S53T79H
nkDZ+gTKddYk5XD6ebE6aXp1A/p5wbvgjJ4A/Tyu3A3o57lwZ3Ojn2cBebrFXHyD+nkbX/r6eQ5y
0H2Gfh7Wj8Pr55Un0cKebvEkWtLlCjfrXJHS81V1kdLzOVSk9PzsOUvp+Q35LKXnN3+zlJ5fHWcp
Pf+Rs9QD8vx2Wz1vVDzPBmG6mxDPqyT4QtOLNxqqeNEoLJ7XFM27RhevoYknr9fEU9dr4mnSxCNN
PNLEI0080sQjTTzSxCNNPNLEI0080sQjTTzSxCNNPNLEI0080sQjTTzSxCNNPNLEI0080sQjTTzS
xCNNPNLEI0080sQjTTzSxCNNPNLEI0080sQjTTzSxCNNPNLEI0080sQjTTzSxCNNPNLEI0080sQj
TTzSxCNNPNLEI0080sQjTTzSxCNNPNLEI0080sQjTTzSxCNNPNLEI0080sQjTTzSxCNNPNLEI028
riaeYztNPDmTiNwUSVUnQG26BFrTMGpTj6t3lMYFQoxO3pQYnbeKE6MLN2EgzqIWa86ia7DWNIL2
r4uqyEMkiNktWWtsmjoKPuGGz5FHTXIm2jZwD640lRYXWxwCVO8jFrAw41AMUN2SlgimD8EAbYez
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
E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPl
N1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRfhPlN1F+E+U3UX4T5TdRflOrJC7LbyprK7JQEhFS
ajPKb1opaGL85TfNFOU3q9b95TfddNyy8pu2WWmkq/ym8ZffNJOAPttWyCSg/Kapym8+HAjos406
JjbpoJF5y29uROgkmYzcT8FtVucM4FRWretpPEQ41QkPBfDiijqfanZfIOSSlcY9lHaAvZXdBA+l
Qt72F+J03ZuYw/LiOKiCGLcwRQWxSiYJqSDmetMCJFR2gyqItXmzhpfUAfkj75xZb/U9o5P+C6ds
PfeHu06KcP9aaLincSPcO3DRWm1GuAvtWese9VWIf73+tLfCSfetDydt9UvRO+MPmWgyZOxkQhtV
Ab332KEjs+OsSRW3IhUzxTjJJPKRG6ONwUlmqhsnOaqo0dWp+KZwkt3aG46TrA59tFeNHfoqnKTO
K5ykykYgSFWCIDNz8yDIXN9yGKRqwiCVyOTuotxdpKINhkOqVjiksroVDqmsARwScEjAIQGHBBwS
cEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjA
IQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGH
BBwScEjAIQGHBBwScEjAIQGHBBwScEjAIQGHBBwScMgWTlA6gkOqESeISWNmM+CQmWHQlPHDIc0U
cMiy9RA4pLp1cMjMBMIhjR/uZibRg83muaUAOKQp4ZCPhMIhSWmcxZbn7Sw2sxlwSNcZ1lb+OZwE
5JUX6zD0ILUwDXqwlDFB6EGjW0hxJL0x6MEWb9bQg8b6Zzbqmlkb+Ve06b+iy9bjgHA3Rbhv/2pg
uOd5PdxV2h7uNtmEcHedYe3UO6+2gXQ0AfNatp5Nk5BUOpmQbAAc0goc0szesb6H7NZxpXEP6ajD
Q/6kYCfH4Vrji7XHvbxC5mbyLG9eafzO0XXn2ADnlK3bgCnV0ursjvWnNI62jlpvzKlpnVMbVSt6
+7IL4z3H9revudY+7Tp2yI1qcnvdtbTiBkP5at/S8uIB6uGXh4Mj62IuNe/qNvKeGWw0xZlBT+6u
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
bpq0UcpkQSDXpC1tJG1015qzwxLJvvZE0hoWRa+nShtqkt5Mv6+7/S7WuWj7TyTJFCeSsnUzzcav
85Y5sv5FmJQb/12hGz8pjS9Ck7QvwjTaBA8Z4UinXuh7kkYTc1heHIhiphamWcGlTBq08adtizWN
NmrjN+uDyun3lr6ZTVTnzHrp7glxWPvuOWXrfqA7N897zt2he45pwMNt1BHugQR3lefkn6oxvrZa
8juWDh0ZLA/vGx49uvNf27s/+aJLLuSjobvzCyT1t89j2ZvqKCJU55ZujOefvXOfz5IvfHOupClv
m7lr7vMqr73SwpYmqmsjYamRchfPOtsYyHazM53E7Szy9TC/KeJ2YEc2HL89ei7gNpv25wIlfttt
MxV+O1Uj/HZe4rdt1hu/TcjtuInUVmrm8zrqRGrnTaR2Lpco7f437n9Ll7v/kw7Uto+xPQnVruOf
dRYLATstONlxnYCdJQVku3g7qQOMs7SgaxcM53ycgqzSJC3QzgAIAyAMgDAAwgAIAyAMgDAAwgAI
AyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAM
gDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAAwgAIAyAMgDAA
wgAIAyAMgDAAwgAIAyAMgDAAwgAIAyCsVZaMAMJRBQrK4hEoKCem1IibtA5mN7p1mF2bdZN1Mz8c
LpuEw7kW+eIKKXvX0vL88IE9uwnXNFt9uMZ0qpHVygZSDyds17HFxeY1mZeblqX9gYNl67mfm5al
BSbwnlBMoM1q3LQ8itu5aZkai4w7nzw8OLQw7+KsvQtt4bFwIMm/NVxeXlreQVypf+vFPKNucS/8
SMdM9SbTudYnqYyZCZhuVWDq7g3E1LFSbbptx3TbMExdtG3UEF2XRw1E3d3LQzfs5fa+T75obw2j
rupO7GPU5VGdUadUk1GnIw+jzolNMupG2aOLABdvCKNuojPdjLrE18PkZhh1oR3ZeEZdtfUkWcfW
UzHqsrxi1GVmxKhTBaMuj9PejLp8gk/HoLluPh3pNRl1NT5dB5dOoHfrounkI3U6ndI1Op3bXoU7
p0wNS+fitXjd1nh0LkpAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5
kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZA
mgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNpDqQ5kOZAmgNp
Tqssq0hzSo9wPynjoBIP1WrfcPAvc4JempuJnojz2GgTDaKZby6sPDaz/9jKynD54OKT7q00imI1
zCMdzcz+p+1mbt/C4QNL39y6beaeO+dmtFF5RcaKU0FRpV50WJ70hrNVrWd+cJ7Stwyc52TDKFP0
5ZiPopdnTYreRPPckvID0WgGmT93XyB/jpXGgWhJ1A5Ey7V/HMnEOFxrfLEJo6nlWd680vqjxvSP
mqJ1d4j0T6kppvT+0ClNosaUmvYpdafS278aXWdYO/HOq4r7g/zK1tNpgj4xk0HvjsxeD1FHmQK4
K5QCSErjHkrzDg/5F29tlqrW+GI1JQKzakCXY3c57W4324NFIj6OR8ij/Oqsi43kgJ7fn9mI09X2
/UeXFo+tDGfzKDdxnOmIMldTo33Ixh8Yuh4YNiAwyiHZAHdqaXX2gfXdGUdbR63X/Zml7YPTFZ1x
+7JbQnuO7W9f76192nXskBvV5Paxa2nFDaYfnjGTXUvH3snWUf/slrXsHjrxzzxpcap7MDTVZY3d
I+tIdTrtidPMJJHoavkXOM09K8uu6Z3/2t75yRfTEU+z0qqtg1Kogrvet/Togpsd59UWjayluXo7
yu/RfAqPFq3rACfmhRMfCnZiIxvmSYcTjQ8mWhsawUR1EyaqjA8mmifCD009dE5lNoYf2hx9DRma
+TplbwoZ2q298ZTQ6rbBbc1jtw0VGlTrCg2qMiEbkmlHlFBdUkLzvDclVE1QQu36hFDSa1JCdRcZ
lBtbnwyqbDsdNKvTQZUuKKB5nQ6qTPG6qtNBlQUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUd
FHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ
0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFBBwUdFHRQ0EFB
BwUdFHRQ0EFBBwUdFHRQrTI1ooOOYX5y5jvZTeAR5gKGM5Gfm2X7c7PK1uMAOmh26+igeR5IBzWJ
FzBoJgGDzea5pTQADWYLNNieUDRY3gDrqQ40mMk2IXRUIiPPvaFjsnroxElA7JTNq2lcpJIWFwXQ
26in3MHZvR76Ybp1XKvmJNvhJOMfySSVkwlWmh7m9/bwcH+etHiYHLtzce6uY4eZXVa4No6cy1VD
1frTgrH9MaVl63GAQ2wBF/1qKFyUGHDj7tC63R12M2DMrjOs7Ycx2waMOY4DJrZsPptmzWg9uWZs
7neRTYoOzj7sWTPJ1nGtcSeZrMNJ/tVvJ7HHrjW+WPfGHpdX+imsVk/hn7L5AAyr1eWs7gueVUof
47Nq27cL+qpoSjSu5aRMXx8VDewYLHas2tbk1jrMsW3fHZm2Lz96dOSidqqr6/bOJ+aHRyh/dSBe
O8fuJS+70fVPaXZyw6GvwnxuZi3Ob18LzW+2vt2oKO4Y6CacCagzrD0CNx8boZMXCKvYMgUtcVH3
wQRm2fDUTGCWeSl0Y3+r3vmTSu2wW17c4mG9GXNsRNv4A1n3PrJXrdspthB38eQcxVHAKtDFyfjr
gSdjVhpfBXE7T5u+Jr39HopzGbk/1cRx/5Nx1Xw6jYvivMVFfso791ROxo+EnoxZa9xJSUdOjr2c
9/pEVa3xxep2nowrVe33req9jVStmwCHqGLn2P71sJ3DNV53Rxp1uGMTHkRQZ0g7ifzzavufvKrm
42nWTBpNrpkkCXCRLc9wd3w98AzHWjUntd++0Hf83jUzuYmlWjqfTXkArBrIN642QveQvXB3169p
YqMYk//5ALcvHt0R7tH6vY7KOraqxEzrlEw2hMSueyrnjNGaWFuHuRGn8s6xp/5ln/R/0KCyls0u
jQPcXD51uDM0t2aNrS7POga6CU8dqDOsnfY4ladJW1zYdU7lg6j9VJ5E65/Ky95VOWnX0srCwSf3
LS+4Rio1ktlv0/0HB1y3gOntR5ZcpHzj4MLycJsnEKjczUQg+E8dtQP0Oi2pTXCqkpuZ1H8QSRsH
kTgKWDpl82aaDVO13Cul/oce3FPu4OxOT3qNt45rja881V4DhX4X5HN3baKq1vjieJpDZjY/5SGz
VPXfQGRx/1u8svWAxxNZXNyY3fX1wBsz1bgx06rDHb7HE3tWlpcOPzpHFWfcZbMD57GF+a0zs25s
h11+WBgub52b+bzMXrZtpMaN5/6Jy6Y4KZTNq4CZy8qTwt3BJwWtGnNnO+ZuMx47aCtj9z92yPQU
N7Vl81M9d6DHNc18kwc8d8h0eVP75a+H3tTq+vcLynQEeO691ahPVNUaX5xMexYsG0h7H9AHHQf0
8f3bM+TMGxt5OkVslGPyfxnB7YtH7wn2qGksO9txdsur+4+9Sw8uLxxaWFl4fNjehbZvsnsUKKMu
sKJ/c8/VFBNqWw4xecAzh1yVs3tv8OzarDG7HXd3ub0VG8I/NDYEK/d2yn9/kTcfK6QhE1k0H3BP
kRcPA9LZr3jmLhvNXf3WUUcdT2zUJtxVUGdY2/tdZqqa32Vm/qmtmp/mu0wdtTyxUQHpQxXfZWaz
93mclG8d16o5qSPAlfdrh/pEVa3xxXrKDaFqwPR/YmPaN4Txr1k8Q7b+2DDTxIaMSQds8cqUHr0/
3KONZdf15cKofuS6GwJ14SY3BF0889f+OwIdTzGhbd8K6ID7Ax2Xs7sreHYb3wrouOOGTd+SO4SZ
+oZAaty4/w5BN+8Q8pCJLJoPuEPQxR1CPvuAZ+7UaO7qd1c66fjyV1fpws3OjkHH/U/r/t66cbWF
b9szv6pX3Anj6wT9DKQ1plona7pO+FOQNr0L6patm4AMpE1RUPfBrwcW1HWtN9zckYBGP6zsuysk
kk9GP4Bsf2SctfkibYsSbTbmkXH32P3nDtM4d6gQx7ZkQhPw/aiRk4OafWh9L+ut40rjTk47bjtG
P7C899ihI7O1Aq+2rY4ptcTlUnNfudR8Q2q4ToykVsNV+TqlbqaG6zraG1/DtfpxtzuSjv24W0pd
UoxkZTnXVCq7Gl5OcVnO1aWTotQkvWyLUpL0aVWUiqR0bIpSkHSyiItSj7QA06KUI9lqVBbWFGVh
3advS1lY0ywLazagLGzcURY26SgLm6IsLMrCoiwsysKiLCzKwqIsLMrCoiwsysKiLCzKwqIsLMrC
oiwsysKiLCzKwqIsLMrCoiwsysKiLCzKwqIsLMrCoiwsysKiLCzKwqIsLMrCoiwsysKiLCzKwqIs
LMrCoiwsysKiLCzKwqIsLMrCoiwsysKiLCzKwqIsLMrCoiwsysKiLCzKwqIsLMrCoiwsysKiLCzK
wqIsLMrCoiwsysKiLCzKwqIsLMrCoiwsysK2kIPMqCzsGDlIM/5pE+DyxApibT9/1qjeAPKqdRNQ
Fja+ZWVhNXHLQsrC0nL0kTqNmSB1NpunlmwAH86osixsIGOdlcbJYVnaTg6zm1D8ijrD2n5SpZ2i
+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
MsKWP5MGpYEtf/kBWaTxF+fVlBb8lr/8kCzS+MuPyCKNv/yYLNL4y0/IIo2/vEYWafzldbJI4y9v
kEUaf3mTLNb4KVms4bya8jr/y8/IYo2fk8UavyCLNX5JFmu8TRZrvEMWaxwnizVOkMUaJ8lijVPO
4nX+l9Nksca7ZLHGGbJY4yxZrHGOLNZ4jyzWOE8Wa1wgizUuksUabl2mvM7/F/WF1/n/Ii/wOv/f
z5FFGv+bPMjr/BOaZ17nn9A88zr/hOaZ1/knNM+8zj+heeZ1/gnNM6/zT2ieeZ1/QvPM6/wTmmde
55/QPPM6/4Tmmdf5JzRrvM4/oYjgdf4JRQSv808oInidf0IRwev8E4oIXud/JTVe538lNV7nfyU1
Xud/JTVe538lNV7nfyWv8jr/K3mV1/lfyau8zv9KXuV1/lfyKq/z/0Mzyev8/9BM8jr/P9QDXuf/
l2ac1/n/5c+Rxv/lz5HG314mizT+9gpZpPE3tz4yXud/+wFZpPG3V8kijb/9kCzS+NuPyCKNv/2Y
LNL420/IIo2/vUYWa7xOFmu8QRZruJFnvM7/9lOyWOMtsljjZ2Sxxs/JYo1fkMUavySLNd4mizXe
IYs1jpPFGi6eM17nfztJFmucIos1TpPFGu+SxRpnyGKNs2SxxjmyWOM9sljjPFms4WY343X+t4tk
scYlsljjMlmssUoWa7xPFmt8QBZrrJHFGlfIYo2rZLGGy00Zr/O//Yos1viQLNb4iCzW+Jgs1vg1
WazxG7JY47dkscbvyCKN60+RRRrX3d6d8Tq//gxZpHH9WbJI4/q3ySKN68+RRRrXnyeLNK6/QBZp
XH+RLNK4/h2yWOO7ZLGG2y8zXufXXyKLNV4mizVeIYs1KP54nV+n+ON1fp3ij9f5dYo/XufXKf54
nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/
XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3i
j9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXKf54nV+n+ON1fp3ij9f5dYo/XufXXfzlvM6v
r5HFGlfIYo2PyCKNT99+isyMzafJzNl8hkzF5rNkaja/TaZh8zkyLZsuWHJe7p++/QKZMZsvkpmw
+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
ggJGcskJChjJJScoYCSXnKCAkVxyggJGcskJChjJJScoYCSXnKCAkVxyggJGcskJChjJJScoYCSX
nKCAkVxy4gdkitqrZIraD8kUNZcGreSSEz8mU9R+QqaovUamqL1Opqi9QaaovUmmqP2UTFF7i0xR
+xmZouaCwEouOfELMkXtl2SK2ttkito7ZIracTJF7QSZonaSTFE7RaaonSZT1Fy6spJL6P7NSi6h
+zcruYTu36zkErp/s5JL6P7NSi6h+zcruYTu36zkErp/s5JL6P7NSi6h+zcruYTu36zkErp/s5JL
6P7NSi6h+zcruYTuqKzkkpNPk8lqJ58hk9VOPksmq9Etl5VcctJFlJVccvJ5Mlnt5AtkstrJF8lk
tZPfIVPUvkumqH2PTFF7iUxRe5lMUXuFTFFzEWUll5z8AZmi9iqZovZDMkWNIkpyyUmKKMklJymi
JJecpIiSXHKSIkpyyUmKKMklJymiJJecpIiSXHKSIkpyyUmKKMklJymiJJecpIiSXHKSwkhyyUkK
I8klJymMJJecpDCSXHKSwkhyyUkKI8klJymMJJecpDCSXHKSwkhyyUkKI8klJymMJJecpDCSXHKS
QkNyyUkKDcklJyk0JJecpNCQXHKSQkNyyUkKDcklJ6+SKWrXyBS1X5Epah+SKWofkSlqH5PJaqco
NCSXnKLQkFxyikJDcskpCg3JJacoNCSXnKLQkFxyikJDcskpCg3JJXRrbyWX0K29lVxyyoVGHEky
OfUq26L3Q7ZF8Edsi+KP2RbJn7Atmq+xLaKvsy2qb7Atsm+yLbo/JVvSyqm32Bbdn7Etuj9nW3R/
wbbo/pJt0X2bbdF9h23RPc626J5gW3RPki0J5tQptkX3NNui+y7bonuGbdE9y7bonmNbdN9jW3TP
sy26F9gW3ctkS6qhpyXOFt332RbdD9gW3TW2WZceXDibdU8/zTbrnn6GbdY9/SzbrHv622yz7unn
yJakc/p5tln39Atss+7pF9lm3dPfYVt0v8u26H6PbdF9iW3RfZlt0X2FbdH9PtmSfk5zjEn+Oc0x
JgnoNMeYZKDTHGOSgk5zjEkOOs0xJknoNMeYZKHTHGOShk5zjEkeOs0xJonoNMeYZKLTHGOSik5z
jEkuOs0xJsnoNMeYZKPTHGOSjk5zjEk+Os0xJgnpNMeYZKTTHGOSkk5zjElOOs0xJknpNMeYZKXT
HGOSlk5zjEleOs0xJonpNMeYZKbTHGOSmk5zLEluOs2xJMnpNMeSZKfTHEuSnk5zLEl+On2FbdG9
yrboXmNbdH/Ftuh+yLbofsS26H5MtqSp079mW3R/w7bo/pZt0f0d26z7Lsez5Kp3OZ4lWb3L8SzZ
6l2OZ0lX73I8S756l+I5lnz17vNss+67L7DNuu++yDbrvvsdtkX3B2yL7qtsi+4P2RbdH7Etuj9m
W3QpDmPJV+++xrbovs626L7Btui+yTbrnnmKbdalZ4xxLPnqzDNssy49cIxjyVdnvs02657h8Uq+
OsPjlXx1hscr+eoMj1fy1Rker+SrM99lW3S/x7bovsS26L7Mtui+wrbo0vqNJV+d4XmTfHWG503y
1RmeN8lXZ3jeJF+d4XmTfHWG503y1RmeN8lXZ3jeJF+d4XmTfHWG503y1Zmfsi26b7Etum+zLbrv
sC26x9kW3RNsi+5JtkX3FNuie5pt0aX1GEu+OnOGbdE9y7bonmNbdN9jW3TPsy26F9gW3Ytsi+4l
tkX3MtuiS+s3lnx15n22RfcDtkV3jW3RvcK26F5lW3SvsS26v2JbdD9kW3Q/Ylt0af3Gkq/O/Jpt
0f0N26L7W7ZF93dss+5ZjmfJV2c5niVfneV4lnx1luNZ8tVZjmfJV2c5niVfneV4lnx1luNZ8tVZ
jmfJV2c5niVfneV4lnx1luNZ8tVZjmfJV2c5niVfneV4lnx1luNZ8tVZjmfJV2c5niVfneV4lnx1
luNZ8tVZjmfJV2c5niVfneV4lnx1luNZ8tVZjmfJV2cpnhPJV2d/yrbovsW26P6MbdH9Odui+wu2
RfdttkX3HbZF9zjbonuCbdGlmE8kX509xbbonmZbdN9lW3TPsC26Z9kW3XNsi+57bIvuebZF9wLb
oksxn0i+OnuJbdG9zLborrItuu+zLbofsC26a2yL7hW2Rfcq26J7jW3RpZhPJF+d/ZBt0f2IbdH9
mG3R/TXbovs7tln33FNss+65p9lm3XPPsM26555lm3XPUWzLL1xvnHuObdY99zzbrHvuBbZZ99yL
bLPuue+wLbo/YFt0X2VbdH/Ituj+iG3RpZiUX73eOPcTtkX3NbZF93W2RfcNtkWXY1Ly1TmOAclX
59hHkq/OsY8kX51jH0m+Osc+knx1jn0k+eoc+0jy1Tn2keSrc+wjyVfn2EeSr86xjyRfnWMfSb46
xz6SfHWOfST56hzlJfl17I3z7CPJV+fZR5KvzrOPJF+dZx9JvjrPPpJ8dZ59JPnqPPtI8tV59pHk
q/PsI8lX59lHkq/Of5dt0f0e26L7Etui+zLbovsK26L7fbZFl30t+eo8+1ry1Xn2teSr8+xryVfn
2deSr86zryVfnWdfS746z76WfHWefS356jz7WvLVec4/kq/Oc/6RfHWe84/kq/OUf+SXtTfO/4Jt
0f0l26L7Ntui+w7bonucbdE9wbbonmRbdE+xLbqn2RZdikP5te2N82fYFt2zbIvuObZF9z22Rfc8
26J7gW3Rvci26F5iW3Qvsy26FOfyC9wb599nW3Q/YFt019gW3Stsi+5VtkX3Gtui+yu2RfdDtkX3
I7ZFl+JcfpV74/yv2Rbd37Atur9lW3R/xzbrXniKbda98DTbrHvhGbZZ98KzbLMufekcy+90b1yg
+Jdf6t648DzbrHvhBbZZ98KLbLPuhe+wLbrfZVt0v8e26P6AbdF9lW3R/SHbokvxLL/evXHhx2yL
7k/YFt3X2Bbd19kW3TfYFt032RZdjgHJVxc4BiRfXeAYkHx1gWNA8tUFjgHJVxc4BiRfXeAYkHx1
gWNA8tUFjgHJVxd5ziVfXeQ5l3x1kedc8tVFnnPJVxd5ziVfXeQ5l3x1kedc8tVFnnPJVxd5ziVf
XeQ5l3x1kedc8tVFnnPJVxdfYlt0X2ZbdCnnyC9/b1z8Ptuiyz6SfHWRfST56iL7SPLVRfaR5KuL
7CPJVxfZR5KvLrKPJF9dZB9JvrrIPpJ8dZF9JPnq4k/ZFt232Bbdn7EtupxzJF9d5Jwj+eoi5xzJ
Vxc550i+usg5R/LVRco58gvhGxdPsC26J9kW3VNsi+5ptkX3XbZF9wzbonuWbdE9x7bovse26FK8
ya+Gb1y8wLboXmRbdC+xLbqX2RbdVbZF9322RfcDtkV3jW3RvcK26FLOkV8S37h4jW3R/RXbovsh
26L7Edui+zHbovtrtkX3N2yL7m/ZFt3fsc26lyj+5dfFNy49zTbrXnqGbda99CzbrHvp22yz7qXn
2GbdS8+zzbqXXmCbdS+9yDbrXvoO26JL8S+/OL5x6Xtsi+5LbIvuy2yL7itsi+732RbdH7Atuq+y
Lbo/ZFt0f8S26FL8y6+Qb1z6Cdui+xrbovs626L7Btui+ybbovtTtkX3LbZF92dsi+7P2RZdin/5
ZfKNS79kW3TfZlt032FbdDn+JV9d4viXfHWJ41/y1SWOf8lXlzj+JV9d4viXfHWJ41/y1SWOf8lX
lzj+JV9d4viXfHWJ41/y1SWOf8lXlzj+JV9d4viXfHWJ41/y1SWOf8lXlzj+JV9d4viXfHWZ403y
1WWON8lXlzneJF9d5niTfHWZ403y1WWON8lXlzneJF9d5niTfHWZ403y1WWON8lXlzneJF9d5niT
fHWZ403y1WWON8lXlzneJF9d5niTfHWZ403y1WWON8lXlyne5JfONy7/iG3R/THbovsTtkX3NbZF
93W2RfcNtkX3TbZF96dsi+5bbIsuxZv87PnG5Z+zLbq/YFt0f8m26L7Ntui+w7boHmdbdE+wLbon
2RbdU2yLLsWb/AD6xuV32RbdM2yL7lm2Rfcc26L7Htuie55t0b3AtuheZFt0L7EtuhRv8lPoG5dX
2Rbd99kW3Q/YFt01tkX3Ctuie5Vt0b3GNuuuPsU2664+zTbrrlJ8yo+ib6w+yzbrrn6bbdZdfY5t
1l19nm3WXX2BbdZdfZFt1l39Dtui+zLbovsK26JLsSc/j76x+gO2RfdVtkWXY0/y1SrHnuSrVY49
yVerHHuSr1Y59iRfrXLsSb5a5diTfLXKsSf5apVjT/LVKsee5KtVjj3JV6sce5KvVjn2JF+tcuxJ
vlrl2JN8tcqxJ/lqlWNP8tUqx57kq1WOPclXqxx7kq9WOfYkX61y7Em+WuXYk3y1yrEn+WqVY0/y
1SrHnuSrVY49yVerHHuSr1Y59iRfrXLsSb5a5diTfLXKsSf5apVjT/LVKsee5KtVjj3JV6sce5Kv
Vjn2JF+tcuxJvlr9Fdui+yHbovsR26L7Mdui+2u2Rfc3bLPuBxwnkq8+4DiRfPUBx4nkqw8oNuQH
1Tc++AnbrPvBa2yz7gevs826H7zBNut+8CbbrPvBT9kW3bfYFt2fsS26P2dbdCk25KfVNz74Jdui
+zbbovsO26J7nG3RPcG26J5kW3RPsS26p9kW3XfZFl2KDfmR9Y0PzrItuufYFt332Bbd82yL7gW2
Rfci26J7iW3Rvcy26K6yLboUG/Jz6xsffMC26K6xLbpX2Bbdq2yL7q/YFt0P2WbdtafYZl36RW4s
P7u+sfYM26y7RjlKfnh9Y+3bbLPu2nNss+7a82yz7toLbLPu2otss+7ad9gW3e+yLbrfY1t0X2Jb
dCmPyU+wb6y9wrbofp9t0f0B26L7Ktui+0O2RfdHbIsux6rkqzWOVclXaxyrkq/WOFYlX61xrEq+
WuNYlXy1xrEq+WqNY1Xy1RrHquSrNY5VyVdrHKuSr9Y4ViVfrXGsSr5a41iVfLXGsSr5ao1jVfLV
Gseq5Ks1jlXJV2scq5Kv1jhWJV+tcaxKvlrjWJV8tcaxKvlqjWNV8tUax6rkqzWOVclXaxyrkq/W
OFYlX61xrEq+WuNYlXy1xrEq+WqNY1Xy1RrHquSrNY5VyVdrHKuSr9ausS26HLeSr9Y4biVf0e/E
Y/m99o21j9kW3V+zLbq/YVt0f8u26NI9i/xo+8aVp9hm3StPs826V55hm3WvPMs269Iv0WP55faN
K8+xzbpXnmebda+8wDbrXnmRbda9QvEvP9++ceW7bIvu99gW3ZfYFt2X2RbdV9gW3e+zLbo/YFt0
X2VbdH/ItuhS/Bc/5L7yY7ZF9ydsi+5rbIvu62yL7htsi+6bbIvuT9kW3bfYFt2fsS26FP/FT7qv
/IJt0f0l26L7Ntui+w7bonucbdE9wbbonmRbdE+xLbqn2RZdiv/ix91XzrAtumfZFt1zbIvue2yL
7nm2RfcC26J7kW3RvcS26F5mW3Qp/oufeV95n23R/YBt0V1jW3SvsC26V9kW3Wtsi+6v2BbdD9kW
3Y/YFl2K/+IH3/TvHOLiF9/0Dx3i4iff9C8d4uI331c4/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVf
XeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/J
V1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf
8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1c5/iVfXeX4l3x1leNf8tVVjn/JV1cp/osfhl89
ybbonmJbdE+zLbrvsi26Z9gW3bNsi+45tkX3PbZF9zzbokvxX/xE/OpFtkX3Etuie5lt0V1lW3Tf
Z1t0P2BbdNfYFt0rbIvuVbZFl+K/+LH41V+xLbofsi26H7Etuh+zLbq/Zlt0f8O26P6WbdH9Hdus
e+0ptln3GsV/8bPxa8+wzbrXnmWbda99m23WvfYc26x77Xm2WffaC2yz7rUX2Wbda99hW3S/y7bo
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
vPcyxc0Mpx2XosJf2paiq5sZ926G92SU+t/OKC4jr53rbunE8amyK9lZs9q99rpf39JcJLTnll0p
GamowOLxxXI+vTUX1JhjIUkKshHedzdWnpWMOl2RaQRfkXk3caXwJP9WFu2ZgyDlRRZpJn3fZkng
1bGaV/rSV1J1QXzT4YIo3fSVzekr1/Tq1e3Xm02kPgyPxO5tkCyCvHIGqWB8shjNxtdPTQCLze24
0TFkZQzy+Cq3diMbX5AdjY2S0ufjhEsTj5O4dOg4SUv7jROKS3ONE6FK64wTotIY40TK0vbihOPS
1OKE07VvjCh8Y8wShohXTGkCs2UXQ8FRvNcxZttNpnCX+f/iGPPuehJYXyWz6BPFqXxY3MuLR/cf
hSZoJiftu/HDgs5U71L1bvLQ3npW70aD3n6mt5/p7Wd6+5nefqa3n+ntZ3r7md5+pref6e1nevuZ
3n6mt5/p7Wd6+5nefqa3n+ntZ3r7md5+pref6e1nevuZ3n6mt5/p7Wd6+5nefqa3n+ntZ3r7md5+
pref6e1nevuZ3n6mt5/p7Wd6+5nefqa3n+ntZ3r7md5+pref6e1nevuZ3n6mt5/p7Wd6+5nefqa3
n+ntZ3r7md5+pref6e1nevuZ3n6mt5/p7Wd6+5nefqa3n+ntZ3r7md5+pref6e1nevuZ3n6mt5/p
7Wd6+5nefqa3n+ntZ3r7mf8j+xkVMVdNMG1/xar7pXlX2k6e3qbf9jPNfb+9ncjf1zqR17uJOg3B
ZerpyiqT7a6sZVNRue7lfTZfjLO35+9tc1TXGMBpRVo1od18WHu6uL65nU6d8bGvvbXUYDvmal5v
R2upq1bK7zq0UpZuK+W4uZVyTE5b8seLxejHk9urq2yxtfxo+Dfz/2bnDJL4OKheattJvPjE50l+
XbzZsbP43ibAcdHGNva1x43R7s4x7zTujb29cuNVq+c/dWj1HLu9cmPVDHXcAWqxhlpoWmNNQt49
2KrAwddKO463wdZesNUu2N6+2vYodvLwfastVDRYH2JjE7InsVUHtGmNNlm/h9VrojtHOylTW/vQ
VjW7Kq/tVrKb20nkhVtVs4fnrXhXPlzJli1Lc3YnogPevME7dvCOk7vHu8juxGdyltTtwbz+YMlu
eide07OkcggT4YdWvCuPsMTN77Q5vxPZAW/p4K0cvNWd450W+Z3EPrxlDW+vd1nakN9eGyV7mGL2
8GMr3pV1Vermd7onv9MOeMcbvJNog3dy91tlWua3z1UtSWt4e81x0ob89hqr2cMUs4efWvGubv9S
N79Vc36nUQe8EwdvZ7dM7v76rYr8Tn3GS2nNi0h4XbTUbn6nXusle5hi9vBzK96V/45y81s153fK
HfBOHbylg/fd352oIr9TnylcWjMtE16nK7Wb36nXwSTlavbwz614V85Wys1vvSe/kw54KwdvZ79M
7n6/1GV++0zi0qSGt9eaQjfkt9czzh6mmD38SyvelVOFdvNb78lv3QFv7eDt7JfJ3e+Xushv5SOS
aY1ICi+T1Lv5rby0MtXV7OFfW/GuiKV281tEzQmuujBLsaGWlDo7Znr3O6Y9T3taPnapauxSeOml
mXkXcy+/VFRNHz5u98KtKGZxFAf15jRXnUimcFB39s2UDoB6meg+mqlqNFNoP+oNme4lmiqupg+f
tKJO0WBzlA3qYk+udyGbwmGbqbN7pne/e9rztKflo5uqRjfJSzeF2M117eWbSlXTh6ftqFeEsziK
g3pzrusulFM4nDN19tA0OQDqRa5rH+nUdf9m4Ud9N9e1l3XqysNZhE/bUafB5iiOJWdzrusuxFM4
zDN1dtL07ndSe572tHzUU9eoJ5HfJ7Qh173cU8tq+vBZO+or32TaynXak+td6Kdw+KdydlN1gN2U
ylz3EVBdI6DUwZ21Ide9DFSn1fThWTvqay/UrVxvNhq0jYg7oO6wUOXspuoAu2nhU2hbHnu8nKMa
DyUvDxW8k+y2W7LP3DmKqvnD5+24r6xgt0wRBatm3LuQUeGwUeXsp+oA+ymrAg+vR3lU46MU+3FX
u7jHfty5mj980Y57MtgcZoO73JPvXUipcFipcnZUdYAdVZb57vUuj2q8lLy8VMiGfPebmUdJNX/4
sh33ipqKLRdFIffkexdyKhx2qpw9VR1gT5VFvovIi3uNn1Lqx30334Xw466r+cNX7birweYwjtl1
c76LLhyVHI6qnV31AAVQUVRAbdtyD+6iRlLJT1J3i6C247kPd0HV/OHP7bivWOpWJVQ0l0Jt9/QO
uDss1a2F6gPsq3GZ74kX9xpNJT9NjRvyPfXjHlfzh69bcecVT92qiYpkT753Koo6PFU7+6o+wL6a
lPmuvbjXiCr7iepuYdT2tPfirqr5w1/acV8x1a3aqGgujtr++B1wd5iqdvZVfYB9tSiP2k78Htyp
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
s6J89ngcKW3KZ1n5DJTPlOPIynFk5TiychxFOY6iHEdRjqMqx1GV46jKcVTlOEA5DlCOA5TjQOU4
UDkOVI6DlOMg5ThIOQ5SjoOV42DlOPjxOPIWlc+K8tnjceS4KZ9l5TNQPns8jpyS8llVPlOOIyvH
kZXjyMpxFOU4inIcRTmOohyH0sCz0sGz0sKz0sOz0sSz0sWz0saz0sez0siz0smz0sqz0suz0syz
0s2z0s6z0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L
0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+L0s+r0s+r
0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r
0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s+r0s9B6eeg9HNQ+jko/RyUfg5KPwel
n4PSz0Hp56D0c1D6OSj9HJR+Dko/B6Wfg9LPQennoPRzUPo5aEiuMbkG5Uo/B6Wfg9LPQennoPRz
UPo5KP0clH4OSj8HpZ8Da1cXlMsLSj9HpZ+j0s9R6eeo9HNU+jkq/RyVfo5KP8esXSZRjkPp56j0
c1T6OSr9HJV+jko/R6Wfo9LPUennCNr1HuU4lH6OSj9HpZ+j0s9R6eeo9HNU+jkq/RyVfo6sXbhS
rlwp/ZyUfk5KPyeln5PSz0np56T0c1L6OSn9nJR+Tko/J6Wfk9LPSennpPRzUvo5Kf2clH5OSj8n
pZ+T0s9J6eek9HNS+jkp/ZyUfk5KPyeln5PSz0np56T0c1L6OSn9nJV+zko/Z6Wfs9LPWennrPRz
Vvo5K/2clX7OSj9npZ+z0s9Z6ees9HNW+jkr/ZyVfs5KP2eln7PSz1np56z0c1b6OSv9nJV+zko/
Z6Wfs9LPWennrF1s1662a5fb9evt2gV39Yq7esldu+a+aRfdN+2q+6Zddt+06+6bduF90668b1mN
ELQj0i6+b9rV9027/L5p19837QL8pl2B37RL8Jt2DX7TLsJvoKYi2hFp1+E37UL8pl2J37RL8Zt2
LX7TLsZv2tX4Tbscv2nX4zdWgx4t6dm0qGfTsh6l6ceodP2Xz4r2IWo506Z9mLUPQftQO6KsHVHW
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
ZFpPZFpPZFpPZFtPZFtPZFtPZFtP5FpP5FpP5LZPJKaJtT6UrQ9N40M2tT4UrQ9160PX+JDz1oeq
9WHriUTriUTriUTriWTriWTriWTriWTriVTriVTriVTriXTriXTriXTriUzriUzriUzriUzriWzr
iWzriWzriVzriVzriVzjidg0tT4UrQ9168PGE4X3ALcfqtaHjScKiOfth7L1YeuJROuJROuJROuJ
ROuJZOuJZOuJZOuJVOuJVOuJVOuJdOuJdOuJdOuJdOuJTOuJTOuJTOuJbOuJbOuJbOuJXOuJXOuJ
XOuJGmsGwRtrBsEbawbBG2sGwRtrBsEbawbBG2sGwRtrBsEbawbBG2uG+cPWE4nWE4nWE4nWE8nW
E8nWE8nWE6nWE6nWE6nWE6nWE+nWE+nWE+nWE5nWE5nWE5nWE9nWE9nWE9nWE9nWE7nWE7nWE7XW
DKK1ZhCtNYNorRlEa80gWmsG0VoziNaaQbTWDKK1ZhCtNYNorRlEa80gWmsG0VoziNaaQbTWDKK1
ZhCtNYNorRlEa80gWmsG0VoziNaaQbTWDKK1ZhCtNYNorRlEa80gWmsG0VoziNaaQbTWDKK1ZpCt
NYNsrRlka80gW2sG2VozyNaaQbbWDLK1ZpCtNYNsrRlka80gW2sG2VozyNaaQbbWDLK1ZpCtNYNs
rRlka80gW2sG2VozyNaaQbbWDLK1ZpCtNYNsrRlka80gW2sG2VozyNaaQbbWDLK1ZpCtNYNsrRlU
a82gWmsG1VozqNaaQbXWDKq1ZlCtNYNqrRlUa82gWmsG1VozqNaaQbXWDKq1Zghppwc//OvZ85u7
N3+8OSbmlqzbvdev3r78493rd2/eP/XmUhYUfrtCrt6uQORAXSsHini3QsZ3K/Th69vTbkv+s/4V
g+38ikEdmcTfvXv72X/cf9HIubW6U/XoL1/ofz58/Z++6X96ffPni9zgt7ZyTHCq5cWJ7/7+/NXb
1/9Y26/Q1P5ON+l455Kl/vL1zW/Xj3944ks/LN+tPJHqUd2/ZJ4f/DB3nzdvZ/NV1vfRuz//XN0C
v1qgVq8WwLnYpXDEuwQqvktgDvdv7wU59er89HfsBY6JTi/AvUegji86KWuO+xHzxQ4/y/a1DZWD
3yJQq7cI4JecnF+jrgNRId4hUPEdAnt4cLsL8gtOwVDpAttxAe79ASULmlTxI2Cr9tgn9bX1ldPw
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
s9pNsL4OxqKNw1PIFYu+rrerZWe72k04fa115QpXuWKPZWzcsHaTgl2xVtgMobBdKyo0whUy2zj8
CLliUdj1nrWaelGBU9jalK6QqnTFHm+5qilFhYVdsdbYDNbYampFhUO4wmQbh2eQK7LGVvXGteps
XDuG09i60NiSl3um/moPV8SoYKDKdmytsplFuKIRFQxW2cFYtHH4CXKFuyqMFa7o7F47hlPZuti9
nr18nCvmK7HDAKXi/rVjEnbFWmczWGerxga2YwrhCpFtHH4GXMGzzlb1DrZivajA6Wwzla5QunSF
2sUVKSoM7Iq10uYTwhWtqLAIV+hs4/AL5Ap2VRgrXMF7UbFR2hv7yue+th+K1oe69aFrfOhXFdsP
VetDu/1Q+5XM9kPZ+tA0PmRT60PR+lC3Pmw8kea89aFqfdh6ItF6ItF6ItF6Itl6Itl6Itl6Itl6
ItV6ItV6ItV6It16It16It16ItN6ItN6ItN6ItN6Itt6Itt6Itt6Itd6Itd6Itd4okBxbEIFm4y7
JnKtSQBrAqmafKQmrqdJj2nCTJpsjSbqoUkeaB6E3zyXvXlMePPU6uYhys0zfZtHzDZPPG0ewNk8
D7J5PGHztLzm4W3Ns8SaR1s1T1pqHvzTPIemeSxK85SO5qERzTMMmj+pb/7Cu/mD4+bvX5s/x2z+
OrD5Y7Xmb6eaP+Vp/rKk+UOH5nv3zdfAm28lN1+Sbb6z2XyFsPk+W/PdquZ7Ps13TprvPzT34pv7
ws09yuZ+WXPvprmP0MxpN/OrzUxfM+fUzH40dXhTETa1SXOV3FyvzSvZZ89v7t788ea4ol2Wq/de
v3r78o93r9+9ef81a3zdz/EJXrOuESfwirXxsp/jDLFiTYSTw6+3r1dzZkPVL/qpzot+7gi7++7d
28/+4/6L7WLVNH1XPvrLF/af3776T9/0P72++fNFbvBbWzkqA77sOHz39+ev3r7+x9q+LHVBuFPI
eOci7758ffPb9eMfnvjSD8t3K0+kelT3L5LtwQ9z93nzdjZfyaVH7/78c3ULmJN3fH1aKdwlcuFw
Ej6U7gs93P3l9h9xXy1lV71Ask4vwCXgTcHpDUerFRc7iMe5tqFyDm719QkrcKv7+WUdiGJCuCAd
sHL47HYXLMkUb6h0gW67QOAS76aA9ApdIDHnBfYeLtCxYeC0u1j/RAzhAt1wASLpLtIvxA73fgHe
G7kqLBU+UJ0wELiMuykQveHXsMvFHu/v+NqGysH5drF5ow12gmrFASLdLvILbYfPAS8sCRRVR4Lq
RQIu2W4KRK8sUIzzhdrDCykS4FS72KTaEV5ohQIi0y5ypv3wBeAFflWYKrygO7EgcXl2UyB6pSu9
4PbIsusYCxLOsst1lh1+TUHpRixIRJJdpiQ7P3wJeCG/pBBMlV7oxILEpdjNcQ+Qq6mAhqtJ7uGF
GAsSTrDLdYJdILzQiAWJyK/LlF8Xh68AL8irwlThBdOLBWR23ZReMKUX9pibTYoFOLcu17l1+OUE
ZVqxgEity5Ral4evAS/kVxOCqdILvVjAvcJmbOGFYjvcX+zhhRgLClaLcv0Km0J4oRELCiEXZXqD
TR3uA17QV4Wpwgu2EwsK9/6acYUXdDki7YFi9LUNlQPfX3Nq/f4aQrTbRiwo+PW1YCuYODwAvLDI
dlvHgu3EgsK9vGaP+308bKccL/aYF2yKBVgmq/WrawidbFuxgBDNKr25Zg7fAF5YZLOtY8H1YgEn
m20hm8OOR3GxgxdcigVYNqv1W2sI3ewasaARulmll9bs4SHghUU5uzoWXCcWNE4520I5m+J3SPMF
38MLMRY0rJz1+oU1hHR2jVjQCOms0/tq7vDt7V44voHgqljQUycWNE4720I7l4Abvgvgxtc2VA7W
znqlnRGvH4Q9840XENpZy2Ti8AjwQtbOwVTphV4s4LSzlaUXROkFuYcXUizA2lmvtDNnCC+0YgGh
nbVJJg6PAS/wq8JU4QXWiQWD08620M6WHY97mi92WKn62obKwdrZrLQzh7WzZo1YMAjtbKZk4vAd
4IWsnYOp0gudWDA47WwL7WxN6QVj9/BCjAUDa2ez0s5cILzQiAWD0M5GJBOH7wEvyKvCVOEF3osF
nHa2hXYOW53FxQ5e4CkWYO1sVtqZw9pZ81YsILSz0cnE4Qnghaydg6nSC71YwGlna0svmNILe8QC
j7FgYe1sVtqZK4QXGrFgEdrZuGTi8APgBX1VmCq8IDqxYHHa2Rba2ZZ6wbodVqq+tqFysHa2K+3M
Ye0c3sLbeAGhnS1PJg5PAS9k7RxMlV7oxILFaWdXaGdX5lTdHgfQ+dqGysHa2a60MzcIL7RiAaGd
rUomDj8CXrBXhanCC70tZ4vTzq7ADE3FwaTzxQ5bzjptOVtYO9uVduawdtatPWeH0M7WJhOHZ4AX
snbW9a6z7u06O5x2drz0giu8wPaYndOus4O1s1tpZ+4QXmjEgkNoZ8eSicNPt3tBTFeFqcILvX1n
h9POrsAMlb+5my922GvTad/ZwdrZrbSzQGjn1r6zQ2hnJ5OJw8+AFxbtXO87696+s8NpZydLLxSw
p4nvEQtp39nB2tmttLNAaOfWvrNDaGdnkonDL4AXFu1c7zvr9r6znCacdnYFZmgSBRx2vtjBC2Hf
ea4cpJ19/VdeQGjn7b7zXA6onaOtYOLwK+CFRTvX+866ve88l4zTzq7ADE2mwM9NeyC3dNh3nisn
YS+stLNAaOftvvNcjkJ4QSQTh7u/3u6FRTvX+87a9GIBp51dgehlokAxsj2OOtMmxYKBvbDSzgKh
nU0rFizCCzqZOHwGeGHRzvW+sza9WMBpZ1cgenlxYPV8sYdeMDEW2AR7YaWdBUI7m0YsMIbwgksm
DvcALyzaud531rYTCwynnV2B6OW69ILeQzvbGAtMgF5gK+0sENrZNmKBSdgLjCcTh88BLyzaud53
1rYTCwylnWeNUHpBll7YI49kUyxo2Asr7SwQ2tm2YsEgvKCSicMXgBcW7VzvO2vXiwWL80KhnXlx
ePt8sUcsuBQLDvbCSjsLhHZ2jVjgE8ILNpk4fAl4YdHO9b6zdp1Y4AznBV56oYyFXdZILsYC56AX
+Eo7C4R2do1Y4AL2AmfJxOGr270gF+1c7zubqRMLXOK8UGhnbgto+C6nQZgpxgJXsBdW2lnC2tlM
rVjQCC/IZOLwNeCFrJ1Nve9spl4sGJwXCu1cnqU1X7A9vJBiwcJeWGlnyRBeaMWCQ3jBJBOH+4AX
+FVhqvAC68SCmHBeKLSzcKUX9thfMCzGgoC1s1hpZwlrZ8MasSAQ2llMycThAeCFrJ1Nve9sWCcW
hMB5QZdeKPJI8yp6Dy/EWBCwdhYr7SwFwguNWBAI7SxEMnH4BvCCvCpMFV7gvVjQOC8U2lmWqk3u
8ea84SkWYO0sVtpZwtrZ8FYsILSz0MnE4SHghaydTb3vbHgvFhzOC4V2lqyYneeLPbwQY0HC2lms
tLNUCC80YkEitLNwycThW8AL+qowVXhBdGJBcpwXCu0sVTki7XE2kBExFiSsneVKO0tYOxvRiAWJ
0M6SJxOHR4AXsnY29b6zEZ1YkDjtzArtrEQRC0qYPbyQYgHWznKlnaVBeKEVCwjtLFUycXgMeMFe
FaYKL8heLOC0Myu0s5KFalN7gJKNTLEAa2e50s4S1s5GNmJBIbSztMnE4TvAC1k7m3rf2chOLCic
dmaFdlYFinG+2MULMRYUrJ3VSjtLh/BCIxYUQjsrlkwcvr/dC2q6KkwVXlCdWFA47cwK7ezKNdIu
b8IYFWNBwdpZrbSzQmhn1YoFhHZWMpk4PAG8sGjnet/ZqF4s4LQzK7RzeHe5uNjDCykWYO2sVtpZ
IbSzasUCQjsrk0wcfgC8sGjnet/Z9PadNU47s+LgYyanAhq+x16bSfvOGtbOeqWdFUI7t/adNUI7
6ymZODwFvLBo53rf2fT2nTVOOzNdekGVXthDL6R9Zw1rZ73SzgqhnVv7zhqhnbVIJg4/Al5YtHO9
72x6+84ap51ZcdwxU7zwwh6/qDJp31nD2lmvtLNCaOfWvrNGaGetk4nDM8ALi3au951Nb99Z47Qz
s4UXbOkFu8fsnPadDayd9Uo7K4R2bu07G4R21i6ZOPwEeGHRzvW+s+ntOxucdmYlordYqfqLHbyQ
9p0NrJ3NSjsrhHZu7TsbhHY2PJk4/Ax4YdHO9b6z6e07G5x25iWht/gtj57sHvNC2nc2sHY2K+2s
ENq5te9sENrZqGTi8AvghUU71/vOprfvbHDambOSk2xKL+yw+2/SvrOBtbNZaWeF0M6tfWeL0M7G
JhOHXwEvLNq53nc2vX1ni9POnJcATFWSSHfxQowFC2tnu9LOCqGdW/vOFqGdLUsmDnfv3rvNC3rR
zvW+s+3tO1ucduYFmLdE1swXO8zONu07W1g725V21rB2tq19Z4vQzlYmE4fPAC9k7WzrfWfb23e2
OO3MSyqvtKUX3B5eSLEAa2e70s6aIbzQigWEdrYmmTjcA7zArwpThRd6+84Op515ieRVZSyoHd7B
sGnf2cHa2a20s4a1s23tOzuEdnZTMnH4HPBC1s623ne2vX1nh9POvODxhkN/los9dv9t2nd2sHZ2
K+2sBcILjVhwCO3sRDJx+ALwgrwqTBVe6O07O5x25gWMVxfES3/Sww5eSPvODtbObqWdNaydbWvf
2SG0s9PJxOFLwAtZO9t639n29p0dTjvzksRrWUni3WN2jvvObIK1s1ufLK0QXtjGApsQ2tmlo6XV
4SvAC/qqMFV4obPvzCacduauIphNFcFsB/Vs484zm0D1zKaVetaweraNnWc2weo52AomDl8Dfsjq
2dY7z7az88wmnHoWU4UvExW+TO7hhxQPGvbDSj9rg/BDKx4Mwg8qmTjcB/xgrwpThR9kLx5w+lmw
yg+m8sMOez1WpnhwsB9WClrDCto2dp8ZmxB+sMnE4QHgh6ygbb37bDu7z4wxENHkWkgh10IKuRZS
yLWQQq6FFHItpJBrIYVcCynkWkgh10IKuRZSyLWQQq6FFHItpJBrIYVcCynkWkgh10IKuRZSyLWQ
Qq6FFHItpJBrIYVcAykUf1PZ/Ilf8xdnzR9ANX+P0/x5SPPXCs2X55vvcjdfLW6+6dp88bL5HmDz
tbTmW1LNl3aa75A0X2lo7rA3N3yb+4/N7bDm7kxzs6CZu26mUpuZvWaiqZn3aMrwpipsipTmmrm5
hGuuJ5qTW3OkPRdexcaXbBgDE4UB8T6GV7GNd2wYg/OEwVTAq3xz+1SzrLzqN2xs5w0bdmRQ9vAq
jrc8Uj36yxfun9/+NoRXsfElGsbUKF7FKhvv1KfhVZb7DRqvstxi4S5hRvEqS+EO0QtMwqs8vL0X
LOs+P6UWvWCWqc1ewHH5MXHM2Bc5SrXHim+uaagYmBsLGM4xtEpAYq2DkMOpsWAqoFW+vb35l+We
N1Q0v5k6zY9LjIljqp5pcdxIZ1rukZKZaxsqJ2EXiFG0ivXrso0LFMIFIqFVHt3uggWtEiyVPuiF
AC4tJo6JemaK5CQze2zg+tqGyhnYB3oYrWJNKw4swgk6o1UeA15YtktMHQm2Fwm4tJgooR7FoVt8
l59j+Nr6yokJ9oIbRquEwyTXXhAM4QWX0SrfAV5YtktsHQu2EwsClxYTJdSjBNyoXbYObYwFASfF
BB9Gq1jbiAWBSIoJntEq3wNeWLZLbB0LrhMLApkUKw4m1bo8Qn+PV9B9bUPl4JSYUMNoFetasYBI
iQmV0SpPAC8s2yWujgXXiwVkSqw4mNS48vB2t8cGrkuxACfEhB1GqwTA5toLEpEQEzajVX4AvLBs
l7gqFtzUiQWJe6VEFAeTuvLAasd3WKT62obKwUpRsmG0ipsasSARUlGyjFZ5Cnghb5cEU6UXOrEg
ca+UyOIHYpMsj8RUag8vxFiQCvaCHEaruKkVCxrhBZnRKj8CXjBXhanCC6wXC7hXSmTxAzFWHuux
y2u3vrahcrBElmYYrRJIvBsvIASzNBmt8gzwQpbMwVTphU4sKJxklsUPxET50yTB2B5eiLGgYNms
pmG0imONWFAI3aymjFb5CfCCuypMFV7gnVhQOOUsix+IyfJYDyl2mJ19bUPlYOWsxDBaxfFGLCiE
dFYio1V+vt0LC1olmCq90IsFnHaWxQ/EdHnoljZ7jEg8xQKsnZUeRquErOjGCwjtrHRGq/wCeIFd
FaYKL4heLOC0sywOVzGuGJHsHi/2+Nr6ymlYOys3jFZxohELGqGdlctolV8BL2TtHEyVXujEgsZp
Z1kcrmJN6QW7ixdiLGhYO2s+jFZxohELGqGdNc9olbuf3UOhVYKpwguyEwsap51l+QMxXf5YUu8x
L8gUC7B21moYrRI27zdeQGhnrTJa5TPAC1k7B1OlF3qxgNPOsnjJjbFjLGjG94gFmWIB1s7aDqNV
nGzEgkFoZ20zWuUe4AV1VZgqvKA6sWBw2lkWPxArY0HvEwsqxoKBtbNhw2gVpxqxYBDa2bCMVvkc
8MKinVUdC6oTCwannVXxAzFZ/kxPml28EGPBwNrZyGG0SnjLZ+MFhHY2MqNVvgC8sGhnVceC7sUC
TjsrVr78XPwcQ7M98kg6xQKsnY0ZRqs43YoFhHY2JqNVvgS8sGhnXcdCb7vZ4rSzKn4gprgrfwkg
pj0ySWnT2cLq2U7DcBXX2nW2CPVspwxX+Qrww6Ke631n19t3tgJ6zTDueTd3YZu7gs1NquaeSTOF
38woNxOczXxbM/3TzEY0xXFTqzWlQ3Ml21xYNef55rTTHAWbQdnsIed6Pcql1wIsnNywYvT1KNd6
LcAichs2/Vzm8PVnqNejXP1WgOu9FXCkXXVej4rv5Nz+6C9fsOmfj14MvR/l0s6/NaPvRznL4532
tPejlvsd+v2ofIuDRb51o+9HLYUjZL116f2o+5+h3o8Kr/IW3cC6djdwOFGvjmlGd/w9s9tjqppr
GioGC3rHR9+Pcr4Z11HoEHre8fR+1IPPUO9HBUNF8zvZaX6cmlfH/KLl6uiA+WKHn2/62obKwWre
qdH3o8L74BsXIMS8U+n9qG8+w70fFSyVPuiFAE7LK1X4oHg/yl/s4YMUBrCWd3b4/SjntnHAJ4SW
dza/H/XwM9z7UcHU4gUzTe1I4BNOy6vyJ7ThJfHi6sP7IdQ3VA9U83xio29I+dIbfoDVfLAV35D6
9jPUG1LRVOkH1/EDUs0XP6JVbCp+vzlfiT384GLjKNgPcvQdKRN+O7Lxg0b4QeZ3pB59hnpHKpoq
/MB68YDU80WGUYnih4Phagc/sBQPFvaDGX1LygS04sYPDuEHk9+SevwZ6i2paKr0Qyce2AQrSdfS
SK6lkVxDI4Vgbvas5mOeSQ6FFgkNAOYMOJsG5ZAvfOtoBqcMgqkgh75DyaFoqHAz74TbESPVlUO2
IY/rR5/lEPvnd0M/Fwk1ChWQg3LITPG31Pz4Q5MhOXS8X2Pl0PEWA/cJPSiHjoVbRDfQSQ59j5JD
Zqp+rj1f2k432Ow0H26Nt/DHD29f3zz/4/r9I06E38twPsGt64Yjziec1hHHGaKp0xkFhyfIiBO2
amop2k19xCT1Ii54+fZHnyOO//PHVy9/e/3i+uH127fXNw/fjYXfXL1QGzEcfnGfhx9/RTIYfvl+
hQ+/fAsozDhXw+GXC4e1WCg9hN8PyPCrtpLmS9PpE/aS4TfXKlTCwa1rh8PP/5p2HX5iQjR1+in+
4Sky/Lyhoqk1bzf1kQnUDb/WzyPrR5/DT6zC78+x8NM8tgQfDj8dlyfHH00Mhl++X+LDL98CaxAh
h8MvF45QHUKm8PsRGX66XgR1jr3lwlwy/OLxtlzAykKY4fBrnG7LBUJYiHRy2+EZMvyqs23N1Dnb
lh8BON3wEy0FUD36HH5yFX5vx8IvHmbLJRsOPxvXKsdfCAyGX75f4MMv3wLuz3AphsMvFw5vyYTS
Q/j9hAw/W6+IOj/I4VJfMvziD2+4hJf2Ug+HX+N3N1wi1vkyHVN2+BkZftWvbgzr/OqGH2kv3fBr
HA6zevQ5/NQq/P4xFH4s/syGq2k0/NgU1yrH1+HHwm+5n6PDb7kF3Jjhio+G31I4vBcTSg/h9wsu
/NhUrYhYL+Om1AXDj6W8moKX9kqNhh9rpdUUYp2v0nlch19x4cfqpBrrJdWOaJNu+DUOV1o9+hx+
ehV+r8fCL2W4lBsOv3icID+++z0Yfvl+hg+/fAu8EaHZcPjlwhFbD5ql8Lt7Dxd+1YmFholOPkDL
S4afiGkADS/ttRwOP3/i0zr8NGKdr9PhzYfP7uHCzxsqm7qT5TpyPLrhp1s56erR5/Azdfg9GtN+
LKW7tB0Ov/iiMz++6DwYfun+49vLcPjlW+BsuJmGwy8XjkiAmymF3z1k+Ml6RaQ6+QAjLhl+KqYB
DLy0N2I4/PxUsg4/g1jnm/zq1efI8FO8bupOlsuAr17xxuF+q0efw8/W4fftq7HwS+kuY4bDT8e1
irEnhl++3+HDL91i4dS4ccPhlwtHZMNNfg/rC2T46XpF1OE+ccsvGX6R78QtvLS3fDj8GngnbhHr
fJsO5T18iQy/Cu40X3ayXEdCQz/8Wlt91aPP4edW4Te278dSuqt4DxMbfjauVY4vUA6GX77f4sMv
3wKnxq0dDr9UuENkw61N4fcVMvxsvSLqnEjDHbtk+MWTZ7iDl/aODYdf4+AZ7hDrfJfPZfwaGX7V
sTPzZSfL5SQYfrb1loSrz2Xk02rx+WIs/FK6y42e0mj4FNcq7rRTGo/3o09pPN4Cp8bd6CmNx8IR
2XCXT2m8jws/PlUrIt556UxM0wXDj8dXy8QELu3FNPyiC2+8WSYmeJ0fTIXwe4ALP16/V8Y7WS4x
gS+68NbhzPWjz+HH6vAbfOuFx3SXmIbfeuGRpyGmE996We7Hv/Wy3GLgDjL81stSuEX0ifzWyzfI
8KuQHfOl7fQJaCGe3imcPlnK8bcxcA9LtA7qFlP9Bgfn/3z56sX1/70/1oNyJaAU2k/Xz//3p3Ek
mJ/g/7LZjVJPcrrzf+aB5M6/vfO99/c//2P+p7mPT+r6+WSmO4f/57NHn/40V+v1/5nb8v7n/ug/
5megYDqeOSDgc5QFG07FLYUPv5DCG4cVeHQ12K1Yzug9RHar6qgCw2U7pSBOfTHNFxju1+d3bTYN
imLBNu2f710i+avrt5/lSrQLSHPY8ZGefPrgh/hEf1vq324cV1r5j8e///7mutUBG0upYLlsxzoG
uX9X7uWr369vZpc+ne+58/+98/T1X75uj57/4/rFdzev/7q+efvy+s0hnCGyqlyzK/AJbk/WaU/4
pGTBhjX/UjhiKmZZ83+LjA9Zr3o6xxcILs7fv+NLXgI++lisjz62cJvmwsfX1I1TDQSHM+QiHZps
D4/uYX6XFQ2VrjEd15yorXlMqgluL+DaZBrczRLVO1zlvWIarfa14uw306m25209t3O17/3yaViy
p1oLYfzCoLLM4FqLXq3heVhMg79TOxYOS+VQevhp2uN7qJ+m+cKrbtg5TsCfyZ2eLAzyrRWWiL+Q
Tg9Xjenin39ev/rj7d/H1lWNunz2+vWfYQkY6qTg1pajv0jzZrcjAOJdOJHehWPT4bt7qF+kRVNF
45uOUhLLGHDv9T/+en4zK503b9qzQ7NWvtWun7/aumbAGSbKpOM7cZ/dPH/1298bzVDq/qeffsT/
+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
UShNoQZxsPM73vNFHOz8FrS/SBot1CAOdn5T119ElTaFGsTBzu+9+ouo06ZQgzjY+c3L/zWPA7EG
fkycL2IN/Jg4X8Qa+DFxHiFiDfyYOF/EGvgxcb5IMlGFi1gDPybyJKn9lpC/iDXwY+J8EWvAQg3i
YOd3OvxFrAEPNYiDnd9qmC/iYOdz//4i1oCHGsTBzmfP/UVSqqEGcQHok9L+ItYgjIkijokijIki
jokijIkijokijIkijokijIkijokijIkijokijIkijokijIkijokijInCJrEcahDHRBHGRBHHRBHG
RBHHRBHGRBHHRBHGRBHHRBHGRBnHRBHGRBnHRBHGRBnHRBHGRBnHRBHGRBnHRBHGRMmSXrfhItYg
jIkyjokijIkyjokijIkyjokijIkyjokijIkyZVfCmCjjmCjCmCjjmCjCmCjjmCjCmCjjmCjCmChl
ShmEGqiUMwg1iGOiCGOijGOiCGOijGOiCGOijGOiCGOijGOiCGOijGOiCGOijGOiCGOijGOiCGOi
jGOiCGOijGOiCGOitCltEWoQx0QRxkQZx0QRxkSZMiZhTJQpZRLGRJlyJmFMVClpEsZElbImYUxU
KW0SxkSV8iZhTFQpcRLGRJUzJ74GKqVOwpio4pgowpio4pgowpio4pgowpio4pgowpio4pgowpio
4pgowpio4pgowpio4pgowpio4pgowpioVErehBrEMVGEMVHFMVGEMVHFMVGEMVHFMVGEMVHFMVGE
MVHFMVGEMVHFMVGGMVHFMVGGMVHFMVGGMVHFMVGGMVHZlD8KNYhjogxjoopjogxjoopjogxjoopj
ogxjoopjogxjoo5jogxjoo5jogxjoo5jogxjoo5jogxjoo5jogxjomYphaXCRaxBGBN1HBNlGBN1
HBNlGBN1HBNlGBN1HBNlGBN1HBNlGBN1HBNlGBN1HBNlGBN1HBNlGBN1HBNlGBO1TFm0UIM4Jsow
Juo4JsowJuo4JsowJuo4JsowJuo4JsowJuo4JsowJuo4JsowJuo4JsowJuo4JsowJuo4JsowJmqb
EnmhBnFMlGFM1HFMlGFM1HFMlGFM1HFMlGFM1HFMlGFMNHFMlGFMNHFMlGFMNHFMlGFMNHFMlGFM
NHFMlGFMNCzlEm24iDUIY6KJY6IMY6KJY6IMY6KJY6IMY6KJY6IMY6KJY6IMY6KJY6IMY6KJY6IM
Y6KJY6IMY6KJY6IMY6KRKZ0ZaqDYf/tvn82X//vOR/zOIabW7dWndw6Pf3hy5+3zmz+u3179tzt3
vvi/17+98xnzO7/5d/Y+vbPsYMz/+N3N9Yvr367fvHl98+bTOx+xOx9Jn3l/99vxMxE/+/z1P16+
ev72+sWdf/uP+dOb16/f3vloCrfw4p/9HXx106vfru98eeMP0fI5ef/Pav63+2+vb0J53S/NZcz/
Mw/jH8197CPtb3r4+vVfd/5+/fzF9c0n8/O8evv85ava5L34od9L+PP45fAd/7x/f3nn0esXvpp+
H4P9Dz+0fML+5//7Pw/ztd/D8h/748z8/3L/z+r4zzp+rNI/i//hdzyO/2zix/4V9GXzorVJ8cmd
e+9ubq5fvf3zP+59effHVzfXz3/7+/N/+/M67158dv3765vrcvvi/qu5td5c/+bbq/pK2Mw4fP76
3Xz7/X/8NRt69PzVv56+/utfX/h7P7nz9PF34f9d+Z4z8FWG/yrHf1XgvyrxX1X4r2r8Vw3+qxb/
VTfgghF3DfiLDTiMDXiMDbiMDfiMDTiNDXiNDbiNDfiND/iNj8TZgN/4gN/4gN/4gN/4gN/4gN/4
gN/4gN/EgN/EgN/EyAA54Dcx4Dcx4Dcx4Dcx4Dcx4Dcx4Dc54Dc54Dc54Dc5MrMN+E0O+E0O+E0O
+E0O+E0O+E0N+E0N+E0N+E0N+E2NLEkG/KYG/KYG/KYG/KYG/KYH/KYH/KYH/KYH/KYH/KZH1pID
ftMDftMDftMDfjMDfjMDfjMDfjMDfjMDfjMDfjMjImDAb2bAb2bAb3bAb3bAb3bAb3bAb3bAb3bA
b3bAb3ZEvQ34zQ74zQ34zQ34zQ34zQ34zQ34zQ34zQ34zQ34zY3I7iHdPSK8pxHlPY1I72lEe08j
4nsaUd/TiPyeRvT3NCLApxEPjqVORjw4lDwZyp4MpU+G8idDCZShDMpQCmUkh8JGkiiMD2W/Rjw4
kkdhI4kUNpJJYSOpFDaSS2EjyRQ2kk1hI+kUNpJPYWIogTniwZGUChvJqbCRpAobyaqwkbQKG8mr
sJHEChvJrLCR1AqTQznoEQ+OZFfYSHqFjeRX2EiChY1kWNhIioWN5FjYSJKFjWRZmBraRhjx4Eii
hY1kWthIqoWN5FrYSLKFjWRb2Ei6hY3kW9hIwoXpoZ2gEQ+O5FzYSNKFjWRd2EjahY3kXdhI4oWN
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
wfH65dPgeH32bHG8/gq95mqS7WpuJn2mnGJ6yxrTqwsVhendhtPLENud4PTW7XZYveUoo7dxGMHo
5Y+msnrL7Rm95TCnN+9yeukrPX5UqQbx6h6nV9f43vrtosfpLWp8Lzi94PSC0wtOLzi94PSC0wtO
Lzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi9
4PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC
0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtOLzi94PSC0wtO7xI5vcWU05tP
5TM1K6wmcXpJGZOPunOcXl2IhL5eAqdXF1p8u7C6bzqnt209htOb3zFOr3cbx+mlZB1SLtfzovDF
PAaJMnlYs7jh9D4YiTxhT7OaxeUI/aBYArKTOsO+w+rvxRyysD24WISmUY3SNI67NUM0jf33d2ga
pTJ51nddhufejvY7jHwo0slTbethXhQ3z8H0idhgKnuUhtKNBJNbRjA5OfMqPK4uXWW8br1caLmX
bn65lxHLvXC1RPlDsRLlZZfQq80IVKBcxnI3giAqw8u9nF/uzcFFHEeDWliEo9G4KaM4GmUxIOBe
5jtF9Bqazo7EfmnCmdSNDm2YyVCW6UyGpvUIDENZ1hiGh6MxDKaHYRgBSdLV3/YBf2TzfHuFJohD
H+/hAenRcE3EgDStRySAUmC4ZvXQ9gNid00b743HMKK7MF3q5BNjG8TgHG03DP/kL573bj7pQ5a3
z3oN9rgTj5zfeuRkDz0RDzawRgZQLyGHObl4N2HmjNHpu3fTernILuMGQBjGhIPM6Po64JHY6wDX
A2G4kesAs4z7ESc7tXHBMTTzF2fNwVXcLkMtLLLL1G5sFrXLmGpgyZHrHdplBqazs8tYFR5aPTa0
Ng+uHLsABaZpXYfj3Tbgl0djr6pc76qqGkmqtkhk/VSSyWy73vdu+sDfe+LEcK/nX/QZ+tD5034w
5m97D21s+THoTW3jMHzzYcv0SWhaj7j5sGU9CZ+MnYTK9CZhJOnYZdx8VHX4ReYNuxhvtnHjshhk
dGGH8oZ1Qy+WO4mMbru9UN6oBm6e3BJuX4pMLmRdGIPp8uStv229WGDrZ2jn3BhFcOtcXm/9j0Vu
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
wT7dSf17I/uXv+ANDXah0pOUGdhHCh0eefLFGetobMYyvX3EjGSsoojTv892Txvi48po/Xvq/PyL
RUj/vnFkYvTvafmP6N837djwjJoFZrRuPeJigJrnSfxU9CT2kpqpRiaxCunfd06N9O9dX/++rEL6
9947S83bgNT8DD/kjurf98++o3/vQp1yt6V/P+575/XvmxsI2mFnbiBa/fvCtfr3opXP+vdFNtW/
d43+vc2T9e9tX/9+Roz+jmnfUx/7+vduVPM+i9O8z8K697qne29qffuiq3uf2fr1sqt7nzno3kP3
Hrr30L2H7j1076F7D9176N5D9x6699C9h+49dO+hew/de+jeQ/ceuvfQvYfuPXTvoXsP3Xvo3kP3
Hrr30L2H7j1076F7D9176N5D9x6699C9h+49dO+hew/de+jeQ/ceuvfQvYfuPXTvoXsP3Xvo3kP3
Hrr30L2H7j1076F7D9176N5D9x6699C9h+49dO+hew/de+jeQ/ceuvfQvYfuPXTvoXsP3Xvo3kP3
Hrr30L2H7j1076F7D9375eneF9lU915PZSsr0istsyXIZFsROi7D8uPlAvLjTet5hO69vnO69zaP
1L33oR3SvSat5p7udb95bqkIS92WjcL6Z2Klbm1PKNqOSN2W5TJCp5IzN+HQKbuho/KY2KmbtwtN
UTUwRRFqxNRT7uDq3nu3V/PWu2Z9zU6SMyOTFIYTdAaqbY0ONqnJwd9TmixbG5hhmtj9B/ccPH+G
tXjrqS3zjCSKu07DWcFk6eL5TesRUAKT1ZL3994bKXnvTHc2qmJ4NswyoAS+M+w7DCUwPSiBUhED
2zRfLrJkqmJ+yZgIKoHRdQdX9wWWTL5r1tfMJFWZGpmk8OI3c1wCao0PdjvH8xjqcYdLYMJcAuPS
p7g5NxsBJjCumZj9sRPjm+9NzMiGY9vMsG/t1Mi6Hcxug72c2ff9DO3dfPLcdIqGMQUHNzYPfOH4
5CwlsHMjI9XrOknxn3nSt8/9D5MMrErObN7n/BqyESQDq+o0dyAyzbGn2YlSbmSilgBTos6w72ke
Oj9dgOsk9D0wBMVAcHTmYA4i4nho5hZrme/aDmbR9s6Es2Q2l1uUG5hhu4QxzgWxYF04kG3yhXvb
erXATuIPnh8jF5GwqKN8fXzw3rjrY/Y0uwr0CN/GqSXMkJabHxdONU6lXx+3zS9yC+MPHpiiiFsY
p5rr4/tir4/ZV2eSRvYUF75s6QxU2xofbO7i9XHrNExPcSZ9F2laj7hfcabeOO6P3Th0b+MoRlBq
rlrCkikEV1Zl4XGtFrh4appXiyyZws4vmSriFoZ6KpdhD0RfhhVdslpVjtzEVOHF3xmotjU+uNg5
btdQjzvXx1UYtFgVC0xxc24RNy5V0UzMg9ETU/ZuXMzIhlPZ7a+Pad0OZrfBXu7I9XG/653r4yp8
WVHZ9MxmBradqoqYKlunuU/EpjnT23Ts8B1mmS2h6EqdYd8q/vq4zIbuqDpz0F+sa9nw9bHJtr8+
bnqXB3NL58qyOXhuhstML2OMnfgOllrKrF9qySIiuWl+kVKLP3hgkMIZi3vKHVx9KJCx1K5ZX7ML
wZUjCyFYaukOVNsaH+xSZ/hE4Y6dVItdfTVOq/DUuvRbn7p1lUXMh6tvWB6OvWFxvRuWSg/Phgrd
sPhsvXHmyT2StFdW1/yErR/ftbLqz+3M1vrJ9cnmrj0r98jgFbun3rjx4B1JqdQCe2/TfLjgwe3L
3nsoeu+tdG/szMjYLaPkURk59zI8tMUCN3tN82aRdFOZ+XSjbMQkFc3N3iPRN3tVp/zuV+1YgLtg
ulF9UjO3xgdXyVeuayNXrrOb4XCPZ6+LfBoKz2+VPL/tieUqYlaqZlYejZwVar47K2rkaihvM8OR
jUc310+vb61/bjLchaHvauORstwF9qiDA5rnCwyoGrgOycMFDnYmo/vJ6NFVqje6xcjolnciqf9t
J6mzN27chAey/zWsjhnIuvmIfJHXX57q1ccCY1dMx67ojZ0dGTt315M6d4Z9hy808v53OUXM0Erz
OktP6nTwfIDriPSR198KFauHA5NU7pr1NTtJ+UiA6+AtQ3eg2tb4YJ1ejhj5um72G4DhHneSepgR
X/YZ8VHz25xYGZ6VGu3uZ+VI9KzkvaUzUvwutYlK6lrfflKXmnSpbXhAzQIDOlC1LrWLGF3TjO7j
0aPbrVr7v0fum3R1J5L6Si+pa7kJKcKXG7p/uVHGDGTdfES+0PXlRrn6RGDszHTsyt7YDX85WU55
8n509q2N3IcM7tGDm89Q+A6Vw9pecSd0qBPFkD9thl6sFu1EOAUVvRRUxcxz3XpEBiokA1WrRwPT
nE2n2XWnuRhJQEWbgPwQHJ88cvgx6uNqezKd0+ik7ULySbF9NZXvwwerFYNnuQPV1G3O3YUntldI
NRETWwxkwqKKmGUppJrVT20/y3bXrKfZSS5Hbh3KNlU9eP702enkHtlzj8kG6PHcEkPqqxCkvhiE
1NPDs6sPxDwYanaN+R95MJSe0w11qhzsFIHQV9dmnJepvltwej21926unTn+1P71zQnXw3YPAtUb
bvrek1tEep9i07d7BJkuK2ceQRY4OMVIJfBvSr+ZwL2p1FwJvJs+UNZwblplpoZv06d1DdemdFzU
8GyybQ3Hpgzpavg1taM+8pF7/V//sHJPWa2s1iOjd+3xHT/whcnx83TCK8c3zp/x0af+e8b/I1y9
H7fJ8cm5cxub/rzuKS2N2vnj01cMfWq/32fPrBEv/tjT/rXNjY2tlXuK3P/T/l/h/5X+n/H/rP/n
/L/Kt5X5f8r/858r/edK/7nSkA/q40yr7Hj6wpnjk5WDfp/fWqfxlw484OeC/Q9+hHpivDfjvRnv
yXhPpqSze2rdL6oT5IHiLPsYzdZu9fG//fgq/U3BTP9V9Ho5fd3Wr+cfoxicvk47QBtTQ7HjE8z5
zU1/LXLq6X0H9z5+ZnOydvwp+g6iCap7Jyc3NiezUeVTpc9HPiD9yXU+wjEW/Sx9iiR9goJXwg9L
E577TyDJJsBLE3iZCYjGBCpgCn8uhXSWwtRKoTelcIJSiDQp7JMUykYKzyGFHJCiUZ+ihp6iu52i
8JyiJZyiWpuij5qixJmi+ZiiLpiiY5eimJaizZWiApWiN5SibJOioZKi1pGiC5GiQJDyW/eUX1Wn
/H435ZeiKb9JTPn1W8JnU36vl/JzvZRf6yXMW8qvLVN+bJnyW8uUn1qm/NIy5YeWKb+zTPmZZcqv
LFOEr1J0r1Jkr1JUr1JEr1I0r1Ikr1IUr1IEr1L0rlLkrlLUrlLErlK0rlKkrlKUrlKErlJ0rlJk
rlJUrlJErlI0rlIkrlIUrlIErlL0rVLkrVLUrVLErVK0rVKkrVKUrVKErVJ0rVJkrVJUrVJErVI0
rVIkrVIUraqk++6UG+8UQSuVImilUgStVIqglUoRtFIpglYqRdBKpQhaqRRBK5VWOkmZwaTiSVL1
JKl8klQ/SSqgJFVQkkooKTUUlVJEUXlS9StlBlPqKCqlkKJSKikqpZSiUmopKqWYolKqKSqlnKJS
6ilKJxUwU2YwpaSiUmoqKqWoolKqKiqlrKJS6ioqpbCiUiorKqW0ooqkGnTKDKZUV1RKeUWl1FdU
SoFFpVRYVEqJRaXUWFRKkUWlVFlUmfQ1QsoMphRaVEqlRaWUWlRKrUWlFFtUSrVFpZRbVEq9RaUU
XJRJ+iYoZQZTai4qpeiiUqouKqXsolLqLiql8KJSKi8qpfSiUmovyiZ9mZcygynlF5VSf1EpBRiV
UoFRKSUYlVKDUSlFGJVShVEpZRjlkr6PTZnBlEqMSinFqJRajEopxqiUaoxKKceolHqMSinIqJSK
jKqSvlJP+k495Uv1lJpMnlKTyVNqMnlKTSZPqcnkKTWZPKUmk6fUZPKUmkyukh6LSJnBlJpMnlKT
yVNqMnlKTSZPqcnkKTWZPKUmkyc915L0YEvaky0pM5j0bEvSwy1JT7ckPd6S9HxL0gMuKTWZPKUm
k6fUZHKd9HBSygym1GTylJpMnlKTyVNqMnlKTSZPqcnkKTWZPKUmk6fUZPIi6fmylBlMqcnkKTWZ
PKUmk6fUZPKUmkyeUpPJU2oyeUpNJk+pyeRl0iOCKTOYUpPJU2oyeUpNJk+pyeQpNZk8pSaTp9Rk
8pSaTJ5Sk8lN0lOeKTOYUpPJU2oyeUpNJk+pyeQpNZk8pSaTp9Rk8pSaTJ5Sk8lt0oO6KTOYUpPJ
U2oyeUpNJk+pyeQpNZk8pSaTp9Rk8pSaTJ5Sk8ld0rPWKTOYUpPJU2oyeUpNJk+pyeQpNZk8pSaT
p9Rk8pSaTJ5Sk8mrpMflk56XT3lgPqUmo1NqMjqlJqNTajI6pSajU2oyOqUmo1NqMjqlJqNV0k8e
UmYwpSajU2oyOqUmo1NqMjqlJqNTajI6pSajU2oyOqUmo/OkX62kzGBKTUan1GR0Sk1Gp9RkdEpN
RqfUZHTSr46SfnaU9LujtB8epcxg0k+Pkn57lPTjo6RfHyX9/CilJqNTajI6pSajU2oyukj67VjK
DKbUZHRKTUan1GR0Sk1Gp9RkdEpNRqfUZHRKTUan1GR0mfTzv5QZTKnJ6JSajE6pyeiUmoxOqcno
lJqMTqnJ6JSajE6pyWiT9AvOlBlMqcnolJqMTqnJ6JSajE6pyeiUmoxOqcnolJqMTqnJaJv0I9yU
GUypyeiUmoxOqcnolJqMTqnJ6JSajE6pyeiUmoxOqclol/Q76pQZTKnJ6JSajE6pyeiUmoxOqcno
lJqMTqnJ6JSajE6pyegq6afwSb+FT/kxfEpNpkipyRQpNZkipSZTpNRkipSaTJFSkylSajJFSk2m
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
F4bCY/1EXn5xsrm5sbmPNE7/OU1/txAkSRmWFy9tukpyMYAGKauI4ba1ZPITsZLJheoNdzU83CaL
k0zOdk8b4uNUTy75vs2JP+3N4b7PvWiyO6SX3HQnD+klG9XVSzamr5dss5BeMmkuz+klFyE14mJn
9JL7nRnXSy5DPSxvSy85siM7r5dctnrJpRreelq95NK0esllNdVLNo1ecqmT9ZLLOa1kFj0e10om
f3295I5W8ohGsggwbyuTLB/pKSVnHaVkv73WGsiqI5Hs47V+Pe9oI/sogeoxVI+hegzVY6geQ/UY
qsdQPYbqMVSPoXoM1WOoHkP1GKrHUD2G6jFUj6F6DNVjqB5D9Riqx1A9huoxVI+hegzVY6geQ/UY
qsdQPYbqMVSPoXoM1WOoHkP1GKrHUD2G6jFUj6F6DNVjqB5D9Riqx1A9huoxVI+hegzVY6geQ/UY
qsdQPYbqMVSPoXoM1WOoHkP1GKrHUD2G6jFUj6F6DNVjqB5D9Riqx1A9huoxVI+hegzVY6geQ/UY
qsdQPV6i6rGdqh5nU+lJw9KkOqCwenSy9g97RAZ0z0r2BaUzW5isyFY+v7711Mqx81tbk82Tp572
b+ksy8rJWmazldX/du+hPUfXz5zY+Pyu3SsP7N+zkpeqUo0mZ6lFFrUIytganS4U3LReRog4Z3dO
xLnUUUKjvmMmqOhsyjlF537z3JINi/PSCLIW8qditZDJ06w4r8lGxHld+Dz03Hn41vjgalFl6roB
20oD++m9z4fB2ikSYp4N3Sf51VUK2slJ5+8dHM/c3mPnNk6d35qslrpU/gpMadKw7fsYPGWrghFr
s/SIbU4pD08nNc/T+enY6SQx4850upFzW0Ym8J1h3+FMYHW6oHXTernIgjNufsHZCPFxq2s17M/E
qmGTp9kZsuXIDNngedj5BWdL6bpbdME1DVTJC67KhhdcUeya9zF4yi4LB0bVDYwqIjDqU3IqYjor
aXV174Ftp1Nlu6atd+fT6ZGTa2XB9276JXT4/LHh9T7Yp0PnT/uzmt+6Dm1s+ZNJkyl3smM6HRxs
l6dnNzewc7kiPPLki1PdvQciU53r7VxuJNW5MlFW3kkice3yr2XlD29t+qYP/ONw5+dfLKe68q2v
zjpoHLUb+0MbT6770fGzOuDDDDTXbScMCnB2gRmtW49gAzhbT+K+6EnsZcMqH57EKguJ6ndOjUT1
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
T+1f35xwHW73ILK+IdPvPemvkGfB9Ns95E2XpDMPeQt+nWLECF6dFlYp+HRaToXg0ekDeY0/p0+o
Gm9Otqvx5ZSOsxpPTrau8eOUIcsaL062+8hH7vV//cPKPcatrNYjY3bt8R0/8IXJ8fN0wivHN86f
8dGn/nvG//PvPerHbXJ8cu7cxqY/r3uMoVE7f3zmlcq/st/vs2f8UJ5YOfa0f21zY2PLv1PS58nf
zCf4kOkLZ45PVg76PXtrncZSGnvAjyu3NfKRlXss9+ypdb8gTlCLFCPFx2ikd6uP/+3HV/3fjlIn
vV7S6+X0dVW/bj5G8TN9nb70buNhaN59cji/uemvI049ve/g3sfPbE7Wjj9F31s0AXHv5OTG5mQ2
Inya87nEB5M/mc5HOD6if2mQItifoG+W8LPbhF9FJHB2E9CuCTTRBIBlAjMxhc6XwoFLIY6lsK1S
KEopvJ4UMkwKgySFdpHCVUhR8E/Rik9RJU/Rv05RWk7R9E1Rj03RKU1RxEzRXkxR+UvRk0tRLkvR
yEpRY0rR/UlRmEnRMklRzUjRZ0hRAkj5zXnKr5tTfkeb8ovNlN8GJnw25deMKT9mTPktY8K8pfwW
NeWnqCm/RE35IWrK71BTfoaa8ivUlB+hpvwGNUUWLEUVLEUULEUTLEUSLEURLEUQLEUPLEUOLEUN
LEUMLEULLEUKLEUJLEUILEUHLEUGLEUFLEUELEUDLEUCLEUBLEUALEX/K0X+K0X9K0X8K0X7K0X6
K0X5K0X4K0X3K0X2K0X1K0X0K0XzK0XyK0XxK0XwK0Xvq0q670658U6R+1Ipcl8qRe5Lpch9qRS5
L5Ui96VS5L5UityXSpH7Ummlk5QZTCqeJFVPksonSfWTpAJKUgUlqYSSUkNRKUUUlSdVv1JmMKWO
olIKKSqlkqJSSikqpZaiUoopKqWaolLKKSqlnqJ0UgEzZQZTSioqpaaiUooqKqWqolLKKiqlrqJS
CisqpbKiUkorqkiqQafMYEp1RaWUV1RKfUWlFFhUSoVFpZRYVEqNRaUUWVRKlUWVSV8jpMxgSqFF
pVRaVEqpRaXUWlRKsUWlVFtUSrlFpdRbVErBRZmkb4JSZjCl5qJSii4qpeqiUsouKqXuolIKLyql
8qJSSi8qpfaibNKXeSkzmFJ+USn1F5VSgFEpFRiVUoJRKTUYlVKEUSlVGJVShlEu6fvYlBlMqcSo
lFKMSqnFqJRijEqpxqiUcoxKqceolIKMSqnIqCrpK/Wk79RTvlRPqcnkKTWZPKUmk6fUZPKUmkye
UpPJU2oyeUpNJk+pyeQq6bGIlBlMqcnkKTWZPKUmk6fUZPKUmkyeUpPJU2oyedJzLUkPtqQ92ZIy
g0nPtiQ93JL0dEvS4y1Jz7ckPeCSUpPJU2oyeUpNJtdJDyelzGBKTSZPqcnkKTWZPKUmk6fUZPKU
mkyeUpPJU2oyeUpNJi+Sni9LmcGUmkyeUpPJU2oyeUpNJk+pyeQpNZk8pSaTp9Rk8pSaTF4mPSKY
MoMpNZk8pSaTp9Rk8pSaTJ5Sk8lTajJ5Sk0mT6nJ5Ck1mdwkPeWZMoMpNZk8pSaTp9Rk8pSaTJ5S
k8lTajJ5Sk0mT6nJ5Ck1mdwmPaibMoMpNZk8pSaTp9Rk8pSaTJ5Sk8lTajJ5Sk0mT6nJ5Ck1mdwl
PWudMoMpNZk8pSaTp9Rk8pSaTJ5Sk8lTajJ5Sk0mT6nJ5Ck1mbxKelw+6Xn5lAfmU2oyOqUmo1Nq
MjqlJqNTajI6pSajU2oyOqUmo1NqMlol/eQhZQZTajI6pSajU2oyOqUmo1NqMjqlJqNTajI6pSaj
U2oyOk/61UrKDKbUZHRKTUan1GR0Sk1Gp9RkdEpNRif96ijpZ0dJvztK++FRygwm/fQo6bdHST8+
Svr1UdLPj1JqMjqlJqNTajI6pSaji6TfjqXMYEpNRqfUZHRKTUan1GR0Sk1Gp9RkdEpNRqfUZHRK
TUaXST//S5nBlJqMTqnJ6JSajE6pyeiUmoxOqcnolJqMTqnJ6JSajDZJv+BMmcGUmoxOqcnolJqM
TqnJ6JSajE6pyeiUmoxOqcnolJqMtkk/wk2ZwZSajE6pyeiUmoxOqcnolJqMTqnJ6JSajE6pyeiU
mox2Sb+jTpnBlJqMTqnJ6JSajE6pyeiUmoxOqcnolJqMTqnJ6JSajK6Sfgqf9Fv4lB/Dp9RkipSa
TJFSkylSajJFSk2mSKnJFCk1mSKlJlOk1GQKlSRnkDKDKTWZIqUmU6TUZIqUmkyRUpMpUmoyRUpN
pkipyRQpNZkiT1KkSJnBlJpMkVKTKVJqMkVKTaZIqckUKTWZIqUmU6TUZIqUmkyhk0RFUmYwpSZT
pNRkipSaTJFSkylSajJFkiZMkihMkipMkixMmi5MygwmKcMkScMkacMkicOk1GSKlJpMkVKTKVJq
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
jWa+FG8080a80cwb8UYzb8QbzbwRbzTznDE+eJ1mk1PGB6/TbHLO+OB1mk1OGh+8TrPJWeOD12k2
OW188DrNJueND16n2eTE8cHrNJucOT54nWaTU8cHr9NsWvFGs2nFG82mFW80m1a80Wxa8fYumeLN
54jCiberZIq3a2SKt1+Ryd4uUSc5i3xwiTrJaeSDS9RJziMfXKJOciL54BJ1kjPJB5eok5xKPrhE
nZRccok6KbnkEnVScskl6qTkkkvUSckll6iTkksuUScll1yiTkouuUSdlFxy6TqZ4s1ns1JyyaX3
yBRvvyFTvN0gU7z9lkzx9jsyxdvvyRRvfyBTvP2RTPH2JzLFm99XS8kll/5CJnv72TNksrefUWOS
S35GjUkueeM7ZLK3N75LJnt74wKZ7O2Ni2SytzdeJJO9veFPvpRc8savyGRvb1wnk729QScvueQN
OnnJJW/QyUsueYNOXnLJG3TykkveoJOXXPIG9VdyyRvUX8klb9DJSy55g85YcskbdMaSS35OZyy5
5K3vk8ne3qI+SC65/CUy2dvl18lkb5cvkcnervjFW0ouuUqNSS65SickueQqjbrkkmsvkcnerr1M
Jnu7Ru1KLrlG7Uou+dWzZLK36/wB9nadPiC55DoNquSS6zSokkt+TYdJLvn1W2Syt1/T6Egu+TV1
R3LJe3Rukkveo4mVXPIeeZNc8h55k1zyHrUgueQ9Gl/JJe/R+EoueY/alVzyHg215JL3aKgll9z4
OZns7cYvyGRvN94kk73doP5KLrnxNpns7cYvyWRvN94hk73duEwme7vxLpns7cYVMtnbH35CJnv7
w0/JZG9/4sbY25+oMcklf/4Wmeztz98mk739mYZEcsmfKdY5l9x8hkaHc8nNZ6jrnEtuPkPtci65
+QxFNeeSm89QEHAuufkMRRTnkpvP0EhyLrn5DI0k55Kbz9BIci65+QyNZCXeaCQr8UYjybnk5rP/
QiZ7e/YVMtnbsz8ik7096/duw7nk5rM/IZO9PftTMtnbs6+Syd6efY1M9vbs62Syt2cvkSnefkam
eHuDTPH2czLFm59No8Tbm2SKt7fIFG9vkynefkmmeHuHTPF2mUzx9i6Z4u0KmeLtKpnizYe9ycXb
r8gUb9fJFG+/JlO8vUemePsNmeLtBpni7bdkirffkSnefk+mePMzZLR4+yOZ4u1PZIq3P5Mp3v5C
Jnt77hky2dtzz5LJ3p57jkz29tzzZLK3575EJnt7zl+B8APo3vwKmeztua+Syd6e+xqZ7O25r5Mp
3r5Bpnj7Jpni7VtkirdvkynevkOmePNRbUrx9j0yxdv3yRRvPyBTvP2QTPH2Apni7QKZ4u0imeLt
RTLF20tkijef8IwRb/9Cpnh7hUzx9iMyxRvFL+eSm8/TyXMuufk8nQXnkpvP0wRwLrn5PE0A55Kb
z9MEcC65+WVywbnk5pfJBeeSm18mF5xLbn6ZXHAuufllWiKcS25+hcKec8nNr1DYcy65+RUKe84l
N79CYc+55OZXKOw5l9z8KgUM55KbX6WA4Vxy86sUMJxLbn6V+su55OZXqb+SS75K/ZVc8m3qjuSS
b1N3JJe8TJEqueRlilTJJS9TpEoueZkcSy55mRxLLnmZHEsueZkcSy55mRxLLnmZHEsueYWWk+SS
V2g5SS55hZaT5JJX/HKykkteeY9M9vbKb8hkb6/cIJO9vfJbMtnbT/gw9vYTPoy90XWflVxCF3BW
cgldwFnJJXQBZyWXvH6dTPb2OjUmueR1akxyyevUB8klr1MfJJe8Tn2QXPL678gUb78nU7z9gUzx
5gfKSi55/U9kirc/kyne/kIme7v0DJns7dKzZLK3S8+Ryd4uPU8me7v0JTLZ26Uvk8neLvklbSWX
XPoqmezt0tfIZG+Xvk6mePsGmeLtm2SKt2+RKd6+TaZ4+w6Z4u27ZIo3v6St5JJL3ydTvP2ATPH2
QzLF2wtkircLZIq3i2SKtxfJFG8vkSneXiZTvPn1ZiWXXHqFTPH2IzLF24/JFG8/IVO8/ZRM8fYq
meLtNTLF2+tkirdLZIo3vzat5BK6treSS+ja3kouoWt7K7mEru2t5BK6treSS+ja3kouoWt7K7mE
ru2t5BK6treSS+ja3kouoWt7K7mEru2t5BK6treSS+ja3kouoWt7K7mEru2t5BK6treSS35GQyK5
5Gc0JJJLfk49k1zyc+qZ5JI3aXQkl7xJoyO55E0aHcklb9LoSC55k0ZHcsmbNDqSS96k0ZFc8iaN
juSSN2l0JJe8SaMjueRN6oPkkjepD5JL3qTRkVzyJo2O5JI3aXQkl7xJoyO55E0aHcklb9LoSC55
04+Ok1zy5nUyxduvyRRv75Ep3n5Dpni7QaZ4+y2Z4u13ZIq335Mp3v5Apnjzq9tJLnnzT2SKtz+T
Kd7+QiZ7e+sZMtnbW8+Syd7eeo5M9vbW82Syt7e+RCZ7e+vLZLK3t/zqdpJL3voqmeztra+Ryd7e
+jqZ4u0bZIq3b5Ip3r5Fpnj7Npni7Ttkirfvkine/Op2kkvovsVJLnnrB2SKtx+SKd5eIFO8XSBT
vF0kU7y9SKZ4e4lM8fYymeLNr24nueStV8gUbz8iU7z9mEzx9hMyxdurZIq318gUb6+TKd4ukSne
fkamePNB6ySXvPVzMsXbL8gUb2+SKd7eIlO8vU2mePslmeLtHTLF22Uyxdu7ZIo3H7ROcslbV8kU
b9fIFG8UtJJL3qKglVzyFgWt5BK6W3SSS96ioJVc8hYFreSStyhoJZe8RUErueQtClrJJW9R0Eou
eYuCVnLJWxSekkvepvCUXPI2hafkkrcpPCWXvE3hKbnkbQpPySVvU3hKLnmbwlNyydsUnpJL3qbw
lFzyNoWn5JK3Kbgkl7xNwSW55G0KLsklb1NwSS55m4JLcsnbFFySS96m4JJc8jYFl+SStym4JJe8
TcElueRtmljJJW/TBEgueZsmQHLJ2zQBkkvepgmQXPK2n4BKcsnb75Ep3n5Dpni7QaZ4+y2Z4u13
ZIq335Mp3v5Apnj7I5ni7U9ksrd3/ARUkkveeZZM9vbOc2Syt3eeJ5O9vfMlMtnbO18mk7298xUy
2ds7XyWTvb3zNTLZ2ztfJ1O8+fxQSS5555tkirdvkSnevk2mePsOmeLtu2SKt++RKd6+T6Z4+wGZ
4u2HZIo3P4WV5JJ3LpAp3i6SKd5eJFO8vUSmeHuZTPH2L2SKt1fIFG8/IlO8/ZhM8ebzQyW55J2f
kineXiVTvL1Gpnh7nUzxdolM8fYzMsXbG2SKt5+TKd5+QaZ486miklzyzltkire3yRRvvyRTvL1D
pni7TKZ4e5dM8XaFTPF2lUzxdo1M8eYjtZJc8s51MsUbRarkkncoUiWXvEORKrnkHYpUySXvUKRK
LnmHIlVyyTsUqZJL3qFIlVzyDkWq5JJ3KFIll7zzZzLF21/IZG+XKX4ll1ym+JVccpniV3LJZYpf
ySVU8qokl1ym+JVccpniV3LJZYpfySWXKX4ll1ym+JVccpniV3LJZYpfySWXKSYll1ymmJRccpli
UnLJZYpJySWXKSYll1ymmJRccpliUnLJZYpJySWXKSYll1ymmJRccpkmVnLJZZpYySWXaWIll1ym
iZVcctlPrMokmVy+yrb4u8a2OPwV2+LxOtvs8t1n2Gaf7z7LNjt99zm22eu7z7PNbt/9Etvs990v
ky1p5d2vsM1+3/0q2+z33a+xzX7f/Trb4vcbbIvfb7Itfr/Ftvj9Ntvi9ztsi9/vki0J5t3vsS1+
v8+2+P0B2+L3h2yL3xfYFr8X2Ba/F9kWvy+yLX5fYlv8vky2pJp3/4Vt8fsK2+L3R2yL3x+zLX5/
wrb4/Snb4vdVtsXva2yL39fZFr+XyJak8+7P2Ba/b7Atfn/Otvj9Bdvi9022xe9bbIvft9kWv79k
W/y+w7b4vUy2pJ9332Vb/HK8SQJ6l+NNMtC7HG+Sgt7leJMc9C7HmyShd3/Ntvh9j23x+xu2xe8N
siURvftbtsXv79gWv79nW/z+gW3x+0e2xe+f2Ba/f2Zb/P6FbfZ7heNfMtIVjn9JSVc4/iUnXeH4
l6R0heNfstIVjn9JS1c4/iUvXeH4l8R0heNfMtMVjn9JTVc4/iU3XeH4l+R0heNfstMVjn9JT1c4
/iU/XeH4lwR1heNfMtQVjn9JUVc4/iVHXeH4lyR1heNfstQVjn9JU1c4/iVPXeH4l0R1heNfMtUV
jn9JVVc4/iVXXeH4l2R1heNfstUVjn9JV1c4/iVfXaH4V5KvrrzKtvh9jW3x+zrb4vcS2+L3Z2yL
3zfYFr8/Z1v8/oJt8fsm2+KX4l9JvrryNtvi95dsi9932Ba/l9kWv++yLX6vsC1+r7Itfq+xLX5/
xbb4pfhXkq/oSxalJF9dfZZt9nv1ObbZ79Xn2Wa/V7/ENvu9+mW22e/Vr7DNfq9+lW32e/VrbLPf
qxRvSvLV1W+wLX6/ybb4/Rbb4vfbbIvf77Atfr/Ltvj9Htvi9/tsi98fsC1+Kd6U5KurL7Atfi+w
LX4vsi1+X2Rb/L7Etvh9mW3x+y9si99X2Ba/P2Jb/FK8KclXV3/CtvjleJN8dZXjTfLVVY43yVdX
Od4kX13leJN8dZXjTfLVVY43yVdXOd4kX13leJN8dZXjTfLVVY43yVdXOd4kX13leJN8dZXjTfLV
VY43yVdXOd4kX13leJN8dZXjTfLVVY43yVdXOd4kX13leJN8Rd/kKSX56up7bIvf37Atfm+wzX6v
cXxKvrrG8Sn56hrHp+Sraxyfkq+ucXxKvrrG8Sn56hrHp+Sraxyfkq+ucXxKvrrG8Sn56hrHnuSr
axx7kq+ucexJvrrGsSf56hrHnuSraxx7kq+ucexJvrrGsSf56hrHnuSraxx7kq+ucexJvrrGsSf5
6hrHnuSraxR7ueSra6+wLX5/xLb4/THb4vcnbIvfn7Itfl9lW/y+xrb4fZ1t8XuJbfFLsZdLvrr2
Btvi9+dsi99fsC1+32Rb/L7Ftvh9m23x+0u2xe87bIvfy2yLX4q9XPLVtStsi9+rbIvfa2yL31+x
LX6vsy1+f822+H2PbfH7G7bF7w22xS/t9bnkq2u/Y1v8/p5t8fsHtsXvH9kWv39im/1e/x7b7Pf6
99lmv9d/wDb7vf4C2+z3OsWGPFJ78/pFttnv9RfZZr/XX2Kb/V5/mW32e51jQ/LVdY4NyVfXOTYk
X13n2JB8dZ1jQ/LVdY4NyVfXOTYkX13n2JB8dZ1jQ/LVdY4NyVfXOTYkX13n2JB8dZ1jQ/LVdY4N
yVfXOTYkX13n2JB8dZ1jQ/LVdY4NyVfXOTYkX13n2JB8dZ1jQ/LVdY4NyVfXOTYkX13n2JB8dZ1j
Q/LVdY4NyVfXOTYkX13n2JB8dZ1jQ/LVdY4HyVfXOR4kX934Etvs98aX2Wa/N77CNvu98VW22e8N
yjnyiO7NG19nm/3e+Abb7PfGN9lmvze+xTb7vfFttsXvd9gWv99lW/xyvEm+usHxJvnqBseb5Ksb
P2Rb/HLsSb66wbEn+eoGx57kqxsce5KvbnDsSb66wbEn+eoGx57kqxsce5KvblDsyaO8N2/8mG3x
+xO2xe9P2Ra/r7Itfl9jW/y+zrb4vcS2+P0Z2+L3DbbFL8WePN57k56RUPKA7016SELJI7436SkJ
JQ/53qTHJJQ85nuTnpNQ8qDvTXpQQsmjvjfpSQklD/vepEcllDzue5OelVDywO/NGxR78sjvzRvX
2Ba/v2Jb/F5nW/z+mm3x+x7b4vePbIvfP7Etfv/Mtvj9C9vs9/c8zpKvfs/jLPnq9zzOkq9+z+Ms
+eoPv2eb/f7hD2yz3z+wX8lXf2C/kq/+wH4lX/2B/XK+uvUMxac8GnzrmW+zTX5v0ffZSh4PvkVf
aCt5QPgWfaOt5BHhW/SVtpKHhG/Rd9pKHhO+RV9qK3lQ+BZ9q63kUeFbz/E5cr669TzPC+erW8/z
vHC+uvU8zwvnq1vP87xwvrr1PM8L56tbX+K54Hx168vfYZv9fuVLbLNf3h/l8eFbvD/KA8S3eH+U
R4hv8f4oDxHf4v1RHiO+xfujPEh8i/dHeZT4Fu+P8jDxLd4f5XHiW7w/ygPFt3h/lEeKb/H+KA8V
3+L9UR4rvsX7ozxYfIv3R3m0+Bbvj/Jw8S3eH+Xx4lu8P8oDxrd4f5RHjG/x/igPGd/i/VEeM77F
+6M8aHyL90d51PgW74/ysPEt3h/lceNbvD/KA8e3eH+UR45v8f4oDx3f4v1RHju+xfujPHh86xrH
lRO/HFecr25x/pfHj29x/pfnj29x/pcHkG9x/pcnkG9x/pdHkG9x/pdnkG9x/peHkG9x/penkG9x
/pfHkG/9mueF89WtX1P78iDyrfd+zjb7fe8XbLNfehJLybPItzhfycPItzhfydPItzhfyePItzhf
yfPItzhfyQPJtzhfyRPJtzhfySPJtzhfyTPJtzhfyUPJtzhfyVPJtzhfyWPJtzhfyXPJtzhfyYPJ
tzhfyZPJtzhfyaPJtzhfybPJtzhfycPJtzhfydPJtzhfyePJtzhfyfPJtzhfyQPKtzhfyRPKt278
hm3xe4Nt8ftbtsXv79gWvxQn8pjyrRt/YFv8/pFt8fsntsXvn9kWvzz+nK9u/ZbPhfPV//4Sny/n
q//9FfbL+ep/f4X9cr76319hv5yv/uvP7Ivz1X/9mX1xvvqvP7Mvzlf/9Wf2xfnqv/7yDNsl28+y
bdh+jm3L9vNsO7a/xHbFNl0byKPL//WXr7DNfv/yVbbZ71++xjb7/cvX2Ra/32Bb/H6TbfH7LbbJ
74c//B7bju3vs12xTfu+PMT84Q9/yLZi+wW2c7YvsK3Zvsh2wfaLbJdsv8S2YftltsXvv7Atfl9h
W/xSrpbHmT/84Y/ZFr8/YVv8/pRt8cvryIpfXkdW/PI6suKX15EVv7yOrPjldWTFL68jJ355HTnx
y+vIiV9eR0788jpy4pfXkRO/vI6c+OW4cuKX15ETvxx7TvzyOqrEL6+jSvzyOqrEL6+jSvzyOqrE
L6+jSvzyOqrEL6+jSvxyPFfil+O5Er8Uz/Kw84c//APb4vePbIvfP7HNfl94hm32+8KzbLPfF55j
m/2+8Dzb7PeFL7HNfl/4Mtvs9wWKYXns+cMXvso2+33ha2yz3xe+zrb4/Qbb4vebbIvfb7Etfr/N
tvj9Dtvi97tsi1+Kc3kA+sMXvs+2+P0B2+L3h2yL3xfYFr8X2Ba/F9kWvy+yLX5fYlv8vsy2+KU4
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
qV6l6tX0obv1rF5NBr39TG8/09vP9PYzvf1Mbz/T28/09jO9/UxvP9Pbz/T2M739TG8/09vP9PYz
vf1Mbz/T28/09jO9/UxvP9Pbz/T2M739TG8/09vP9PYzvf1Mbz/T28/09jO9/UxvP9Pbz/T2M739
TG8/09vP9PYzvf1Mbz/T28/09jO9/UxvP9Pbz/T2M739TG8/09vP9PYzvf1Mbz/T28/09jO9/Uxv
P9Pbz/T2M739TG8/09vP9PYzvf1Mbz/T28/09jO9/UxvP9Pbz/T2M739TG8/09vP9PYzvf1Mbz/T
28/09jP/R/YzOmGummC6/opV90v7qnSdPINNv91nmvt+BzuRv691Iq93E/Uagsss0JVVpptdWcum
ovK2l/fJbD7O356+d81RfWMArxVp1YR2/WET6OL65ubqyhuvQu2tpQHbMVfzBjtaS1O1Un7XoZWy
9Fspq+ZWyoq8tuSP5/PR9yc3Fxf5fGP5yfBv9v/tzhml6jCq/jSuk3jxiU+T5WXxYsfO4jubAKui
ja0KtcdVaHdnxVuNe1WwV65atXr+pUOrZ+X3ylW6GWrVAWpxC7UwdIs1CXn3YOsCh1ArbaU2wTZB
sPU22MG+2u4obvL4fastVDK4PcTaJmRHYusOaNMt2uT8HlZ/E9052mmZ2iaEtq7ZVQVtt9Lt3E6T
INy6mj0+bcW78uFKN2xZmrM7FR3w5jXeysNbpXePd5HdacjkLK3bgwX9wdLt9E6Dpmdp5RAm4g+t
eFceYamf31lzfqeyA97Sw1t7eOs7xzsr8jtVIbxlDe+gd1nWkN9BGyV3mGL2+NdWvCvrqszP72xH
fmcd8FZrvNNkjXd691tlVuZ3yFUtzWp4B81xsob8DhqrucMUs8cfW/Gubv8yP791c35nSQe8Uw9v
b7dM7/76rYv8zkLGS1nNi0gEXbT0dn5nQesld5hi9vhTK96V/47281s353fGHfDOPLylh/fd353o
Ir+zkClcVjMtE0GnK72d31nQwSTjavb4z614V85W2s9vsyO/0w54aw9vb79M736/NGV+h0zisrSG
d9CawjTkd9Azzh2mmD3+SyvelVOF8fPb7Mhv0wFv4+Ht7Zfp3e+XpshvHSKSWY1IiiCTNNv5rYO0
MjPV7PFfW/GuiKXx81skzQmuuzBLsaaWlHk7Znb3O6Y7T3daIXapa+xSBOmlnXkb8yC/1FRNHz9u
98KtKGZxFA/15jTXnUim8FD39s2M9oB6meghmqlrNFOYMOoNmR4kmlpV08dPWlGnZLA+yhp1sSPX
u5BN4bHNzNs9s7vfPd15utMK0U1do5sUpJtCbOe6CfJNravp4+N21CvCWRzFQ705100Xyik8zpl5
e2iW7gH1ItdNiHSaun+zCKO+nesmyDpN5eEs4qftqNNgfRTPkrM5100X4ik85pl5O2l29zupO093
WiHqaWrUkyjsE9qQ60HuaWQ1ffysHfWVbzJt5DrtyPUu9FN4/FN7u6new25KZa6HCKipEVDq4M7a
kOtBBmqyavr4pB31Wy/UjVxvNhp0jYg7oO6xUO3tpnoPu2nhU+haHge8nJMaD6UgDxW8leyuW3LI
3DlJqvnj5+24r6xgN0wRBetm3LuQUeGxUe3tp3oP+ynrAo+gR3lS46OkwrjrbdxVGHeu5o9ftOOe
DtaHWeMud+R7F1IqPFaqvR1V72FHlWW+B73LkxovpSAvFbIh38Nm5klazR+/bMe9oqZiw0VRyB35
3oWcCo+dam9P1XvYU2WR7yIJ4l7jp5SFcd/OdyHCuJtq/vhVO+56sD6MZ3bdnO+iC0clj6Mab1fd
QwFUFBVQ17Y8gLuokVQKk9TtIqjreB7CXVA1f/xTO+4rlrpRCRXNpVDXPb0D7h5L9WuhZg/7qirz
PQ3iXqOpFKapqiHfszDuqpo/ft2KO6946kZNVKQ78r1TUdTjqcbbV80e9tW0zHcTxL1GVDlMVLcL
o66nfRB3Xc0f/9yO+4qpbtRGRXNx1PXH74C7x1SNt6+aPeyrRXnUdeIP4E41qsphqrpdIHVN/EO4
k6jmj9+0477iqhs1UtFcJHWGAB1w97iq8fZVs4d9tSiTOuuBEO41ssphspo15Hsaxl1W88dv23Ff
sdWNWqnIduR7F7ZKa7bKyXpftX/vAfcy33UQ9xpd5TBdzRry3YRxz6r543ftuK/46kbNVDQXTZ3l
QwfcUw938nDfw75alE2duUQAd67xVQ7z1e3CqfOlCOHOSTV//Es77iu+ulE7Fc3FU+dx0QH3zMNd
erjvYV8tyqfOTSOEe42vcpivbhdQnRFHEHeu5o/ft+O+4qsbNVRhduR7F75K2sM99XDfw75qynwP
8lWu8VUO81XTkO9hvsppNX982o77iq9u1FKF2ZHvXfgqGQ937eG+h321KKc6v5QQ7jW+ymG+ul1Q
dVYrQdxNNX/8oR33FV/dqKlSc03V2bZ0eMhuzVdZePuquPt9lYqaqjOICeAua3yVg3yVtouqzlsm
hLukav7413bcK75KG1VVaq6qOp+aDrgLD3f2cOc94F7me5CvyhpfZRPGvSHfw3xVqmr++GMr7jIZ
rA+zxl3syPcufJXJw115uKu7x12U+R7kq7LGV2WQr9J2YdW5BwVx19X88ad23Cu+ShuVVWqurArV
6WFe9nDPPNyzPeBe5LsK8lVV46tShHHfzncV5qtKVPPHf27HnQbrw6xxb66tCtWFr7L0cDce7ubu
cS9qq87kKYR7ja/KIF8lasj3MF9Vspo//ks77hVfpY3qKtGOfO/CV9njq06uWP+9B9zLfA/yVVXj
q5LDuDfke5ivqqyaP/5rO+5ysD7MGvcd9dW0C19lj6+St6/SHvbVsr6aBvlqWuOrMshXqaG+mob5
appU88ePj1txr/gqbdRXaUd9Ne3CV9njq+Ttq7SHfbWsr6ZBvprW+KpUYdy38z0N89WUq/njJ+24
p4P1Yda476ivpl34Knt8lbx9lfawr5b11TTIV9MaX5VBvkoN9dU0zFfTtJo/Pm7HveKrtFFfpR31
1bQLX2WPr7LHm3gPvKmsr2ZBvprW+KrMwrhv53sW5qupqeaPn7bjrgfrw6xx31FfzbrwVenxVfb0
SL57PZLK+moW5KtZja/KMF9tqK9mYb6aUTV//Kwd9xVf3aiv0o76ataFr0qPr7KnR7LcA+5lvgf5
albjqzLMVxvqq1mYr2aqmj8+acVdrfjqRn2VdtRXsy58VXp8lT09ku9ej6SyvpoF+WpW46sqzFcb
6qs6zFczXc0fP2/HfcVXN+qrtKO+qrvwVenxVfb0SNZ7wL3Idx3kq7rGV1WYrzbUV3WYr2pRzR+/
aMd9xVc36qu0o76qO/0I1eOr0ttX5R721bK+qoN8Vdf4qgrz1Yb6qg7zVS2r+eOX7biv+OpGfZV2
1Fd1F74qPb4qvX1V7mFfLeurOshXdY2vqjBfbaiv6jBf1Vk1f/yqHfcVX92or9KO+qrpwlelx1el
t6/KPeyrZX3VBPmqqfFVFearDfVVE+arJqnmj39qx33FVzfqq7Sjvmq68FXp8VXp7atyD/tqWV81
Qb5qanxVhflqQ33VhPmq4Wr++HU77iu+ulFfpR31VdOFr0qPr0pvX5V72FfL+qoJ8lVT46sqzFcb
6qsmzFdNWs0f/9yO+4qvbtRXaUd91XThq9Ljq8rbV9Ue9tWivuo8gEO41/iqCvPV7fqqsw8O4m6q
+eM37biv+OpGfZWb66uUdOGryuOryttX1d3vq1zUV53pcTvulNT4qgryVd6urzq/5ADuxYGK+eO3
7bhXfJU36qvcXF+lpAtfVR5fVd6+quQecC/zPQ3iXuOryoRxb8j3LIy7quaP37XiniaD9WHWuIsd
+d6FryqPr3pde3gPXXtYlPlugrjX+Goa5Ku8XV91jthB3HU1f/xLO+4VX+WN+io311dJdOGryuOr
Xvce3kP3Hv4f3t5kSW6k2dJ8HfMdbNJhmcyZZJLMZM67kr4t1VfkVv0id1i0VPe7dwQAg6uZq7kq
W36rHcMlM47DDjTUPhxAseerr+/xNtY9DrwK0V73x/M9mry6C+2/P/zyfN3T7S5zX3c9X03Rw6tV
8KqY4pMXTPHJe776+uJya90HXgWTV3NSznew172cvz98fr7uJ6/mLl/NaXK+u4YnCV4V03zygmk+
OR3nO5nrPvAqZHvdlfOd7XXH8/eHX5+ve7ndZe7rruerKXl4tQpeFVN98oKpPnnPV19fTW+sexp4
FUxezY/56utb7a11T9v5+8Nvz9f95NXc5atZz1dT8vBqFbwqpvvkBdN98p6vplTMdR94Faq97o/n
e6r2uufz94ffn6873O4y93Uvk/Pdw6tV8KqY8pMXTPnJ5Tjf0Vz3gVfB5NVclPOd7HWH8/eHP56v
+8mructXc5mc7x5erYJXxayfvGDWT97z1ZQ3c90HXgW01/3xfM/RXnc+f3/48/m60+0uc193PV9N
2cOrIHhVTPvJC6b95D1fTdnk1TzwKti8+pivpmzzak7n7w9/PV/3xqtdvpr1fDVlD6+C4FUx7ycv
mPeT63G+m7yaB14Fm1ercr7bvJrr+fvD30/XHRuvdvlqhsn57uFVELwqJv5k/OffP5PhON9NXs0D
r6LNq4/5aio2r2Y6f3/46pun6954tctXs56vpuLhVRC8iuK+VOQF676f78Xk1TLwKtq8+pivpmLz
aonn7w9vnq9749UuX816vpqKh1dB8CqJ+1Lpn39fat7z1VRMXi0Dr6LNq6ic7zavlnL+/vD183Vv
vNrlqxkn57uHV0HwKon7IxfMQcl4nO8mr5aBV9HmVVTOd5tXC56/P3zzfN0br3b5atbz1VRdQ38F
r4o5KHnBHJS856upmrxaB15Fm1cf89VUbV6t2/n7w7fP173xapevZj1fTdXDqyB4VcxBybzg78ye
r6Zq8modeBVtXn3MV1O1ebXm8/eH756ve+PVLl/NPDnfPbwKgldZ3P/O//z7sDMf57vJq3XgVbR5
lZXz3ebVCufvD98/X/fGq12+mnlyvnt4FQSvirkQZVtwvh/5Kpi8WscXy9i8quSrYPNqPV80g+GH
5+veeLXLV8skXwUPr+KdV8uWxbr/87mpHPkqmLwKA6+iyatFyVfB5lVI5+8PPz5f95NXS5evlkm+
Ch5exSjWHcS604J1P853k1dh4FVke92V893mVajn7w9vn647bbe7zH3dJ/kqeHgV77xa4v36TFnw
3HA58lUweRUGXiWTV4uSr6LNq0Dn7w/vnq/7yauly1fLJF9FD69iFutexbrDgnXfz3c0eRUHXqVo
r/vj+Y42r2I8f394/3zd0+0uc1/3Sb6KHl7FItZd9NW44O/Mka+iyas48CqZvFqUfBVtXsVy/v7w
0/N1P3m1dPlqmeSr6OFVvPNqSff9+8u/F6z7cb6bvIoDr1K21105321eRTx/f/jwfN3bGwq7fLVM
8lXy8CqCWHfx933B86vlyFfJ5FUaeJVMXi1Kvko2r9J2/v7w8fm6n7xauny1TPJVcr2sBsW6i7/v
C55fLUe+Siav0sCrVO11fzzfyeZVyufvD5+erzvc7jL3dZ/kq+ThVSSx7uLve1rw9/3IV8nkVRp4
lUxeLUq+SjavEpy/P/z8fN1PXi1dvlom+Sp5eBXvvFrE86slxwXrvp/vbPIqDbxK9ptQlXyVbV4l
Pn9/+OX5urd3o3b5apnkq+zhVRK8mgWv5gV/Z458lU1e5fEVqTavKvkq27zK51tSKXx+vu6NV7t8
tUzyVfbwKglezSjWHRes+3G+m7zKA6+SzatKvso2r3I9f3/49em6c+PVLl8tk3yVPbxKglfzPecr
C57nK0e+yiav8sCrbPPqY76aN5tXmc7fH357vu6NV7t8tej5at48vEqCV8VzZWXBc2Vlz1fzZvHq
yxcf1t3m1cd8NW8mr+5C++8Pvz9f98arXb5a9Hw1bx5eJcGr4nmPsuB5j7Lnq3mr5roPvMo2r6Jy
voO97uX8/eGP5+veeLXLVwtOzncPr5Lg1Sr273VBX8XjfCdz3QdeZZtXUTnf2V53PH9/+PP5ujde
7fLVouerOXp4lQSviucOyoLnDsqer+Zo8eo+x7Jbd5tXH/PVHE1e3YX23x/+er7ujVe7fLXo+WqO
Hl4lwatwv4/j5d8L1n0/32Mx133gVbZ59TFfzbHa657P3x/+fr7ujVe7fLXw5Hx3vWRV8CqI/Tss
uD7Dx/mO5roPvMo2r7JyvpO97nD+/vDVt0/XvfFql68WnpzvHl4lwasg/r7Dgr/ve76a02au+8Cr
bPPqY76aU7TXnc/fH948X/fGq12+WvV8NScPr7LgVRDcBP98bqp7vpqTxas5DbzKJq/Wx3w1J5NX
d6H994evn6/7yau1y1ernq/m5OFVFrwKgpuAF6z7cb6Due4DrzLb666c72ivez1/f/jm6brHbbvd
de4LHycnvAdYWQArisaK//zGWuNxwrO58AOw7i/SM1b+MWHNebNXnppA+NZY+pNZa5exVj1jzdnD
rCyYFUVvxbxg6fdzPpvMmuO49NFe+seTPtvQmmMTCN8ZS59ud6H70usxa84ebGWBrSjaK/7z22vd
Y9acTWzNZVx6k1trUs56m1tzaQLhe2PpT3KtXdJa0+Ss95ArC3IVb78tC95+W9Nx1pvkmnFc+mwv
vXLW2+iasQmEH4ylL7e70H3p9bA1Fw+8soBX8QrcsuAVuHUPW3Mx4bVs49Kb9Fof09ZcbHotWxMI
PxpLf/Jr7fLWquetuXj4lQW/ivfglgXvwa173pqLya8lj0tf7aV/POuLDbAlN4Hw1lh6uN2F7ktf
Jme9B2FZIKx4FW5Z8CrcWo6z3kTYAuPSmwxbi3LW2wxboAmEd8bSnxRbu9S1lslZ76FYFhQr3oZb
FjwFUvfUNVeTYguPS4/20j+e9dXG2MJNILw3lp5ud6H70uvBa64ekH19Pfd97UWfXfAkSN2T11xN
kq1pXHsbZR+j11xtlK2pCYSfjLVvMNuFr1UPX3OtrrUXNCueBikL3opb63HemzRb67j2Ns5W5by3
cbbWJhA+PF/72Hi2C2ArTM57cq29AFrxZtyy4M24FY7z3gTaOgJttIFWiWDBBtpKTSB8NNa+AW0X
wtZJCAvRtfaCaMXbccuCt+PWI4UFk2hhJNpoE60Sw4JNtBCbQPhkrH0j2i6IrZMgFopr7QXSsrhy
yQuuXB5JLJhICyPSRhtplSgWbKSF0gTCz8baN6Ttwtg6CWMBXWt/Z9oq3tZaF7yttR5pLJhMCyPT
RptplTgWbKYFbALhF2PtG9N2gWydBLK4udYexNonsfYL/uYciSyaUIsj1EYbapVIFm2oxa0JhM/G
2jeo7ULZOgllMbvWHsXag1j7Bfv7I5VFk2pxpNpoU60Sy6JNtZibQPjVWPtGtV0wWyfBLIJr7Ums
PYm1X7C/P5JZNLEWR6yNNtYq0SzaWIvQBMJvxto3rO3C2ToJZ5Fda3/n2ireIloXvEW0HuksmVyL
I9dGm2uVeJZsrkVuAuF3Y+0b13YBLUwCWnJxbdzE2ou/9/Gfv7+HI6Elk2tp5Npoci0oES3ZXEup
CYQ/jLU/uRa6kBYmIS25uDZGsfZFrH1ZsPbHeW9yLY1cG9lee+W8t7mWahMIfz5f+7Td7kL3tZ/k
tOTi2pjE2oteu+CJTDiCWjK5lkauTSbXghLUss21RE0g/GWs/cm10AW1MAlq2cW1MYu1F712wVOZ
cCS1bHItj1ybor32j+c921zLsQmEv421T7e70H3tJ0ktu7g23rm2iicz64InM+GIatnkWh65Nplc
C0pUyzbXcmkC4avvnq/9ybXQRbUwiWrZxbVRcK14OvPl3wvW/jjvTa7lkWtTttdeOe9trmVsAuGN
sfbldhe6r72e1ZbNxbVRcG0SvTYt6LV7WFs2i2vLNnJtMrkWHsPasplcuysdAuFrY+1ProUurAU9
rC2bi2uj4Nokem1a0Gv3tLZsxVz7kWtTtdeeHte+2mufm0D4xlh7uN2F7mtfJue9i2uj4FrxhGxd
8IQslOO8R3PtR65NJtdCUc57stcemkD41lj7k2uhi2uhTM57F9dGwbXiKdm64C2vsOe1JW7m2o9c
m9Be+8fzPkZ77bkJhO+MtafbXei+9npeW6KLa5PgWvGm17rgTa+w57UlWly7T9zp197m2se8tkST
a3elQyB8b6x949ourwU9ry3RxbVJcK1422td8LZXqMd5D+baj1ybbK6tynmP9trXJhB+eL72uXFt
l9cCTM57F9cmwbXija91wRtfAY7zns21H7k221z7mNeWtNlrT00g/GisfePaLq8FPa8tycW1SXCt
eOtrXfDWV9jz2pIsri1p5Npsc+1jXluSybW70iEQ3hpr37i2y2tBz2tLcnFtElwr3vxaFzwpDnte
W1I1137k2mxzLSrnPdhrX5pAeGesfePaLq8FnJz3Lq5NgmvF21/rgre/Ah7nPZlrP3JttrkWlfOe
7bXHJhDeG2vfuLbLa0HPa0t2cW0SXCue1K8LntSHPa8t2eTaPHJttrn2Ma8t2ebavDWB8JOx9o1r
u7wW9Ly2ZBfXJsG14i2wdcFbYGHPa0s2uTaPXJttrn3Ma0u2uTbnJhA+GGvfuLbLa4En572La5Pg
WvEm2LrgTbDAx3lvcm0euTbbXMvKeW9zbYYmED4aa9+4tstrgSfnvYtrk+Ba8TbYuuBtsLDntaWY
XJtHrs021z7mtaXYXJu5CYRPxto3ru3yWtTz2lJcXJsF14oJIXXBhBDc89pSTK4tI9dmk2vxMa8t
xebakppA+NlY+5NrsctrUc9rS3FxbRZcK94KWxe8FRa347w3ubaMXJvZXnvlvLe5ttQmEH55vvZl
u92F7msfJ+e9i2uz4FrxZti64M2wGI/z3uTaMnJtMbkWH/PaUm2uLdQEwmdj7U+uxS6vRT2vLdXF
tVlwrZjSUhdMacE9ry3V5No6cm2J9to/nvfV5toam0D41Vj7dLsL3ddez2tLdXFtFlwr3hBbF7wh
Fve8tlSTa+vItcXkWkzKeW9zbS1NIPxmrP3JtdjltZgm572La7PgWvGW2LrgLbGYjvPe5No6cm3J
9tor573NtRWbQPjdWPtyuwvd136S14KLa7PgWvEGx7pgkAIeeS2YXAsj1xaTa1HJa8HmWtiaQPjD
WPuTa7HLa3GS14KLa7PgWjFJoS54myAeeS2YXAsj15Zqr/3jeQ8210JuAuFPY+3hdhe6r/0krwUX
12bBtYhi7f/5z53gkdeCybUwcm0xuRaVvBZsrgVoAuEvY+1PrsUur8VJXgsurs13rmXx7MPLvxes
/X7eo8m1MHJtQXvtH897tLkWuAmEv421p9td6L72k7wWXVxbNrH2Raz9gv39kdeiybU4cm2xuVbJ
a9HmWkxNIHz1/fO1b1zb5bU4yWvRxbUlirUnsfYL9vdHXosm1+LItcXmWiWvRZtrsTaB8Ob52tfG
tV1ei5O8Fl1cW+5cy+LZB44L9jlHXosm1+LItdXmWiWvJZtrkZpA+NpY+8a1XV6Lk7yWXFxbslj7
+z6HEy9Y+/28J5NraeTaanOtkteSzbUUm0D4xlj7xrVdXouTvJZcXFvuXMv5PiiN84K1P/JaMrmW
Rq6tNtcqeS3ZXEulCYRvjbVvXNvltTjJa8nFteXOtSxmRvGCwUV45LVkci2NXFttrlXyWrK5lrAJ
hO+MtW9c2+W1OMlr2cW15c61LMbn8ILxOXjktWxyLY9cW22uVfJatrmWtyYQvjfWvnFtl9fiJK9l
F9cWFGsPYu0X7DGPvJZNruWRa6vNtUpeyzbXcm4C4Qdj7RvXdnktTvJadnFtIbH28m/Ogj3mkdey
ybU8cm21uVbJa9nmWoYmEH401r5xbZfX4iSvZRfXFsG1Yn4OL5ifg3teWzeTa3nk2mpz7WNeWzeb
a5mbQHhrrH3j2i6vJT2vrZuLa6vgWjE/hxfMz6E9r62bxbX7XId+7U2upce8tm4m1+5Kh0B4Z6z9
ybXU5bWk57V1c3FtFVwr5ufwgvk5tB3nPZhrP3JtZXvtlfMe7bWvTSC8f772sN3uQve1j5Pz3sW1
VXAti17L//xeS/E479lc+5FrweRaesxra9zstacmEH4y1v7kWuryWtLz2hpdXFsF14q3ib/8e8Ha
7+d9tLi2xpFrIdpr/3jeR5Nrd6VDIHww1j7d7kL3tdfz2hpdXFvvXBs3Mbzo9Yd//urviW2N1Vz9
kWzBJFtKypkP9uqXJhA+Gqt/ki11iS2lyZnvItta5eonufoL+m06zn0yV39kW8j26ivnPturj00g
fDJWv9zuQvfV1zPbmlxsW0GufpGrv6Dj7qltTRbd7k+596tv0i09prY1mXS7Kx0C4Wdj9U+6pS61
JT21rclFtxXl6oNc/QU9d89tayrm6o98C9Ve/cdzP1V79XMTCL8Yqw+3u9B99cvk3HfxbSWx+lH+
5VkwSYfKce6jufoj4YJJuFSUc5/s1YcmED4bq38SLnXJLZXJue8i3Mpy9atc/bpg9fdzP2/m6o+M
C2iv/uO5n6O9+twEwq/G6tPtLnRffT27rdnFuLDJ1Ue5+gt2nHt6W7NJuXmkXLAp9zG9rdmm3Jya
QPjNWP1GuV16S3p6W7OLciGK1U9RrP6Ce6WoHue+ybl55FywObcq577Nubk2gfD789XHxrldfksw
OfddnAt3zo1RDNR5/eGfv/pwnPsm6eaRdNEm3ccEtxabdDM1gfCHsfqNdLsEl/QEtxYX6UKWq5/k
6i/ounuGW4vJumVkXbRZ9zHDrcVm3RKbQPjTWP3Gul2GS3qGW4uLdaHI1S9y9Rfs9/cUtxaTdcvI
umizLirnvs26pTSB8Jex+o11uxSXcHLuu1gXqlx9kKu/YL+Px7lvsm4ZWRdt1kXl3LdZt2ATCH8b
q99Yt8txSc9xa3WxLoBcfZKrv2DPsye5tZqsW0fWRZt1H5PcWm3WrVsTCF/98Hz1G+t2SS7pSW6t
LtYFwboxy667YLYO7VlurSbr1pF10Wbdxyy3Vpt1a24C4Y2x+o11uyyXeHLuu1gXSK6+7LoLpusQ
H+e+ybp1ZF20WZeVc99m3QpNIHxtrH5j3S7NJZ6c+y7WBZarL7vugvk6dOS5YLJuHVkXbdZV8lyw
WbdyEwjfGKvfWLfLc3mS54KLdXGTqy+77oIJO3wkumCyLoysiybrspLogs26kJpA+NZY/ZN1uUt0
eZLogot1McrVl113wYwdPjJdMFkXRtZFtldfOfdt1oXaBMJ3z1eftttd6L76k0wXXKyLknWL7LoL
puzwkeqCybowsi6ZrMtKqos26wI1gfC9sfon63KX6vIk1UUX66Jk3SK77oI5O3zkumiyLo6sS9Fe
/cdzH23WxdgEwg/G6qfbXei++pNcF12si5J1i+y6Cybt8JHrosm6OLIumazLSq6LNutiaQLhR2P1
T9blLtflSa6LLtZFybpFdt0Fs3b4yHXRZF0cWZeyvfrKuW+zLmITCG+N1S+3u9B99Se5LrlYFyXr
Ftl1F0zb4SPXJZN1aWRdMlmXlVyXbNalrQmEd8bqn6zLXa7Lk1yXXKyLknWr7LoL5u3wkeuSybo0
si5Ve/Ufz32yWZdyEwjvjdWH213ovvqTXJdcrIuSdavsugsm7vCR65LJujSyLpmsy0quSzbrEjSB
8JOx+ifrcpfr8iTXJRfromRdkKsPK1Z/P/fZZF0aWZfQXv3Hc59t1iVuAuGDsfp0uwvdV3+S67KL
dUmyLsg9DyzY8xy5LpusyyPrks26Sq7LNutyagLho7H6jXW7XJcnuS67WJck64Lc88CCPc+R67LJ
ujyyLtmsq+S6bLMu1yYQPj1ffW6s2+W6PMl12cW6JFkX5J4HFux5jlyXTdblkXXZZt3HXBc2m3WZ
mkD42Vj9xrpdrst6rgubi3VJsi7KPQ8u2PPsuS5sFuu+fPdx9W3Wfcx1YTNZd1c6BMIvxuo31u1y
XdZzXdhcrEuSdVF2XVzQdfdcF7Zqrv7IumyzLirnPtirX5pA+GysfmPdLtdlnJz7LtYlyboou+6C
+TuMx7lP5uqPrMs266Jy7rO9+tgEwq/G6jfW7XJd1nNdiC7WJcm6KLsuLui6e64L0WJdiCPrss26
j7kuRJN1d6VDIPxmrH5j3S7XZT3XhehiXZKsi7Lr4oKuu+e6EIu5+iPrss26j7kuxGqvfm4C4Xdj
9Rvrdrku8+Tcd7EuSdYl2XUXTAZgPs59NFd/ZF22WZeVc5/s1YcmEP4wVr+xbpfrMk/OfRfrkmRd
kl2XFnTdPdeFtJmrP7Iu26z7mOtCivbqcxMIfxqr31i3y3Xjpge7kFywyxJ2SbbdBaMZ9u/6+tUs
2oU00i6btPv6yx8NMHF3lzoUwl+GASfuHkrSAb0Akgt4WQIvyda7YEDD/l1fvxqYDozEy+xwQCkB
tB2oTSH8/dSBtG03oSQciJMacEEvS+gl2X4XjGnYv+vrV2PTgYF607bZDjxGvJA32wFqCuGrH587
EG9CSTqg10B2gS9L8GXZghcMa9i/6+tXM8k3x9GB6HDgsQayjb45NoXwxnAg3YSScEAPeiG74Jcl
/LJswwtGNuzf9fWrmfSby+hAsh1ISg3Y+JtLUwhfGw7km1CSDkxqwAXALAGYZSfmFZ04HTVgEnDG
0YHscECpARuBMzaF8I3hQLkJJeGAHvhCcUEwSwhm2Yl5RSfeE18oJgWXbXSg2A48Rr5QbAwuW1MI
3xoO1JtQkg7oNVBcIMwShFl2Yl7RiffUF4pJwiWPDlSHA481UGwULrkphO8MB+AmlIQDZVIDLhhm
AcNJDnJI24pOXI4aMGm4wOgA2A4UpQZsHC7QFML3hgN4E0rSgUkNuICYWTqQpAMrOvGe/kI1ibjw
6AA6HHisgWojceGmEH4wHKCbUBIO6AEwVA8Tv5zp0oEiHVjRifcEGKrJxDWNDjiY+DEChmozcU1N
IfxoOHAxce1rQA+BoVaXA1E6ANKBFZ24HjVgMnGtowMOJq5KDdhMXGtTCG+fOxAvJq59DcCkBsjl
QJIOkHRgRSeGowZMJq4jE0cHEytRMNhMXKkphHeGAxcTQ18DkzAYossBwcQpyk4cV3TiIw0Gk4lh
ZOLoYGIlDgabiSE2hfDecOBiYuhrYBIIQ3E5UKQDshPHFZ34SITBZGIYmTg6mFiJhMFmYihNIfxk
OHAxMfY1MAmFAV0OVOmA7MRxRSc+UmEwmRhGJo4OJlZiYbCZGLAphA+GAxcTY18Dk2AYN5cDIB2Q
nTjiAgeOZBhNJsaRiaODiZVoGG0mxq0phI+GAxcTU18Dk3AYs8sBlA6wdIBXOLDXAJpMjCMTRwcT
K/Ew2kyMuSmET4YDFxNTXwOTgBjB5YBkYjlq5uWHBQ4cCTGaTIwjE0cHEysRMdpMjNAUws+GAxcT
c18Dk5AY2eWAZOKUpQN5hQN7DZDJxDgycXQwsRITk83EyE0h/GI4cDFxnxPHSU5MLiaOkolTlQ78
80eN7d/19auZTEwjE0ebiaOSE5PNxJSaQvhsONCYOPY5cZzkxORi4iiZOKF0AFc4cNSAycQ0MnFk
hwNKDdhMTLUphF+fO5C2m1ASDkxyYnIxcZRMnGQnXvDqnP27vn41k4lpZOJkM3FUcmK2mZioKYTf
DAcaE8c+J46TnJhdTBwlE8sRHGnBCI79u75+NZOJeWTiFB0OPNYA20zMsSmE3w0H0k0oCQcmOTG7
mDhKJpZjONKCMRz7d339aiYT88jEyWbiqOTEbDMxl6YQ/jAcaEwc+5w4TnJidjFxlEwsR3GkBaM4
9u/6+tVMJuaRiVN2OKDUgM3EjE0h/Gk4UG5CSTig58S4uZg4SiaW4zjSgnEc+3d9/WoWE+M2MnGy
mTg+5sS4mUy8Sx0K4S/DgcbEsc+Jo54T4+Zi4iiZWI7kSAtGcuzf9fWrFdOBkYlTdThAjw5U24Hc
FMLfhgNwE0rCgTKpARcTR8nEcixHKis6cTlqAE0HRiZONhPHotQA2Q5AUwhfvX3uQGPi2OfEsUxq
wMXEUTKxHM2RyopOvOfEGDfTgZGJEzoceKyBGG0HuCmEN4YDdBNKwgE9J8boYuIkmViO50hlRSfe
c2KMFhNjHJk4OZj4MSfGaDLxLnUohK8NBy4m7nPiqOfEGF1MnCQTyxEdqazoxPWoATAdGJk4OZi4
KjWAtgO1KYRvnjuQLybuc+IIkxpwMXGSTCzHdKS6ohPDUQNsOjAycXYw8WNOjGmzHaCmEL41HLiY
uM+Jo54TY3IxcZJMLEd1pLqiE+85MSaLiTGNTJwdTPyYE2MymXiXOhTCd4YDFxP3OXHUc2JMLiZO
komr7MR1RSfec2JM1XRgZOLsYGJUagBsB0pTCN8bDlxM3OfEESc14GLiJJm4yk5cV3RiPGqATAdG
Js4OJkalBth2AJtC+MFw4GLiPieOek6M2cXESTJxlZ24rujEe06M2WTiPDJxdjDxY06M2WbivDWF
8KPhwMXEfU4c9ZwYs4uJk2RikJ0YVnTiPSfGbDJxHpk4O5j4MSfGbDNxzk0hvDUcuJi4z4kjT2rA
xcRJMrEc25RgRSfmowZMJs4jE2cHE7NSAzYTZ2gK4Z3hwMXEfU4ceVIDLiZOkonl6KYEKzrxnhNj
MZk4j0ycHUz8mBNjsZk4c1MI7w0HLibuc+Kk58RYXEycJRPL8U1pwfim/bu+fjWTicvIxNlm4vSY
E2OxmbikphB+MhxoTJz6nDjpOTEWFxNnycRyhFNaMMJp/66vX81k4jIycWaHA0oN2ExcalMIH547
ULabUBIOxEkNuJg4SyaWY5zSgjFO+3d9/WomE5eRiYvNxOkxJ8ZqM3GhphA+Gg40Jk59Tpz0nBir
i4mzZGI5yiktGOW0f9fXr2YycR2ZuESHA481UG0mrrEphE+GA+kmlIQDek6M1cXEWTKxHKqSaEUN
7DkxVpOJ68jExWbilJQasJm4lqYQfjYcaEyc+pw4pUkNuJg4SyaWg1USraiBdNSAycR1ZOKSHQ4o
NWAzccWmEH4xHCg3oSQcmOTE4GLiLJlYzlZJK2arpCMnBpOJYWTiYjNxUnJisJkYtqYQPhsONCZO
fU6cJjkxuJg4SyaWs1XSitkq6ciJwWRiGJm4VIcDjzUANhNDbgrhV8MBuAkl4cAkJwYXE2fJxHK2
SloxWyUdOTGYTAwjExebiZOSE4PNxABNIfxmONCYOPU5cZrkxOBi4iyZWM5WSStmq6QjJ0aTiWFk
4oIOBx5rAG0mBm4K4XfDAboJJeHAJCdGFxMXycRytkpaMVslHTkxmkyMIxMXBxMrOTHaTIypKYQ/
DAcuJu5z4jTJidHFxEUysZytklbMVklHTowmE+PIxMXBxEpOjDYTY20K4c/nDtSLifucOE1yYnQx
cRFMnOW903nJdaEjJ0aTiXFk4upgYiUnJpuJkZpC+Mtw4GLiPidOk5yYXExc7kxcZEZWEucVDuw1
QCYT08jE1cHESk5MNhNTbArhb8OBi4n7nDhNcmJyMXG5M/HLxuHeiV9/WODAkROTycQ0MnF1MLGS
E5PNxFSaQvjq3XMHLibuc+I0yYnJxcSlSgeSdGBFJz5yYjKZmEYmrg4mVnJispmYsCmEN4YDFxP3
OXGa5MTsYuIC0oEiHVjRiY+cmE0m5pGJq4OJlZyYbSbmrSmErw0HLibuc+I0yYnZxcQFpQMgHVjR
iY+cmE0m5pGJq4OJlZyYbSbm3BTCN4YDFxP3OXGa5MTsYuJC0gGSDqxg4iMnZpOJeWTi6mBiJSdm
m4kZmkL41nDgYuI+J06TnJhdTFxYOMCyEy9h4j0nps1kYh6ZuDqY+DEnps1mYuamEL4zHLiYuM+J
s54T0+Zi4rpJB2QnXsHEec+JabOYmLaRiavNxPkxJ6bNZOJd6lAI3xsONCbOfU6c9ZyYNhcT1ygd
kJ14BRPn7agBMB0YmbiywwGlBtB2oDaF8MNzB2C7CSXhQJzUgIuJa5IOyE68Yt5ojkcNsOnAyMRg
M3F+zIkpbrYD1BTCj4YDjYlznxNnPSem6GLimqUDshOvmDea95yYosXEFEcmhuhw4LEGosnEu9Sh
EN4aDqSbUBIO6DkxRRcTV8HEKOaNvv6wwIE9J6ZYTQdGJgabiXNSagBsB0pTCO8MBxoT5z4nzmlS
Ay4mrlU6kKQDKzpxOmqATAdGJobscECpAbYdwKYQ3hsOlJtQEg7oOTElFxNXkA4U6cCKTrznxJQs
JqY0MjHYTJwfc2JKJhPvUodC+MlwoDFx7nPirOfElFxMXFE6ANKBFZ14z4kpFdOBkYmhOhx4rIFU
bQdyUwgfDAfgJpSEA2VSAy4mriQdIOnAik5cjhpA04GRicFm4lyUGiDbAWgK4aPhQGPi3OfEuUxq
wMXEVTAxRtmJV8wbzXtOTHkzHRiZGNDhwGMN5Gg7wE0hfDIcoJtQEg7oOTFlFxPDJh2QnXjFvNG8
58SUTSbOIxODg4kfc2LKNhPn1BTCz4YDFxP3OXHWc2LKLiaGKB2QnXjFvNFcjxowmTiPTAwOJq5K
DdhMnGtTCL88dwAvJu5z4gyTGnAxMSTpgOzEcUUnhqMGTCbOIxOjg4kfc2IqNhNnagrhs+HAxcR9
Tpz1nJiKi4khSwdkJ44rOvGeE1MxmbiMTIwOJn7MianYTFxiUwi/Gg5cTNznxFnPiam4mBgkEyfZ
idOKTrznxFRMJi4jE6ODiVGpAZuJS2kK4TfDgYuJ+5w446QGXEwMkomT7MRpRSfGowZMJi4jE6OD
iVGpAZuJCzaF8LvhwMXEfU6c9ZyYqouJQTJxkp04rejEe05M1WTiOjIxOpj4MSemajNx3ZpC+MNw
4GLiPifOek5M1cXEIJk4yU6cVnTiPSemajJxHZkYHUz8mBNTtZm45qYQ/jQcuJi4z4kzT2rAxcQg
mTjJTpxWdGI+asBk4joyMTqYmJUasJm4QlMIfxkOXEzc58SZJzXgYmKQTJxlJ84rOvGRE4PJxHVk
YnQwsZITg83ElZtC+Ntw4GLiPicuk5wYXEyMkomz7MQrJr6WIycGk4lhZGK0mbgoOTHYTAypKYSv
3j93oDFx6XPiMsmJwcXEKJk4y068YuJrOXJiMJkYRiZGdjig1IDNxFCbQnjz3AHabkJJODDJicHF
xCiZOMtOvGLiazlyYjCZGEYmJpuJi5ITo83EQE0hfG040Ji49DlxmeTE6GJilEycZSdeMfG1HDkx
mkyMIxNTdDjwWANoMzHGphC+MRxIN6EkHJjkxOhiYpRMXGQnXjHxtRw5MZpMjCMTk83ERcmJ0WZi
LE0hfGs40Ji49DlxmeTE6GJilExcZCdeMfG1HDkxmkyMIxNTdjig1IDNxIhNIXxnOFBuQkk4MMmJ
ycXEKJm4yE68YuJrOXJiMpmYRiYmm4mLkhOTzcS0NYXwveFAY+LS58RlkhOTi4lRMnGRnXjFxNdy
5MRkMjGNTEzV4cBjDZDNxJSbQvjBcABuQkk4MMmJycXEKJm4yE68YuJrOXJiMpmYRiYmm4mLkhOT
zcQETSH8aDjQmLj0OXGZ5MTkYmKUTFxlJ14x8bUcOTGbTEwjExM6HHisAbaZmLgphLeGA3QTSsKB
SU7MLiYmycRVduIVE1/LkROzycQ8MjE5mFjJidlmYk5NIbwzHLiYuM+JyyQnZhcTk2TiKjvxiomv
5ciJ2WRiHpmYHEys5MRsMzHXphDeP3eALybuc+IyyYnZxcQkmbjKTrxi4ms5cmI2mZhHJmYHEz/m
xLzZTMzUFMJPhgMXE/c5cdFzYt5cTEySiavsxCsmvpY9J+bNYuKXLz864GDix5yYN5OJd6lDIXww
HLiYuM+Ji54T8+ZiYpJMDLITr5j4WvacmLdqOjAyMTuYGJUaANuB0hTCR8OBi4n7nLjgpAZcTEyS
iUF24hUTXwseNUCmAyMTs4OJUakBth3AphA+GQ5cTNznxEXPiTm6mJgkE4PsxCsmvpY9J+ZoMTHH
kYnZwcSPOTFHk4l3qUMh/Gw4cDFxnxMXPSfm6GJikkwMshOvmOxR9pyYYzEdGJmYHUz8mBNzrLYD
uSmEXwwHLibuc+LCkxpwMTFJJgbZiVdMfC181ACaDoxMzA4mZqUGyHYAmkL4bDhwMXGfExee1ICL
iUkyMcpOvGLia9lzYk6b6cDIxOxg4secmFO0HeCmEH41HLiYuM+Jq54Tc3IxMUsmRtmJV0x8rXtO
zMliYk4jE7PNxPUxJ+ZkMvEudSiE3wwHGhPXPieuek7MycXELJkYZSfGssKBowbAdGBkYmaHA0oN
oO1AbQrh96cO5G27CSXhQJzUgIuJWTIxyk6MCzpxjUcNsOnAwMR5s5m4PubEnDfbAWoK4Q/DgcbE
tc+Jq54Tc3YxMUsmRtmJkVY4sNdANpk4x9GB6HDgsQayzcQ5NoXwp+FAugkl4YCeE3N2MTFLJpYz
tnDFjK2658ScTSbOZXTAZuKalBqwmTiXphD+MhxoTFz7nLimSQ24mJglE8sZW7hixlZNRw2YTJxx
dCA7HFBqwGbijE0h/G04UG5CSTig58RcXEzMkonljC1cMWOr7jkxF5OJyzY6YDNxfcyJudhMXLam
EL766bkDjYlrnxNXPSfm4mJilkwsZ2zhihlbdc+JuZhMXPLoQHU48FgDxWbikptCeGM4ADehJBwo
kxpwMTFLJpYztnDFjK1ajhowmbjA6IDNxLUoNWAzcYGmEL42HGhMXPucuJZJDbiYmCUTyxlbuGLG
Vt1zYq4mExceHUCHA481UG0mLtwUwjeGA3QTSsIBPSfm6mHil12wdEB24hUztuqeE3M1mbim0QEH
Ez/mxFxtJq6pKYRvDQcuJu5z4qrnxFyrywHJxHLGFq6YsVXrUQMmE9c6OuBg4qrUgM3EtTaF8N1z
B+LFxH1OXGFSA+RyQDKxnLGFK2ZsVThqwGTiOjJxdDCxkhODzcSVmkL43nDgYuI+J66TnBiiywHJ
xHLGFq6YsVWPnBhMJoaRiaODiZWcGGwmhtgUwg+GAxcT9zlxneTEUFwOCCYmOWOLVszYqkdODCYT
w8jE0cHESk4MNhNDaQrhR8OBi4n7nLhOcmJAlwNVOpCkAys68ZETg8nEMDJxdDCxkhODzcSATSG8
NRy4mLjPieskJ8bN5QBIB4p0YEUnPnJiNJkYRyaODiZWcmK0mRi3phDeGQ5cTNznxHWSE2N2OYDS
AZAOrOjER06MJhPjyMTRwcRKTow2E2NuCuG94cDFxH1OXCc5MYLLAZIOkHRgRSc+cmI0mRhHJo4O
JlZyYrSZGKEphJ8MBy4m7nPiOsmJkV0OCCYmOWOLVszYqkdOTCYT48jE0cHESk5MNhMjN4XwwXDg
YuI+J4ZJTkwuJo6bdEB24hUztuDIiclkYhqZONpMDEpOTDYTU2oK4aPhQGNi6HNimOTE5GLiGKUD
shOvmLEFR05MJhPTyMSRHQ4oNWAzMdWmED49dyBtN6EkHJjkxORi4pikA7ITr5ixBUdOTCYT08jE
yWZiUHJitpmYqCmEnw0HGhNDnxPDJCdmFxPHLB2QnXjFjC04cmI2mZhHJk7R4cBjDbDNxBybQvjF
cCDdhJJwYJITs4uJo2RiOWOLVszYgiMnZpOJeWTiZDMxKDkx20zMpSmEz4YDjYmhz4lhkhOzi4mj
ZGI5Y4tWzNiCIydmk4l5ZOKUHQ4oNWAzMWNTCL8aDpSbUBIO6Dlx3DYXFEcJxXLIFq0YsgV7UPzy
3Swqfv36owk2FsNjVPzyi0wuPsQOjfCbYUMDY+jDYtDD4pdf7SLjKMlYTtqiFZO2YE+LX75bsW0Y
2ThVhw2k2FAdNuSmEX43bICb0BI2lFk1uPA4SjyW47ZoxbgtKGc1oG3DCMjJBmQoWjWQwwZoGuEP
w4aGyNDHxlBm1eBi5CgZWU76oBWTPqAc1RA324aRkhM6bFCqIUaHDdw0wp+GDXQTWsKGOqmG6ALl
JEFZjvugFeM+oB7VELNpQxxROTlQuSrVEIttQ0xNI/xl2HDBch8gQ51UQ3TRcpK0LGd+0IqZH1DP
agDbhpGXk4OXq1YN6LChNo3w93Mb8kXMfYoMMKsGFzInicxy8AetGPwBcFYD2zaM0Jwd0AxKNaTN
YQM1jfDVh+c2XNjcR8kAk2pILm5Okpvl9A9aMf0D4KiGlEwb0kjO2UHOoFRDyrYNKTaN8Maw4WLn
Pk8GnFRDcsFzkvAsR4DQihEggEc1pGrbMOJzduAzatUADhtK0whfGzZcAN2HyoCzanARdJIELeeA
0Io5IIBnNZBtw8jQ2cHQqFUDO2zAphG+MWy4KLpPloEm1ZBdFJ0kRcthILRiGAjQUQ3Zpug8UnR2
UDQp1ZAdFJ23phG+NWy4KLqPl4Em1ZBdFJ0kRcuJILRiIgjQUQ3Zpug8UnR2UDQp1ZAdFJ1z0wjf
GTZcFN1nzMCzanBRdJIULceC0IqxIMBnNdgUnUeKzg6KZq0aHBSdoWmE7w0bLorug2bgWTW4KDpJ
ipazQWjFbBDgoxqKTdF5pOjsoGhWqqE4KDpz0wg/GDZcFN2nzbhNqqG4KDpLipYDQmjFgBDcjmoo
NkWXkaKzTdG4KdVQHBRdUtMIPxo2NIrGPnLGbVINxUXRWVK0nBJCK6aE4HZWg03RZaTozA4btGpw
UHSpTSO8fW5D2W5CS9gQZ9XgougsKVqOCqEVo0IwntVgU3QZKbrYFI1RqYbqoOhCTSO8M2xoFI19
+IxxUg3VRdFZUrScF0Ir5oVgPKqh2hRdR4ou0WGDUg3VQdE1No3w3rAh3YSWsCFNqqG6KDpLipZD
Q2jF0BBMRzVUm6LrSNHFpmhMWjU4KLqWphF+MmxoFI19DI1pVg0uis6SouXkEFoxOQTTWQ02RdeR
okt22KBVg4OiKzaN8MGwodyElrBhlkWDi6KzpGg5PoRWjA/BM4sGm6JhpOhiUzRqWTQ4KBq2phE+
GjY0isY+i8ZZFg0uis6SouUMEVoxQwTPLBpsioaRokt12KBUAzgoGnLTCJ8MG+AmtIQNsywaXBSd
JUXLQSK0YpAInlk02BQNI0UXm6JRy6LBQdEATSP8bNjQKBr7LBpnWTS4KDpLipbTRGjFNBE8s2i0
KRpGii7osEGpBnRQNHDTCL8YNtBNaAkbZlk0uii6SIqWI0VoxUgRPLNotCkaR4ouDorWsmh0UDSm
phE+GzZcFN1n0TjLotFF0UVStJwrQivmiuCZRaNN0ThSdHFQtJZFo4OisTaN8OtzG+pF0X0WjbMs
Gl0UXSRFy+EitGK4CJ5ZNNoUjSNFVwdFa1k0OSgaqWmE3wwbLorus2icZdHkougiKVpOGKEVE0bw
zKLJpmgaKbo6KFrLoslB0RSbRvjdsOGi6D6LxlkWTS6KLpKi5ZgRWjFmBM8smmyKppGiq4OitSya
HBRNpWmEPwwbLorus2icZdHkougiKVrOGqEVs0bwzKLJpmgaKbo6KFrLoslB0YRNI/xp2HBRdJ9F
4yyLZhdFF0nRcuAIrRg4gmcWzTZF80jR1UHRWhbNDormrWmEvwwbLorus2icZdHsougiKVpOHaEV
U0fwzKLZpmgeKbo6KFrLotlB0ZybRvjbsOGi6D6LxlkWzS6KLpKi5egRWjF6BM8smm2K5pGiq4Oi
tSyaHRTN0DTCVx+f23BRdJ9F4yyLZhdFF0HRLOeP8Ir5I3hk0XGzKZpHiq4Oilay6Lg5KJq5aYQ3
hg0XRfdZNE2y6Li5KLpu0oYkbVjQounIouNmUnTcRoquNkWTkkXHzaboXezQCF8bNjSKpj6LpkkW
HTcXRdcobSjShrLChrMawLZhpOjKDhu0akCHDbVphG+e2wDbTWgJG+KsGlwUXZO0AaQNC1o0xbMa
2LZhpGiwKZqULDrGzWEDNY3wrWFDo2jqs2iaZNExuii6ZmkDSRtohQ1HNUSTomMcKRqiwwalGqJN
0bvYoRG+M2xIN6ElbJhk0TG6KLoKimY5mIRXDCahI4uOsdo2jBQNNkVT0qoBHDaUphG+N2xoFE19
Fk1pVg0uiq5V2iBb9IrpJJTOaiDbhpGiITts0KqBHTZg0wg/GDaUm9ASNkyy6JhcFF1B2iBb9IoR
JXRk0TGZFB3TSNFgUzQpWXRMNkXvYodG+NGwoVE09Vk0TbLomFwUXVHaIFv0ijkldGTRMRXbhpGi
oTpsUKohVYcNuWmEt4YNcBNawoYyqwYXRVeSNsgWvWJYCZWzGtC2YaRosCmailYN5LABmkZ4Z9jQ
KJr6LJrKrBpcFF0lRcuJJbxiYgkdWXTMm23DSNGADhuUasjRYQM3jfDesIFuQkvYMMmiY3ZRNEiK
lmNLeMXYEjqy6Jhtis4jRYODopUsOmYHRefUNMJPhg0XRfdZNE2y6JhdFA2SouXoEl4xuoTqWQ02
ReeRosFB0VWrBgdF59o0wofnNuBF0X0WTTCrBhdFg6RoObqEV4wuITirwaboPFI0OihayaJjcVB0
pqYRPho2XBTdZ9E0yaJjcVE0SIqWo0t4xegSOrLoWGyKLiNFo4OilSw6FgdFl9g0wifDhoui+yya
Jll0LC6KBknRclgD17jAhiOLjsWm6DJSNDooGrVqcFB0KU0j/GzYcFF0n0UTzqrBRdEgKVo++8ZQ
V9hwVoNN0WWkaHRQNGrV4KDogk0j/GLYcFF0n0XTJIuO1UXRICla3krMlBfYcGTRsdoUXUeKRgdF
K1l0rA6KrlvTCJ8NGy6K7rNommTRsbooGiRFyzszmHmFDUc1VJui60jR6KBoJYuO1UHRNTeN8Kth
w0XRfRZNPKsGF0XDnaJpExe6aYsrqoHParApuo4UjQ6KZq0aHBRdoWmE3wwbLorus2jiWTW4KBpY
2PA6zk78sMKGoxrApug6UjQ6KFrLosFB0ZWbRvjdsOGi6D6L5lkWDS6Kxk3agNIG/OfbwGcWDTZF
w0jRaFM0a1k0OCgaUtMIfxg2NIrmPovmWRYNLorGKG1gaQOvsOGsBpuiYaRoZIcNWjU4KBpq0wh/
PreBtpvQEjbMsmhwUTQmYcPr5CjxwwIbziwabIqGkaLJpmjWsmh0UDRQ0wh/GTY0iuY+i+ZZFo0u
isYsbBCTJ19+WPFH6cyi0aZoHCmaosMGpRrQQdEYm0b427Ah3YSWsGGWRaOLovFO0RTFhe6XHxbs
lPjMotGmaBwpmmyKZi2LRgdFY2ka4atPz21oFM19Fs2zLBpdFI1V2JBB2JBX9IYzi0abonGkaMoO
G7RqcFA0YtMIbwwbyk1oCRtmWTS5KBpB2CCGvL38sGDDymcWTTZF00jRZFM0a1k0OSiatqYRvjZs
aBTNfRbNsyyaXBSNKGwQMzMorpgSwGcWTTZF00jRVB02KNVADoqm3DTCN4YNcBNawoZZFk0uikZB
0VE8gvjyw4oWfWbRZFM0jRRNNkWzlkWTg6IJmkb41rChUTT3WTTPsmhyUTQKii5iAOjrDytsOKqB
bYqmkaIJHTYo1cAOiiZuGuE7wwa6CS1hwyyLZhdF0yZtqNKGFb3hzKLZpmgeKZocFK1l0eygaE5N
I3xv2HBRdJ9F8yyLZhdFU5Q2CIousALfziyabYrmkaLJQdFaFs0OiubaNMIPz23gi6L7LJpnWTS7
KJoERRcx5O3lhwVZNJ9ZNNsUzSNFs4OilSw6bQ6KZmoa4UfDhoui+yyaJ1l02lwUTVna0FXDCm44
sui0mRT98vVHGxwUrWTRabMpehc7NMJbw4aLovssmidZdNpcFE2Costrznj/YcVO6cii01ZtG0aK
ZgdFo1YN4LChNI3wzrDhoug+i2acVYOLoklQdJEb1rJiZgbjWQ1k2zBSNDsoGrVqYIcN2DTCe8OG
i6L7LJonWXSKLoomkDaAtGFFbziy6BRNik5xpGh2ULSSRadoU/QudmiEnwwbLorus2ieZNEpuiia
UNpA0gZaYcNRDbHYNowUzQ6KVrLoFKvDhtw0wgfDhoui+yyaeVYNLoomQdGFJb7xiiusfFYD2jaM
FM0OimatGshhAzSN8NGw4aLoPotmnlWDi6JJUjTLP0q8okUfWXRKm23DSNHsoGgli04pOmzgphE+
GTZcFN1l0S/b4kk1JBdFs6RolhvWBTfI7F92/24mRac0UjSbFJ02JYtOyaboXezQCD8bNpwUfWhJ
GybVkFwUzYKiq3gE8eWHuMKGsxrAtmGkaGaHDVo1oMOG2jTCL09tKNt2E1rChjirBhdFc5I2oLQB
F9gQz2pg24aBosu22TYoWXTKm8MGahrhs2FDvAktacOkGrKLovlO0a/PHt3B4fUxmW2FEUc9ZJuj
cxyNiA4jlHrIDo7OsWmEXw0j0k1oCSMmaXTKLo7mIozI4v7J/acFRhx5dMo2SecyGpFsI5JWEQ6S
zqVphN8MI/JNaEkjZhXhImmunRFdRSwYbrV/3f3b2SydcTQiO4zQKsLB0hmbRvjdMKLchJYwYpJI
p+JiaYbOCOiMgAVGHJl0KjZNl200othGKJl0Kg6aLlvTCH8YRtSb0JJGTCqiuGiasTOCOiNohRFH
RRSbp0sejagOI5SKKA6eLrlphD8NI+AmtIQRZVYRLp5mEkYUMeFq/2mBEeWsCJuoC4xGgG1E0SrC
QdQFmkb4yzACb0JLGjGrCBdRM3dGpM6IFc36SKZTtZm68GgEOoxQKqI6mLpw0wh/G0bQTWgJIybJ
dKoepn456zsjSmfEimZ9ZNOp2lRd02iEg6qVbDpVB1XX1DTCVz8/N+Ki6tpXxCSbTrW6jIidEdAZ
saJZ17MibK6udTTCwdVVqwgHV9faNMKb50bEi6trXxEwqwhyGZE6I6gzYkWzhrMibLKuI1lHB1lr
+TQ4yLpS0whfG0ZcZA19RczyaYguIyRZl9g16yVkfSbUYJM1jGQdHWStJdTgIGuITSN8YxhxkTX0
FTFLqKG4jCidEV2zjiua9ZlRg03WMJJ1dJC1llGDg6yhNI3wrWHERdbYV8QsowZ0GVE7I7pmHVc0
6zOlBpusYSTr6CBrLaUGB1kDNo3wnWHERdbYV8QspcbNZQR0RnTNOq5o1mdOjTZZ40jW0UHWWk6N
DrLGrWmE7w0jLrKmviJmOTVmlxHYGdE167iiWZ9JNdpkjSNZRwdZa0k1Osgac9MIPxhGXGRNfUXM
kmoElxEdWaeuWacVzfrMqtEmaxzJOjrIWsuq0UHWCE0j/GgYcZE19xUxy6qRXUZ0ZJ26Zp1WNOsz
rSabrHEk6+ggay2tJgdZIzeN8NYw4iLrPq2Os7SaXGQdO7JOXbNeMPpq/7r7t7PJmkayjjZZRy2v
JgdZU2oa4Z1hRCPr2OfVcZZXk4usY0fWqWvWC4Zf7V93/3Y2WdNI1pEdRmgV4SBrqk0jvH9uRNpu
QksYMUusyUXWsSPr1DXrBeOv9q+7fzubrGkk62STddQya3aQNVHTCD8ZRjSyjn1mHWeZNbvIOnZk
nbtmnbcVRhwVwTZZ80jWKTqMUCqCHWTNsWmED4YR6Sa0hBGzzJpdZB07ss5ds84LmnU8M2u2yZpH
sk42WUcts2YHWXNpGuGjYUQj69hn1nGWWbOLrGNH1rlr1nlFsz4za7bJmkeyTtlhhFYRDrJmbBrh
k2FEuQktYcQks86bi6xjR9a5a9Z5RbM+Muu8mWSdt5Gsk03WUcms82aT9S52aISfDSMaWcc+s46T
zDpvLrKOHVnnrlnnFc36yKzzVmwjRrJO1WEEKUZUhxG5aYRfDCPgJrSEEWVWES6yjh1Zl65ZlxXN
upwVgbYRI1knm6xj0SqCHEZA0wifDSMaWcc+s45lVhEuso4dWZeuWZcVzfrIrHPcbCNGsk7oMEKp
iBgdRnDTCL8aRtBNaAkjJpl1ji6yTh1Zl65ZlxXN+sisczTJOseRrJODrJXMOkebrHexQyP8Zhhx
kXWfWcdJZp2ji6xTR9ala9ZlRbOuZ0WAbcRI1slB1lWrCHQYUZtG+P25Efki6z6zjjCrCBdZp46s
S9esy4pmDWdFsG3ESNbZQdZKZp3T5jCCmkb4wzDiIus+s46TzDonF1mnjqxr16zrimZ9ZNY5mWSd
00jW2UHWSmadk03Wu9ihEf40jLjIus+s4ySzzslF1qkj69o167qiWR+ZdU7VNmIk6+wga9QqAhxG
lKYR/jKMuMi6z6wjzirCRdapI+vaNeu6olnjWRFkGzGSdXaQNWoVwQ4jsGmEvw0jLrLuM+s4yaxz
dpF16si6ds26rmjWR2ads03WeSTr7CBrJbPO2UHWeWsa4atfnhtxkXWfWcdJZp2zi6xTR9a1a9Z1
RbM+MuucbbLOI1lnB1krmXXODrLOuWmEN4YRF1n3mXXkWUW4yDp1ZA1ds4YVzZrPirDJOo9knR1k
zVpFOMg6Q9MIXxtGXGTdZ9aRZxXhIuvUkTV0zRpWNOsjs87FJus8knV2kLWSWefiIOvMTSN8Yxhx
kXWfWadJZp2Li6xzR9bdw4wvP/3zjUhHZp2LTdZlJOtsk3VSMutcHGRdUtMI3xpGNLJOfWadJpl1
Li6yzh1ZQ9esFwzJ2r/u/u1ssi4jWWd2GKFVhIOsS20a4bvnRpTtJrSEEXFWES6yzh1ZQ9esYUGz
TvGsCJusy0jWxSbrpGTWuTrIulDTCN8bRjSyTn1mnSaZda4uss4dWWPXrHFbYcRREdUm6zqSdYkO
I5SKqA6yrrFphB8MI9JNaAkjJpl1ri6yzh1ZY9esF4zY3b/u/u1ssq4jWRebrFPSKsJB1rU0jfCj
YUQj69Rn1inNKsJF1rkja+yaNa5o1umsCJus60jWJTuM0CrCQdYVm0Z4axhRbkJLGDHLrMFF1rkj
a+yaNa5o1mdmDTZZw0jWxSbrpGXW4CBr2JpGeGcY0cg69Zl1mmXW4CLr3JE1ds0aVzTrM7MGm6xh
JOtSHUYoFQEOsobcNMJ7wwi4CS1hxCyzBhdZ546sqWvWtKJZn5k12GQNI1kXm6yTllmDg6wBmkb4
yTCikXXqM+s0y6zBRda5I2vqmjWtaNZnZo02WcNI1gUdRigVgQ6yBm4a4YNhBN2EljBillmji6xL
R9bUNWta0azPzBptssaRrIuDrLXMGh1kjalphI+GERdZ95l1mmXW6CLr0pE1dc2aVjTrM7NGm6xx
JOviIGsts0YHWWNtGuHTcyPqRdZ9Zp1mmTW6yLp0ZE1ds6YVzfrMrNEmaxzJujrIWsusyUHWSE0j
/GwYcZF1n1mnWWZNLrIuHVlz16x5RbM+M2uyyZpGsq4OstYya3KQNcWmEX4xjLjIus+s0yyzJhdZ
lztZQ83xPgr85acVt1ymM7Mmm6xpJOvqIGstsyYHWVNpGuGzYcRF1n1mnWaZNT2Q9Sj/emDjR/Xx
I3r46PUx/fGj8vgRPnz0ei1r/Cg/fgSPH/HDR/T47enx29Pjt+fHb8+P354fv33cNuWzrHwGymeP
RxBjUj6rymePBxFTVD4rymfKcWTlOLJyHFk5jqwcR1GOoyjHUZTjqMpxVOU4qnIcoBwHKMcBynGA
chyoHAcqx4HKcZByHKQcBynHwcpxsHIcrBwHPx5H2pLyWVU+ezyOFKPyWVE+ezyOlDbls6x8Bspn
ynFk5TiychxZOY6iHEdRjqMox1GV46jKcVTlOKpyHKAcByjHAcpxoHIcqBwHKsdBynGQchykHAcp
x8HKcbByHPx4HHmLymdF+ezxOHLclM+y8hkonz0eR05J+awqnynHkZXjyMpxZOU4inIcRTmOohxH
UY5DaeBZ6eBZaeFZ6eFZaeJZ6eJZaeNZ6eNZaeRZ6eRZaeVZ6eVZaeZZ6eZZaedZ6edF6edF6edF
6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF
6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edF6edV6edV6edV6edV6edV6edV6edV
6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV6edV
6edV6edV6edV6edV6edV6edV6edV6eeg9HNQ+jko/RyUfg5KPweln4PSz0Hp56D0c1D6OSj9HJR+
Dko/B6Wfg9LPQennoPRzUPo5KP0cNCTXmFyDcqWfg9LPQennoPRzUPo5KP0clH4OSj8HpZ+D0s+B
tasLyuUFpZ+j0s9R6eeo9HNU+jkq/RyVfo5KP0eln2PWLpMox6H0c1T6OSr9HJV+jko/R6Wfo9LP
UennqPRzBO16j3IcSj9HpZ+j0s9R6eeo9HNU+jkq/RyVfo5KP0fWLlwpV66Ufk5KPyeln5PSz0np
56T0c1L6OSn9nJR+Tko/J6Wfk9LPSennpPRzUvo5Kf2clH5OSj8npZ+T0s9J6eek9HNS+jkp/ZyU
fk5KPyeln5PSz0np56T0c1L6OSn9nJR+zko/Z6Wfs9LPWennrPRzVvo5K/2clX7OSj9npZ+z0s9Z
6ees9HNW+jkr/ZyVfs5KP2eln7PSz1np56z0c1b6OSv9nJV+zko/Z6Wfs9LPWennrPRz1i62a1fb
tcvt+vV27YK7esVdveSuXXPftIvum3bVfdMuu2/adfdNu/C+aVfet6xGCNoRaRffN+3q+6Zdft+0
6++bdgF+067Ab9ol+E27Br9pF+E3UFMR7Yi06/CbdiF+067Eb9ql+E27Fr9pF+M37Wr8pl2O37Tr
8RurQY+W9Gxa1LNpWY/S9GNUuv7LZ0X7ELWcadM+zNqHoH2oHVHWjihrR5S1IyraERXtiIp2RFU7
oqodUdWOqGpHBNoRgXZEoB0RakeE2hGhdkSkHRFpR0TaEZF2RKwdEWtHxFrEuGkZ46aFjMqu4Hi1
r/qiWfW1p+pLONVXQqovKFRfl6e+uk19jZj6Siv19Urqq37U186or0BRX8ehvhpCfU2BOjJfHd+u
jhJXx1qrI5bVcb/q6Fl1DKo6klMdD6mOKlTH5qkj3NRxYupoK3XMkjryRx0/o45CUcdyqCMi1HEF
6qPz6mPc6iPF6uOt6qOW6mN/6iNo6uNQ6qM56mMi6iML6u3z6q3c6m3F6i2u6u2W6q1/6m1o6i1R
6u05bz//P7//t3//6t//+3/c71+67k76+h//8z//9b//1z/+6z/+CbconfeK2c+c0PDMieO2bm2W
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
tc0MwhWtqNAIV8hs4/AT5Ap7VRgrXCF7UYFT27JQ26rcUJ2v2B4DlExRYWFXrNU2g9W2la2ocAhX
mGzj8DPkiqy2bb23bTt724rj1LaU5YFcxQ/A5qs9WC027m0rDqptxddqmzmEKxpRwWG1HYxFG4df
AFfw6aowVriis7etOE5ty+psNFkejsbNHmo77m0rLmFXrNU2R6jtxt624grhCpFtHH6FXLGo7Xpv
26peVODUtixPRxO2dIXY45U0q1JUGNgVa7XNEWpbtaLCIlyhs43D3aeAKxa1Xe9tW92LCpzaluX5
aKI6IE3ugUWwcW9biQl2xVptc4TabuxtK8EQrnDZxuEzyBWL2q73tm1nb1sJnNqWhdpWUpbHaMo9
DiGycW9bCVhti7Xa5gi13djbVgKhtgXPNg73IFcsarve27advW0lcGpbutIVRlau2GMFZVJUwGpb
rNU2R6ht04oKhNoWKts4fA65YlHb9d62Nb2owKltNZWuqOYKafcYoEyKClhti7Xa5gi13djbVhKh
toXNNg5fQK5Y1Ha9t207e9tK4tS2YqUrXDVAuR02VG3c21YSVttyrbY5Qm039raVRKhtybKNw5eQ
Kxa1Xe9t287etpI4ta145YpS4qk9kCE27m0rCattuVbbHKG2bSsqEGpbymzj8BXkikVt13vb1vWi
YqO21/a59Ru6mw99ZGw/FK0PdetDt/0wgMO2H6rWh7bxoU8QbT+UrQ8bTxRoWdsPRetD3fqw9USi
9USi9USi9USy9USy9USy9USq9USq9USq9USq9US69US69US69USm9USm9USm9US29US29US29US2
9USu9USu9URu+0RimljrQ9n60DQ+ZFPrQ9H6ULc+dI0POW99qFoftp5ItJ5ItJ5ItJ5Itp5Itp5I
tp5Itp5ItZ5ItZ5ItZ5It55It55It57ItJ7ItJ7ItJ7ItJ7Itp7Itp7Itp7ItZ7ItZ7INZ6ITVPr
Q9H6ULc+bDxReA9w+6Fqfdh4ooB43n4oWx+2nki0nki0nki0nki0nki2nki2nki2nki1nki1nki1
nki3nki3nki3nki3nsi0nsi0nsi0nsi2nsi2nsi2nsi1nsi1nsi1nqixZhC8sWYQvLFmELyxZhC8
sWYQvLFmELyxZhC8sWYQvLFmELyxZpg/bD2RaD2RaD2RaD2RbD2RbD2RbD2Raj2Raj2Raj2Raj2R
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
KOOYKMKYKFN2JYyJMo6JIoyJMo6JIoyJMo6JIoyJMo6JIoyJUqaUQaiBSjmDUIM4JoowJso4Joow
Jso4JoowJso4JoowJso4JoowJso4JoowJso4JoowJso4JoowJso4JoowJso4JoowJkqb0hahBnFM
FGFMlHFMFGFMlCljEsZEmVImYUyUKWcSxkSVkiZhTFQpaxLGRJXSJmFMVClvEsZElRInYUxUOXPi
a6BS6iSMiSqOiSKMiSqOiSKMiSqOiSKMiSqOiSKMiSqOiSKMiSqOiSKMiSqOiSKMiSqOiSKMiSqO
iSKMiUql5E2oQRwTRRgTVRwTRRgTVRwTRRgTVRwTRRgTVRwTRRgTVRwTRRgTVRwTZRgTVRwTZRgT
VRwTZRgTVRwTZRgTlU35o1CDOCbKMCaqOCbKMCaqOCbKMCaqOCbKMCaqOCbKMCbqOCbKMCbqOCbK
MCbqOCbKMCbqOCbKMCbqOCbKMCZqllJYKlzEGoQxUccxUYYxUccxUYYxUccxUYYxUccxUYYxUccx
UYYxUccxUYYxUccxUYYxUccxUYYxUccxUYYxUcuURQs1iGOiDGOijmOiDGOijmOiDGOijmOiDGOi
jmOiDGOijmOiDGOijmOiDGOijmOiDGOijmOiDGOijmOiDGOitimRF2oQx0QZxkQdx0QZxkQdx0QZ
xkQdx0QZxkQdx0QZxkQTx0QZxkQTx0QZxkQTx0QZxkQTx0QZxkQTx0QZxkTDUi7RhotYgzAmmjgm
yjAmmjgmyjAmmjgmyjAmmjgmyjAmmjgmyjAmmjgmyjAmmjgmyjAmmjgmyjAmmjgmyjAmGpnSmaEG
iv23//bZfPm/73zE7xxiat1efXrn8PiHJ3fePr/54/rt1X+7c+eL/3v92zufMb/zm39n79M7yw7G
/I/f3Vy/uP7t+s2b1zdvPr3zEbvzkfSZ93e/HT8T8bPPX//j5avnb69f3Pm3/5g/vXn9+u2dj6Zw
Cy/+2d/BVze9+u36zpc3/hAtn5P3/6zmf7v/9vomlNf90lzG/D/zMP7R3Mc+0v6mh69f/3Xn79fP
X1zffDI/z6u3z1++qk3eix/6vYQ/j18O3/HP+/eXdx69fuGr6fcx2P/wQ8sn7H/+v//zMF/7PSz/
sT/OzP8v9/+sjv+s48cq/bP4H37H4/jPJn7sX0FfNi9amxSf3Ln37ubm+tXbP//j3pd3f3x1c/38
t78//7c/r/PuxWfXv7++uS63L+6/mlvrzfVvvr2qr4TNjMPnr9/Nt9//x1+zoUfPX/3r6eu//vWF
v/eTO08ffxf+35XvOQNfZfivcvxXBf6rEv9Vhf+qxn/V4L9q8V91Ay4YcdeAv9iAw9iAx9iAy9iA
z9iA09iA19iA29iA3/iA3/hInA34jQ/4jQ/4jQ/4jQ/4jQ/4jQ/4jQ/4TQz4TQz4TYwMkAN+EwN+
EwN+EwN+EwN+EwN+EwN+kwN+kwN+kwN+kyMz24Df5IDf5IDf5IDf5IDf5IDf1IDf1IDf1IDf1IDf
1MiSZMBvasBvasBvasBvasBvesBvesBvesBvesBvesBvemQtOeA3PeA3PeA3PeA3M+A3M+A3M+A3
M+A3M+A3M+A3MyICBvxmBvxmBvxmB/xmB/xmB/xmB/xmB/xmB/xmB/xmR9TbgN/sgN/cgN/cgN/c
gN/cgN/cgN/cgN/cgN/cgN/ciOwe0t0jwnsaUd7TiPSeRrT3NCK+pxH1PY3I72lEf08jAnwa8eBY
6mTEg0PJk6HsyVD6ZCh/MpRAGcqgDKVQRnIobCSJwvhQ9mvEgyN5FDaSSGEjmRQ2kkphI7kUNpJM
YSPZFDaSTmEj+RQmhhKYIx4cSamwkZwKG0mqsJGsChtJq7CRvAobSaywkcwKG0mtMDmUgx7x4Eh2
hY2kV9hIfoWNJFjYSIaFjaRY2EiOhY0kWdhIloWpoW2EEQ+OJFrYSKaFjaRa2EiuhY0kW9hItoWN
pFvYSL6FjSRcmB7aCRrx4EjOhY0kXdhI1oWNpF3YSN6FjSRe2EjmhY2kXthI7oWZoc28EQ+OpF/Y
SP6FjSRg2EgGho2kYNhIDoaNJGHYSBaGjaRhmB3ajx3x4Egmho2kYthILoaNJGPYSDaGjaRj2Eg+
ho0kZNhIRoa5oS31oT31kU31kZwMH8nJ8JGcDB/JyfCRnAwfycnwkZwMH8nJ8JGcDGdDr0WMeHAk
J8NHcjJ8JCfDR3IyfCQnw0dyMnwkJ8OH3msZerFl7M2WEQ8Ovdsy9HLL0NstQ6+3DL3fMvSCy0hO
ho/kZPhIToaLoZeTRjw4kpPhIzkZPpKT4SM5GT6Sk+EjORk+kpPhIzkZPpKT4XLo/bIRD47kZPhI
ToaP5GT4SE6Gj+Rk+EhOho/kZPhIToaP5GS4GnpFcMSDIzkZPpKT4SM5GT6Sk+EjORk+kpPhIzkZ
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
lYrbZ6pssX2mcZNHYROpe4Out595v/MY2Xke5J0nj8YmmmFsYtvtMI2umEOn+YPnI6xaBoiKmRSW
vvwMLaTKpFcXmtbtIheLxH+ZG6MyvAqpo3wTv/dw5E08eZpdhW4k8VZuGTMkybsK32dVbn4M+WD6
6jduCbvFlnDjRsVcKppsaLVWbu5SMWbBPja8YPu9224Xoa+vg0NrRoc2eJ9liB2WvHLq1k0w3rl5
jvd7o+O9t+tUxWC80xfqdz/eq0LO3IbHtVigNNA0Xy6Skqp5DjN93R+eoqIpMuw7HFtkqLokZp3l
I5O0BEQldYZ8q+BNlsnmRrE9WN31olXrOg/3uxjtd3jFK5UemW3zEUteqSae9sfGk2++G0/+xmMw
ntQSFj11hn2HF70q0otWbfOLLHqt5q9D6AmR8CQVTdHqwOHIohX76kxSOTJJy1j0SvakMMLeqIFR
rA+Ou5ngFha4Emnd5FFXIvnAzQS73pmi1dB0dq5Ech0e2mJ0aIMFEJPn6UWrtvlw0YPbl6LVwcOR
RSuGys+GfD5yMTLl049WLzgvDnZquUWruXNqilb0UFNwztJZuN7ffMrKI1JW3oBx7zscWbRiV7PT
N/IFKD1kFVW0arONfLtIz1sFp526Pf9itZyi1dAIdBa5DhaX/UknF630wBeq9EhZcM51Vhet7j8c
V7TSva9T/QXW8JTrIRTvgX8cvoMZ7NedgPFS97g3IRiv728PxlswjLdL47VdQO/88yfe3zyOt1Ih
HK/dERzvXGfGcbx5qIfl7eB4Yzuy8zjevMXxFtXMg0YNjtffcjc4Xr98Ghyvz54tjtdfoddcTbJd
zc2kzxRTTG9RY3q1UVGY3m04vQyx3QlOb91uh9VbjDJ6G4cRjF7+aCqrt9ie0VsMc3rzLqeXvtLj
R5VqEK/ucXp1je+t3zY9Tq+p8b3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g
9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILT
C04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04v
OL3g9ILTC04vOL3g9ILTC04vOL3g9ILTC04vOL1L5PSaKac3n8pnalZYTeL0kjImH3XnOL3aiIS+
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
LmOOnfgugwvJ2OTqQtu6W+Ri0biBMarCq5A6yjfxn4q8iWdPs6uwGEm8RbaEGSokeRfh+6wimxvD
5uA8bglTC4ss4caNjrpULIZWK7nuXSrGLNjHhhdsv3fb7iKFCQ6tsaNDG77PKnT6ymlat+F4p+Y5
3j8dG+9Fb9exeiTeyyXEu9Vy5i48ruUCpYGm+WqRlGTnWcw+vUdMUdkUGT4TXWSwXRqzLYdpzL6f
S5ikUmrsNnyTZedHsTlY3/2iVeM6vOI7wdU9OLzirV4gMpvmI5a81U087X08Np7KrBdPbiSelrHo
S7lQsOFFb8sFilZN8wst+nLgOqSMWPS2bIpW9z4eW7Qqe1cibuRKpFzGoneyJ4Ux9naeHtseHHkz
QS0sciXSuDFRVyLl0M1EqXasaOUCVyJl+GbClqNDGy6AlGaBolXTfETRozRN0Wrf47FFK9e7GKlG
LkamjPrx6oUdnE+z9KJV/5zaolVZhecsnYfr/c2nLBeRssoGjrv/8diiVdW7TBn7AtSpuKJVm23q
bxddHp526vbci04tqWg1MAKdRe7CxWWXpxethr5QdRGFZpfXRasDj0cWrXpfp5bZyCblhnC8B/5x
+A5msF93AshL3ePeBIG8rg/krRjI2yXyZl1I7/zzJ2VWDCB5qxDw1uwIkneuM2NIXjUlc4/1sLgd
JG9sR3YayTt90Iiu9WYeNGqQvP6Wu0Hy+uXTInldNkXyWltzNSn1ZDU3k+xyiuqtalRvmVVRqN5t
WL0Msd0pVm/ddofXW41yehunYU6vfDSV11ttz+mthlm9WZfVazOh7eoaxqu6rF66IeUFV7+dd1m9
Nq8RvmD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9Y
vWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1
gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtULVi9YvWD1gtUL
Vi9YvWD1gtULVi9YvUtk9eZTVm/WSGiqTLHKahKrl9Qx+ag7x+otlcjouyWwekslTKAqjKVy6aze
tvUYVm92x1i9pVKRrN4qLAxfzQnDzzXPLUWAO13D6r3v8TjsCXua1S1WIwSEyiwjdARRUIUV4Csz
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
zlwHxzCfE8RuDzYLwT/cSMfX9Mkg/KN1XYTnvhztd1hjPDfp66VpvQwHEzXPwbT3U5HBlHfJErke
UQbP3RKCSYuCd16Fx9Wl64PXreuFlrtW88tdRyz33NVK4/d+KlZpXPeUxvUICkEvY71rJ6ceXu96
fr03B5sY+Ie0sAD8o3VTRMA/qDcDKuw63yH4x9BszsA/vGcbzqRudGTL4MrRRTr8o20+Alagiwb+
se9TkfAP33w34o0difgqBP+QlDjYqbsJ/5g7A5rif2oJICYLT1OVLt1vBi5JTESOIl+s47//U5E6
/qZ3SVLkwxNmlpGifGfYdxizYvL03blp3SyyixT5wAxFkBZMXu/zB2L3efLUmaERXIUJpxszn8gL
gUSYMpUA0hwYvtMwZfoO37ReRYxoWe/LB6P35aIHr7Dl8JAWWTQBhFbeYNe2J4B4z+wozFEpsvQ0
0rQewVEpsjpz3BebOWzZHcRy5Pqz0CECSOfUiABSphNASiUEkCIE28h2hgDSP/sOAcSGOqVuiwAy
7nvnCSBNLYSS5HAtpCWAFHlLADFFSwAx1ZQAot2UAFI2BJDSJBNA7BwBxKURQMh/nwLy10oAsV0C
iK6E9KHLHgEkq193PQKIqgkgrkMA8RMHAggIICCAgAACAggIICCAgAACAggIICCAgAACAggIICCA
gAACAggIICCAgAACAggIICCAgAACAggIICCAgAACAggIICCAgAACAggIICCAgAACAggIICCAgAAC
AggIICCAgAACAggIICCAgAACAggIICCAgAACAggIICCAgAACAggIICCAgAACAggIICCAgAACAggI
ICCAgAACAggIICCAgAACAggIICCAgAACAggIICCAgACyRAKImxJA7FT1spyqXjpWPjVL0EwujWi+
FmFF2QWIBk3rNoIAYu8cAaQ0kQSQogyKIBd2TgS53zy3FKGQXjTQhgdixZzJ06xorhsTza2WEDpO
sAo2jFUo5gWxm4PVQgSQcqTj9pjJJi5AAGlc5+F+m9F+hzXGrUpfL03rJhxM1DwH04OxweR6eAk3
ogxui2UEkyh42zBZxRbp+uBN6wstd1fNL3cbsdxtUSuNfyJaadz1lMarER6CXcZ6rwTnVIbXu51f
783BKo4AQi0sQgBp3ORRBJBSDaiw22qnCCADs9khgJRhtkon+LunbIIrp8wXIIA0zUfACsq8IYA8
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
8xDuWSG1+rYlPjCPVuim3s+9WKiQQnfjqE0HD208ue6H59DGwAQUQ4Lf3XbCMJRCLzCLdetFeBYL
Xc/i/uhZ7MmluxFiUWFDSt+dUyOlb52u9O20KH2XIVHtfGeUvvtn31H6dqFO6dtS+h73vfNK365V
+jYj1zyt0rfRrdJ3UUwlvXUj6e1ssqR3Pifpbe6MpDf1qy/rvWRJb+V6kt5KpLtV1ZP0zmtJ76wn
6a1rSe+sJ+mtIOkNSW9IekPSG5LekPSGpDckvSHpDUlvSHpD0huS3pD0hqQ3JL0h6Q1Jb0h6Q9Ib
kt6Q9IakNyS9IekNSW9IekPSG5LekPSGpDckvSHpDUlvSHpD0huS3pD0hqQ3JL0h6Q1Jb0h6Q9Ib
kt6Q9IakNyS9IekNSW9IekPSG5LekPSGpDckvSHpDUlvSHpD0huS3pD0hqQ3JL0h6Q1Jb0h6Q9Ib
kt6Q9IakNyS9IekNSW9IekPSG5LekPSGpDckvZcn6a2zVtJbuam8ZTWVt8xY4rRcgi6zsyLu6sLS
sWW6pHfTehWW9Fbuzkl6Oxsp6W2zoGhyMS+a3G+eW1IR6rhlLel9MFbSmzzNquNWI+q4Nl9C6FRa
zlwHx9Dmc2PYHGziJL2phUUkvRs3RZSkNymoD7reGUnvgdnsSHpbG47OcnRky+CKtkW6GHTTuguH
OzXPYtD3xYpBV7oT7jYbUbC3VZykd1XsnrZEB5ZZtKQ39X7+xSog6d06UjGS3mU2JundtpMHZ7FU
ybPYth7BIaDmeRbvj5xF33hvFovhWSxNSNK7c2ok6W2SJb3JO6tnVwH1bFXtiKT33NnPSnrrLCTp
nd2OpPc2vndc0ru95qEddPiap5X0tqqV9C71VNLb1JLeNnPJkt56TtKb9bbvjKQ39a0v672gpPdt
y3kXXTlv5Wo5b9uV81ZV/XrZk/POINsN2W7IdkO2G7LdkO2GbDdkuyHbDdluyHZDthuy3ZDthmw3
ZLsh2w3Zbsh2Q7Ybst2Q7YZsN2S7IdsN2W7IdkO2G7LdkO2GbDdkuyHbDdluyHZDthuy3ZDthmw3
ZLsh2w3Zbsh2Q7Ybst2Q7YZsN2S7IdsN2W7IdkO2G7LdkO2GbDdkuyHbDdluyHZDthuy3ZDthmw3
ZLsh2w3Zbsh2Q7Ybst2Q7YZsN2S7IdsN2W7IdkO2G7LdkO2GbDdku5co251PZbuLVsJSK9YuLe6+
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
uvfQvYfuPXTvoXsP3Xvo3kP3Hrr30L2H7j1076F7D9176N5D9x6699C9h+49dO+hew/de+jeQ/ce
uvfQvYfuPXTvoXsP3Xvo3kP3Hrr30L2H7j1076F7D9176N5D9x6699C9h+49dO+hew/de+jeL0/3
3mRT3Xs9la2sSK+0yJYgk12K0HERlh8vFpAfb1rPI3Tv9Z3TvS/zSN17H9oh3WvSau7pXveb55ZM
WOq2aBTWPxMrdVv2hKLLEanbolhG6FRy5jYcOkU3dFQeEzt18+VCU1QNTFGEGjH1lDu4uvfe7dW8
9a5ZX7OT5OzIJIXhBJ2Balujg21qcvD3lDbL1gZmmCZ2/8E9B8+fYS3eemqLPCOJ4q7TcFawWbp4
ftN6BJTAZrXk/b33RkreO9udjcoMz4ZdBpTAd4Z9h6EEtgclUCpiYJvmi0WWTGXml4yNoBJYXXdw
dV9gyeS7Zn3NTFKVqZFJCi9+O8cloNb4YLdzPI+hHne4BDbMJbAufYqbcysjwATWNROzP3ZifPO9
iRnZcMo2M+xbOzWybgez22AvZ/Z9P0N7N588N52iYUzBwY3NA184PjlLCezcyEj1uk5S/Gee9O1z
/8Mkg1IlZzbvc34NlREkg1LVae5AZJpjT7MTpdzIRC0BpkSdYd/TPHR+ugDXSeh7YAjMQHB05mAO
IuJ4aOYWa5Hv2g5m0fbOhrNkNpdblBuY4XIJY5wLYqF04UAuky/c29arBXYSf/D8GLmIhEUd5evj
g/fGXR+zp9lVoEf4Nk4tYYa03Py4cKpxKv36uG1+kVsYf/DAFEXcwjjVXB/fF3t9zL46kzSyp7jw
ZUtnoNrW+GB7F6+PW6dheoqz6btI03rE/Yqz9cZxf+zGoXsbhxlBqblqCUvGCK6sysLjWi1w8dQ0
rxZZMqacXzJVxC0M9VQuwx6IvgwzXbJaVYzcxFThxd8ZqLY1PtjsHLdrqMed6+MqDFqszAJT3Jxb
xI1LZZqJeTB6YorejYsd2XCqcvvrY1q3g9ltsJc7cn3c73rn+rgKX1ZUZXpmswPbTlVFTFVZp7lP
xKY529t0yuE7zCJbQtGVOsO+Vfz1cZEN3VF15qC/WNey4etjm21/fdz0Lg/mls6VZXPw3AwXmV7G
GDvxHSy1FFm/1JJFRHLT/CKlFn/wwCCFMxb3lDu4+lAgY6lds75mF4IrRhZCsNTSHai2NT7Ypc7w
CeOOnVSLXX01Tqvw1Lr0W5+6dZVFzIerb1gejr1hcb0blkoPz4YK3bD4bL1x5sk9krRXVtf8hK0f
37Wy6s/tzNb6yfXJ5q49K/fI4JndU2/cePCOpFBqgb23aT5c8OD2Ze89FL33Vro3dnZk7JZR8qis
nHsRHlqzwM1e07xdJN1Udj7dqDJikkxzs/dI9M1e1Sm/+1U7FuAumG5Un9TMrfHBVfKV69rIlevs
Zjjc49nrIp+GwvNbJc9ve2K5ipiVqpmVRyNnhZrvzooauRrK28xwZOPRzfXT61vrn5sMd2Hou9p4
pCx3gT3q4IDm+QIDqgauQ/JwgYOdyeh+Mnp0leqNrhkZ3eJOJPW/7SR19saN2/BA9r+G1TEDWTcf
kS/y+stTvfpYYOzMdOxMb+zKkbFzdz2pc2fYd/hCI+9/l2Nihlaa11l6UqeD5wNcR6SPvP5WyKwe
DkxSsWvW1+wk5SMBroO3DN2Balvjg3V6OWLk67rZbwCGe9xJ6mFGfNFnxEfNb3NiRXhWarS7n5Uj
0bOS95bOSPG70DYqqWt9+0ldatKFLsMDahcY0IGqdaFdxOjaZnQfjx7dbtXa/z1y36SrO5HUV3pJ
XctNiAlfbuj+5UYRM5B18xH5QteXG8XqE4Gxs9OxK3pjN/zlZDHlyfvR2bc2ch8yuEcPbj5D4TtU
Dmt7xZ3QoU6YIX/aDr1YLdqJcAoyvRRUxcxz3XpEBjKSgarVo4FpzqbT7LrTbEYSkGkTkB+C45NH
Dj9GfVxtT6ZzGp20bSSfmO2rqXwfPlitGDzLHaimbnPuLjyxvUKqjZhYM5AJTRUxy1JItauf2n6W
y12znmYnuRi5dSjaVPXg+dNnp5N7ZM89Nhugx3NLDKmvQpB6Mwipp4dnVx+IeTDU7hrzP/JgKD2n
G+pUMdgpAqGvrs04L1J9t+D0emrv3Vw7c/yp/eubE66H7R4Eqjfc9L0nt4j0PsWmb/cIMl1WzjyC
LHBwipFK4N+UfjOBe1OpuRJ4N32gqOHctMpsDd+mT+sark3p2NTwbLLLGo5NGdLV8GtqR33kI/f6
v/5h5Z6iWlmtR0bv2uM7fuALk+Pn6YRXjm+cP+OjT/33jP9HuHo/bpPjk3PnNjb9ed1TlDRq549P
X7H0qf1+nz2zRrz4Y0/71zY3NrZW7jG5/6f9P+P/Ff6f9f9K/8/5f5VvK/P/lP/nP1f4zxX+c4Ul
H9THmVbZ8fSFM8cnKwf9Pr+1TuMvHXjAzwX7H/wI9cR6b9Z7s96T9Z5sQWf31LpfVCfIA8VZ9jGa
rd3q43/78VX6m4KZ/qvo9WL6elm/nn+MYnD6Ou0AbUwNxY5PMOc3N/21yKmn9x3c+/iZzcna8afo
O4gmqO6dnNzYnMxGlU+VPh/5gPQn1/kIx1j0s/QpkvQJCl4JPyxNeO4/gSSbAC9N4GUmIBoTqIAp
/LkU0lkKUyuF3pTCCUoh0qSwT1IoGyk8hxRyQIpGfYoaeorudorCc4qWcIpqbYo+aooSZ4rmY4q6
YIqOXYpiWoo2V4oKVIreUIqyTYqGSopaR4ouRIoCQcpv3VN+VZ3y+92UX4qm/CYx5ddvCZ9N+b1e
ys/1Un6tlzBvKb+2TPmxZcpvLVN+apnyS8uUH1qm/M4y5WeWKb+yTBG+StG9SpG9SlG9ShG9StG8
SpG8SlG8ShG8StG7SpG7SlG7ShG7StG6SpG6SlG6ShG6StG5SpG5SlG5ShG5StG4SpG4SlG4ShG4
StG3SpG3SlG3ShG3StG2SpG2SlG2ShG2StG1SpG1SlG1ShG1StG0SpG0SlG0qpLuu1NuvFMErVSK
oJVKEbRSKYJWKkXQSqUIWqkUQSuVImilUgStVFrpJGUGk4onSdWTpPJJUv0kqYCSVEFJKqGk1FBU
ShFF5UnVr5QZTKmjqJRCikqppKiUUopKqaWolGKKSqmmqJRyikqppyidVMBMmcGUkopKqamolKKK
SqmqqJSyikqpq6iUwopKqayolNKKMkk16JQZTKmuqJTyikqpr6iUAotKqbColBKLSqmxqJQii0qp
sqgi6WuElBlMKbSolEqLSim1qJRai0optqiUaotKKbeolHqLSim4KJv0TVDKDKbUXFRK0UWlVF1U
StlFpdRdVErhRaVUXlRK6UWl1F5UmfRlXsoMppRfVEr9RaUUYFRKBUallGBUSg1GpRRhVEoVRqWU
YZRL+j42ZQZTKjEqpRSjUmoxKqUYo1KqMSqlHKNS6jEqpSCjUioyqkr6Sj3pO/WUL9VTajJ5Sk0m
T6nJ5Ck1mTylJpOn1GTylJpMnlKTyVNqMrlKeiwiZQZTajJ5Sk0mT6nJ5Ck1mTylJpOn1GTylJpM
nvRcS9KDLWlPtqTMYNKzLUkPtyQ93ZL0eEvS8y1JD7ik1GTylJpMnlKTyXXSw0kpM5hSk8lTajJ5
Sk0mT6nJ5Ck1mTylJpOn1GTylJpMnlKTyU3S82UpM5hSk8lTajJ5Sk0mT6nJ5Ck1mTylJpOn1GTy
lJpMnlKTyYukRwRTZjClJpOn1GTylJpMnlKTyVNqMnlKTSZPqcnkKTWZPKUmk9ukpzxTZjClJpOn
1GTylJpMnlKTyVNqMnlKTSZPqcnkKTWZPKUmk5dJD+qmzGBKTSZPqcnkKTWZPKUmk6fUZPKUmkye
UpPJU2oyeUpNJndJz1qnzGBKTSZPqcnkKTWZPKUmk6fUZPKUmkyeUpPJU2oyeUpNJq+SHpdPel4+
5YH5lJqMTqnJ6JSajE6pyeiUmoxOqcnolJqMTqnJ6JSajFZJP3lImcGUmoxOqcnolJqMTqnJ6JSa
jE6pyeiUmoxOqcnolJqMzpN+tZIygyk1GZ1Sk9EpNRmdUpPRKTUZnVKT0Um/Okr62VHS747SfniU
MoNJPz1K+u1R0o+Pkn59lPTzo5SajE6pyeiUmoxOqclok/TbsZQZTKnJ6JSajE6pyeiUmoxOqcno
lJqMTqnJ6JSajE6pyegi6ed/KTOYUpPRKTUZnVKT0Sk1GZ1Sk9EpNRmdUpPRKTUZnVKT0TbpF5wp
M5hSk9EpNRmdUpPRKTUZnVKT0Sk1GZ1Sk9EpNRmdUpPRZdKPcFNmMKUmo1NqMjqlJqNTajI6pSaj
U2oyOqUmo1NqMjqlJqNd0u+oU2YwpSajU2oyOqUmo1NqMjqlJqNTajI6pSajU2oyOqUmo6ukn8In
/RY+5cfwKTUZk1KTMSk1GZNSkzEpNRmTUpMxKTUZk1KTMSk1GaOS5AxSZjClJmNSajImpSZjUmoy
JqUmY1JqMialJmNSajImpSZj8iRFipQZTKnJmJSajEmpyZiUmoxJqcmYlJqMSanJmJSajEmpyRid
JCqSMoMpNRmTUpMxKTUZk1KTMSk1GZOkCZMkCpOkCpMkC5OmC5Myg0nKMEnSMEnaMEniMCk1GZNS
kzEpNRmTUpMxKTUZUyRJ+6TMYEpNxqTUZExKTcbE1mRGlDDzWgmTZBZbJUyjWM5ULUFvvhAKRBHm
sxQqFWwzbb3VO75vRCaWhmNYx5iGa/XBGM3VqcJ/obtStSO6p75jJqgeX+g59fh+89xShN5xoWp2
z2fi2D3iaVYJ12YjSrh2CaHjO8O+w8rrhV0Ap9E07xaZItL/nZuiCLHiwjYsjr37Ylkc5KszSSM8
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
LOFntwm/ikjg7CagXRNoogkAywRmYgqdL4UDl0IcS2FbpVCUUng9KWSYFAZJCu0ihauQouCfohWf
okqeon+dorScoumboh6bolOaooiZor2YovKXoieXolyWopGVosaUovuTojCTomWSopqRos+QogSQ
8pvzlF83p/yONuUXmym/DUz4bMqvGVN+zJjyW8aEeUv5LWrKT1FTfoma8kPUlN+hpvwMNeVXqCk/
Qk35DWqKLFiKKliKKFiKJliKJFiKIliKIFiKHliKHFiKGliKGFiKFliKFFiKEliKEFiKDliKDFiK
CliKCFiKBliKBFiKAliKAFiK/leK/FeK+leK+FeK9leK9FeK8leK8FeK7leK7FeK6leK6FeK5leK
5FeK4leK4FeK3leVdN+dcuOdIvelUuS+VIrcl0qR+1Ipcl8qRe5Lpch9qRS5L5Ui96XSSicpM5hU
PEmqniSVT5LqJ0kFlKQKSlIJJaWGolKKKCpPqn6lzGBKHUWlFFJUSiVFpZRSVEotRaUUU1RKNUWl
lFNUSj1F6aQCZsoMppRUVEpNRaUUVVRKVUWllFVUSl1FpRRWVEplRaWUVpRJqkGnzGBKdUWllFdU
Sn1FpRRYVEqFRaWUWFRKjUWlFFlUSpVFFUlfI6TMYEqhRaVUWlRKqUWl1FpUSrFFpVRbVEq5RaXU
W1RKwUXZpG+CUmYwpeaiUoouKqXqolLKLiql7qJSCi8qpfKiUkovKqX2osqkL/NSZjCl/KJS6i8q
pQCjUiowKqUEo1JqMCqlCKNSqjAqpQyjXNL3sSkzmFKJUSmlGJVSi1EpxRiVUo1RKeUYlVKPUSkF
GZVSkVFV0lfqSd+pp3ypnlKTyVNqMnlKTSZPqcnkKTWZPKUmk6fUZPKUmkyeUpPJVdJjESkzmFKT
yVNqMnlKTSZPqcnkKTWZPKUmk6fUZPKk51qSHmxJe7IlZQaTnm1Jergl6emWpMdbkp5vSXrAJaUm
k6fUZPKUmkyukx5OSpnBlJpMnlKTyVNqMnlKTSZPqcnkKTWZPKUmk6fUZPKUmkxukp4vS5nBlJpM
nlKTyVNqMnlKTSZPqcnkKTWZPKUmk6fUZPKUmkxeJD0imDKDKTWZPKUmk6fUZPKUmkyeUpPJU2oy
eUpNJk+pyeQpNZncJj3lmTKDKTWZPKUmk6fUZPKUmkyeUpPJU2oyeUpNJk+pyeQpNZm8THpQN2UG
U2oyeUpNJk+pyeQpNZk8pSaTp9Rk8pSaTJ5Sk8lTajK5S3rWOmUGU2oyeUpNJk+pyeQpNZk8pSaT
p9Rk8pSaTJ5Sk8lTajJ5lfS4fNLz8ikPzKfUZHRKTUan1GR0Sk1Gp9RkdEpNRqfUZHRKTUan1GS0
SvrJQ8oMptRkdEpNRqfUZHRKTUan1GR0Sk1Gp9RkdEpNRqfUZHSe9KuVlBlMqcnolJqMTqnJ6JSa
jE6pyeiUmoxO+tVR0s+Okn53lPbDo5QZTPrpUdJvj5J+fJT066Oknx+l1GR0Sk1Gp9RkdEpNRpuk
346lzGBKTUan1GR0Sk1Gp9RkdEpNRqfUZHRKTUan1GR0Sk1GF0k//0uZwZSajE6pyeiUmoxOqcno
lJqMTqnJ6JSajE6pyeiUmoy2Sb/gTJnBlJqMTqnJ6JSajE6pyeiUmoxOqcnolJqMTqnJ6JSajC6T
foSbMoMpNRmdUpPRKTUZnVKT0Sk1GZ1Sk9EpNRmdUpPRKTUZ7ZJ+R50ygyk1GZ1Sk9EpNRmdUpPR
KTUZnVKT0Sk1GZ1Sk9EpNRldJf0UPum38Ck/hk+pyZiUmoxJqcmYlJqMSanJmJSajEmpyZiUmoxJ
qckYlSRnkDKDKTUZk1KTMSk1GZNSkzEpNRmTUpMxKTUZk1KTMSk1GZMnKVKkzGBKTcak1GRMSk3G
pNRkTEpNxqTUZExKTcak1GRMSk3G6CRRkZQZTKnJmJSajEmpyZiUmoxJqcmYJE2YJFGYJFWYJFmY
NF2YlBlMUoZJkoZJ0oZJEodJqcmYlJqMSanJmJSajEmpyZgiSdonZQZTajImpSZjUmoyJrYmM6xi
aVWtYkkyi62Kpc1YinQZnKNS6A9VmIVQuXQYjrReTSHt941IvNJwDGsQ03CtPhijlzpV9i9tV2Z2
RLPUdywIRPF9n1ON7zfPLcVoFbua93PgYCTvp+zBM5weVLGtMr2E0PGdYd9B1XTfvQUwGk3zxSJT
RDLXc1MUFhrmngqD4+DBWAYH+ZqdpCobmaQyfCbzsIUqk867u0hFbZ1W4al1yRi/pnWVRcyHq8l9
9x2MI/cVVQ8YUQ0L4FdKLWHJVE7OPAhMqZRagKDVNK8XWTLVPOu5UmG4IvdUWFz3H4xlcVVdpX2b
FSOTFF78ao7sTa3xwXZB/fa2gTKZ6uFGqB7a7pr3MXzKLhwbZXpstOdURcxo2czoA7Ez6pvvzqga
2anybNFJUbIfTDHpg6L6nDEG8+rgae6EqP74uYeXfa6S06lVA3tdBKSdfXFufTAyt7Kn2UnO85ET
XQIxiTrDvot4Kmo1RMvtzsEgtufo9tieoUlqehfGPFdzmEx/8MAMl8sY40p8h3NUXqZTUdvmqwX2
L5vPYworHXGJkZcNFfUTByOpqOxrdiHoYWZfpcP3F52Balvjg/O7SEVtnQbJzVUf2B5xI9i2HnE9
UVPWy9WHIu+SfOPd2TBmZDaKHaCikjdu3IYHrlhg326aLyNGrmj27Yej921jemNXjozdEooTVkhk
VRgUX+kFQI1N8yZbJN0QxqyfboyKmKSW8ngo9g7T9pBpthgJcBOEMHcHqm2ND14Ud9Q2YHYOgjd+
ykFQUWXMArHRnFNEzcCYZkYfiZ7Rorfs7MiV1JSivh0Ej7twmxA86gJ7DO/tplxgQO3ANYyJuBkx
ZTO6j0aPLvnqjO7IvVaR7QAEzwr9qyqCbDTvP52K2jYfLjhy+0JF/eTBSCqq7YGzrB2pnxQ6wJ/j
7WhwOgf7mcSfo15xJ8K1xz7DvYoZ4rr1ImKIdc2feyyWP2dtr/hRjqz9YuH6RSlLeQpqH75Vpiut
wevRwbPckVvl0XMPZ6GiTObPeXfzSaiISEJFWfPnDkfy59jT7CS7YZZkNSW+R/LnqCVCvU0PHEO9
FTvCn5s7k1n+3BQwP9Ypezv8uW187zh/rv3mjq4GZ765a/hzlQDqSl5YpuHPVblu+HOVUOmYP+dv
TFv+nL+0b/lzfkds+XM+w085c1XNmaMRSOXMlTUmrsOaY+7b9qy5qs+aq8ZYc9zY9qy5Ic6c6nLm
6BtA+k9ZY+XyLm6O4pmxivXbukudo8hiwCHgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DP
AT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H
+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzg
c4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+Bzgc4DPAT4H+NwS4XN6Cp9TUwnLnHVIl4BDEilT7zvM
RbFqAZxE07yOoM+pO0af824j6XPWBOXa7RwQbK55bilCqdiqhnPxeDTngnx1VGxHxKCtDZ/JPKfJ
icyyLe8m56JxGhYYtmU656JpPUJT2JY15+KJWM6F6wlHVyPUkfKOyJof2dhaO7Uy2dzc2NzTlziv
BOdRhiXOy2wB5kXTfITEeZk1zIuj0cyLqscLqaqRcdSLrM9KIDalWVS9u2kgRCs5dP7Uqf4xYQhJ
WSwg3t80HwEhKYtGr/9T0Xr9VRenU2Zjge1mMvn+p8+s+bAlxMRgJ4bS+fqJvPgih/Q+kk3+5yRC
AnWLexHGkZQL4Eh88/OJ3UUAjMqWKPLp2BFnX7MjrkbwGk5F8SeoC7fJn6AusMfwxYBTC4yuMgOj
G0FJc6oZ3c9Ej64yvdEdgeo4c0f4E8fWTqw8fmb9+MaJycrxp9Y21477DXFl/Uwva1M32GsYmeJM
OpiibT4CmeJMA6bYe18kmKJUXQhOmY9gVl25QNam1vhgt2DWbhuo4rN2c0yVhSek6k2IiZiQpvkI
KhG1z82u3huYkGLXtPnehIxEeZVHZm3qxEjWtl88vkDCziUiqzDTrMoXGd8BBFQVQTir8maw98UP
di/69QjSpiqiEjZ14XYTthYQTRW+5qiKBUaX8DFzoxtxAVIVzejujx5dXfRGd+Q+J4hoXwQYRN64
8fB1RZ/BroqYgaTmXZZFXErUhHJVrB4IjJ2djl33rqQ0g6QT71+FgEF0LT+4/w7uH0nAIOoVdyLf
vhPUzQF/1RDKqHKLdiKUj6ifydSitvVgBpLmmVp08L5IapFvvTfNxcg0F4vuoKaQ/tvtqUV2CFBk
52dNznInqEXj516GJ9YmU4u8u34m9O24iFm2NbXoof37/+fH/Cnr/OMx8CJ2ODvXA/C9ezc2TnGL
3JlqFGJUZkMgn5LxelR7DPGC8h2BGM2dUQdipEOd0rcDMdrG985DjHQLMRKzrgDXECMKqxZiZKua
XEQpZUoussWUXFTmU3KR01NykbM1kISyZFkDR6idrCUaUXG4HY5UolFRw4i6RKN8O6JRh3ckAKTO
IV1cUQhnNMcyslUPVpQzjciZGlaU9WBFWt4u+G3tyo9xKqjfzohhTi8L6shkZQ+UpORoDdQRUEdA
HQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1
BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQR
UEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdAHQF1BNQRUEdA
HQF1tETUUdGgjvzF1lTo0jRCl/42iIRLVTYuXJpvK1xqAhqhtlqCcGkREi7N/h8rXBoxn620aN5I
i1ZZqrQoy4TOyIpuLynaEx3tqZDerqSo7ah++vMWLVHbFQv1Z16/7noaoxnkQSEPCnlQyINCHhTy
oJAHhTwo5EEhDwp5UMiDQh4U8qCQB4U8KORBIQ8KeVDIg0IeFPKgkAeFPCjkQSEPCnlQyINCHhTy
oJAHhTwo5EEhDwp5UMiDQh4U8qCQB4U8KORBIQ8KeVDIg0IeFPKgkAeFPCjkQSEPCnlQyINCHhTy
oJAHhTwo5EEhDwp5UMiDQh4U8qCQB4U8KORBIQ8KeVDIg0IeFPKgkAeFPCjkQSEPCnlQyINCHhTy
oJAHhTzo0uRBM1M2cpLK2kZDUlnWBPUZ6WMrijVBD+/bOHNua+3M1uqDh//pUe/lgTNbu1eOTtb+
YY8IeO5Zyb6gdFYam5ls5fPrW0+tHDu/tTXZPHnqaf+WzrKsmKxlZbay+t/uPbTn6PqZExuf37V7
5YH9e1byQlWqkdasSKzR+7aNgufDG5+7f9077mt4+u61Gp4sJ1r2pDr3ndo4dmyyee7AF9a3+q2X
Tev3TbYe2ji+dmpAt9TuXvEn26iEtidNw7X6YIxwqdk1dbt7hbpRi4KOCpdmPvvWHXv0KT/aG6cH
TrucOe3h5rmlqpm8w2OnyCNIA7f62H37/+f8iRxtTsR1TmTiPe1p/i6753Jo48yEvPtcv33oHNk8
36qp+kb4GLWMcKt95+24n9+6zwfO2im/WNZJAnR+2Iw/ev7FbGZanuQWVn0f84k7eUKdzHg49x47
t3Hq/NZktchKq/wWkFOI0MydGwnXune66d2hja31k08f3Vz3jbTeyM3Jk5mzk4y8sKbp2Q2/Zj57
cn1zsju0JMr54DEmHIbFfBgOtVRErLRydKXZ1Yf27/+fH/N/6ny7pVY2Eeo9zkXkvRsbp7gF7lCb
WB6bbJ3fPDMwvbNn1sko9Uy1jri9MqR/7G5HanjufGazhXEh33ZMezkhhSV1aqf1j2c2LJ8Jmw3L
z5now9Kr1Uc+ct++FT4Vli2mPm1unHnSn9MmdXZ1zQf0+vFdK6v+tM749bQ+2dy1Z2Xl2NqJlcfP
rB/fODFZOf7U2ubacd+blfUzK5I2THxTRza21k6tTDY3N/zZJB+dfsTfJh9xz+wRc3n1hHHHTqqB
vErpdP/BPQfPn+HZrBNqkWdZOdiS8csty9YWaCnqLP5eJZ/453xEBc5dn9RqZE/Js+OVcb7rex/u
d10rbbL4fqjtOiHDdmKkE/5a0mahTgycV1acMOPnVXKT+/fPNenKlCn56HbnlU8m/qZfj3TClseP
ae7E/Xv2bm6uPd0EhbJ5tk17Y+Nkj5lsjdrb9+lOe1qXmd2mvdFBOu7WbHr/1kbbc065BfpXjJ+v
T83J/Tu2NtpettD42ZH23MlMLsjS+nfSjc/HQv0rt4mXSfL4aTs2frlaLP7GzndNn1xg/Lyzkfay
Y8cX6l810l55skrsn54UuT6Wj6+Phfo3Nh/FyWKR/o3GS1YsNn7HxvL6xCzSP3d8rD2lsnKB/o21
pxYaP3W8HO1fan65nRu+2S1s3+TUKTnhKj+uT+Z80OfbnU8oGXTvVzeg9NjRJ/3FAh/9uT2Hnz59
bOPUkdnD3Ef2T875S98TK59v78nqS9LpTdrKuYl/sb6JmxwrT7rmjm6S52vtHy4/Zt3Mvd4xx+08
cObU+pnJTPszzfnuZS7Ldtf7/7FjhZI/uOOTY9M/MpXN/OHKmT+smTawVrqZd/Iiq7tw0l/q+pP8
nFxyr/CrMm3+JmHj7GRz6+mV4xtnTqzT6PoPfOwOzemelQP/eH7du50QQWTj5MpDp6SZO7NGPr57
B3u6MdfT28jWO9nT+pbooQm1MtLtBTetO9rtR/0tZdNn//bkCytrWyu5LqS1tS1/2eqbnJxbye7e
aJ0eGa2FttAdGy1mAclomSWO1sPHR0ZroQveHRstvq3fNx0yfXeH7NGxUVroNuiuTe5otxe6G7x7
K/j8SLcXukjayW5PvD2/+d1WNWMnu/vwmeGBXexubyd7Wtc7Bob2Ngoqdy2AD50aCeCF7oJ39Iro
/OC124L3Dzva09PDV5mL3cnevf11ZMktVrDZ2Wu3B2VvzZd58bY1MlwL1Rd2drgekOFSd3e4xi7Y
Fqso7uiK3RpesYvVdu5eCI4l74VKSDvZ7ZFtZsHi6I729MTwmC5Wpr97+/hItxf7tuLj3cINfV9M
dZvpd7NSpJq9MFyZ/u/vp/WgPNvzP5pP7F754pm105M9XEvyZ/Hk1lPeVv+8m76D5y7s9plrY2tj
T3P5NKHa0kOTtZP/l7hrx2VlZcDdWnli4t3JJ7yzs2ub5+hBAXHIfx08tbFGf6vdzUCpLN+90vTQ
/6V3r3BXvGl2rzw2efLAF856u/D22pknJwf4O1uV2d0rR/ygNH+W1HM/N1sTqfL997Z113+nab2q
Hd17/qQf5T2KSm+Hn1rzw919We2urzC97bsqrXjbd/TQ+dPH+DO+p3VPFD2bsOZ7rHwPD098DxT3
beP0+jk/8sp3h24EvOX9+7HxVp7ReZ48xf3NFT1Gc2zvuXOT08dO+X7m3ufx8+e2Nk4fODU5PaH6
pMq97/VzhyfHfSTs2zizNfkCHWn4yE+sbz08ObG+9onJ0w9Pzp1b80P2uQnNQV703z80mZyYnGje
tv23D/vDeU7ysv8W9cGfyf2TtROTTfqjolP4x/OTc74lzedz7uzGGTpj7U/oPh91Z9dO+D/y9o97
/XKgxrVuX6p7ov2JsCM/7JO1082rFAFH9u1f21rb99TamTMTP3La9l9rPlzyGw8cn+xbO3Ni/YSf
ff+ia148srl2xvdvkz5Z8YuPTiabfiTPTOowpLj3Lz+2dfaxyfHJ+udolumpInnt8MTv6fRK3rzC
LbYf1PxyPX77J+eOb66frds18tbW2ta5xybSBSNn5ps4/g91/w1NxuY6l7hlFPxr/pz2nlk/vcYV
cB+cx7ce8+P/yBmKEuNm3jyyfnpCRWf/sj+7/RvHz1PcTF8t/Mn5STy56YddGvKvqZkG/J85EZdn
os4vxPVzW5veVeHPjkacT9kvkQe2Jr53hZl/9aF1CoeioEA/e36rPrfC8jrzKeKxjQ36u9zNz6Ss
H+cF7l+gyDry8EN7z59Y36jd+1dpvdIre5TN5AOHT21ste9b1Q/SekXanN+476H8MZ42v5LbNWN1
/d4Tk03/Ci/8JnNYWU/3Pfp4kwps0byyb+P0aR9Y7Ru298Ynz0/O+zOx5czrfgQm9dsHztC+QQe6
3gceXT/Lk8QP6exhNLu8v39yduupw1t+61k/1UQUnR19EzD/ifrwUrVvbq59noLJv5Y3r02Tbqmb
1x5aP7a5RrNctmcvo9bveVl033907dy5vVtba8efouno9NDOf3LfxqmNzZGPl/Mf51Mb+bgb+vjM
+1Xv/XqAt+mBy4YP6XxGDX+mHniXd9+ejTnXDvYR/7fP4P4l03up48qP9KP+wmFj8zRx2A+c4VXo
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
meztjRfJZG9v+JMvJJe88Ssy2dsb18lkb2/QyUsueYNOXnLJG3TykkveoJOXXPIGnbzkkjfo5CWX
vEH9lVzyBvVXcskbdPKSS96gM5Zc8gadseSSn9MZSy556/tksre3qA+SSy5/iUz2dvl1Mtnb5Utk
srcrfvEWkkuuUmOSS67SCUkuuUqjLrnk2ktksrdrL5PJ3q5Ru5JLrlG7kkt+9SyZ7O06f4C9XacP
SC65ToMqueQ6Darkkl/TYZJLfv0Wmezt1zQ6kkt+Td2RXPIenZvkkvdoYiWXvEfeJJe8R94kl7xH
LUgueY/GV3LJezS+kkveo3Yll7xHQy255D0aasklN35OJnu78Qsy2duNN8lkbzeov5JLbrxNJnu7
8Usy2duNd8hkbzcuk8nebrxLJnu7cYVM9vaHn5DJ3v7wUzLZ25+4Mfb2J2pMcsmfv0Ume/vzt8lk
b3+mIZFc8meKdc4lN5+h0eFccvMZ6jrnkpvPULucS24+Q1HNueTmMxQEnEtuPkMRxbnk5jM0kpxL
bj5DI8m55OYzNJKcS24+QyNZiTcayUq80UhyLrn57L+Qyd6efYVM9vbsj8hkb8/6vdtyLrn57E/I
ZG/P/pRM9vbsq2Syt2dfI5O9Pfs6mezt2UtkirefkSne3iBTvP2cTPHmZ9Mq8fYmmeLtLTLF29tk
irdfkine3iFTvF0mU7y9S6Z4u0KmeLtKpnjzYW9z8fYrMsXbdTLF26/JFG/vkSnefkOmeLtBpnj7
LZni7Xdkirffkyne/AxZLd7+SKZ4+xOZ4u3PZIq3v5DJ3p57hkz29tyzZLK3554jk7099zyZ7O25
L5HJ3p7zVyD8ALo3v0Ime3vuq2Syt+e+RiZ7e+7rZIq3b5Ap3r5Jpnj7Fpni7dtkirfvkCnefFTb
Qrx9j0zx9n0yxdsPyBRvPyRTvL1Apni7QKZ4u0imeHuRTPH2EpnizSc8a8Xbv5Ap3l4hU7z9iEzx
RvHLueTm83TynEtuPk9nwbnk5vM0AZxLbj5PE8C55ObzNAGcS25+mVxwLrn5ZXLBueTml8kF55Kb
XyYXnEtufpmWCOeSm1+hsOdccvMrFPacS25+hcKec8nNr1DYcy65+RUKe84lN79KAcO55OZXKWA4
l9z8KgUM55KbX6X+ci65+VXqr+SSr1J/JZd8m7ojueTb1B3JJS9TpEoueZkiVXLJyxSpkkteJseS
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
j2yL3z+xLX7/zLb4/Qvb7PcKx79kpCsc/5KSrnD8S066wvEvSekKx79kpSsc/5KWrnD8S166wvEv
iekKx79kpisc/5KarnD8S266wvEvyekKx79kpysc/5KernD8S366wvEvCeoKx79kqCsc/5KirnD8
S466wvEvSeoKx79kqSsc/5KmrnD8S566wvEvieoKx79kqisc/5KqrnD8S666wvEvyeoKx79kqysc
/5KurnD8S766QvGvJF9deZVt8fsa2+L3dbbF7yW2xe/P2Ba/b7Atfn/Otvj9Bdvi9022xS/Fv5J8
deVttsXvL9kWv++wLX4vsy1+32Vb/F5hW/xeZVv8XmNb/P6KbfFL8a8kX9GXLEpJvrr6LNvs9+pz
bLPfq8+zzX6vfolt9nv1y2yz36tfYZv9Xv0q2+z36tfYZr9XKd6U5Kur32Bb/H6TbfH7LbbF77fZ
Fr/fYVv8fpdt8fs9tsXv99kWvz9gW/xSvCnJV1dfYFv8XmBb/F5kW/y+yLb4fYlt8fsy2+L3X9gW
v6+wLX5/xLb4pXhTkq+u/oRt8cvxJvnqKseb5KurHG+Sr65yvEm+usrxJvnqKseb5KurHG+Sr65y
vEm+usrxJvnqKseb5KurHG+Sr65yvEm+usrxJvnqKseb5KurHG+Sr65yvEm+usrxJvnqKseb5Kur
HG+Sr65yvEm+usrxJvmKvslTSvLV1ffYFr+/YVv83mCb/V7j+JR8dY3jU/LVNY5PyVfXOD4lX13j
+JR8dY3jU/LVNY5PyVfXOD4lX13j+JR8dY3jU/LVNY49yVfXOPYkX13j2JN8dY1jT/LVNY49yVfX
OPYkX13j2JN8dY1jT/LVNY49yVfXOPYkX13j2JN8dY1jT/LVNY49yVfXKPZyyVfXXmFb/P6IbfH7
Y7bF70/YFr8/ZVv8vsq2+H2NbfH7Otvi9xLb4pdiL5d8de0NtsXvz9kWv79gW/y+ybb4fYtt8fs2
2+L3l2yL33fYFr+X2Ra/FHu55KtrV9gWv1fZFr/X2Ba/v2Jb/F5nW/z+mm3x+x7b4vc3bIvfG2yL
X9rrc8lX137Htvj9Pdvi9w9si98/si1+/8Q2+73+PbbZ7/Xvs81+r/+AbfZ7/QW22e91ig15pPbm
9Ytss9/rL7LNfq+/xDb7vf4y2+z3OseG5KvrHBuSr65zbEi+us6xIfnqOseG5KvrHBuSr65zbEi+
us6xIfnqOseG5KvrHBuSr65zbEi+us6xIfnqOseG5KvrHBuSr65zbEi+us6xIfnqOseG5KvrHBuS
r65zbEi+us6xIfnqOseG5KvrHBuSr65zbEi+us6xIfnqOseG5KvrHBuSr65zbEi+us6xIfnqOseG
5KvrHA+Sr65zPEi+uvElttnvjS+zzX5vfIVt9nvjq2yz3xuUc+QR3Zs3vs42+73xDbbZ741vss1+
b3yLbfZ749tsi9/vsC1+v8u2+OV4k3x1g+NN8tUNjjfJVzd+yLb45diTfHWDY0/y1Q2OPclXNzj2
JF/d4NiTfHWDY0/y1Q2OPclXNzj2JF/doNiTR3lv3vgx2+L3J2yL35+yLX5fZVv8vsa2+H2dbfF7
iW3x+zO2xe8bbItfij15vPcmPSOh5AHfm/SQhJJHfG/SUxJKHvK9SY9JKHnM9yY9J6HkQd+b9KCE
kkd9b9KTEkoe9r1Jj0ooedz3Jj0roeSB35s3KPbkkd+bN66xLX5/xbb4vc62+P012+L3PbbF7x/Z
Fr9/Ylv8/plt8fsXttnv73mcJV/9nsdZ8tXveZwlX/2ex1ny1R9+zzb7/cMf2Ga/f2C/kq/+wH4l
X/2B/Uq++gP75Xx16xmKT3k0+NYz32ab/N6i77OVPB58i77QVvKA8C36RlvJI8K36CttJQ8J36Lv
tJU8JnyLvtRW8qDwLfpWW8mjwree43PkfHXreZ4Xzle3nud54Xx163meF85Xt57neeF8det5nhfO
V7e+xHPB+erWl7/DNvv9ypfYZr+8P8rjw7d4f5QHiG/x/iiPEN/i/VEeIr7F+6M8RnyL90d5kPgW
74/yKPEt3h/lYeJbvD/K48S3eH+UB4pv8f4ojxTf4v1RHiq+xfujPFZ8i/dHebD4Fu+P8mjxLd4f
5eHiW7w/yuPFt3h/lAeMb/H+KI8Y3+L9UR4yvsX7ozxmfIv3R3nQ+Bbvj/Ko8S3eH+Vh41u8P8rj
xrd4f5QHjm/x/iiPHN/i/VEeOr7F+6M8dnyL90d58PjWNY4rJ345rjhf3eL8L48f3+L8L88f3+L8
Lw8g3+L8L08g3+L8L48g3+L8L88g3+L8Lw8h3+L8L08h3+L8L48h3/o1zwvnq1u/pvblQeRb7/2c
bfb73i/YZr/0JJaSZ5Fvcb6Sh5Fvcb6Sp5Fvcb6Sx5Fvcb6S55Fvcb6SB5Jvcb6SJ5Jvcb6SR5Jv
cb6SZ5Jvcb6Sh5Jvcb6Sp5Jvcb6Sx5Jvcb6S55Jvcb6SB5Nvcb6SJ5Nvcb6SR5Nvcb6SZ5Nvcb6S
h5Nvcb6Sp5Nvcb6Sx5Nvcb6S55Nvcb6SB5Rvcb6SJ5Rv3fgN2+L3Btvi97dsi9/fsS1+KU7kMeVb
N/7Atvj9I9vi909si98/sy1+efw5X936LZ8L56v//SU+X85X//sr7Jfz1f/+CvvlfPW/v8J+OV/9
15/ZF+er//oz++J89V9/Zl+cr/7rz+yL89V//eUZtgu2n2Xbsv0c2yXbz7Pt2P4S2xXbdG0gjy7/
11++wjb7/ctX2Wa/f/ka2+z3L19nW/x+g23x+022xe+32Ca/H/7we2w7tr/PdsU27fvyEPOHP/wh
24rtF9jO2b7Atmb7ItuG7RfZLth+iW3L9stsi99/YVv8vsK2+KVcLY8zf/jDH7Mtfn/Ctvj9Kdvi
l9dRKX55HZXil9dRKX55HZXil9dRKX55HZXil9eRE7+8jpz45XXkxC+vIyd+eR058cvryIlfXkdO
/HJcOfHL68iJX449J355HVXil9dRJX55HVXil9dRJX55HVXil9dRJX55HVXil9dRJX45nivxy/Fc
iV+KZ3nY+cMf/oFt8ftHtsXvn9hmvy88wzb7feFZttnvC8+xzX5feJ5t9vvCl9hmvy98mW32+wLF
sDz2/OELX2Wb/b7wNbbZ7wtfZ1v8foNt8ftNtsXvt9gWv99mW/x+h23x+122xS/FuTwA/eEL32db
/P6AbfH7Q7bF7wtsi98LbIvfi2yL3xfZFr8vsS1+X2Zb/FKcy6PQH77wCtvi90dsi98fsy1+f8K2
+P0p2+L3VbbF72tsi9/X2Ra/l9gWvxTn8lD0hy+8wbb4/Tnb4vcXbIvfN9kWv2+xLX7fZlv8/pJt
8fsO2+L3Mtvil+JcHo/+8IUrbIvfq2yL32tsi99fsS1+r7Mtfn/Ntvh9j23x+xu2xe8NtsUvxbk8
KP3hC79jW/xynEu+eoHjXPLVCxznkq9e4DiXfPXCn9kWv39hm/1e4PiXfHWB41/y1QWOf8lXFzj+
JV9d4PiXfHWB41/y1QWOf8lXFzj+JV9d4PiXfHWB41/y1QWOf8lXFzj+JV9d4PiXfHWB41/y1QWO
f8lXFzj+JV9d4PiXfHWB41/y1QWOf8lXFzj+JV9d4PiXfHWB41/y1QWOf8lXFzj+JV9d4PiXfHWB
41/y1QWOf8lXFzj+JV9d4PiXfHWB41/y1QWOf8lXFzj+JV9doPiXB6o/vPAa2+L3dbbF7yW2xe/P
2Ba/b7Atfn/Otvj9Bdvi9022xe9bbItfin95tPrDC79kW/y+w7b4vcy2+H2XbfF7hW3xe5Vt8XuN
bfH7K7bF73W2xS/Fvzxk/eGF99gWv79hW/zeYFv8/pZt8fs7tsXv79kWv39gW/z+kW3x+ye2xS/F
vzxu/eGFv7DNfi8+wzb7vfgs2+z34nNss9+Lz7PNfi9+iW32e/HLbLPfi19hm/1e/Crb7Pcixb88
eP3hxa+zLX6/wbb4/Sbb4vdbbIvfb7Mtfr/Dtvj9Ltvi93tsi9/vsy1+Kf7lEewPL/6QbfH7Atvi
9wLb4vci2+L3RbbF70tsi9+X2Ra//8K2+H2FbfFL8S8PY3948cdsi9+fsC1+f8q2+OX4l3x1keNf
8tVFjn/JVxc5/iVfXeT4l3x1keNf8tVFjn/JVxc5/iVfXeT4l3x1keNf8tVFjn/JVxc5/iVfXeT4
l3x1keNf8tVFjn/JVxc5/iVfXeT4l3x1keNf8tVFjn/JVxc5/iVfXeT4l3x1keNf8tVFjn/JVxc5
/iVfXeT4l3x1keNf8tVFjn/JVxc5/iVfXeT4l3x1keNf8tVFjn/JVxc5/iVfvcjxL/nqRY5/yVcv
cvxLvnqR41/y1YsU//LQ9ocvfplt9vviV9hmvy9+lW32++LX2Ga/L36dbfH7DbbF7zfZFr/fYlv8
fptt8UvxL49vf/jid9kWv99jW/x+n23x+wO2xe8P2Ra/L7Atfi+wLX4vsi1+X2Rb/FL8y4PcH774
Mtvi91/YFr+vsC1+f8S2+P0x2+L3J2yL35+yLX5fZVv8vsa2+KX4l0e6P3zxEtvi92dsi9832Ba/
P2db/P6CbfH7Jtvi9y22xe/bbIvfX7Itfin+5eHuD1+8zLb4fZdt8XuFbfF7lW3xe41t8fsrtsXv
dbbF76/ZFr/vsS1+Kf7lMe8PX7zBtvj9Ldvi93dsi9/fsy1+/8C2+P0j2+L3T2yL3z+zLX7/wjb7
fYniXx74/vClZ9lmvy89xzb7fel5ttnvSxz/kq9e4viXfPUSx7/kq5c4/iVfvcTxL/nqJY5/yVcv
cfxLvnqJ41/y1Usc/5KvXuLYlnz1Ese25KuXOLYlX73EsS356iWObclXL3FsS756iWNb8tVLHNuS
r17i2JZ89RLHtuSrlzi2JV+9xLEt+eoljm3JVy9xbDs7pkno1ib8LfP+dVavWdt8uqtP2KF8dPQJ
BZyhsj3/Y+YTu1e+2PE029QQbmSmqWIyo6w4/cQ2LTbylCuD4onHjhF/+X/Uh1EjbB5d33qKRHnW
nzy/cf7c7Fhk5Um/8WV14zMy1v3GBSZSjAlBnqUWSWBSZBlbXUg/Zyc3N07ve2ptc9/GCXpXJyhF
zqDjBoUpixPd/mzfdNPo/YERPDYygmwc3trYXHtyMjCGTc8/svfw4QOPHXngkUMrB/c+8NCB/XtW
zrEy3WePr53b+tghPwz/58dXz5w/ders1uaulb//+5UJKWUx1uVvP/65mkd6bu8WiWD991MM01zf
9ZG/e2Lj1PnTk3N/RwJ5f3fg6OG/E6G6vzvMWlp/9+Da59Ya+afNyd+dOPnk3+0/eN8TRGdc25r8
9+Nnz65WatfKnpXPbayfWHnw8L49e/z7e/asrp3ZOPP0aR8XKzSd586uHZ/s2rOnOXDPns/V1uqu
jyg/UP6Ms4k5XrkqWzl65OC+zbVzT30kr984QYJX2dqCzeuZVlymZlppPzR96b7NtbNP/R+7V3qv
7D9/+uzDfoh3U+f27Nknqpu7PmKatitnJsfdzGGPnlo7s2fP8Y3TZ9dPTR44c+SpTT/uD5w+e8r3
qJgepd3aidBRM92TF2iu/s9dH7FNM8eyk8fcZKaZoxub/3CKNNLqA+7dOPH0nj2f969672U73Cfs
2tpEzmjv+a0NElg8Lgfs2eODa3NrVd47dm6LgJYPbRz/h8kmwXjObf0ffrQ/+tlszx4i9Kz56F3d
tbpL3vqIm3FQuuPioFlPH+NAWd31cT+Ka6dOUVAe9SPsW/nY7XTEN+cjmga3arwXmVGTyaj3gY6r
rDm0ULlbk0ObfvByepSW02rn9UOTz4tZq+j5iVGqbceeVIW08/mtk/K5A9OGqDf0+Zw+X548ebIi
CeaqOrHy2bNb/OHPHvNT9xGlux9Qa/0PmJkP2Iku1Er9Ng/fR+7Z99jew/cf2P+R/z9QSwMEFAAC
AAgAOKYPS74MvOoVxgkAQOUyAAoAHABzdGF0cy5qc29uVVQJAAPcwJNZ3MCTWXV4CwABBPUBAAAE
FAAAAKT9WZMrS5IeCP4VCp+JFLfdfd7Y1WQ3R7jUZBbnZaTlCiKAOIG8CCAKQJwlW/jfxzZ3UzM3
/RynWroZ92ZWusEW3fVT1f/73/84vuy/Dqfrv/9//bv/+99/7i+X4213/Nev/fnz+sP/6/1xvB2v
f3l/fJzj/+J2vH+dH3f/7/8/9R/+ndDT8B/+nRJqcv/h31lpwh/3f/2v//Dv/v3Lya9x2J2vP+7v
x/Mbv4DRywKTGMIfGReIm3r5ens73u7Xr9vrcXc5fts/Tt+Pu8/z/tfL/vXP2/5x3J0ufoef17P/
9/Bz10/+p6Qse3U6/DHxpz5OP0+Xb/x3YzmjlHoMf81QNvn6Hm7t/HG8fXviwpQomzAy/FFkqas/
zc+HX8QfB6zhyhpTuPRpLGt87m/7j9396+PDH+rvX5fXx+l64dfSdlnLTDL8Sfu53l9PZ3+rV3+k
/Y/H9fp4Bzdkyg2JsKJUWvWfETzPtCwiJjWGvzpd8+f+23H3ur/4a7k9Po6H0x5spawyjn6RcRJ5
jUjamEKmQiFm1OGPWV3s8fEve//Sj//4+JfTBziOVuWRbHgka+NanuF2cb3d6R5JGdGeGcpTax3/
jJS/Po/7PyHtmvK8U9jRpHV7ovPpctzf/rr/+PyX6/93f/46bp6M8JFV4U9a83D0p7lcD8fdx/7n
7nB82/vPdvG/5RezhXTEoKbwV0t6xMv18QpIz5Tv/VOHP4nwEh/Kj+vlujtcf1x2W1w+FcJxZgx/
JkYQZYa/82uJ8mrGjeEPt9bxcjgewEJjWSg8n6HPN0sL/9Hjdtrgc1UIwYr4JxHSj/334/19/+l5
4/rdb8uTwfm4kz8BSRaJ7cKNu4mT2JFfAcOTw6kh/BH04V/2l8Pn/g6uWROJoYIm8n8VOJVGpyp0
ZMO6Xjivb/rzdv043ZFkLnej3RD+kFUia2Ti2d2+zkdwNDVSthjiX9Fes1eJX57MAfmUQxkb5Jk1
a06N/+F8+jiBp7JkO1EF+r+JpP++/76/v95On49yxn8cb166XT6/Hk/wiiOEKYfwJ13Z12dm2V3k
4Q29agZJaMGJ+FdBXtmtCDZufoNoFbnSsHXP3/lKX8PXSbIf9o/9zuvM3f39ihazmizmymKZA/bn
8wYDlGcZw92NUjGbednfT69gI4rImcCKOhFbVLb+xo77j7jYwV/f6bIP1xcuC7xqYU0dNKkek/Z7
9Us9jv8tLPu3uOzfsnH3dT6D7VG9HLY3yoaO76/vx8PXGUp4S8SFCCf2f/W/2dgEco1cZtC/xjjm
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
KZeBabQ977ZPzpLyf+JHTrwBUEsDBBQAAgAIACSkD0ttTbKdrwAAAAEKAAAoABwAc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtY291bnQtc3RkZXJyLnR4dFVUCQAD87yTWfO8k1l1eAsAAQT1AQAABBQA
AADtz8EKgkAQBuC7TzFHvbREUbC3Sg9RESnkMdbdOQjqyDorPX4mnjr1AHMc+P+f+bI8v+caDszY
9gxMYNxoOotgwFLbN8jowAY/kI/Uk5rQ4qBSw0ZlZaFKrC41q4KCt/i9TuRR3ciFZorVncM3Olep
Af2IXhWPa814To+neXBl+z7erPcJaKiIGlgGtJ4ixVzR+qej9fJgHOqOd9sXJ1EmCEEIQhCCEIQg
BCGIvxEfUEsDBBQAAgAIACikD0vWw6YOpAAAABQDAAAtABwAc3RvcmFnZS9pbmRleGVkZGIvaW5k
ZXgtbXVsdGllbnRyeS1zdGRlcnIudHh0VVQJAAP8vJNZ/LyTWXV4CwABBPUBAAAEFAAAAO2PsQrC
MBRF937FG9vFIIpCNm07iIrYgh0lTd4QSPtC+lL8fGvp5OzoeOHewz1lVd0qCQdm7DwDEygzql4j
KNDUeYeMBnQMA4VEPMjFDgdRKFaibGrRYHu2LGqKQeMn5RRQXMlEN9Vsb/CFxrRiwDBiEPX9YhlP
xTGfgSvtfbpZ7zOQ0BI5WABSTpV6nkj5tZFyOZhG2/Nu++QsKf8Sf4nfSbwBUEsDBBQAAgAIACmk
D0tGaBvbmQAAAMUAAAAtABwAc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi1zdGRl
cnIudHh0VVQJAAP9vJNZ/byTWXV4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFIIpCNm07iIrY
gB0lTd4QSPtC+lL8fGvp5HjhnMOtm+bRSDgxYx8YmEDbSQ8GQYOhPnhktGBSHClm4kU+9TiKSrMW
datEi93VsVCUosHfKimiuJNNfsbcYPGD1nZixDhhFOp5c4yX6lwuwY0JId9tjwVI6Ig8rAEpZ0Qt
ipR/jpTrwTy5gQ/7NxfZF1BLAwQUAAIACAAtpA9Lyt9mLvcFAAAxMgAARQAcAHN0b3JhZ2UvaW5k
ZXhlZGRiL2ludHZlcnNpb24tb3Blbi1pbi11cGdyYWRlbmVlZGVkLXByaXZhdGUtc3RkZXJyLnR4
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
pO0zaivjHrYpaeWt6aYq0Xt5xDCCXQMb9Katf9aKygM+JQU5fJ9yysg6hY96zf6j3q+w3+knhmWP
67kE6eryKjTbQV8rT+bP6j4fJChZN/g1y5TwaO0lSeKkXDWamANZGTqMc5Vgchcov9A3rmWsctcT
ysTKg2xbYejbdG/YMnBkMNws0cRUblRFbMRb1aswch+VEXXW0dhfT1B0023DANuVd5xcOBLqAKvA
FNqqQNSlpxoVlJ9qvxW1lGb/Dj9r+XSixdlujNnImVPTbiGF3Yimd1se8auKkjG1pJQczzuUjIl0
/aBkue6menaLIQ+2tWxQO3qrtxY4JfO1oBixO674DvVai9vCc1f2pvOZYUo1o7z6Vye9dV43OHu/
LI7a4GNZ6D3Xk+d2nbFHN/tYtn4sW/8Hy9aDc40102cdclreHL7nOvdndVfc0ve/dKf6tEOBNUeo
vzHsDG6ensrnzuIijZH51tsu0nRZ4fRv2CO+73xczfm4mvOmqzn8UGCivFk/9VBgIsNSfuvi/1tG
0/YwSe5U61Q5mZ6Ysm6bvWXOh9DEVCLXfghIgilxwqz94Qebtq5IYEc0sVE3i2RXdY5tnbqq5xRn
+BdQSwMEFAACAAgACKQPS89O84iyBgAA+zQAAEEAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
Y3JlYXRlLWluZGV4LWZhaWx1cmVzLXByaXZhdGUtc3RkZXJyLnR4dFVUCQADwLyTWcC8k1l1eAsA
AQT1AQAABBQAAADtW0tz4jgQvufET/ARqpIqA8YYbolJstTuDtlJZu/GFuCNkVlZhOSyv30lv5Ct
h+1gJpmqpCoHTKtb6v6+7pZk5rObR4BeAJpOPQc7SycCdgghcLEfwgcAPR+u7SCMgHal9Q19PDRG
Q0M3x+OBdfED+v/uwXx2M+NGTqeuUMsdCrd24AOIib5OSadp6Rfz43zCHYCzm++A2Iiw7UAXBAHw
eKsySWrh0+vrbh0f9jTBoKMDY895Jdd1Gc+ZlmH1FKqcZYjwE3Jg5MQKyyvhI5+YFMS86y2FJnYA
rUK0vRZZqokT4TJ5hDz+9YePqbYbx30muHrEIZKtsRXvjvWB0aPuYrTTBceoXpCFO/TJk78F6M5H
xGtd/XW8Wq2MFZj0jb7Oj43nuoCJ+6+hl0AixUdExY8eegqzKJVXKFY7hw8oXCMQRfnUIk7SDbe7
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
vJNZdXgLAAEE9QEAAAQUAAAAzZExT8MwEIX3TPyEjPaA5CamKdlIokiZQFB+gBtfwCI5F9stTPx2
koDUiLithBhYT3ffe/deVWQPYPZg0lRvAYvsHl53YF0usIa2BRk8ouonVZEVwomNsHBsM7wML4Lq
wJPf+7lGhNopjXeAUuFT3moL/faCsyTmVzFnyySJVnOlw2Wa1l5KaXSXtwrQDeo/mMsVO+1nRMjf
O/m6P+uBdEIhDT1BnkGRKYlFnPrKULjXL3C7BSMG0A3KtRFoxYhdqw4ModMY/rrmf8k7Hrk+EVSp
TK808VIPrcwgAZEbL9s+75zUb1hqM/bpM/0xmxEaEvaeNE3DG7iO4gWj/QefUEsDBBQAAgAIABOk
D0sFkqLSTAEAAJ0DAABIABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFiYXNl
LXJlcXVlc3QtZXZlbnQtcHJpdmF0ZS1zdGRlcnIudHh0VVQJAAPVvJNZ1byTWXV4CwABBPUBAAAE
FAAAAJVSwW6CQBC9e+on7BGSmoBgjRyBNvHUptoPWHeHuinO0t3Vtpd+ewdQohExPZDA8N6bN29m
kadPXDhtfpJEQgkOcu74mltgY3Y3WuRpphFBOKVxpZdg9mCuIQf+vqH63AFhjtUkuSh5PvOC71lR
FHEB80kYBz4xvS1X6LMegQ1HWULeNLsNO3w/V2B4PYwlX6sNGGCcnjCKg4fZPI4DVgFKhe+j/0m9
6KoCyTgyfSzfM9RfzA31uOU62xkD6LpOAwSCFNpsD4w2lY7X7MCT615mu66Uiw+ytKRTGEpTKplf
4k+WL0pt4YLYl+bvrQuIwuYCrt3g0UnXg4A0MebpK5CudUli2pdMb6saKXsgGs9VljshwFqyMmai
DZNRP1unqCyjq5xF8bRZZTid1IKdlFS24k5sHvc1iSI/nSaMgsC/Nos+9ZRxFFCW5PYPUEsDBBQA
AgAIABOkD0uznOVciAEAAEIEAABAABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRh
dGFiYXNlLXJlcXVlc3QtZXZlbnQtc3RkZXJyLnR4dFVUCQAD1ryTWda8k1l1eAsAAQT1AQAABBQA
AACVVMFuwjAMvXPiE3wDpCG1UIbIEcokpElsg31ASFyIKEmXBLZd9u1zC0VMlKIdeojznt9zbHcW
jxdoD2gZMxnqePyGH3t0fsK1wDRF2ZjF4ycuvLHfjElM0WPMPV9xh9CFZn49MVqj8MropSmTVSNr
bt+1ImHClFHGrkLtDrSDr2GSJFGCo14YBR1itndc6Q5UJNhwLVOMC7H7sNN5nqHleTGOfC03aBE4
fWE/Ch6HoygKgN5JKr1u/C/Vi8kylMA1mDL8ANp8gq/TuOd6srcWtT8r1RAIkhi7OzGOr3LmFT1o
y1Ul89iuMRdbsrSgUcDG4vVZ+Rx1GWVsjX5up46IqXKbMsNMJ4YEZNnv5i36tRAUITpBolKEVrMF
ZFYqt62pVCoZX1u+mD+RGodXxKqG/twbwn5YDOGtNSidnDUIOL9cNMbsaePMLsuRsgJi9N8si70Q
6BxZ6YI49hNIz+WNVA5oMYb9aFBMUzjo5QnPqejpMu7FZnrISdT1y2rCfhB0btVy4//wC1BLAwQU
AAIACAATpA9LYDb0MlYAAACZAAAAQgAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVk
YXRhYmFzZS1yZXF1ZXN0LXByaXZhdGUtc3RkZXJyLnR4dFVUCQAD1ryTWda8k1l1eAsAAQT1AQAA
BBQAAADzdHEKTi0qSy2yssovSM1zcQpKLSxNLS5xTsxLTs3JSU3h8nRxcktMLskvqrSySknNSS1J
dUksSUxKLE5V0FUQAEk75+flpSaXZObnheTDDCNeJQ5rAVBLAwQUAAIACAAUpA9LADo3vg4BAAAh
AwAAOgAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS1yZXF1ZXN0LXN0
ZGVyci50eHRVVAkAA9e8k1nXvJNZdXgLAAEE9QEAAAQUAAAAlVK7boMwFN2Z+gkeQWolSFGjMIIV
ialVk36Agw8NKrkmxulj6bfXJY9WwoAyMHB9Xjr35jxdQb9DJ4lEDQMujNiIFuyO3XgvVO0PyHl6
niZJb+QHzA8/52VZxiUWsygOA8v0d6KigDkEtoJkDd6ZTcNO/48NtDCVotbmWm+hwYT9ovs4fJgv
4jhkDUhW9OpdJ/WkmgaSCWLqPL5lpD6YGfOYSp0dtAaZi9MIwUJKpXcnxrGVC6/bQf63IZuRePoM
K9KaTFCBuob0fLlxah8XmorizYZeGaXhasct2lkPx5aV5H31f1GLWrXoEV3+3xMXFc3QXZQFLEVh
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
xt1ViIdehU4YoU8wkaA5H2UiQU9s630TCW2uj90r9oj0KcokLOXzpl3NVGIYwQRA2eUMS7tE+/kI
iBNSkFZTDtLWiewQ57GOnznWUW+WCLXyu89+qLqx9VlW1Su3EELcou3sYsrRbLqjNh/j3SMbPOqG
PgkHr7g98rDqi+6c26AcHa6ObKRGgKL6gzfWsKXG843uoMK48YPVreeTr/sn5kNuxfNjpdfmcjwX
WYFyDvmk4x1zlRWfn5PPfaZzn+ncZzpdn+mYB9NyPRdsqw0fjE2jsfuETQv/jO5TMmf4ju6TtOfG
/7Vaa+jOhNdeDBWL2FPvKT+0O5oYzf9QSwMEFAACAAgAGqQPSwMHq2ayDAAAwD0CADgAHABzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLXByaXZhdGUtc3RkZXJyLnR4dFVUCQAD
5LyTWeS8k1l1eAsAAQT1AQAABBQAAADtnUtz4kgSgO8++SfoCBHbEQJkwL658XjWsTGDo+2eu0CF
rWmQWEm2py/727ckQEio9MCINpjPET4AmVmVX2al6iHE3c3XB+G9Cu/qyjIDc2T6YuA6jhgHtuvc
C8eynafB1PWF9kVrGXqvY1x0DL3b67X7Z98d+78v4u7m601G8+pqrLRy67mzwdQWTiDtnW/Y7Pb1
s7ui/kQmrPf3ZKFf2ofGzLSdppYxWmqqkbSkt43mmcKG7by6P8RwLjwzNHTtWI+e6fhmZPbRngmv
0UxicOfCufn6TUg7fjAwnbGYToWlsqyWDHt28PbykbsFoG5tT7aU6Ms4jErGyFnDGilt+88vgeW+
ObeuF8VT1en/Zd5rNLWG/k9vMpkYE3HZ7rT05oLIreya6/2UmSumIhAr+RWwdU4+unGOKyULPlX0
sKyDMimbhYifTceaipuosXKx5es4gX3Zr8dn4QnNlP+tKPcvDUPX5otxf7adqXt3PpdJYTpaHPl/
aY77pgVFbZT1evDieXKUxi0VKEiRievNlhoLKrHeIllz0mkRrq/m+Ifs0oNMhSKalm3dZOXLc3m3
FFXm4KoncRtScJgcq1dX3nLQurN5KGkpRFwnbeXhZTwWvi+78kUbL2Bqsj0/pGj7qaLbumiHBmNT
lu3PzWD8/NtrXFnX3rQ6ut5MDbewruQ5F9WcxADSGueSjdHrXfY7nc5lO1tqC0CXjrSLiHNe6ctc
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
7b3v9pL3vV73dLvMYDyZi1eFuhe9ZaH+JM/F6ge+Tx75FkyeBF/+7evjJ/eXerZV36d/34rV3788
tc/r3+meHfqdoonydVP003wgxmORKZb+P1BLAwQUAAIACAAmpA9LLRvZHPwXAACW4QcAOQAcAHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJrZXktYXJyYXktZXF1YWxpdHktc3RkZXJyLnR4dFVU
CQAD+LyTWfi8k1l1eAsAAQT1AQAABBQAAADt3V1v20iWxvH7XPkj6G5sYBqQbfkluet2EiDA7ibb
6Zl7RWISTWzJIynp6Zv97EvJtixFr5T4UiR/CwwW7fB5SP2LRRarTp3z7vVvH6Phj2j46lW3PW5/
ao+im0G/H3XGvUH/Q9Tv9vpfbm4Ho6jxS+O01bw6b12ct5qXV1dn1y/+0e/9+3v07vVvr5eUr151
Vrq8HQ7ubm57UX8c+x395Hl53Xzx7vl6BvdR//Vvv0fxOUbjm3a/E93eRt3ls647cnKGF8d37V7/
pLFC9HyB0yvr/nRpx3NXdnnduj7ZYNX+NBiO/xi2+6P21HB65u2/5Lj7aaXdfTT8PBje/brKNdmv
/+/objD8Kz76t3bnW9wGH8eD4YbrnfvThM/d/W00jrrv4+tpT/72R+8uGr7tDWPz4+Z/rj5//tz6
HL08PY+aJ49nmj/Ngtn0jMcnSye5f7g3tp2idTo7xdKPGcZ//hG9//SvuDGnf3o7GP4zGo4mDfu1
3f8STTmu+nl3vfH7/kMbPZrPucT9IZr8/N+jzmDYncif7+4/Bk8t++AyZ7zKqN3tPrpsO0sVxXP9
YJnW0u28oo22nn5TH//phHO9QhMRExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMT
ExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMT
ExMTExMTExMTExMTExMTExMTExMT11X857A3ni8n+7bX742+RpvKxXZ73Q/Jai/3+j8G36JZ+eJf
+9050bSY8fGmwtGDDcJpFeQN2q/tfvc2evrv2SWM4kv942s0jBrt+H+n08LarevLVuOx1PKkHu/b
+DQxrifATx5PZaBXFTpefeSGf11xxUt/Oj6Zr/J8dtpqnmws2f34k6cnS4fMy1arOSOTzOrD4P4+
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
zmKoIfN0nQybJes6Kya31wyj/Z5PEj2HbeeQlsMmrl8Ly/6D/A6cQLNcTjkjz+OwvhdTDNZR1e4P
vzOqWIvL7NpOJgIIAggCCAIIAggCCAIIAggCSN4AkisyNHHTAwECAQIBAgGikwEibyBICiQivH7X
d8URQBBAEEAQQLDCwBYVAggCCAIIAggCCAJIdQGk7ucIYAhgCGAIYAhgqLG0MoCdN8CJOFZbIgDm
GFxW5Gr7/OE5nuM5nuM5nuM5nuM5nrdn/VDJlk5122QV7hzhNUJsMGGDCRUSVDhQ4UCFo40BqNbo
0YCDuSJKAo12Xvm8CtwF7l/E/Yu4fxH3L9Zx/yJvRBZ76eBcNTWyXpN4aue41nZ/16AgNodR7349
aNKNooyG0Tba2nLIUaPRVEmcqJgSPwYzO/f4RFlv1N8vxP/9YefHjvsZjfP34zPSr/4BUEsDBBQA
AgAIACukD0t2nMQjtxIAAJ+DAwA7ABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWRlbGV0ZS0xLXN0ZGVyci50eHRVVAkAAwK9k1kCvZNZdXgLAAEE9QEAAAQUAAAA7Z1L
c9u6FYD3XvkncLKJPePUetCSrJ0jx7eePuzGyb3LjiTCNhuZVCkpvtn0txekXpREUiTFt75OM3dE
A98BD4ADEDg4uL/9/CSsn8Lqds2xMG4/fxX/nYnJtNc3hmI0EtrJd0OXT+5vP9/2p/1BfyL8Uiqf
lNOT+/R42iJ9zzQMMZzqpvEoDE03XnojcyJk6rpaazfVq6Zaa7Xbjc6upHXObnfoSbmzzLfeSBfG
1Ja+xWx1asHlcRBa/JLM8+8tw9lbXzfOFQ9F7kGduUm1hnruVRm68dP8IR7GwurboBtD+2b1jUnf
wX7T34R1dh5QBDMg451uyQbgn/e1b2gjsfy9KsJEFv7bq7CE0pf/6k7p1U5LVcbzmrMr5U6KMa1f
slbESExXjGUbWuv7m7mqP8+UAX/1KPHOo7Nz5az2Z/v5+Vl9FtcNqfBzmXPvKzvCktHMtarWVpqJ
hno0x2PZfvuGsqrFC8Uw35VpkIx9pe7NLEu2wJWkgAwyybNpvS1yzLWyyufUwZk28Mw5r67P/eEP
WaQn2RTEydO//q5P7VTup93ui5g+WF8mMuNIn7wuCffGsykFLPu0lOSTfVeQ4jySv5RnfSSUj6cf
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
EdLzvShaY8B989hCn66qspre754eBU0aKlzUkdkQrvpiNWuWvDil+IRUOYP9DPafAOzSHOwCu3Jw
6h+aSyvLGwAky5rBPpcUjEchTbDH+RVJ8ss6yvGFxmzngb8kENxE8fqWRfAN/FgEyUHEmL83e8cQ
Y66qo/Fc5UOJMTfh8DwFzlPgPAXOYD+D/Qz2E4A93mxY2nxNf2NR5Ob3zQdF7/fbyax2FA1mSQ87
cFQs1fTht71m08epklJKJR2tzMLHhVtjlNLsIdk4ikoqL81z3fFwSD/g0NVVwUCilgLJyqgvNTJL
cb2ORQfmQ5ZxtuTk5zu3bGWldnbZXHVqSKb6ALghUv3ypovByh/16CJBV9dBkH28wstXIKm+aj9n
/K1D9AxMu0+q12EKonFIX4AyP1iX48dXsa3yAeNoh3tRDmW5rR+A8NOa1n6/lX8kc7S0Nuz6t4/8
7r5FjSi1h61TaemXTyNqO1Tbj4y/oGqa3ng/1pDfX+xw1vaDe6aD/RQ/R7r4B1BLAwQUAAIACAAz
pA9LcisX1CwBAADkBAAARQAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJ2ZXJzaW9uY2hh
bmdlZXZlbnQtY29uc3RydWN0b3Itc3RkZXJyLnR4dFVUCQADEb2TWRG9k1l1eAsAAQT1AQAABBQA
AADdUrFShDAQ7an8BEqucAaOHCCdwNwMlY7iB0RYJCNsMOFu/HxjThkOIoVeZbFFsvvevPd28yx5
BHEEEccgB/rcMtkUgqKk5cA4Wk/I3g6QZ0lGVZdKSDki6J4ZYV/bV6o84oY+2fnEDcKdHyx5FBrV
zwFmWNMkwyN/hbseBP0cu8VqAipYB8LZWPl/dMJ7wCx5AMUjh5RiCW0LlYnZPKl1XJrP6SjDjW0A
lWOkacslVHvBu7RlgIMO05lkGUQkOrNaLdZyD1gxfNFUs0WE22h9oaWRZabnnDOI3HU9J0+/V2LM
ZKnhIvGG7pboeCf3Fcf9KYvx/vTF7ZlQrhz3PazrmtRw4xHP/Rv2Zwt85fQ12Qq2oVi18P0ehUhl
vmhAgE1Vedo9iQJifym2PgBQSwMEFAACAAgAM6QPS6bb3A5ECwAAeIoBADMAHABzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMS1wcml2YXRlLXN0ZGVyci50eHRVVAkAAxK9k1kSvZNZdXgL
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
LujuF923/v+Adv1j1vX9ocW3P5a7f7h2P9b4BsfuOBSAFqKFaCHogi7ogi7ogi7ogi7ogi7ogi7o
gi7ogi7ogi7ogi7ogi7ogi7ogi7ogi7ogi7ogi7ogi7ogi7ogi7ogi7ociiAQwEcCkAL0UK0EC0E
XdAFXdAFXdAFXdAFXdAFXTaP2Dxi8wgtRAvRQrQQdEEXdEEXdEEXdEEXdEEXdNk8YvOIzSO08JfR
wh2H/gdUUrQQdEljSWNBF3RBF3RBF3RBF3RBF3RBF3RBF3RBF3RBF3RBF3RBF3RBF3RBF3RBF3T5
JINPMkAXdFFdVBd0QRd0QZdDARwK4FAAWogWooVoIeiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiC
LuiCLuiCLuiCLuiCLujyZTFfFoMu6KK6qC7ogi7ogi7ogi7ociiAQwEcCuBQAFqIFqKFpLGgC7qg
C7qgC7qgC7qgC7qgy+bRVptHtX4LUcfWE5tHaCFaiBaihaALuqALuqALuqALuqALuqBbA7p7o06G
7t6KWrDu1UfLtsfRdcU05xMbP3DnYQvL9o2SJxsbzkzYtjDTdS19tPVWv6sfd/XWsa53O2mbme36
4plRd6AXDpdlwfW9szhA49BP2vW98XQlouuTZa8/r6fb2/Lx/gNQSwMEFAACAAgAOaQPS1HRB80Z
DAAAHLUBADIAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTEtc3RkZXJy
LnR4dFVUCQADHr2TWR69k1l1eAsAAQT1AQAABBQAAADtnV1vo0gWhqW5zFV+QmluxpaSCbaJP3LX
7SQtq3fW2aSn+3KFTTlhgsEDOJnc7G/fAgwuvgowYCftd6XRKqQ+DkWd57znkKIn158fqPVCrasr
c0WN68/39O81tZ2xYsyprlP15E9DY1cm15+vFUeZKTbNaknOyenJZDueumk/Ng2Dzh3NNO6ooWrG
41g3bcpad2Rp0JMve7LUHwy6w+RM255XV/PUUW4tcznWNWo47uyxMftDibenlvtrLRXNaJOUTlsD
PcvUmGktzrL+UB62BUMpM9NyvlmKYSvegP7M6iy18YpaC9Nafkrr8wddmtYba/5ZmT+zNXtwTCtr
fNaKu+Tez3KlU4eqUzaD4l77pi2pdatZbCla0j+DxWIhL+io06NSezMTP01kMG/GVjvLIItdfqHT
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
UMNQBtnKgPs+3Hv47kuv2+mfxS/s6bsvFURJkeGn5U+8xt5J5CkO8QdpM74CWLkK+SXlkxPVChb7
fRtZ72pM07+fsdn7NnXYct1Te6073LdwverxIdYtsGtuGszz1/R2bfjf820x2HlWJW+SeTMzgDbw
UcnIyHmfH0mYkf4LsatF22Z7caydGKmTSOOMjEtLb1QsenUHsejFLiQgmffSx6JeD7GZq4xWgZ3B
731DfWgpOgsk6ht5UuyIkaOUL3jByKMysuLrjwJRdrKr90fCOR74ke3KDN00Eca6ymJhkhnwoBeg
F6AXPmwAAVFAFBAFRAFRQBQQBUQBUUAUEAVEAVFAFBAFRAFRQBQQBUQBUUAUEAVEAVFAFBAFRAFR
QBQQBUQBUUAUEAVEAVFAFBAFRAFRQBQQBUTxb8D7rlj8H+COTGf5AwqOfVZhSNV/I7yxf/sVZ52r
f0bkoEeZmzynjJO5UA1QDTheCCNhJI68IidAlQF6AXoBRAFRQBQQBUQBUUAUEAVEAVFAFBAFRAFR
QBQQBUQBUUAUEAVEAVFAFBAFRAFRQBQQBUQBUUAUEAVEAVFAFBAFRAFRQBQQBUQBUUAUEAUnc3Ey
FydzcTIXJ3OhGqAacAoS+ivfCWKLsqNawz+iigCCAIIAgrQTRAFRQBQQBUQBUUAUEAVEQWkcpXGU
xlEah2qAakBpHEaifg+RiACCAIIAAqKAKCAKiAKigCggCogCooAoKI2jNI7SOErjUA1QDSiNw0gY
CSOREyAngF6AXkCVAUQBUUAUEAVEAVFAFBAFRAFRQBQQBUQBUUAUEAVEAVFAFBAFRAFRQBQQBUQB
UUAUEAVEAVFAFBAFRAFRQBQQBUQBUUAUEAVEAVFAFBAFJ3NxMhcnc3EyF6oBqgEnc2EkjISROJmL
nAB6AXoBegFEAVFAFBAFRAFRQBQQBUQBUUAUEAVEAVFAFBAFRAFRQBQQBUQBUUAUEAVEAVFAFBAF
RAFRQBQQBUQBUUAUEAVEAVFAFBAFRAFRQBQQBSdzcTIXJ3NxMheqAaoBqgFGHqf++ihrCZGIAIIA
Auwh7QRRQBQQBUQBUUAUEAVEAVFQGkdpHKVxlMahGqAaUBqHkRCJEIkIIAggIAqIAqKAKCAKiAKi
gCggCohybESpDQZs6ZaaZ8H2qb5quj72rnNN/fvMKn6HNzB2/UnXqVq+dcQu2zFX7t1HLdtc7cjS
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
li9VkotdIiu2zfiULT2ISXX+7hPjwEgeToYyg0oaiDvFiQjA4e1LoB+uViSpNvINCQIne64+oBxv
t5Zt+7uocI77sgYvuauqQeK+z6rhRkE/oZCMiIrFUhrlQiXdlC3ojlASL5v2IOFumgTxIL6JrFQv
RJZhmMdMZWUcFqGH46KAAMJddyRrZtH1PIxqqLIgaZcrqHx+t6y9qDAHf8GdI3VmO8y6XiQ4qtxp
nC1ai/vKx68T3A8cA8O0TGm+lT+UVFWv3Pc5zp5PtwVo345uNbeT/+pw2gGcBNE5vf9I8wyeSacV
0/b3o5/h96N2sHqug1UWsE1Zpzws1E9kjzlcnVc7aWfL7Wy5nS23s+XjZ8tnccs97rbf3pH/3zty
e+9t770/9703qebtdDfBgw6ydehWqBJdwOA+rWSmQt0xBPlFTtSqSQL/0uDewSBcV5Ohw0mibtJi
6YP8DaTGMxOQ0Ewu5FvrHeUXX+TaJw+RyoAcOkQ6LBwnf8XyLN9sbQdav9sL0QKQtu/rntX7usc3
wtP6dA4vFusG/hVfLD6gJf0HUEsDBBQAAgAIAFOkD0tMyOK0MwsAAMdgAQBDABwAc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9ucy1zdG9wLW9uLW5hdmlnYXRpb24tc3RkZXJyLnR4
dFVUCQADTb2TWU29k1l1eAsAAQT1AQAABBQAAADtXVtzqsgWfs+TP6FrXrZWJVWoeH0zmtRJ1alj
zk72mWeENjJB8AAme7/Mb58FKIJAgwa3t2+qpmaC3d/qXre+rV79NLp/4fYHt/t9a8HN0f13/v8l
d9yhYqrcMLh28zS6f1RU17J/9fsaN7jLR4qrTBSHsztW8X4eWqbJVVe3zFdrDZZeUvDrD1MnwlRm
/bXfT3yq1lhV+tmZTqfylPcadVmqUc3qXNHNGksBmCmmZvCRTyy/2Orv8YLbitcZh9r1OuM2Zwr9
W2/KUrvTk2WJEZ803Xy72Q3q2VosuMYUk1nrz7fMtD6ZK6KR1+rh0ra56YaUBBWoyNSy56saAVfC
er4MqtoktWYgrntFfacmvZAq8JuX//5bd71S0a/9/ht3x/aDQxUN3ZmtEZ7MqUUEtLW8K1nVk4SY
/4n+YlPd4Oxb5Rujxmq68y7oqaZro2STI/qnGpbDExXTBPp3nhI2674SZpnBuiUhDSo4jhpav2+v
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
Y3RzdG9yZS1jdXJzb3ItcHJpdmF0ZS1zdGRlcnIudHh0VVQJAAMyvZNZMr2TWXV4CwABBPUBAAAE
FAAAAO3dS3MaVxoG4L1W/gkspapxFTeBrF2M4ilqaoLKdrJHcGQzRt2aBlnxZn77NPdGdDfYki9x
nlRlYamBFvTT73u+ozjdi5dvQvIxJOfn8W2ILl6+Dv+9C5Nppx8Nwngchke/R6P0K92Llxf9af+q
PwlFR1aeV54ddb/e8w2Xx3fiKAqD6SiOLkM0HEXvOuN4EtKja81qu9E8bdUajWq72tx9pc0jz88H
uc/yKolvOuNRiKazV3/wnK3TVvn5zJ9i+OVnsnj83nM4vumPopNKzhu556mOs8+U/nOS92GMoo/x
h9C7DUl/9kS/RMO3ST+a9OdP+3Z0E5Ljk5JTiEse+GqUpBdA5i0czM5y50mOjodXuc89eX83Hcb3
0as4mf98eaf/v52vHZ9Ujqt/tq+vr09rZy9q9VA9WVxYr9JTi5NP6ScZxmEaVsevrrvNZ/Q2Xn/m
uUeWfDfnDPecYD39kGYnWPwWv+9Hw3G4mL/Y/sOWf15/oJP0vN6+D0mo9NN/a41W+0Wz3qy1KrcL
B0ef91SX8e1tes33o8r6k/9HJYrvK9Oy19h31p27JEmv2vUrlTwgPeQ6Tm6Wj1i8K+vHzT+Dostp
8XG97A8+pKf0Jr0Uyt7N4Wh4sXv8/mv5Cy7ReqO2ukRzr8HVmaxfIz2wl72Fnp8ny3tpfHM7O3KY
c0gcbT/Lm7vBIEwm6ak8rwwWb2Ylfb3J7F0cTbZuQrX62ewJ1081HE1u+9PB+18/ru80GXCN2Y0m
y212uy/64eZRkAFUOX6WvjfN9mm9VW+0Ws2TnYQpeaP3Sjudv89FibRzr34qbI3618eWeY2vhm12
RW2oZd/Zejv9zIvczd7crKL5I2d5VGvX2u0X1ZNyhr0HD3+aT6VWrTe/4ztWG1yX/tyTaT+Z/rHg
2ElP4l3IhOuefpGE/jQUPXanY9Tb7Va18LO7Cu9GUebh3e2P4kv7xL/DTXprSB+XfbbdV3tU73iK
y6TRPmtW15dJ8Q26l70zHXZ73pxO5g/pGXRmH1/6apVV30w/r/vR9P365pz56F6cteuVTQmsbO6b
s2utcVWtnoZ6vTms11rVs9bJ0eGX2CKOMl+Yn+aD6yg3ZX6/fZf0h+G3EIZheEi6VFvN9KYW7nO+
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
k/uZunrt3B/C8NqTD22ywqzuyuhzf3y1FHWtQG3VolWNF62wm3zD9YtK5SSu1Rq9WrVZOW0eH9z/
i52tIWt5fv3Piwy1sTT8PvyQdXrxP+O4F/fusyRUmo0gUfx5y8//etnzgQtXrtiZzoVcxA/XHB1G
h5vV6cYjpx9zvjYY3gTMnvc2i8/5ffam6O8fUvjeOaw7a9xt72O3Kr74qe8oRTceX1KVbj62vCvT
3rigwKJtt0CoASdz/fzdYpafvYyqIcU1Tuq1kzC9G6en96r42rt+ItFRtzMYXIQBH5ejHl6zve2b
LZCxvf+7YO3qbS+RvzPXHrxEYynxeTJrhO11qizm510zJD+PN35W/v0tH1ay/i8fUn7/LrUouG0/
xl9e/dEfjUdnyfq9G/4iOnwSpdMfRqPpT3P37snTSqO8sno7WXTCE2XT/1/2VM3Tyh1PNW2k3D2o
RqtW+EzLfsw93tvJSe1e8/LNw77O/CwsnlOFvu88ld5suXNza/u80HvgvLrvmtmcjenbL3Xm708x
f3ebPWa/2W/2m/1mv9lv9pv9Zr/Zv+/Zv+Ndyg51v9lv7Td/rf1mv9lv9pv938Hsnxzyad9kozQr
mv/nxY/YRYDVC99lwPoQt/y0/KvPPbD0hMPyQeUW5D6O5emR7vTPsz3lMHOicGn25Vn0y+EvB7OH
To5bXPSnH1Y0SD/H2XT2TE40dpJedDMcrn6ymnqzSyeT7tPk1y2mxzva6U34ZnPTrFlvnj65/YPo
Mg53QfgWsulkHX3FKB5/5p4//Au83+wtuWF3nr/n2+/a+Tc1isd/i8dv49HNYJw7izOV8lvM9MW4
umkS7tOb+PVNMjtPdDROZ6PafJPh3gsDiB9hxq89812TfmMY2/+i/M5Zf2zxTXnrceUAnK09uGCh
7G9/0L2mdKtRazy5/YONKX1XZMni6RXlwxwWPGoxzsXfzwY6m4OdQWCv9yW66ozygzytnFYM8mov
8Oz/Ld7D47OvnVh5ld2VP9Ugixfhs9JlZOd1+KxwLbEUW4otxVun6iMH+r0sIEQhClGIQhSiEIUo
RCEKUYhCFKIQhShEIYrjEI5DOA7hOITsIDvY0zVIg/x2efZBb/Hh6fd+H8pXZmRnNlQG8oK8oNeg
10AUohCFKEQhClGIQhSiEIUoRCEKUYhCFKIQhShEcQrMKTCnwJwC+15PgZnpZrqZ7rynKkGVoEpQ
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
cAZwBnAGcAZwBnAGcEYWzjg2bKgTG9R/Oq9yyl6djjLP2Uuzl/+CQG2n2kMfWAudoqsdBPOsoaCo
DC7Uv1LFQyAorhEGtdU0oLUvKwMTABMAE3Axwd6P+3VZXmACYAJgAmACYAJgAmACYAJgAmACYAJg
AmACYAJgAkQTABMAEwATABMAEwATABMAEwATABMAEwATABMAEwATrDFB5Ts2Wx6FAEwATABMAEwA
TABMAEwATABMAEwATABMAEwATABMgGgCYAJgAmACYAJgAmACYAJgAmACYAJgAmCCg2CCYx3uE3n9
wF1kXt9Y6AEXbKxlMTKdKZnNop1XudTcStmd+fJX5usbhiYPcj8FYtAROMSnQIyeola5VrgmOe17
OGsqpnXDeaLiq2deH1OfjzaUR+zByRvD1szvfabGktc+UUOXdxxlmLYWmrb/AVBLAwQUAAIACABK
pA9LAaxrl04EAADeMwAANgAcAHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tYmFkLXZlcnNpb25zLXBy
aXZhdGUtc3RkZXJyLnR4dFVUCQADPL2TWTy9k1l1eAsAAQT1AQAABBQAAADtWUtz4kYQvnPyT9BR
qspWjR5IgpstxxUOCa7Ym/sgNWayYqSMZJP99xkhIfQYDRjDmsqOq3xA9Lt7vml9zO7vnoC9AZtO
kxTo/d2f8M8rZHmAaQhxDNHoKyX8yez+7h7neIEzGJLUvmg3o9nl7EWVfJBQCmFOEvoINCL0JYiT
DLi06SDPdsauadvIQ07f015zOg2FVh5Ysg5iAjQvvHdsumNXHs/WRHR6JKX+wRj0NSbU0ASFPGBK
b1rif4aoGYS+Jd9gngLDhaFbGj0zTDO8NftM1sB04+xtPkdK1sS3HENiCi8SljeSucjA6tFC6JzX
c5mw9e2PiOEjh+Z3WCfsO7dwh8NvXO4pT9hQ7UrZpmBDotLhw1KKzRd/8wAqcxtG8qbwA6EkW4kS
Pe+ZvXaMUxisMPizMFiNoRpDNYZqDNUYqjYrtDndXmsHDpN1GkMOUZ3XNpMHwriCjv71lsvl2PQn
pg3I6Gmn5YQc0nVMgS73vCb5nJbpFV/ve/+c7JIupRqKkiYnktZsg5LorjCNYth9rhPKeNGeV8BA
w/zftF1vYnu+g7QqcxWNiuakaBrnuj/iPT+CgyMFu47BAxRGRKJHydv/qVB4dQV/4G74i36Jj0OA
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
vHjx4sWLfwHxI5eD5xfIbhpO/FqWn7DSRBNNNNFEE03W32RkjuKlzF5RjQYaaKCBBhpooIEGGmig
gQYaaKCBBhpooIEGGmiggQYaaKCBBhpooIEGGmiggQYaaKCBBhpooIEGGmiggQYaaKCBBhpooIEG
GmiggQYaaKCBBhpooIEGGmiggQYaaKCBBhpooIEGGmiggQYaaKCBBhpooIEGGmiggQYaaKCBBhpo
oIEGGmiggQYaaKCBBhpooIEGGmiggQYaaKCBBhpooIEGGmiggQYaaKCBBhpooIEGGmiggQYaaKCB
BhpooIEGGmiggQYaaKCBBhpooIEGGmjclUbRL6338k6Wj/IYfnJ83Andf4Tul9DptfoL0+jleX+x
foRf0dZjcLseVyNLu0naCx976aBMtN3NhqOaXsik2x9AGHZdK/yx5DF8WZqGQaNv2fDTkmGU/+Hv
NCmIFH/+EHfj07gT5izL9kWcpDvRVJdFy7zaRrPdPC2tUfQ9y/KLT2Olvv7rn0Xtot2fceNHwfVr
N8unxnPT6Hp1xs2fcdoI2zvFiq9nvWIDqO7uVWv7e7v7744Oa7u1t5MfRGeh2FiK4eahkeXNzqJR
fs7DoMdCcn1BlC3YCusl2m7ErdZpAWBn1sZQVPm0xlVUsl9/mrlt2rXt2lfbzYy9tT2+s0ztrtd/
H+6vw20+buUhbv6KzuPO6L56VDmqrLqvPkujPE2UBmmQBvl8B2maYppimmK+wCiMwiiMwiiMwiiM
wiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiM
wiiMwiiMchejrOSEjTyrzCiMwijmKOYojMIojMIojMIojMIojMIojMIojMIojOLKrCuzjMIojGKO
wiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiMwiiM4rse3/UwCqOYo5ijLGeU1QWwdgcxCqMwyov8
DeJHmtUwCqM462EURmEUcxRnPa6jMAqjmKMwCqMwijkKozAKozAKozAKozCKsx5GYRRGYRRGYRRG
cdbDKIzCKIzCKGu5Z5YACODFCWD9B1ZzFHMUiqIocxRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRG
YRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRGYRRv
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
KkEZuZc55sgoab3Aj6IlnKKv7hWg0xNlm6TMeefPzBq3SAWLlhpx1QGqsjonxYOO88I33mxwVi8t
OxxFXn5dXTJfrre1VjStqKGdu9mSR8VRVc+WmmdW7VslzIVMMqgriKWoLJgq9CpxeIcJTtddgSi0
posTj0KgSEt9RhuZuv6S58UyPIuyh0OkAABCq68lNPNksoyTFqisMIV6CeXLG/waXmFGEcEURA+z
368nqwwltSnL22drOUGdPOBkiriJh7UaSfVOo63GCF+XyCwBVZMwpEsr/HxGWiZPkN/T/noP6tQ2
i5rzmSYfZJN0q5t9vGu75JN0DqRYYaPoK0SJDjsy1Q1LIe4lZ3+TFwd/zksHucS8uvi1yaTxaOXk
RybqaWzSqrjrM503XJUuK5aHeXHyalFVz5xgQal61vVZ6WU9QMtj3jKI5jTcjNnkfJU17GP9+1j/
Pta/97r+fbTxl7Tx1uVZ+l6Y//LlaOqa5jSLt8JV8vgbmMBaT/woT22+O4gznn33kss9QNxwbX3Y
eH/BfdJmuJajS/Gs/DSuLnrj/1qi/Pps32CaemC56qyn+M7s6n9QSwMEFAACAAgAZKQPS6+aafPL
BQAAIyoAAE8AHABzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpz
LXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1zdGRlcnIudHh0VVQJAANsvZNZbL2TWXV4CwABBPUBAAAE
FAAAAO1aS3PiRhC+c+InzG2hardKLyTgZot1hapkcRZvchbSAIrFSJGEvb7kt6dHLyTNQ2DwhiR2
lavMuF/T3V9P9wzz2e0Sx084nk7DCJPZ7Vf85x4nqe0QFwcB9nrfiA8r89ntzEmdlZNgESX6hPq9
+dvJ8wp6OyQEu6kfkntMPJ9s7CBMMFCrhmLpxshUdV2xFIPVdOCcTl2ulLs43NmBj0lKtbdkmiNT
bk8mwnu9JTl/pw2DneOTIeI4skPUoC4JfoasYQ+xQxKnsMxZhXH6u59uwz2EJQhWjvso0Z6R1wRk
ARSTe753j+N1GO9ugPzJSevK5+QWlEFYlmkY497AW3FlRIUAnmYOuU+ewke8AC6Hkt0Qr8b04O9w
PBj2fsG7MH4BvroFgt3J/Qc7LLfW2k+uo77EOr4yZbH6A4JamPEc+w1H3fnET7aAK7GjQ8l+7/xY
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
9mY+gHlT6jRa7Q5ZiV7CbFOxO+Ow8cg10OFSig50SSNsrjTNxoZhBYbuaCNn2Ose2KKeMQ9yM48d
yStTP3YPiRfg3zAOcNClPGmOBVyGXzjPP989+MQiyrw65FhYrP6EUBUkdwUlDvWHDT83VtYVZQz6
qP8P6wDyT8By10HQ0LlPwKXo+/0JK1cc3Fg7FnBVB3sXpECGCC/cA9ZVlkBpM8jE9XLTVN0If4uv
JS9/zbUCqiqZtyEgIClebngBDQha3JXwn8+QDldNyzYNG3BvjUbyYrUUGXGiR9DA96JoBQYP5WwP
e055kRVQ5vTyWVCT5m3BZmZtccUmFUUvSPFif1GolPhsQwiL48YzefyqZZKLQbVEnr8VW0hf1b7T
ygEJm+R/+19RnPsbpXnyMClrOyOtRRX244T+f+cRv8o0Wa4h1AS46arGtm2jE4aWp7meRYw4/4Vc
fHbaLzlZxhTo/ZvjiRjoWvicwqaPL0sKa58Oa+dlukKqQqpCqkKqQqpCqkKqQqpCqkKqQqpCqkKq
QqpCqkKqQqpCqkKqQqpCqkKqQqpCqkKqQqpCqkKqQqpC6n+I1Mv11cXbbZjVm/9ewiia5s/lvZrn
efJ8q1tbAI/PUGvia3zZ0rJWOEo2tnXsMdmoS9m9xxUSdfDJF59mLtO8x1XbxRsnde3xdql3Zo8N
TXuHtukpLw0aXXwcHHCt7gvWACWs4qQFMeuQtgeWBPD5Go+PvMIwEacLmx5mT3bX6wwntS7vwil5
Z3b/DS3NglDehiRMN7/QA4LFwnkBdgKwqxA/6Y+SWKKKM+Zpj1s6/yTqzsHBm2n2c+Xj+wwv1ff4
gEkYbXTe5PjlhkMaUxXVuN/FRkfGpnPK6MjPPokhnDlsTtCfvJqdqYl3NarRXUsbHU2CNMbpdRcu
j8IEko7l11VvvdcVzp/P9xew4310o/s+xYz7/+KAp8W7xuJ7j/R7/wJQSwMEFAACAAgAb6QPS58/
ql7RAwAARxUAAEkAHABzdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QtcHJpdmF0ZS1zdGRlcnIudHh0VVQJAAOBvZNZgb2TWXV4CwABBPUBAAAEFAAA
AO1Yy3KbMBTde5VPYIln2hleBtu7BNdTL1pnGqd7Ga5jTUCigsTNpt9e8TAWIITzmmZRz3hh+T6O
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
/XAYk2dqZDuz73fwe9D6z7WOKAPL2ESkPfU3FD88C8scysULUEsDBBQAAgAIAAWkD0uAGA2mpwAA
ANIAAAA1ABwAc3RvcmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLXN0ZGVy
ci50eHRVVAkAA7m8k1m5vJNZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKF
ivacpFsIpLthm1R9e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs
5ULdOOQRJ3U0yai6u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pk
O7Pvd/B70PrPtY4oA8vYRKQ99TcUPzwLyxzKxQtQSwMEFAACAAgABqQPS4AYDaanAAAA0gAAAEYA
HABzdG9yYWdlL3dlYnNxbC9jaGFuZ2UtdmVyc2lvbi1uby1jcmFzaC1vbi1wcmVmbGlnaHQtZmFp
bHVyZS1zdGRlcnIudHh0VVQJAAO7vJNZu7yTWXV4CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2
oBGKlyCCaE8ihYr2nKRbCKS7YZtUfXt/0NsMfDN12zathisZGxASQ8pCwASenOCIlEwAkxMvZ+Ny
HqFYA3ECQ4AiLOVC3TjkESd1NMmouruoDu3JJ3XhLA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWm
KkFD/XAYk2dqZDuz73fwe9D6z7WOKAPL2ESkPfU3FD88C8scysULUEsDBBQAAgAIAAekD0v/IS/d
sgAAAEgDAAAoABwAc3RvcmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24tc3RkZXJyLnR4dFVUCQAD
vryTWb68k1l1eAsAAQT1AQAABBQAAADtj80KwjAQhO8+xR7bg0YQL0EE0Z5ECi3qOUlXCKS7YZv4
8/ZW0Vfw5G0Gvhn4qqapGw1HMjYgJIaUhYAJPDnBHimZACYnnl6Ny7mHYg7ECQwBirCUE3XikHsc
1M4ko6pzq85o9z6plrM4fLUtC6oDdzmM2A1tN5LWDPievMLMxVgslosSNFR3hzF5plpWV/bdGj4P
Wn9xrSPKhaWvI9KGuhOKvzwKyxzKSfU3+hv93OgJUEsDBBQAAgAIAAikD0uAGA2mpwAAANIAAAAy
ABwAc3RvcmFnZS93ZWJzcWwvY2xvc2UtZHVyaW5nLXN0cmVzcy10ZXN0LXN0ZGVyci50eHRVVAkA
A8C8k1nAvJNZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKFivacpFsIpLth
m1R9e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs5ULdOOQRJ3U0
yai6u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pkO7Pvd/B70PrP
tY4oA8vYRKQ99TcUPzwLyxzKxQtQSwMEFAACAAgACqQPS71sQcWtAAAApAEAADQAHABzdG9yYWdl
L3dlYnNxbC9kYXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9hZC1zdGRlcnIudHh0VVQJAAPDvJNZw7yT
WXV4CwABBPUBAAAEFAAAAN2PywrCMBBF937FLNuFRhA3QQTRrEQKFdt1ko4QSGfCmPj4ex/oT7i7
F865cE3bNq2GE1kXETJDLkLABIG84IiUbQRbMk+v1pcyQjUH4gyWAEVY6onqOJYRL2pns1WmP6oe
3T5kdeQiHt9ty4LqwEOJL+yGbniRzl7wo7zDzKdULZaLGjSYu8eUA1MjqyuHYQ3fBa1/uNYJ5cwy
NglpQ0OHEs6PyjHHemL+7tETUEsDBBQAAgAIAAqkD0uAGA2mpwAAANIAAAApABwAc3RvcmFnZS93
ZWJzcWwvZW1wdHktc3RhdGVtZW50LXN0ZGVyci50eHRVVAkAA8S8k1nEvJNZdXgLAAEE9QEAAAQU
AAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKFivacpFsIpLthm1R9e3/Q2wx8M3XbNq2GKxkbEBJD
ykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs5ULdOOQRJ3U0yai6u6gO7ckndeEsDj/twILqzH0O
b3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pkO7Pvd/B70PrPtY4oA8vYRKQ99TcUPzwLyxzKxQtQ
SwMEFAACAAgAC6QPS4AYDaanAAAA0gAAACoAHABzdG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1h
cmdzLXN0ZGVyci50eHRVVAkAA8a8k1nGvJNZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/ag
EYqXIIJoTyKFivacpFsIpLthm1R9e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43Ie
oVgDcQJDgCIs5ULdOOQRJ3U0yai6u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYq
QUP9cBiTZ2pkO7Pvd/B70PrPtY4oA8vYRKQ99TcUPzwLyxzKxQtQSwMEFAACAAgADKQPS4AYDaan
AAAA0gAAADIAHABzdG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1yb3dzQWZmZWN0ZWQtc3RkZXJy
LnR4dFVUCQADyLyTWci8k1l1eAsAAQT1AQAABBQAAAA1zM0KwjAQBOC7T7HH9qARipcggmhPIoWK
9pykWwiku2GbVH17f9DbDHwzdds2rYYrGRsQEkPKQsAEnpzgiJRMAJMTL2fjch6hWANxAkOAIizl
Qt045BEndTTJqLq7qA7tySd14SwOP+3AgurMfQ5vdkfbv6U1E34nn7ByMRbVpipBQ/1wGJNnamQ7
s+938HvQ+s+1jigDy9hEpD31NxQ/PAvLHMrFC1BLAwQUAAIACAANpA9LgBgNpqcAAADSAAAAPwAc
AHN0b3JhZ2Uvd2Vic3FsL2V4ZWN1dGVzcWwtYWNjZXB0cy1vbmx5LW9uZS1zdGF0ZW1lbnQtc3Rk
ZXJyLnR4dFVUCQADyryTWcq8k1l1eAsAAQT1AQAABBQAAAA1zM0KwjAQBOC7T7HH9qARipcggmhP
IoWK9pykWwiku2GbVH17f9DbDHwzdds2rYYrGRsQEkPKQsAEnpzgiJRMAJMTL2fjch6hWANxAkOA
IizlQt045BEndTTJqLq7qA7tySd14SwOP+3AgurMfQ5vdkfbv6U1E34nn7ByMRbVpipBQ/1wGJNn
amQ7s+938HvQ+s+1jigDy9hEpD31NxQ/PAvLHMrFC1BLAwQUAAIACAAPpA9LgBgNpqcAAADSAAAA
LgAcAHN0b3JhZ2Uvd2Vic3FsL2hhc2gtY2hhbmdlLXdpdGgteGhyLXN0ZGVyci50eHRVVAkAA828
k1nNvJNZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKFivacpFsIpLthm1R9
e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs5ULdOOQRJ3U0yai6
u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pkO7Pvd/B70PrPtY4o
A8vYRKQ99TcUPzwLyxzKxQtQSwMEFAACAAgAEKQPS71sQcWtAAAApAEAAD8AHABzdG9yYWdlL3dl
YnNxbC9tdWx0aXBsZS1kYXRhYmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLXN0ZGVyci50eHRVVAkA
A8+8k1nPvJNZdXgLAAEE9QEAAAQUAAAA3Y/LCsIwEEX3fsUs24VGEDdBBNGsRAoV23WSjhBIZ8KY
+Ph7H+hPuLsXzrlwTds2rYYTWRcRMkMuQsAEgbzgiJRtBFsyT6/WlzJCNQfiDJYARVjqieo4lhEv
amezVaY/qh7dPmR15CIe323LgurAQ4kv7IZueJHOXvCjvMPMp1QtlosaNJi7x5QDUyOrK4dhDd8F
rX+41gnlzDI2CWlDQ4cSzo/KMcd6Yv7u0RNQSwMEFAACAAgAEKQPS11gFnGwAAAAdgIAAEQAHABz
dG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMt
c3RkZXJyLnR4dFVUCQAD0LyTWdC8k1l1eAsAAQT1AQAABBQAAADtj80KwjAQhO8+xR7bg0YQL0EE
0Z5ECi3qOUlXCKS7YZv48/ZW0Xfw4G0Gvhn4qqapGw1HMjYgJIaUhYAJPDnBHimZACYnnl6Ny7mH
Yg7ECQwBirCUE3XikHsc1M4ko6pzq85o9z6plrM4fLUtC6oDdzmM2A1tN5LWDPievMLMxVgslosS
NFR3hzF5plpWV/bdGj4PWn9xrSPKhaWvI9KGuhOKvzwKyxzKSfU3+nmjJ1BLAwQUAAIACAARpA9L
gBgNpqcAAADSAAAALwAcAHN0b3JhZ2Uvd2Vic3FsL211bHRpcGxlLXRyYW5zYWN0aW9ucy1zdGRl
cnIudHh0VVQJAAPSvJNZ0ryTWXV4CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2oBGKlyCCaE8i
hYr2nKRbCKS7YZtUfXt/0NsMfDN12zathisZGxASQ8pCwASenOCIlEwAkxMvZ+NyHqFYA3ECQ4Ai
LOVC3TjkESd1NMmouruoDu3JJ3XhLA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dq
ZDuz73fwe9D6z7WOKAPL2ESkPfU3FD88C8scysULUEsDBBQAAgAIABKkD0uAGA2mpwAAANIAAAAo
ABwAc3RvcmFnZS93ZWJzcWwvbnVsbC1jYWxsYmFja3Mtc3RkZXJyLnR4dFVUCQAD1LyTWdS8k1l1
eAsAAQT1AQAABBQAAAA1zM0KwjAQBOC7T7HH9qARipcggmhPIoWK9pykWwiku2GbVH17f9DbDHwz
dds2rYYrGRsQEkPKQsAEnpzgiJRMAJMTL2fjch6hWANxAkOAIizlQt045BEndTTJqLq7qA7tySd1
4SwOP+3AgurMfQ5vdkfbv6U1E34nn7ByMRbVpipBQ/1wGJNnamQ7s+938HvQ+s+1jigDy9hEpD31
NxQ/PAvLHMrFC1BLAwQUAAIACAATpA9LvWxBxa0AAACkAQAASAAcAHN0b3JhZ2Uvd2Vic3FsL29w
ZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVU
CQAD1byTWdW8k1l1eAsAAQT1AQAABBQAAADdj8sKwjAQRfd+xSzbhUYQN0EE0axEChXbdZKOEEhn
wpj4+Hsf6E+4uxfOuXBN2zathhNZFxEyQy5CwASBvOCIlG0EWzJPr9aXMkI1B+IMlgBFWOqJ6jiW
ES9qZ7NVpj+qHt0+ZHXkIh7fbcuC6sBDiS/shm54kc5e8KO8w8ynVC2Wixo0mLvHlANTI6srh2EN
3wWtf7jWCeXMMjYJaUNDhxLOj8oxx3pi/u7RE1BLAwQUAAIACAAUpA9L/yEv3bIAAABIAwAAOQAc
AHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2stc3RkZXJyLnR4
dFVUCQAD17yTWde8k1l1eAsAAQT1AQAABBQAAADtj80KwjAQhO8+xR7bg0YQL0EE0Z5ECi3qOUlX
CKS7YZv48/ZW0Vfw5G0Gvhn4qqapGw1HMjYgJIaUhYAJPDnBHimZACYnnl6Ny7mHYg7ECQwBirCU
E3XikHsc1M4ko6pzq85o9z6plrM4fLUtC6oDdzmM2A1tN5LWDPievMLMxVgslosSNFR3hzF5plpW
V/bdGj4PWn9xrSPKhaWvI9KGuhOKvzwKyxzKSfU3+hv93OgJUEsDBBQAAgAIABWkD0uAGA2mpwAA
ANIAAAA1ABwAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1lbXB0eS12ZXJzaW9uLXN0ZGVy
ci50eHRVVAkAA9m8k1nZvJNZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKF
ivacpFsIpLthm1R9e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs
5ULdOOQRJ3U0yai6u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pk
O7Pvd/B70PrPtY4oA8vYRKQ99TcUPzwLyxzKxQtQSwMEFAACAAgAFaQPS4AYDaanAAAA0gAAADQA
HABzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS1zdGRlcnIudHh0VVQJ
AAPavJNZ2ryTWXV4CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2oBGKlyCCaE8ihYr2nKRbCKS7
YZtUfXt/0NsMfDN12zathisZGxASQ8pCwASenOCIlEwAkxMvZ+NyHqFYA3ECQ4AiLOVC3TjkESd1
NMmouruoDu3JJ3XhLA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dqZDuz73fwe9D6
z7WOKAPL2ESkPfU3FD88C8scysULUEsDBBQAAgAIABekD0tPnOOYCgEAALgCAAA5ABwAc3RvcmFn
ZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1zZXQtZW1wdHktdmVyc2lvbi1zdGRlcnIudHh0VVQJAAPe
vJNZ3ryTWXV4CwABBPUBAAAEFAAAAN2RT0vEMBDF7/sp5iQtqF1dBAkiiNuTSKHV3eOSplMJpjNl
mlT329vUP4cV9uTJW8K893jzm7wsi1LBM+naIXgGQS8WRwRnBw/cQqO9rvWAQLrDAVoWYLEvlqC1
Dne75SLbsAvTLFtP0izfVtkW6wfrs4qDGIy/exbMHrkJbpK9Yf0dOlvi40m0eUU5N32fXF9epKCg
Znbw5VXqQKhUgw49FnOVxDBNbX/EFZog1u8/p9EKJ6dHstYxyzJNDTFd5IdMfBACJrBkBDskrx3o
4Pls1CaEDpIlEHvQBCjCkv4JkRnF6moVUeTvBvtYsJCbkW1z+3sXpXqU6Thd0SPdUbNBse0+iRD/
40YfUEsDBBQAAgAIABikD0u9bEHFrQAAAKQBAABFABwAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRh
YmFzZS13aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy1zdGRlcnIudHh0VVQJAAPgvJNZ4LyT
WXV4CwABBPUBAAAEFAAAAN2PywrCMBBF937FLNuFRhA3QQTRrEQKFdt1ko4QSGfCmPj4ex/oT7i7
F865cE3bNq2GE1kXETJDLkLABIG84IiUbQRbMk+v1pcyQjUH4gyWAEVY6onqOJYRL2pns1WmP6oe
3T5kdeQiHt9ty4LqwEOJL+yGbniRzl7wo7zDzKdULZaLGjSYu8eUA1MjqyuHYQ3fBa1/uNYJ5cwy
NglpQ0OHEs6PyjHHemL+7tETUEsDBBQAAgAIABmkD0uAGA2mpwAAANIAAAA5ABwAc3RvcmFnZS93
ZWJzcWwvcHJpdmF0ZS1icm93c2luZy1ub3JlYWQtbm93cml0ZS1zdGRlcnIudHh0VVQJAAPhvJNZ
4byTWXV4CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2oBGKlyCCaE8ihYr2nKRbCKS7YZtUfXt/
0NsMfDN12zathisZGxASQ8pCwASenOCIlEwAkxMvZ+NyHqFYA3ECQ4AiLOVC3TjkESd1NMmouruo
Du3JJ3XhLA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dqZDuz73fwe9D6z7WOKAPL
2ESkPfU3FD88C8scysULUEsDBBQAAgAIABukD0tdYBZxsAAAAHYCAABHABwAc3RvcmFnZS93ZWJz
cWwvcmVhZC1hbmQtd3JpdGUtdHJhbnNhY3Rpb25zLWRvbnQtcnVuLXRvZ2V0aGVyLXN0ZGVyci50
eHRVVAkAA+W8k1nlvJNZdXgLAAEE9QEAAAQUAAAA7Y/NCsIwEITvPsUe24NGEC9BBNGeRAot6jlJ
Vwiku2Gb+PP2VtF38OBtBr4Z+KqmqRsNRzI2ICSGlIWACTw5wR4pmQAmJ55ejcu5h2IOxAkMAYqw
lBN14pB7HNTOJKOqc6vOaPc+qZazOHy1LQuqA3c5jNgNbTeS1gz4nrzCzMVYLJaLEjRUd4cxeaZa
Vlf23Ro+D1p/ca0jyoWlryPShroTir88Csscykn1N/p5oydQSwMEFAACAAgAHKQPS71sQcWtAAAA
pAEAAEAAHABzdG9yYWdlL3dlYnNxbC9yZWFkLXRyYW5zYWN0aW9ucy1ydW5uaW5nLWNvbmN1cnJl
bnRseS1zdGRlcnIudHh0VVQJAAPnvJNZ57yTWXV4CwABBPUBAAAEFAAAAN2PywrCMBBF937FLNuF
RhA3QQTRrEQKFdt1ko4QSGfCmPj4ex/oT7i7F865cE3bNq2GE1kXETJDLkLABIG84IiUbQRbMk+v
1pcyQjUH4gyWAEVY6onqOJYRL2pns1WmP6oe3T5kdeQiHt9ty4LqwEOJL+yGbniRzl7wo7zDzKdU
LZaLGjSYu8eUA1MjqyuHYQ3fBa1/uNYJ5cwyNglpQ0OHEs6PyjHHemL+7tETUEsDBBQAAgAIAByk
D0uAGA2mpwAAANIAAAAoABwAc3RvcmFnZS93ZWJzcWwvc3FsLWRhdGEtdHlwZXMtc3RkZXJyLnR4
dFVUCQAD6LyTWei8k1l1eAsAAQT1AQAABBQAAAA1zM0KwjAQBOC7T7HH9qARipcggmhPIoWK9pyk
Wwiku2GbVH17f9DbDHwzdds2rYYrGRsQEkPKQsAEnpzgiJRMAJMTL2fjch6hWANxAkOAIizlQt04
5BEndTTJqLq7qA7tySd14SwOP+3AgurMfQ5vdkfbv6U1E34nn7ByMRbVpipBQ/1wGJNnamQ7s+93
8HvQ+s+1jigDy9hEpD31NxQ/PAvLHMrFC1BLAwQUAAIACAAdpA9LvWxBxa0AAACkAQAAQQAcAHN0
b3JhZ2Uvd2Vic3FsL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRl
cnIudHh0VVQJAAPqvJNZ6ryTWXV4CwABBPUBAAAEFAAAAN2PywrCMBBF937FLNuFRhA3QQTRrEQK
Fdt1ko4QSGfCmPj4ex/oT7i7F865cE3bNq2GE1kXETJDLkLABIG84IiUbQRbMk+v1pcyQjUH4gyW
AEVY6onqOJYRL2pns1WmP6oe3T5kdeQiHt9ty4LqwEOJL+yGbniRzl7wo7zDzKdULZaLGjSYu8eU
A1MjqyuHYQ3fBa1/uNYJ5cwyNglpQ0OHEs6PyjHHemL+7tETUEsDBBQAAgAIACCkD0uAGA2mpwAA
ANIAAAAyABwAc3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLXN0ZGVyci50
eHRVVAkAA+y8k1nsvJNZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKFivac
pFsIpLthm1R9e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs5ULd
OOQRJ3U0yai6u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pkO7Pv
d/B70PrPtY4oA8vYRKQ99TcUPzwLyxzKxQtQSwMEFAACAAgAIaQPS71sQcWtAAAApAEAAEMAHABz
dG9yYWdlL3dlYnNxbC9zdGF0ZW1lbnQtc3VjY2Vzcy1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1z
dGRlcnIudHh0VVQJAAPuvJNZ7ryTWXV4CwABBPUBAAAEFAAAAN2PywrCMBBF937FLNuFRhA3QQTR
rEQKFdt1ko4QSGfCmPj4ex/oT7i7F865cE3bNq2GE1kXETJDLkLABIG84IiUbQRbMk+v1pcyQjUH
4gyWAEVY6onqOJYRL2pns1WmP6oe3T5kdeQiHt9ty4LqwEOJL+yGbniRzl7wo7zDzKdULZaLGjSY
u8eUA1MjqyuHYQ3fBa1/uNYJ5cwyNglpQ0OHEs6PyjHHemL+7tETUEsDBBQAAgAIACOkD0uAGA2m
pwAAANIAAAAqABwAc3RvcmFnZS93ZWJzcWwvc3VjY2Vzcy1jYWxsYmFjay1zdGRlcnIudHh0VVQJ
AAPxvJNZ8byTWXV4CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2oBGKlyCCaE8ihYr2nKRbCKS7
YZtUfXt/0NsMfDN12zathisZGxASQ8pCwASenOCIlEwAkxMvZ+NyHqFYA3ECQ4AiLOVC3TjkESd1
NMmouruoDu3JJ3XhLA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dqZDuz73fwe9D6
z7WOKAPL2ESkPfU3FD88C8scysULUEsDBBQAAgAIACKkD0uAGA2mpwAAANIAAABDABwAc3RvcmFn
ZS93ZWJzcWwvc3VjY2Vzcy1jYWxsYmFjay13aGVuLXBhZ2UtZGVmZXJzLWxvYWRpbmctc3RkZXJy
LnR4dFVUCQAD77yTWe+8k1l1eAsAAQT1AQAABBQAAAA1zM0KwjAQBOC7T7HH9qARipcggmhPIoWK
9pykWwiku2GbVH17f9DbDHwzdds2rYYrGRsQEkPKQsAEnpzgiJRMAJMTL2fjch6hWANxAkOAIizl
Qt045BEndTTJqLq7qA7tySd14SwOP+3AgurMfQ5vdkfbv6U1E34nn7ByMRbVpipBQ/1wGJNnamQ7
s+938HvQ+s+1jigDy9hEpD31NxQ/PAvLHMrFC1BLAwQUAAIACAAkpA9LgBgNpqcAAADSAAAAKQAc
AHN0b3JhZ2Uvd2Vic3FsL3Rlc3QtYXV0aG9yaXplci1zdGRlcnIudHh0VVQJAAPzvJNZ87yTWXV4
CwABBPUBAAAEFAAAADXMzQrCMBAE4LtPscf2oBGKlyCCaE8ihYr2nKRbCKS7YZtUfXt/0NsMfDN1
2zathisZGxASQ8pCwASenOCIlEwAkxMvZ+NyHqFYA3ECQ4AiLOVC3TjkESd1NMmouruoDu3JJ3Xh
LA4/7cCC6sx9Dm92R9u/pTUTfiefsHIxFtWmKkFD/XAYk2dqZDuz73fwe9D6z7WOKAPL2ESkPfU3
FD88C8scysULUEsDBBQAAgAIACWkD0uAGA2mpwAAANIAAAA+ABwAc3RvcmFnZS93ZWJzcWwvdHJh
bnNhY3Rpb24tY2FsbGJhY2stZXhjZXB0aW9uLWNyYXNoLXN0ZGVyci50eHRVVAkAA/W8k1n1vJNZ
dXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKFivacpFsIpLthm1R9e3/Q2wx8
M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs5ULdOOQRJ3U0yai6u6gO7ckn
deEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pkO7Pvd/B70PrPtY4oA8vYRKQ9
9TcUPzwLyxzKxQtQSwMEFAACAAgAJqQPS71sQcWtAAAApAEAAD0AHABzdG9yYWdlL3dlYnNxbC90
cmFuc2FjdGlvbi1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIudHh0VVQJAAP3vJNZ97yT
WXV4CwABBPUBAAAEFAAAAN2PywrCMBBF937FLNuFRhA3QQTRrEQKFdt1ko4QSGfCmPj4ex/oT7i7
F865cE3bNq2GE1kXETJDLkLABIG84IiUbQRbMk+v1pcyQjUH4gyWAEVY6onqOJYRL2pns1WmP6oe
3T5kdeQiHt9ty4LqwEOJL+yGbniRzl7wo7zDzKdULZaLGjSYu8eUA1MjqyuHYQ3fBa1/uNYJ5cwy
NglpQ0OHEs6PyjHHemL+7tETUEsDBBQAAgAIACekD0u9bEHFrQAAAKQBAABDABwAc3RvcmFnZS93
ZWJzcWwvdHJhbnNhY3Rpb24tZXJyb3ItY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4
dFVUCQAD+byTWfm8k1l1eAsAAQT1AQAABBQAAADdj8sKwjAQRfd+xSzbhUYQN0EE0axEChXbdZKO
EEhnwpj4+Hsf6E+4uxfOuXBN2zathhNZFxEyQy5CwASBvOCIlG0EWzJPr9aXMkI1B+IMlgBFWOqJ
6jiWES9qZ7NVpj+qHt0+ZHXkIh7fbcuC6sBDiS/shm54kc5e8KO8w8ynVC2Wixo0mLvHlANTI6sr
h2EN3wWtf7jWCeXMMjYJaUNDhxLOj8oxx3pi/u7RE1BLAwQUAAIACAAopA9LgBgNpqcAAADSAAAA
NAAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWVycm9yLWNhbGxiYWNrLXN0ZGVyci50eHRV
VAkAA/u8k1n7vJNZdXgLAAEE9QEAAAQUAAAANczNCsIwEATgu0+xx/agEYqXIIJoTyKFivacpFsI
pLthm1R9e3/Q2wx8M3XbNq2GKxkbEBJDykLABJ6c4IiUTACTEy9n43IeoVgDcQJDgCIs5ULdOOQR
J3U0yai6u6gO7ckndeEsDj/twILqzH0Ob3ZH27+lNRN+J5+wcjEW1aYqQUP9cBiTZ2pkO7Pvd/B7
0PrPtY4oA8vYRKQ99TcUPzwLyxzKxQtQSwMEFAACAAgAKaQPS4AYDaanAAAA0gAAAC8AHABzdG9y
YWdlL3dlYnNxbC90cmFuc2FjdGlvbi1wcm90b3R5cGUtc3RkZXJyLnR4dFVUCQAD/byTWf28k1l1
eAsAAQT1AQAABBQAAAA1zM0KwjAQBOC7T7HH9qARipcggmhPIoWK9pykWwiku2GbVH17f9DbDHwz
dds2rYYrGRsQEkPKQsAEnpzgiJRMAJMTL2fjch6hWANxAkOAIizlQt045BEndTTJqLq7qA7tySd1
4SwOP+3AgurMfQ5vdkfbv6U1E34nn7ByMRbVpipBQ/1wGJNnamQ7s+938HvQ+s+1jigDy9hEpD31
NxQ/PAvLHMrFC1BLAwQUAAIACAAqpA9LvWxBxa0AAACkAQAARQAcAHN0b3JhZ2Uvd2Vic3FsL3Ry
YW5zYWN0aW9uLXN1Y2Nlc3MtY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUCQAD
/7yTWf+8k1l1eAsAAQT1AQAABBQAAADdj8sKwjAQRfd+xSzbhUYQN0EE0axEChXbdZKOEEhnwpj4
+Hsf6E+4uxfOuXBN2zathhNZFxEyQy5CwASBvOCIlG0EWzJPr9aXMkI1B+IMlgBFWOqJ6jiWES9q
Z7NVpj+qHt0+ZHXkIh7fbcuC6sBDiS/shm54kc5e8KO8w8ynVC2Wixo0mLvHlANTI6srh2EN3wWt
f7jWCeXMMjYJaUNDhxLOj8oxx3pi/u7RE1BLAwQKAAAAAABopA9LAAAAAAAAAAAAAAAABwAcAHdl
YnJ0Yy9VVAkAA3O9k1newJNZdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAG+kD0sAAAAAAAAAAAAA
AAATABwAd2VicnRjL2RhdGFjaGFubmVsL1VUCQADgr2TWd7Ak1l1eAsAAQT1AQAABBQAAABQSwME
FAACAAgAaKQPS7LPnou0AAAAbAMAACMAHAB3ZWJydGMvZGF0YWNoYW5uZWwvYmFzaWMtc3RkZXJy
LnR4dFVUCQADc72TWXO9k1l1eAsAAQT1AQAABBQAAADtkLsKwkAQRXu/YspYGBITRFIIinbBwiiW
YR+jBuJu2BkJ/r27iv5ArMSphgtnuGcija2411IQ6lr2GCtVTGfpuIDVcQMVMjfmDMTCMciGnWAE
tgVkSZhRNBAnxZ1PDXXWcYDzeeLhysf7dzxZ7JCQK3YorlG4Tc8VjGU42ZvR8eAef40f0uhROlaE
RI01AU6zNPf0UuugshYsXvVBibZFDf0FDQT5+mNfQ0OwPZRl/L23PABQSwMEFAACAAgAaKQPSzTE
1DmqAAAAGAEAACcAHAB3ZWJydGMvZGF0YWNoYW5uZWwvYmFzaWMtdGNwLXN0ZGVyci50eHRVVAkA
A3O9k1lzvZNZdXgLAAEE9QEAAAQUAAAApY69CsJAEAb7PMVXxkKJ/5jCQtBWNIKFiFxyqxzEu3C7
onl7N6JP4JbDzO6mlmrTXkrDZC/lkwZVlY9mw16O1XGNgkScv4HFREHpJBohSMgxzrpJ0j9zrqRR
6rkJUbp4vphoXCg+/HB/WZC3uwc9yBYSydz3xCScqrgxriarK8HqwOipTkDsDFxDxPCLGDlO2etz
NxtNz9g2pO+44GFqFWwL59HEcNOWkzdQSwMEFAACAAgAaKQPS7ZxRph5AAAAxwAAACQAHAB3ZWJy
dGMvZGF0YWNoYW5uZWwvYmluYXJ5LXN0ZGVyci50eHRVVAkAA3S9k1l0vZNZdXgLAAEE9QEAAAQU
AAAA00hJzUmsjE9KLE5NiU8qT9VLTrYyMjPUtFJwCndVCE4tKcnMS1coLkksKlFIyiwpSixJVSjJ
t1IwNgABLg0KtRcnlxQARfOKC/KLSkCaTSwMgJqDgcIhMGFdu6DU4tSS4JKi1MRcDZDZxWCmQl5+
iUJafmleih4XAFBLAwQUAAIACABopA9LO1eAEkIAAAB+AAAAQAAcAHdlYnJ0Yy9kYXRhY2hhbm5l
bC9idWZmZXJlZEFtb3VudExvd1RocmVzaG9sZC1kZWZhdWx0LXN0ZGVyci50eHRVVAkAA3S9k1l0
vZNZdXgLAAEE9QEAAAQUAAAA00hJzUmsjE9KLE5NiU8qT9VLTrYyMjPUtFJwCndVCE4tKcnMS1co
LkksKlFIyiwpSixJVSjJt1IwNgABLg3KtAMAUEsDBBQAAgAIAGikD0vaTqX0eQAAAEUBAAA4ABwA
d2VicnRjL2RhdGFjaGFubmVsL2J1ZmZlcmVkQW1vdW50TG93VGhyZXNob2xkLXN0ZGVyci50eHRV
VAkAA3S9k1l0vZNZdXgLAAEE9QEAAAQUAAAA00hJzUmsjE9KLE5NiU8qT9VLTrYyMjPUtFJwCndV
CE4tKcnMS1coLkksKlFIyiwpSixJVSjJt1IwNgABLo0hrb04uaQAKJpXXJBfVALSbGJhANQcDBQO
gQnr2gWlFqeWBJcUpSbmaoDMLgYzFfLySxTS8kvzUvS4AFBLAwQUAAIACABppA9LN1sLRYwAAABm
AwAAJgAcAHdlYnJ0Yy9kYXRhY2hhbm5lbC9jcmVhdGlvbi1zdGRlcnIudHh0VVQJAAN1vZNZdb2T
WXV4CwABBPUBAAAEFAAAAO3OMQvCMBAF4N1fcWNdirXikE3RrbgEcQyX5NBAm5TcQfDfm/4Fxa1v
fXyP13ga8W0sMnljC7XOqf2x2yo4P66gSSTEJ7BgFrBBMgqBJAX9bsmmWfnXvJDN4piYQ4oL7vru
UPXJe+1kvqCglkw4gcNxJA/lRRG4VqaORZ5TFgOB4XYfhna989c7v/EPUEsDBBQAAgAIAGmkD0s6
kUwlPgAAAD8AAAAvABwAd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLWV2ZW50LXN0ZGVy
ci50eHRVVAkAA3W9k1l1vZNZdXgLAAEE9QEAAAQUAAAA00hJzUmsjE9KLE5NiU8qT9VLTrYyMjPU
tFJwCndVCE4tKcnMS1coLkksKlFIyiwpSixJVSjJt1IwNgABLgBQSwMEFAACAAgAaaQPS7ZxRph5
AAAAxwAAACwAHAB3ZWJydGMvZGF0YWNoYW5uZWwvZGF0YWNoYW5uZWwtZ2Mtc3RkZXJyLnR4dFVU
CQADdb2TWXW9k1l1eAsAAQT1AQAABBQAAADTSEnNSayMT0osTk2JTypP1UtOtjIyM9S0UnAKd1UI
Ti0pycxLVyguSSwqUUjKLClKLElVKMm3UjA2AAEuDQq1FyeXFABF84oL8otKQJpNLAyAmoOBwiEw
YV27oNTi1JLgkqLUxFwNkNnFYKZCXn6JQlp+aV6KHhcAUEsDBBQAAgAIAGmkD0u2cUaYeQAAAMcA
AAAvABwAd2VicnRjL2RhdGFjaGFubmVsL2RhdGFjaGFubmVsLXN0YXRzLXN0ZGVyci50eHRVVAkA
A3W9k1l1vZNZdXgLAAEE9QEAAAQUAAAA00hJzUmsjE9KLE5NiU8qT9VLTrYyMjPUtFJwCndVCE4t
KcnMS1coLkksKlFIyiwpSixJVSjJt1IwNgABLg0KtRcnlxQARfOKC/KLSkCaTSwMgJqDgcIhMGFd
u6DU4tSS4JKi1MRcDZDZxWCmQl5+iUJafmleih4XAFBLAwQUAAIACABppA9LO1eAEkIAAAB+AAAA
MgAcAHdlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS1zdGRlcnIudHh0VVQJ
AAN2vZNZdr2TWXV4CwABBPUBAAAEFAAAANNISc1JrIxPSixOTYlPKk/VS062MjIz1LRScAp3VQhO
LSnJzEtXKC5JLCpRSMosKUosSVUoybdSMDYAAS4NyrQDAFBLAwQUAAIACABppA9LvMR9hH8AAAAQ
AQAAKwAcAHdlYnJ0Yy9kYXRhY2hhbm5lbC9tdWx0aS1jaGFubmVsLXN0ZGVyci50eHRVVAkAA3a9
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
cfLll80b/rt/8s9Xzz/88Of8vz/+Ob/8YfLlt7+9/ufk7a+X1avpL9Ma/3P162ZN3e//89fvmrdv
kyW7+u7qj7c/fqhQ+t8/XhfzP958/f6Pt9/999Wf5xV/99fs2y/Pu31Jv/P95Wn3zt/eFO/LN3+c
//Hmn5Pvv/ruLf9z+erFS/Tq5dfwj6vnVz+8eIlfvXh+9dOfP6Cf/nx59epl8+Prr75rvv96OXn9
zev/Nl/BV9dretX9/levprDhf3KP6svpv/Av0z++LhL29svpqz/nk+ob2DZnXy/LN7+cNt9c0+kP
Tvc/3vyY/PHml/bQ+ex7V/s6eeZFGtSK4I25zcCx5grQITaJeBnvW4ZVtkcDFg2YtAGziEyNsz2w
1JFPI58Od7Qe3dXgSDIxZDQphVRXcg8lVVnTvAIlLWruh/IvBUlbUKOUtWnB3YOs8nZEhNZdGo02
hmfvVTDWBLSLLxND9KQV1bg5zoaLF5+BzIazOrPS+IVflJ0oO7plJ8AMV+riynfXkGMBK9pXebmd
nJStvHTXpCriMTmsbJZT5QNHae0DRxgOU+GMxRxchKtUqcSUakxV2UlVSQ69d2wPRpJ9Sk3M3Ruk
rbXH6erj1gJz1TKLxFWD0lbKAeGExIu+aJV8uujbn6VYTOr3U3anJ9AnDZuWV89gYlMVqo3YCzBq
zTzCTShpA1nHTU2G+eZQ2QLKfwRYWadc1UFWY7Z1n1YUKMkRRlmWJTnO0oHoaqYLH3dX0KYIZyVu
QFnigm+VZlyx4xIksKF5mpSMVKlvFzcjceQypR1GIxqNqJbQbkDzgIDO8PQadAguclh2NNdbnhiA
KRwFRoSjbjjphhsld0HpZnyo6Mp7zz//9KtECbsARdQqsLvlxC7Hw0rPYPBg/+5EGDnFAgKSgJv5
IFkk4nFaqIoMOorzMLc6krArN5A/1yOx3es9tD1GXXn5HpBB6sZODvFRppX8lHIaRtIqz2WTOpqt
bayZizVzumvmtDS2Og6rolxEubAGQNUbkpu4I4zZQIvDPzxyjPxKlTyAfd+AsZ9Nzhio5icXSxno
8mBRyYKLoqkkmv/OYxXA8Y7ZoEP6P8sfguZLCpDR+uMQOLnwYW5NXfONwJbvp0h5DJcwvqmsAGla
tEVZ8SgRQk96YEWWajRjFKDN9X9QphoDKrTKiKjlWEQ0SHspNjGJnIxVZ9tAWbMa9w0pac4hSkjT
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
CGtomkHAmiIDpKkrUKZ5wb/N86KtaJ2kHyOVIpSRHKcYJggjQja1c3kHXIoRf1CSFJBi/aik8Uoo
XglFfMbIU0E1LY/eZyGezQPxy5zFYEuvX7QPrkI6pReM1xOYOkijYryhhJ2K+i2QoDuSbMEF3XJ8
mUJIirYETca/kBpjUOaEq5qSb7tIy6po6Cddx+azN3g5ab55vaq/uTxtvvl98tPku7P67PV/y69e
LV/Nvjxt3v44fYu+PuP/5urVn+dJPXs9/f6r767+ePvjhwql//3jdTH/483X7/94+91/+d9Xb66+
+5p9++V594xXkw+T19+cwu+/en7549WXXzZv6pMf/uw+P//w43/nlz/8OYc/TL789rfX/5y8/fWy
evX+8rTG/1z99qZ4X7754/yPN/+c8He95X8uX714iV69/Br+cfX86ocXL/GrF8//+9Ofr9BPf768
evWy+fH1V981b98mS3bVrY3/u7c/Jm/R6fRfb36Z1rMfJj9NV/z5P57+i//s+99//Kua/XJVoQ/d
81f/enuy+tebZvrzb88nb18ny1dnr0n9zes/+Z7fv8W/pPU1XS4q/Ev7L/T1nyX/+asZbGJI5/jW
1Btsq0fsiOxHOowqyr2KirCyw/wX/TOo5WFbdmEsG0SLDuLIshguqKJfaq8FNoM0grM98JjRrPjs
+WqDOZPWfj0zE/5c/m+XzHu2vKhcw4lrgKKSpo7AVIktChlYgCkoqD06CSHYN7NAiCOMQb/vw5n6
q5xOGlDNTy6WHVHNMJ7gywVmjISYrXGAcsJdhocIUIOOfSzOdxZv6uJNXRCT1ETigdhZHuUgLBhi
c7LgwT2oUkWmmrzvdYbqKStngL9oeboVrlawqtOSgJxCxO1qjgBtecyaFw1pUFrRllosPlZeqn3H
ar/fY4DestcCadWwJEcJQKSqAGmzHJQFf2/SplWOCoppnW1lkmCWpwXNKcEFpxpN3U4GN93mJn4g
B91Vuu2uJmI+qDddbQEwiOWuNnrkO/OE0MQWtOJRinC91CpCLL1vEddLlNiXWBj+0f42MXm0fA5H
RgvrPg8YxbM60GhGNWpQr/VQtJBab+3vmTnth7t5slt96REhQu75c84rCmkrEWmPKdyYwg3zKsNv
icbGktEiUm3V74qKIioKjxSFgbsRNUMaoMuGo8umoOADO2wSA5UNISLXK/CK9Ii0tEhxknKl2iYZ
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
aKfDsiCphqAsf9n8uay5Ux4qomtRz+laZAn29ljDqWld5YumEivwdv8N1qczhhItnUPlmqfIvbtc
6pt/IoOXHUQziFmfmdza+YDGIQcMRUIcVtAdHwiHTOuWc+XgmWAThLq0SwmrvfaJCx1qCKAcumE6
7dCqA/PCaaC1Nx4gygDNMuHsKCLpHhscteOqvj+kAiWr4nE2rrFMUcoGLQOQlTs4EBKPcJuX9WK9
bG7cfOzVylNd80ihPYFk8Uzq0/nGVnD92a6z87jYxBrc8mvLvdUsDlhtoOg+/u/uetX+FD5l5SKS
k/AF1r8B+Nywc2GqPkVzv23xj8SxFx7qbOVs2QDOcFCIrT3cEBP+0D5XsTd9vqt6RvLRGfn4CbTS
C1bL23wRmk65NJiWeQ0JrxjI1LJowMtZ7K4rVXvvEYFMSUiUUaECHClPZ2URMKzilCMTH97UITho
gkJn5eu6ATRNwregLqFyKN/oGr44qsNw2bsJXV06GwGHZVogHJjl3psaR1Z7uZ6IT6W46w5m8vFG
tL+s6nWXgG5Xd7dcNGLyYZWXosjLPyevbtvXtn9RdnrQrmI+mefN+ps3X0226frJ36a/Leeb2/aD
vs/X+fTt7++nv4viX/V6+i7/vNysP3TvnNa33e0zYjb9iMrp0zVN18vlvJl+vFs3YvWXePjhsKB2
a/7298m8XogJxvTvk3q3ZtGuYjJpxLx6ffWxapfzevunr4pNVYnVNw9rfP+5WYvb6bu6WOWrz9P/
WeW3okshN9OdVXhdHf5k+luLltuNaabpazad18X0bvt/dL9rluWf22M6rAWl/Lm1VPNNc/PKw+sT
tn399n1HW9H9j6+7u1fa43r1Vy0+/nu7wKtlVbVi9ub4N/+126qrzrz955uvxGq1XL2Z/PvtarVY
tp/3n8l/rzpIN7mr78RXo0yNMjXK1ChTo0yNMjXK1ChTo0y5kqkBk3NOmnDgqD6j+owmeZSpSzPJ
pn1S0NMLe8nrUWVGlRnN8ChTo0yNMjXK1ChTo0wZypRGleVvde7mfkeJepxRO0btGC3uKFMXaHFP
9ysxTzfSfwLlHUwJDKrS+rCoMC+AUy3F7j4lcXJqlp/6sV7Mlh8bcP7JfkfQjOZ4NMdOzLGOFsMY
qk8drnQ4V5CEMEtKK3px3WGlu7HHxj6oO42Y95EhJoBgdE+je7LsnnQ7YX+rc59zuhTtTb5o6qtP
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
vvvmw83lZTB7+zXGX27ni+D69G/DD7PB7Pb0r8v8YMsR7vnpetD/5PL+O6f/HczmYcHMTxsn3dPR
8MPpdPUby3/NJ+e/B4tHsTQbvU2xXI5u5ldvcjh8rbs6/Op4j4pi+Ysn82B8EVbXm0/D4PP/rgI8
m1xezoPFu8f/+OO6qM6Wrv7v7R+C2Wwye1f53x9ns/EkPL3/q/zrbPJ7KGQ6nAZ/YIoppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKqRdg6vEeKnd5ylef9SRP+RLUKlH5RXAx
PB8snuQqz3ZnrHgxxd/vqdF+ultG2mWyOrn1hOr1XLf1P9ZfL2dcXw4/3u2xWr2etqqfqitiy+Ay
LO0EAcXfs7F5t7VWJqWxf7ZzGMvs9mxxOw2Kmm/9LIL4y3qb7W6EudaRTzjJapStlbncZ6ZUG28f
AP9FTuzeMWc5wRUZbRL1PiXlC+wbD4WFGG+WflZhbUuaEfb29rTuexuELZPSW63+IfeNV7rWOPgS
HnkeaR/JjFfU2FMyt4xH+2755Vh6EyuoDNYmZVo4j6+/zKN7gYuxO/VG87Dgo7V4mTXMT+9G09Z6
d8VP1Xqj93u12ah9abRq1Wbtcjqv1mu/X86q14Px8HKdTDWrVJTJYipJV6LW2nS7T6+AY5XUSfg7
5aizZSTlqKlmq1brx6ur3cW5v1w6rdqXVq9c19femI7p+kpQwLFKqqDra0sk5aipRvchE3S6xRlh
pOrLMPzFwsbJvh49Qeq7TqQxsignemy7j0U84eK2JDuenLIpl19Zko+VOUVXshJO+SHoyR7Q82Cx
CGbzHHabfnyk+Ps91Zr9p9tNRzuBl5uZLqVtHR8XY0ZJRA490lGPa37TBCxz0hXV+Xg4dpJt3u+H
rJOe5UOjcAfhbPXtjDez+PZYGTNtd+vtR9tZHHKuSYahjzKN5zGPTj+AL2wI+MAIsu7qRAtH6s2t
Iwyn86Xts3b4vNv84f1N8M+N2p9vPob/rbfD/4T/113937tG712tEX75b39/X611a7Xwyzf/9Zf3
b2sntU6jW+u3up1mr92rNxqdlK+jTiXTaMub4rHxaOQi12qi4xh0NFutMgi5nnwaBqvDtuIdtt5p
dzvdZrdT7/cbnV6nkbTfexaquc8QePYw/fdsOf33bDj+NPk9OPs8XFzd/8lgsZgNP9wsssgimpx0
+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
UQm+nAerTXMqn6+C8D+z4XJ9ZSUMbToZz4PK+9ngPPgwOP+98uY6DCP8wfmyYMKoRpXRYL54++4P
lVVLU/mn0/+ejMLraH76l8FicPrjr7+c/hp8+H/DxenfBrdhWO+XxzwNQwtJBBenn5vnp9/GdLqY
TEbz08/TxTLZTfD1i/uAwkL6pz9VRsNxUGm1On+qDNcxB2EUlco8GF2enH2+DMM5WX33zYeby8tg
9vZrjL/czhfB9enfhh9mg9nt6V9ng+tVQp356X/dLq4m45PL+++c/ncQNhLhMU8bJ93T0fDD6XT1
G8t/zSfnvweLR7E0G71NsVyObuZXb3I4fK27OvzqeI+KYvmLJ/NgfBFW15vwEvr8v6sAzyaXl/Ng
8e7xP/64Lqqzpff/e/uHYDabzN5V/vfH2Ww8CU/v/yr/Opv8HgpZLqf+A1NMMcUUU0wxxRRTCU39
+PPP//nzJlNl8bL67+xRETW69VURrUcbzibj4OzuOWRVXg++1m7eFqa6Ud8oaV1Vd895hYbX+Bre
fTxPSnAlqPLH7x/FPXsWfvj19ds/vL+dBj+umd2M5zfTdYyVyTSYhXVUWYQ/fjN/u3qI/eP37yrf
DceL7yrLn3y3HCtc/vV3GjeNmxsmU0wxxRRTTDHF1PGYijNpuiR7TR4YXewJDg9rRrIvJ5e4S9xt
gymmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoqp1z2dbT3tqrqedzV/9u9n
2RiqV8FoGv7WyfzmQ3a77CSIaJ3YYf4ks0O/1WqmNhstTvr2Xr1zNyUuk7LOL09PxCwx5Sr+FHJn
lnWP4nIVdPJkNfFmsIafH3Fz8RSzgN2t/0s9WVmuc3+fl9wh+y6nXoxFZ5jagrpRizmdOTrLLQkG
a912mqniIol9rVslpZj++puKL1Nu7sOCO7odHNab4ZyuxA+D5R9Mxtko2nSkbFuwR9dvrD03273+
Xc63w0pp961lEQQbd/XO+Q63LYzYy1ga3f6edv/wM9e4Rm+/tpVuIY1prGBezvY3y9PPfkvdjQct
sqo6vft0yrFL5mVsVLw+y5e9K3E2LVisUst8s8n7LcGK2mzy8fHjJ9Ju9VqRdpuMdraPwj402+9i
dvM12e/yW5kXbDoRxt+/vVl//GSaeYEl3Eoy9V0zo/bWYu/Hl99uZa9ou8wE+1Q+bkKSbJWZcMfO
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
l83mz63XavVOc8cn7/xMtyq3Kt0fpphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYeoVp7SLv
+hY10dm6cH45nw2ni/2p1bDGWlPJFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUU
U0wxxdQrNfWwGWPkaVzbdmfc+gFfrkfLv5itf1BdDK+DkFd18imMeXgRzIMv02H42ye/zXduzEg/
/VpUpphiiimmmGKKKaaYYooppjaY+vHnn//z502myuJl9d/ZoyJqdOurIlqvhTubjIOzu3GTVXk9
+Fq7eVuY6kZ9o6R1VZ1PxouwOAsNr/E1vPt4npTgSlDlj98/inv2LPzw6+u3f3h/Ow1+XDO7Gc9v
pusYK5NpMAvrqLIIf/xm/rYSxhl+2rvKd8Px4rvK8iff/UdYe8u//k7jpnFzw2SKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiqlymtqwPdOWPZWWZxnMqvOQRFhfV4vr
0faP/evkZnxxl2h4tirMn9ZfH75ZVORoKm+WSXF3bvP062yyCCp3OXgrk8vKKlFvvV3vrXLsZlAQ
qzP6ul3V8ptXg9k4mC+3pIrzZ7NgeUHu/OMYhb97l64t5TC7GY+DWdqhJKGzraAjbisWub53Itsd
zUP9FRNT7DrONdzN12mz22qvr9O4V8bmz213axsv/zQugC0tTq1W7zR3nMv+xuHQWO+KPuWLNbar
h3DK4KoVs/4jlGmcwilLJUWvneglFaN6eu1ePVb9JKiY5/tSRq2Pda/wl/PZcLrYf9PVn9ef94zI
FFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxdQrNbV/XtvzaVxlmM5W3zfZ
MPrcMxeVi0pDzRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRT
TDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0y9ClMHbV64/XP+OrkZX1SuBuOLUTCrrAvnl/PZ
cLr4af09rLHWVDLFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxdRzU41a
rXLYNK7Km6vw996dno4moaqrENm7Xq9W2/4BX65Hy7+YrX9QXQyvg5BXdR7SCuv9t/nbyo6pYb/O
Jougcj4ZL5aMJ5eV5flW6rVK+DupzD1zUbmoNNRMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHF
FFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRT
TDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHF1KswddDmhds/
56+Tm/FF5WowvhgFs8q6cH45nw2ni5/W39sTwtXienT6YTb5HPKZn14N54tJWN6Lq6B693V1OF4E
s8tQ9+n55PrDcDxYXgVndz89q9U6J8vPiBrhsn73Rvawu2Na0VXe/MdkHMTYsbHXqK+3bMy+nFYn
/JXA8ptXg9k4mM9PfpvH+bNZsGxCdv5xjLpJUp3bzm7b3pxpFfrOit8d3UMhFhrjZpzNbqu91hm3
/rdtU1qrd5o7Pnk3SHdLd0s9MKaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmXqmph/lokWeHbpuatvUDvlyPln8xW/+guhheByGv6jykFdb7b/Odc9GYZ147yhRTTDHFFFNM
McUUU0wxxdQGUz/+/PN//rzJVFm8rP47e1REjW59VUTrdY5nk3FwdjdasiqvB19rN28LU92ob5S0
rqq7dX2Fhtf4Gt59PE9KcCWo8sfvH8U9exZ++PX12z+8v50GP66Z3YznN9N1jJXJNJiFdVRZhD9+
M3+7WrT4x+/fVb4bjhffVZY/+W659Hf5199p3DRubphMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRT
TDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDFVTlMbNmXaspPS8iyDWXV+Oz6fjNf/OLlaXI+2f/hfJzfji7t0
w7NVkf60/vrwjaIOjKnyZpkgd+eWT7/OJougcpePtzK5rKyS9tbbrdoq325mhbI6u6/bVi2/eTWY
jYP5/OS3eapluXvDrS0nNLsZj8NzyCKUjSc9C5YNTNrHe2C0raAjbi92YK3vBLc7podyKDKy2FgK
CHrz9dvsttrr6zeuts2f2+5ubhbSuJ62tES1Wr3T3HEuOz8zVnU+qYCsrsiEQZVGWrsRU0TkUo5T
XGWptug1dWh5xaiqXrtXj1VXu6tHd1x33CMeU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUU
U0wxxRRTTDHFFFOmnm+YkHURjAa3Ydw/XM+/b9Zqtaiz2taF88v5bDhd7J+WjDXWmkqmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppl6pqf3ZwZ5P4ypPUrD6vvRt0WegubRc
WpprpphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYspOinRSx1lQyxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUU
U0wxxRRTTDHFFFNMMcUUUxmaatRqlcPSYFXeXIW/9+70dDQJVV2FyN71erXa9g/4cj1a/sVs/YPq
YngdhLyq89vx+WS8LLpgdvLb/G1lR4KtX2eTRVAJf32xxDy5rCzPulKvVcLfSSWDl0vLpaW5Zoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKqVdm6qAUXNs/56+Tm/FF5WowvhgFs8q6cH45nw2n
i5/W38Maa00lU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMbU21ajVKoelwaq8uQp/793p
6WgSqroKkb3r9Wq17R/w5Xq0/IvZ+gfVxfA6CHlV57fj88l4WXTB7OS3+dtKjXzytaZMMcUUU0wx
xRRTTDHFFFNMHWTqx59//s+fN5kqi5fVf2ePiqjRra+KaJ1H/GwyDs7uxkxW5fXga+3mbWGqG/WN
ktZVdT4ZL8LiLDS8xtfw7uN5UoIrQZU/fv8o7tmz8MOvr9/+4f3tNPhxzexmPL+ZrmOsTKbBLKyj
yiL88Zv520oYZ/hp7yrfDceL7yrLn3z3H2HtLf/6O42bxs0NkymmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoqpsptapha5WlyPTj/MJp/DupufXg3n
i0l4souroHr3dXU4XgSzy5DW6fnk+sNwPFgSPLv76Vmt1j1Zfsb2w/x1cjO+uFs4M1sV7k/rryMk
Pkkrusqb5aKPnWlMfp1NFkHlbo1JZXJZWS1E6XdrqyUkOZTT6oS/ZmZZfvNqMBsH8/nJb/M4fzYL
ltfvzj+OUTdJqnPb2W1LW5NWoe+s+N3RPRRioTFuxtnsttprnXHrf/Pn1mu1eqe545N3g3SrcqvS
/WGKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi6jVPy3y2YduWbdrWG7RV
F5+H50GGszBjBhN70mW93WytZ5+lXgy7t9Pb8vmzm/F4tQ9eqsX7CuZ7xi7oiPsYRvWQYP5nqYLZ
Oxk1i5A2X6Pt+4nRGVxMRzXbNY7zdcmnfKHGvuruoykeVavXiodqf4HGKZmy1FD0uolcUDEqp9fu
1WPVToJ6eb6/bdTqWHcFfzmfDaeL/TdinXideA+GTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUU
U0wx9apM7U8L9jwNVgmygdX3pf+LnrrLNeWa0k4zxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUU
U0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNM
McXUKzN1UO6t7Z/z18nN+KJyNRhfjIJZZV04v5zPhtPFT+vvYY21ppIppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYWptq1GqVw9JgVd5chb/37vR0NAlVXYXI3vV6tdr2D/hyPVr+xWz9g+pi
eB2EvKqLz8Pz4OS3+dvKjsxav84mi6ByPhkvloonl5Xl6VbqtUr4O6mk7nJNuaa000wxxRRTTDHF
FFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRT
TDHFFFNMMcUUU0wxxRRTTDHFFFNMMfXKTB2Ue2v75/x1cjO+qFwNxhejYFZZF84v57PhdPHT+ntY
Y62pZIoppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKabWphq1WuWwNFiVN1fh7707PR1NQlVX
IbJ3vV6ttv0DvlyPln8xW/+guhheByGv6uLz8Dw4+W3+tlJDHnnNKFNMMcUUU0wxxRRTTDHFFFMH
mfrx55//8+dNpsriZfXf2aMianTrqyJaJxA/m4yDs7vBklV5Pfhau3lbmOpGfaOkdVWdT8aLsDgL
Da/xNbz7eJ6U4EpQ5Y/fP4p79iz88Ovrt394fzsNflwzuxnPb6brGCuTaTAL66iyCH/8Zv62EsYZ
ftq7ynfD8eK7yvIn3/1HWHvLv/5O46Zxc8NkiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYoqpcprasCfTs42UbsJqHC9OrhbX2z/mr5Ob8cVdYuHZqvB+Wn99+I5QW49e
ebNMertzG6dfZ5NFULnLsVuZXFZWiXgbjW57lUM3hRNdRfx1z6nlN68Gs3Ewn8+C5ZVy8ts81VLa
fry0j/RQH7vPLuK2XFuLdmf97Y4h66Nv1tPstu70xK32zZ9br9XqneaOT975matSCk9odPphNvkc
trnz06vhfDEJG6nFVVC9+7o6DI85uwxvCfc/PVveG5YlMcoGT6KQYl/hnWZ/XZAZlYirfst1l6i8
s2kKsgvpqNoHfUV9Rc8fTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUU
U0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNM
McUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHF
FFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRT
TDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUU
U0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNM
McUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHF
FFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRT
TDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wx
xRRTTDHFFFNMMcUUU0wxxRRTTDHFFFNMMcUUU0wxVYypH99XTq8W16PTD7PJ57Du5qdXw/liEp7s
4iqo3n1dHY4XwewypHX/07OlsbP6yfJPt3/6Xyc344vK1WB8MQpmqzL9af319j9p1GqVNIKqvPmP
yTh4W6ltP9Svs8kiqJxPwo8JL5HJZWVZlpVup1YJfynDUlmdXniBTG5m5+Hlt/zm1WA2DubzWbC8
2k5+m8f5451/FqMmklTetgArb64Wi+m709PRJGySrsIW6l2vV6slLeud1bw7qIciLyK0zQKb3VZ7
TTAuks2fW6/V6p3mjk/eDy9OYYQhzG5XZfHDzWw0//5xIVXL1oJECLY8UBr1RvymKlG1xC3ftNuo
JHWd8jUfoTxjVHF4zcav42yu50cntD7TfxlefN8oVyfg2/jKX9XNRjtZx+OQSnEBRyzCcl2zngA9
ARpVYIoppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGLKaofD5oaFn/F5MLso
2WTlx1HFX+/QTrDeIVq5JFrwEKNQ81sjUcDagsdFnmDdQ1FRHdWSB7cgtyDdGqaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmijb14/vK6dXienT6YTb5HNbd/PRqOF9MwpNdXAXVu6+rw/EimF2GtO5/
ehZ+xufB7OKsfrL86+0H+OvkZnxRuRqML0bBbFWsP62/3v4njVqtklJclTf/MRkHbyu17Uf7dTZZ
BJXzSfhJ4YUyuawsS7TS7Tcq4S9lWzarkwyvlMnN7Dy8DpffvBrMxsF8PguWl93Jb/M4f7zzz2LU
R5Iq3H12lTdXi8X03enpaBK2UFdhg/Wu16vVUij0nVW+O7ri4tpMsdlttdcW41LZ/Ln1Wq3eae74
5P384pRHGMLsdlUWP9zMRvPvn5VTdV1Of3r+7UbJ2plEp1EqX416gqYuo9qMWy1pN31JiKTcjiQq
6RgswuYhvotsmo6np7q5GNbn+y/Di+8bpeuURA38mNk0uv3EHafkFaz9SFq2L6vFaDw66eXpNcvX
NnwT4nFVfrPRTn7dH1BNrvDopViua9kollEsI6NMMcUUU0wxxRRTTDHFFFNMMcUUU0wxxRRTTDHF
FFNMMcUUU0wxxRRTTFmxddj0sI+Ts+vh+GZesoUUT8KKvV6r0+rGn34YsWQs10pxsuKTMi/Paq3o
YR3VYi33IfchfRummGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppoo29eP7yunV4np0+mE2+RzW3fz0
ajhfTMKTXVwF1buvq8PxIphdhrTuf3r2cXI2npwNZh9DQuPFyfIjth/lr5Ob8UXlajC+GAWzVdn+
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
bNF6pNleesf5cLP1PI7AXfYPPDFqWScn5aJ+FX2fo3kcihL6Udtp1fuZ9cwOeljyasmrJa8rmWKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiqhhTP76vnF4trkenH2aTz2HdzU+vhvPFJDzZxVVQvfu6OhwvgtllSOt0MRt8
Cn8rOAt/fHb347N1YIPL8JfORpPBxVnjZPmZ2w/718nN+KJyNRhfjILZqrB/Wn+9/U8atVol02gr
b/5jMg7eVmrbY/h1NlkElfNJ+PnhRTW5rCxLv9LvtCvhLxVRjqsCCa+1yc3sPLySl9+8GszGwXw+
C5YX7slv81QrYfvx0j7SQ3XvPrvKm6vFYvru9HQ0Cdu4q7DJe9fr1WqZVcVOHrtjLlu0mzE3u607
zXFZbf7ceq1W7zR3fPLOzzz4wr8vmDCE2e2qLH64mY3m399/P/zsz4PZRbW++tmfdhTqZLwu0Ltf
Lb5Ny+zUjkBno944vKktwELcSs2sFY0XSxoiMiv9GHzCRii+n2waqKenvy6a6GXwL8OL7xvlaZJS
OJmXRq7R7cdvsTLFoY3KoryPu1WKfrLrwlmecrPUj3nbwz5+OM1WJ9UHzzhVnEFd1cs/ePAk0vgD
B7VWFvVXN2hQ6KDBk2oo9YBB9Ehf5WBBhJIr/ahA9HMoubVUH/3TqFn95xSL+aV3m+vf9KkaR9HB
+Tbso/WSUW/5oJr1CtcrXNMCmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
ppiSriC91Q5Hs9ogaZqCVi+T1SJZrjbIb+lA6qsNcpu9nzgxQc7rIqQmkJqgZKkJksqUlkBaAmkJ
pCWQlkBaAmkJpCWQlqDwtAQGnww+GdBkiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYoop
pphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaY
YooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKK
KaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimm
mGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphiiimmmGKKKaaYYooppphi
iimmmGKKKaaYYooppphiiqn/f7t0LAAAAAAwyN96DruLIaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLK
Kaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimn
nHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xy
yimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsop
p5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaeccsopp5xyyimnnHLKKaec
csopp5xyyimnnHLKKaf+qQBQSwECHgMUAAIACAA4pg9LhKd8/xBIAADaHgEAIgAYAAAAAAABAAAA
pIEAAAAARHVtcFJlbmRlclRyZWUtMzI5MzktY3Jhc2gtbG9nLnR4dFVUBQAD28CTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIADimD0uArs1YdUkAAJghAQAiABgAAAAAAAEAAACkgWxIAABEdW1w
UmVuZGVyVHJlZS0zMjk0My1jcmFzaC1sb2cudHh0VVQFAAPbwJNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAa6IPSwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BPZIAAF93cHRfY2VydHMvVVQF
AAO6uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa6IPS8tUJHESCQAAOhEAABUAGAAAAAAA
AQAAAKSBgpIAAF93cHRfY2VydHMvMDlCRTZDLnBlbVVUBQADurmTWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGuiD0u2/FRW6gkAADsSAAAVABgAAAAAAAEAAACkgeObAABfd3B0X2NlcnRzLzA5
QkU2RC5wZW1VVAUAA7q5k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrog9Ly1QkcRIJAAA6
EQAAFQAYAAAAAAABAAAApIEcpgAAX3dwdF9jZXJ0cy9jYWNlcnQucGVtVVQFAAO6uZNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAa6IPS6HdJM1EBQAA1wYAABQAGAAAAAAAAQAAAKSBfa8AAF93
cHRfY2VydHMvY2FrZXkucGVtVVQFAAO6uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa6IP
SwxE57ZJAAAAZQAAABQAGAAAAAAAAQAAAKSBD7UAAF93cHRfY2VydHMvaW5kZXgudHh0VVQFAAO6
uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAAa6IPS5hceX8VAAAAFQAAABkAGAAAAAAAAQAA
AKSBprUAAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHJVVAUAA7q5k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAIAAABrog9LmFx5fxUAAAAVAAAAHQAYAAAAAAABAAAApIEOtgAAX3dwdF9jZXJ0cy9p
bmRleC50eHQuYXR0ci5vbGRVVAUAA7q5k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABrog9L
Jo11OzcAAAA3AAAAGAAYAAAAAAABAAAApIF6tgAAX3dwdF9jZXJ0cy9pbmRleC50eHQub2xkVVQF
AAO6uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa6IPS4XZMPAHBQAAiwYAABgAGAAAAAAA
AQAAAKSBA7cAAF93cHRfY2VydHMvbG9jYWxob3N0LmtleVVUBQADurmTWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGuiD0u2/FRW6gkAADsSAAAYABgAAAAAAAEAAACkgVy8AABfd3B0X2NlcnRz
L2xvY2FsaG9zdC5wZW1VVAUAA7q5k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAABrog9LE0S+
1QcAAAAHAAAAEQAYAAAAAAABAAAApIGYxgAAX3dwdF9jZXJ0cy9zZXJpYWxVVAUAA7q5k1l1eAsA
AQT1AQAABBQAAABQSwECHgMKAAIAAABrog9LUnWlzAcAAAAHAAAAFQAYAAAAAAABAAAApIHqxgAA
X3dwdF9jZXJ0cy9zZXJpYWwub2xkVVQFAAO6uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
h6MPSwYa3eyJpwEAd7EPAA4AGAAAAAAAAQAAAKSBQMcAAGFjY2Vzc19sb2cudHh0VVQFAAPOu5NZ
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAiqIPSwAAAAAAAAAAAAAAAA4AGAAAAAAAAAAQAO1B
EW8CAGFjY2Vzc2liaWxpdHkvVVQFAAP0uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAgKIP
S0PGu4zEAQAAWBQAADcAGAAAAAAAAQAAAKSBWW8CAGFjY2Vzc2liaWxpdHkvZmlsZS11cGxvYWQt
YnV0dG9uLXN0cmluZ3ZhbHVlLXN0ZGVyci50eHRVVAUAA+C5k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAACKog9LAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGOcQIAYWNjZXNzaWJpbGl0eS9t
YWMvVVQFAAP0uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAiqIPS63acl+YAAAAtwAAADUA
GAAAAAAAAQAAAKSB2nECAGFjY2Vzc2liaWxpdHkvbWFjL3NldC12YWx1ZS1lZGl0YWJsZS10eXBl
cy1zdGRlcnIudHh0VVQFAAP0uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAiaIPSwAAAAAA
AAAAAAAAAAcAGAAAAAAAAAAQAO1B4XICAGNyeXB0by9VVAUAA/K5k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAACKog9LAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UEicwIAY3J5cHRvL3N1YnRs
ZS9VVAUAA/S5k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAACJog9LJeDTCCwAAAAsAAAAPgAY
AAAAAAABAAAApIFqcwIAY3J5cHRvL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5LW1hbGZvcm1lZC1w
YXJhbWV0ZXJzLXN0ZGVyci50eHRVVAUAA/K5k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACK
og9LMDu4sUsAAABoAAAAPAAYAAAAAAABAAAApIEOdAIAY3J5cHRvL3N1YnRsZS9yc2EtaW1wb3J0
LWtleS1tYWxmb3JtZWQtcGFyYW1ldGVycy1zdGRlcnIudHh0VVQFAAP0uZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAfaIPSwAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1Bz3QCAGNyeXB0by93
b3JrZXJzL1VUBQAD3rmTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAH2iD0sAAAAAAAAAAAAA
AAAWABgAAAAAAAAAEADtQRh1AgBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvVVQFAAPeuZNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgACAAAAfaIPSyXg0wgsAAAALAAAADEAGAAAAAAAAQAAAKSBaHUCAGNy
eXB0by93b3JrZXJzL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5LXN0ZGVyci50eHRVVAUAA965k1l1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACAog9LAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UH/
dQIAZGlzcGxheWxpc3RzL1VUBQAD37mTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAICiD0uj
V/3oUAAAAI4AAAAyABgAAAAAAAEAAACkgUZ2AgBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVz
LXRyYW5zZm9ybXMtc3RkZXJyLnR4dFVUBQAD37mTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AICiD0vylpXVRwAAAEkAAAApABgAAAAAAAEAAACkgQJ3AgBkaXNwbGF5bGlzdHMvbGF5ZXItZGlz
cGF5LWxpc3Qtc3RkZXJyLnR4dFVUBQAD37mTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMmi
D0sAAAAAAAAAAAAAAAAIABgAAAAAAAAAEADtQax3AgBlZGl0aW5nL1VUBQADabqTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAMmiD0sAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQe53AgBlZGl0
aW5nL2RlbGV0aW5nL1VUBQADabqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMmiD0tvc9nl
uwEAAPwSAAAoABgAAAAAAAEAAACkgTl4AgBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1lbW9qaS1z
dGRlcnIudHh0VVQFAANpupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAApaIPSwAAAAAAAAAA
AAAAABMAGAAAAAAAAAAQAO1BVnoCAGVkaXRpbmcvcGFzdGVib2FyZC9VVAUAAyW6k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACSog9Lst5t6uoAAACFAQAAMAAYAAAAAAABAAAApIGjegIAZWRp
dGluZy9wYXN0ZWJvYXJkL2NvcHktcmVzb2x2ZXMtdXJscy1zdGRlcnIudHh0VVQFAAMEupNZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAl6IPS9lzxpS6AQAADA8AADwAGAAAAAAAAQAAAKSB93sC
AGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWZpbGVzLXRvLWVkaXRhYmxlLWVsZW1lbnQtc3RkZXJy
LnR4dFVUBQADDbqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJqiD0sigiT44AEAAMwWAAA1
ABgAAAAAAAEAAACkgSd+AgBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1hY2Nl
c3Mtc3RkZXJyLnR4dFVUBQADE7qTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKWiD0vKS35v
5AAAAHoBAAAsABgAAAAAAAEAAACkgXaAAgBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3Jp
cHQtc3RkZXJyLnR4dFVUBQADJbqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKSiD0tDQha2
5QAAAH4BAAAyABgAAAAAAAEAAACkgcCBAgBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9zY3Jp
cHQteGh0bWwtc3RkZXJyLnR4dFVUBQADJLqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACOm
D0ue3S6uXgsAAE1AAAANABgAAAAAAAEAAACkgRGDAgBlcnJvcl9sb2cudHh0VVQFAAOywJNZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAOaMPSwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1Bto4C
AGZhc3QvVVQFAAM9u5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAkaIPSwAAAAAAAAAAAAAA
ABAAGAAAAAAAAAAQAO1B9Y4CAGZhc3QvYXR0YWNobWVudC9VVAUAAwG6k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACRog9LL0zVAHoCAABMIgAANQAYAAAAAAABAAAApIE/jwIAZmFzdC9hdHRh
Y2htZW50L2F0dGFjaG1lbnQtbGFiZWwtaGlnaGxpZ2h0LXN0ZGVyci50eHRVVAUAAwG6k1l1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAACzog9LAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UEokgIA
ZmFzdC9jYW52YXMvVVQFAANCupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAlqIPS4KPpP5q
AAAA7AAAACYAGAAAAAAAAQAAAKSBbpICAGZhc3QvY2FudmFzLzJkLmN1cnJlbnRQb2ludC1zdGRl
cnIudHh0VVQFAAMLupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAs6IPSwfK7Dh9AAAAAgEA
ACYAGAAAAAAAAQAAAKSBOJMCAGZhc3QvY2FudmFzL2NhbnZhcy1saW5lRGFzaC1zdGRlcnIudHh0
VVQFAANCupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAEKQPSwAAAAAAAAAAAAAAAAkAGAAA
AAAAAAAQAO1BFZQCAGZhc3QvY3NzL1VUBQADz7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ADmjD0tU7lDysUcAAFh3AgAsABgAAAAAAAEAAACkgViUAgBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1t
YXRjaGVzLTctY3Jhc2gtbG9nLnR4dFVUBQADPbuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ADmjD0tWi5UHg0cAABh3AgApABgAAAAAAAEAAACkgW/cAgBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1t
YXRjaGVzLTctc3RkZXJyLnR4dFVUBQADPbuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHOj
D0sNIU1vsEkAAIotAQAsABgAAAAAAAEAAACkgVUkAwBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1tYXRj
aGVzLTgtY3Jhc2gtbG9nLnR4dFVUBQADqbuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHOj
D0vT73noa0gAAFN7AgApABgAAAAAAAEAAACkgWtuAwBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1tYXRj
aGVzLTgtc3RkZXJyLnR4dFVUBQADqbuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALujD0ti
9Qaj8UoAAPFpAQAoABgAAAAAAAEAAACkgTm3AwBmYXN0L2Nzcy9wYXJzaW5nLWNzcy1ub3QtNy1j
cmFzaC1sb2cudHh0VVQFAAMxvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAu6MPS4+9kPmK
SAAAz3sCACUAGAAAAAAAAQAAAKSBjAIEAGZhc3QvY3NzL3BhcnNpbmctY3NzLW5vdC03LXN0ZGVy
ci50eHRVVAUAAzG8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADpA9LH+LTtItIAACVewIA
KAAYAAAAAAABAAAApIF1SwQAZmFzdC9jc3MvcGFyc2luZy1jc3Mtbm90LTgtY3Jhc2gtbG9nLnR4
dFVUBQADtryTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAOkD0utJduBXUgAAFV7AgAlABgA
AAAAAAEAAACkgWKUBABmYXN0L2Nzcy9wYXJzaW5nLWNzcy1ub3QtOC1zdGRlcnIudHh0VVQFAAO2
vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEKQPSy24Gw2yAAAAzgEAADYAGAAAAAAAAQAA
AKSBHt0EAGZhc3QvY3NzL3BlcnNwZWN0aXZlLW9yaWdpbi1pbml0aWFsLWluaGVyaXQtc3RkZXJy
LnR4dFVUBQADz7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALmiD0sAAAAAAAAAAAAAAAAJ
ABgAAAAAAAAAEADtQUDeBABmYXN0L2RvbS9VVAUAA026k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACjog9L2ky2KYwBAADgCQAAJQAYAAAAAAABAAAApIGD3gQAZmFzdC9kb20vRmlsZUxpc3Qt
aXRlcmF0b3Itc3RkZXJyLnR4dFVUBQADIbqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKOi
D0sufJVjcgEAAPAEAAA2ABgAAAAAAAEAAACkgW7gBABmYXN0L2RvbS9GaWxlTGlzdC1pdGVyYXRv
ci11c2luZy1vcGVuLXBhbmVsLXN0ZGVyci50eHRVVAUAAyG6k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAACqog9LAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UFQ4gQAZmFzdC9kb20vTXV0YXRp
b25PYnNlcnZlci9VVAUAAzC6k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqog9LgBgNpqcA
AADSAAAAPwAYAAAAAAABAAAApIGk4gQAZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9kYXRhYmFz
ZS1jYWxsYmFjay1kZWxpdmVyeS1zdGRlcnIudHh0VVQFAAMwupNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAuaIPSwAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BxOMEAGZhc3QvZG9tL1dpbmRv
dy9VVAUAA026k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC5og9LUS56LIMBAAB6BQAAOgAY
AAAAAAABAAAApIEO5AQAZmFzdC9kb20vV2luZG93L3dpbmRvdy1wb3N0bWVzc2FnZS1jbG9uZS1m
cmFtZXMtc3RkZXJyLnR4dFVUBQADTbqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALqiD0sA
AAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQQXmBABmYXN0L2V2ZW50cy9VVAUAA0+6k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAC6og9L4e3rs40BAAAECgAAPQAYAAAAAAABAAAApIFL5gQAZmFz
dC9ldmVudHMvZGF0YS10cmFuc2Zlci1maWxlcy1hdHRyaWJ1dGUtaWRlbnRpdHktc3RkZXJyLnR4
dFVUBQADT7qTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALGiD0sAAAAAAAAAAAAAAAALABgA
AAAAAAAAEADtQU/oBABmYXN0L2ZpbGVzL1VUBQADPrqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIALGiD0umZxgieQEAAFgFAAAlABgAAAAAAAEAAACkgZToBABmYXN0L2ZpbGVzL3JlYWQtYmxv
Yi1hc3luYy1zdGRlcnIudHh0VVQFAAM9upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsaIP
S63V8CB6AQAAWAUAACUAGAAAAAAAAQAAAKSBbOoEAGZhc3QvZmlsZXMvcmVhZC1maWxlLWFzeW5j
LXN0ZGVyci50eHRVVAUAAz66k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACwog9LAAAAAAAA
AAAAAAAAEwAYAAAAAAAAABAA7UFF7AQAZmFzdC9maWxlcy93b3JrZXJzL1VUBQADPLqTWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAK+iD0vN56MmdgEAAFgFAAA0ABgAAAAAAAEAAACkgZLsBABm
YXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtYmxvYi1hc3luYy1zdGRlcnIudHh0VVQFAAM6
upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAr6IPS3UjTpN4AQAAWAUAADMAGAAAAAAAAQAA
AKSBdu4EAGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1ibG9iLXN5bmMtc3RkZXJyLnR4
dFVUBQADOrqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALCiD0ulBdKseQEAAFgFAAA0ABgA
AAAAAAEAAACkgVvwBABmYXN0L2ZpbGVzL3dvcmtlcnMvd29ya2VyLXJlYWQtZmlsZS1hc3luYy1z
dGRlcnIudHh0VVQFAAM7upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsKIPS8deMBp5AQAA
WAUAADMAGAAAAAAAAQAAAKSBQvIEAGZhc3QvZmlsZXMvd29ya2Vycy93b3JrZXItcmVhZC1maWxl
LXN5bmMtc3RkZXJyLnR4dFVUBQADPLqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALKiD0sA
AAAAAAAAAAAAAAALABgAAAAAAAAAEADtQSj0BABmYXN0L2Zvcm1zL1VUBQADQLqTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIALKiD0suX9jvewEAAPg5AAAzABgAAAAAAAEAAACkgW30BABmYXN0
L2Zvcm1zL1ZhbGlkaXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLXN0ZGVyci50eHRVVAUAA0C6k1l1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC0og9LAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UFV
9gQAZmFzdC9mb3Jtcy9maWxlL1VUBQADRLqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALGi
D0uaY/24MAMAAIxvAAAyABgAAAAAAAEAAACkgZ/2BABmYXN0L2Zvcm1zL2ZpbGUvZmlsZS1pbnB1
dC1jaGFuZ2UtZXZlbnQtc3RkZXJyLnR4dFVUBQADPrqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIALKiD0u1lxWpcgEAABIFAAArABgAAAAAAAEAAACkgTv6BABmYXN0L2Zvcm1zL2ZpbGUvZmls
ZS1pbnB1dC1yZXNldC1zdGRlcnIudHh0VVQFAAM/upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAsqIPSw1lUelyAQAAEgUAADwAGAAAAAAAAQAAAKSBEvwEAGZhc3QvZm9ybXMvZmlsZS9maWxl
LWlucHV0LXJlc2V0LXVzaW5nLW9wZW4tcGFuZWwtc3RkZXJyLnR4dFVUBQADP7qTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIALKiD0voea4CcwEAABIFAAAvABgAAAAAAAEAAACkgfr9BABmYXN0
L2Zvcm1zL2ZpbGUvZmlsZS1yZXNldC1pbi1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADQLqTWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIALKiD0sNgglccgEAABIFAABAABgAAAAAAAEAAACkgdb/BABm
YXN0L2Zvcm1zL2ZpbGUvZmlsZS1yZXNldC1pbi1jaGFuZ2UtdXNpbmctb3Blbi1wYW5lbC1zdGRl
cnIudHh0VVQFAAM/upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAs6IPSzm1z2KFAQAAkAUA
AC8AGAAAAAAAAQAAAKSBwgEFAGZhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLXJlLXJlbmRlci1z
dGRlcnIudHh0VVQFAANCupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAtKIPSwT94clzAQAA
EgUAACsAGAAAAAAAAQAAAKSBsAMFAGZhc3QvZm9ybXMvZmlsZS9pbnB1dC1maWxlLXZhbHVlLXN0
ZGVyci50eHRVVAUAA0O6k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC0og9LgsA2UXgBAAAS
BQAAPAAYAAAAAAABAAAApIGIBQUAZmFzdC9mb3Jtcy9maWxlL2lucHV0LWZpbGUtdmFsdWUtdXNp
bmctb3Blbi1wYW5lbC1zdGRlcnIudHh0VVQFAANDupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAtKIPS3HCG4+cAQAAJAoAADEAGAAAAAAAAQAAAKSBdgcFAGZhc3QvZm9ybXMvZmlsZS9pbnB1
dC1maWxlLXdyaXRlLWZpbGVzLXN0ZGVyci50eHRVVAUAA0O6k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAC0og9LlWZYQqEBAAAkCgAAQgAYAAAAAAABAAAApIF9CQUAZmFzdC9mb3Jtcy9maWxl
L2lucHV0LWZpbGUtd3JpdGUtZmlsZXMtdXNpbmctb3Blbi1wYW5lbC1zdGRlcnIudHh0VVQFAAND
upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAtKIPS0RaOcWpAQAA/AoAADwAGAAAAAAAAQAA
AKSBmgsFAGZhc3QvZm9ybXMvZmlsZS9zZWxlY3RlZC1maWxlcy1mcm9tLWhpc3Rvcnktc3RhdGUt
c3RkZXJyLnR4dFVUBQADRLqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPKiD0sAAAAAAAAA
AAAAAAAMABgAAAAAAAAAEADtQbkNBQBmYXN0L2ZyYW1lcy9VVAUAA7i6k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADyog9LgBgNpqcAAADSAAAALwAYAAAAAAABAAAApIH/DQUAZmFzdC9mcmFt
ZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLXN0ZGVyci50eHRVVAUAA7i6k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAADAog9LAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UEPDwUAZmFzdC9o
aXN0b3J5L1VUBQADV7qTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMCiD0uAGA2mpwAAANIA
AABAABgAAAAAAAEAAACkgVYPBQBmYXN0L2hpc3RvcnkvcGFnZS1jYWNoZS13ZWJkYXRhYmFzZS1u
by10cmFuc2FjdGlvbi1kYi1zdGRlcnIudHh0VVQFAANXupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAyKIPSwAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1BdxAFAGZhc3QvaW1hZ2VzL1VUBQAD
aLqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMiiD0shj704MgAAADMAAAAsABgAAAAAAAEA
AACkgb0QBQBmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3RkZXJyLnR4dFVUBQAD
aLqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOGiD0sAAAAAAAAAAAAAAAAKABgAAAAAAAAA
EADtQVURBQBmYXN0L3RleHQvVVQFAAOVupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4aIP
S/kimU95AQAAgwkAACMAGAAAAAAAAQAAAKSBmREFAGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi1z
dGRlcnIudHh0VVQFAAOVupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA1qIPSwAAAAAAAAAA
AAAAABcAGAAAAAAAAAAQAO1BbxMFAGZhc3QvdGV4dC9mb250LWRpc3BsYXkvVVQFAAODupNZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1qIPS2RPI4+jAAAA3wAAACcAGAAAAAAAAQAAAKSBwBMF
AGZhc3QvdGV4dC9mb250LWRpc3BsYXkvcGFyc2Utc3RkZXJyLnR4dFVUBQADg7qTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAO2iD0sAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQcQUBQBmYXN0
L3dvcmtlcnMvVVQFAAOuupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7aIPS/d+oTCIAQAA
0AUAADMAGAAAAAAAAQAAAKSBCxUFAGZhc3Qvd29ya2Vycy93b3JrZXItY29weS1zaGFyZWQtYmxv
Yi11cmwtc3RkZXJyLnR4dFVUBQADrrqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOKiD0sA
AAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQQAXBQBmYXN0L3hzbC9VVAUAA5e6k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADgog9LTvsg+IgAAADnAAAAJQAYAAAAAAABAAAApIFDFwUAZmFzdC94
c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUBQADk7qTWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAOCiD0v9oi5kjwAAAO4AAAAnABgAAAAAAAEAAACkgSoYBQBmYXN0L3hzbC94c2x0
LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRVVAUAA5S6k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACADgog9LsrvGZ4cAAAA0AQAAJAAYAAAAAAABAAAApIEaGQUAZmFzdC94c2wveHNsdC1jb250
ZW50VHlwZS1zdGRlcnIudHh0VVQFAAOUupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA4qIP
S8Lr9caMAAAAYAEAADQAGAAAAAAAAQAAAKSB/xkFAGZhc3QveHNsL3hzbHQtdHJhbnNmb3JtLXRv
LWZyYWdtZW50LWNyYXNoLXN0ZGVyci50eHRVVAUAA5e6k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAA4pg9LZTE2sLECAACoDgAAEQAYAAAAAAABAAAApIH5GgUAZnVsbF9yZXN1bHRzLmpzb25V
VAUAA9zAk1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADkog9LAAAAAAAAAAAAAAAABQAYAAAA
AAAAABAA7UH1HQUAaHR0cC9VVAUAA5u6k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAsow9L
AAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UE0HgUAaHR0cC90ZXN0cy9VVAUAAyS7k1l1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADlog9LAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UF5HgUAaHR0
cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9VVAUAA526k1l1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADlog9L3Jhv7zYAAAA6AAAAUQAYAAAAAAABAAAApIHiHgUA
aHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhl
YWRlci1zdHJpcHBlZC1zdGRlcnIudHh0VVQFAAOdupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgA5KIPS9yYb+82AAAAOgAAAGoAGAAAAAAAAQAAAKSBox8FAGh0dHAvdGVzdHMvY29udGVudGRp
c3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXItc3RyaXBwZWQtd2l0aC1t
ZXRhLXJlZmVyZXItYWx3YXlzLXN0ZGVyci50eHRVVAUAA5u6k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADkog9L3Jhv7zYAAAA6AAAAawAYAAAAAAABAAAApIF9IAUAaHR0cC90ZXN0cy9jb250
ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13
aXRoLW1ldGEtcmVmZXJlci1kZWZhdWx0LXN0ZGVyci50eHRVVAUAA5y6k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADkog9L3Jhv7zYAAAA6AAAAaQAYAAAAAAABAAAApIFYIQUAaHR0cC90ZXN0
cy9jb250ZW50ZGlzcG9zaXRpb25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJp
cHBlZC13aXRoLW1ldGEtcmVmZXJlci1uZXZlci1zdGRlcnIudHh0VVQFAAOcupNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA5KIPS9yYb+82AAAAOgAAAG8AGAAAAAAAAQAAAKSBMSIFAGh0dHAv
dGVzdHMvY29udGVudGRpc3Bvc2l0aW9uYXR0YWNobWVudHNhbmRib3gvcmVmZXJlci1oZWFkZXIt
c3RyaXBwZWQtd2l0aC1tZXRhLXJlZmVyZXItbm8tcmVmZXJyZXItc3RkZXJyLnR4dFVUBQADnLqT
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOSiD0vcmG/vNgAAADoAAAB+ABgAAAAAAAEAAACk
gRAjBQBodHRwL3Rlc3RzL2NvbnRlbnRkaXNwb3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVy
ZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0YS1yZWZlcmVyLW5vLXJlZmVycmVyLXdoZW4tZG93
bmdyYWRlLXN0ZGVyci50eHRVVAUAA5y6k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADlog9L
3Jhv7zYAAAA6AAAAagAYAAAAAAABAAAApIH+IwUAaHR0cC90ZXN0cy9jb250ZW50ZGlzcG9zaXRp
b25hdHRhY2htZW50c2FuZGJveC9yZWZlcmVyLWhlYWRlci1zdHJpcHBlZC13aXRoLW1ldGEtcmVm
ZXJlci1vcmlnaW4tc3RkZXJyLnR4dFVUBQADnbqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AOWiD0vcmG/vNgAAADoAAABuABgAAAAAAAEAAACkgdgkBQBodHRwL3Rlc3RzL2NvbnRlbnRkaXNw
b3NpdGlvbmF0dGFjaG1lbnRzYW5kYm94L3JlZmVyZXItaGVhZGVyLXN0cmlwcGVkLXdpdGgtbWV0
YS1yZWZlcmVyLXVuc2FmZS11cmwtc3RkZXJyLnR4dFVUBQADnbqTWXV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAOqiD0sAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQbYlBQBodHRwL3Rlc3RzL2xv
Y2FsL1VUBQADqLqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOuiD0sAAAAAAAAAAAAAAAAW
ABgAAAAAAAAAEADtQQEmBQBodHRwL3Rlc3RzL2xvY2FsL2Jsb2IvVVQFAAOpupNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA66IPS9QOggd7AQAAdAUAADEAGAAAAAAAAQAAAKSBUSYFAGh0dHAv
dGVzdHMvbG9jYWwvYmxvYi9zZW5kLWh5YnJpZC1ibG9iLXN0ZGVyci50eHRVVAUAA6m6k1l1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADqog9LM4+Se30BAAB0BQAAQgAYAAAAAAABAAAApIE3KAUA
aHR0cC90ZXN0cy9sb2NhbC9ibG9iL3NlbmQtaHlicmlkLWJsb2ItdXNpbmctb3Blbi1wYW5lbC1z
dGRlcnIudHh0VVQFAAOoupNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAHKMPSwAAAAAAAAAA
AAAAABAAGAAAAAAAAAAQAO1BMCoFAGh0dHAvdGVzdHMvbWlzYy9VVAUAAwi7k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAD2og9LezZggucAAABlAQAALQAYAAAAAAABAAAApIF6KgUAaHR0cC90
ZXN0cy9taXNjL2NvcHktcmVzb2x2ZXMtdXJscy1zdGRlcnIudHh0VVQFAAO/upNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAHKMPSxU1NZJ6AAAAvAAAACoAGAAAAAAAAQAAAKSByCsFAGh0dHAv
dGVzdHMvbWlzYy94c2x0LWJhZC1pbXBvcnQtc3RkZXJyLnR4dFVUBQADCLuTWXV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAACajD0sAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQaYsBQBodHRwL3Rl
c3RzL3NlY3VyaXR5L1VUBQADGLuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAO+iD0sAAAAA
AAAAAAAAAAAeABgAAAAAAAAAEADtQfQsBQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9V
VAUAA7K6k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADvog9LVafRzIgCAAC0MwAAPgAYAAAA
AAABAAAApIFMLQUAaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUt
YWNjZXNzLXN0ZGVyci50eHRVVAUAA7K6k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAATow9L
AAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UFMMAUAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvVVQFAAP2upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8KIPS/vP
zwe2AAAA+AAAAEIAGAAAAAAAAQAAAKSBsDAFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L2Jsb2NrLWZhdmljb24tc3RkZXJyLnR4dFVUBQADtLqTWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIABOjD0tjqqxsggAAAKgAAABAABgAAAAAAAEAAACkgeIxBQBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0
VVQFAAP1upNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAE6MPS2OqrGyCAAAAqAAAAFIAGAAA
AAAAAQAAAKSB3jIFAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hz
bC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50eHRVVAUAA/a6k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAADow9LvWxBxa0AAACkAQAAOgAYAAAAAAABAAAApIHsMwUAaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td2Vic3FsLWFsbG93ZWQtc3RkZXJyLnR4dFVUBQAD
1bqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAOjD0uAGA2mpwAAANIAAAAyABgAAAAAAAEA
AACkgQ01BQBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13ZWJzcWwtc3RkZXJyLnR4
dFVUBQAD1rqTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABijD0uAGA2mpwAAANIAAAA/ABgA
AAAAAAEAAACkgSA2BQBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2Vu
ZWQtd2Vic3FsLXN0ZGVyci50eHRVVAUAAwC7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAY
ow9LgBgNpqcAAADSAAAAQwAYAAAAAAABAAAApIFANwUAaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtc3RkZXJyLnR4dFVUBQADALuTWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIACajD0tgS2YQkQAAAPsBAABFABgAAAAAAAEAAACkgWQ4BQBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2lu
LXN0ZGVyci50eHRVVAUAAxi7k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAD3og9LAAAAAAAA
AAAAAAAAEwAYAAAAAAAAABAA7UF0OQUAaHR0cC90ZXN0cy9zdG9yYWdlL1VUBQADwrqTWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAPeiD0uAGA2mpwAAANIAAABFABgAAAAAAAEAAACkgcE5BQBo
dHRwL3Rlc3RzL3N0b3JhZ2UvY2FsbGJhY2tzLWFyZS1jYWxsZWQtaW4tY29ycmVjdC1jb250ZXh0
LXN0ZGVyci50eHRVVAUAA8K6k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAsow9LAAAAAAAA
AAAAAAAAGgAYAAAAAAAAABAA7UHnOgUAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9VVAUAAyS7
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAsow9LvbFoc7EAAAABAQAAQQAYAAAAAAABAAAA
pIE7OwUAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9wb3N0LWJsb2ItY29udGVudC10eXBlLWFz
eW5jLXN0ZGVyci50eHRVVAUAAyS7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAsow9LvbFo
c7EAAAABAQAAQAAYAAAAAAABAAAApIFnPAUAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9wb3N0
LWJsb2ItY29udGVudC10eXBlLXN5bmMtc3RkZXJyLnR4dFVUBQADJLuTWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGmiD0tbBFgOogUAAE0QAAAKABgAAAAAAAEAAACkgZI9BQBodHRwZC5jb25m
VVQFAAO2uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAM6MPSwAAAAAAAAAAAAAAAAkAGAAA
AAAAAAAQAO1BeEMFAGltcG9ydGVkL1VUBQADMbuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
ADOjD0sAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQbtDBQBpbXBvcnRlZC93M2MvVVQFAAMxu5NZ
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAARqMPSwAAAAAAAAAAAAAAACAAGAAAAAAAAAAQAO1B
AkQFAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQFAANTu5NZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAAlaMPSwAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1BXEQFAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL1VUBQAD6ruTWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADWjD0tGaBvbmQAAAMUAAABIABgAAAAAAAEAAACkgcBEBQBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJjdXJzb3JfaXRlcmF0aW5nLXN0ZGVy
ci50eHRVVAUAAzW7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEow9LHdGPJqMAAABPAgAA
RgAYAAAAAAABAAAApIHbRQUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIvaWRiZmFjdG9yeV9vcGVuMTEtc3RkZXJyLnR4dFVUBQADT7uTWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAEejD0tGaBvbmQAAAMUAAABDABgAAAAAAAEAAACkgf5GBQBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJpbmRleF9jb3VudC1zdGRlcnIudHh0VVQF
AANWu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAR6MPS0ZoG9uZAAAAxQAAAEQAGAAAAAAA
AQAAAKSBFEgFAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmlu
ZGV4X2NvdW50Mi1zdGRlcnIudHh0VVQFAANVu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
R6MPS0ZoG9uZAAAAxQAAAEQAGAAAAAAAAQAAAKSBK0kFAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2NvdW50My1zdGRlcnIudHh0VVQFAANVu5NZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVqMPS0ZoG9uZAAAAxQAAAEkAGAAAAAAAAQAAAKSBQkoF
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYm9iamVjdHN0b3Jl
X2NvdW50LXN0ZGVyci50eHRVVAUAA3O7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABWow9L
Rmgb25kAAADFAAAASgAYAAAAAAABAAAApIFeSwUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfY291bnQyLXN0ZGVyci50eHRVVAUAA3O7k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABWow9LMD2FN58AAACKAQAASgAYAAAAAAABAAAApIF7
TAUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3Rv
cmVfY291bnQzLXN0ZGVyci50eHRVVAUAA3O7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABZ
ow9LRmgb25kAAADFAAAASwAYAAAAAAABAAAApIGeTQUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9JbmRleGVkREIvaWRib2JqZWN0c3RvcmVfZGVsZXRlNS1zdGRlcnIudHh0VVQFAAN5
u5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAY6MPS0ZoG9uZAAAAxQAAAE4AGAAAAAAAAQAA
AKSBvE4FAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYnRyYW5z
YWN0aW9uLW9uY29tcGxldGUtc3RkZXJyLnR4dFVUBQADibuTWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAI+jD0u4+sihqQAAACgGAABLABgAAAAAAAEAAACkgd1PBQBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9yZXF1ZXN0LWV2ZW50LW9yZGVyaW5nLXN0ZGVyci50
eHRVVAUAA927k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACRow9LMD2FN58AAACKAQAAWAAY
AAAAAAABAAAApIELUQUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
dHJhbnNhY3Rpb24tY3JlYXRlX2luX3ZlcnNpb25jaGFuZ2Utc3RkZXJyLnR4dFVUBQAD4ruTWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJWjD0tGaBvbmQAAAMUAAABGABgAAAAAAAEAAACkgTxS
BQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi93cml0ZXItc3RhcnZh
dGlvbi1zdGRlcnIudHh0VVQFAAPqu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAM6MPSwAA
AAAAAAAAAAAAAC0AGAAAAAAAAAAQAO1BVVMFAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvV2ViQ3J5cHRvQVBJL1VUBQADMbuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGejD0sA
AAAAAAAAAAAAAAA5ABgAAAAAAAAAEADtQbxTBQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL1dlYkNyeXB0b0FQSS9nZW5lcmF0ZUtleS9VVAUAA5G7k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAzow9LjzQacEQAAACgCQAAXAAYAAAAAAABAAAApIEvVAUAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvZmFpbHVyZXNfUlNBLU9B
RVAud29ya2VyLXN0ZGVyci50eHRVVAUAAzG7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4
ow9LVALJsjYAAADAAgAAZQAYAAAAAAABAAAApIEJVQUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvZmFpbHVyZXNfUlNBU1NBLVBLQ1MxLXYx
XzUud29ya2VyLXN0ZGVyci50eHRVVAUAAzu7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABZ
ow9L4YKG6EkAAABgDAAAVwAYAAAAAAABAAAApIHeVQUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvdGVzdF9mYWlsdXJlcy5odHRwcy1zdGRl
cnIudHh0VVQFAAN6u5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZKMPS480GnBEAAAAoAkA
AGAAGAAAAAAAAQAAAKSBuFYFAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvV2ViQ3J5
cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBLU9BRVAuaHR0cHMtc3RkZXJyLnR4
dFVUBQADi7uTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGejD0tUAsmyNgAAAMACAABpABgA
AAAAAAEAAACkgZZXBQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1dlYkNyeXB0b0FQ
SS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQVNTQS1QS0NTMS12MV81Lmh0dHBzLXN0ZGVy
ci50eHRVVAUAA5G7k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABIow9LAAAAAAAAAAAAAAAA
JgAYAAAAAAAAABAA7UFvWAUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9V
VAUAA1e7k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABGow9LAAAAAAAAAAAAAAAAKgAYAAAA
AAAAABAA7UHPWAUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvVVQF
AANTu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAATaMPSwAAAAAAAAAAAAAAAC8AGAAAAAAA
AAAQAO1BM1kFAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMv
VVQFAANiu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARqMPS4BUuuELAgAAvQwAAEkAGAAA
AAAAAQAAAKSBnFkFAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Nv
cnMvY29ycy1vcmlnaW4uYW55LXN0ZGVyci50eHRVVAUAA1O7k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABJow9L97QNAdgCAACYEgAAUwAYAAAAAAABAAAApIEqXAUAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC1zdGF0dXMuYW55
LXN0ZGVyci50eHRVVAUAA1m7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKow9Lw+65RZkB
AADeBQAATAAYAAAAAAABAAAApIGPXwUAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvY29ycy9jb3JzLXByZWZsaWdodC5hbnktc3RkZXJyLnR4dFVUBQADW7uTWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAE2jD0vtvl99zgIAAL8TAABVABgAAAAAAAEAAACkga5hBQBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcmVkaXJl
Y3QtcHJlZmxpZ2h0LmFueS1zdGRlcnIudHh0VVQFAANiu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAASKMPSwAAAAAAAAAAAAAAAC4AGAAAAAAAAAAQAO1BC2UFAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvbm9zbmlmZi9VVAUAA1i7k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABIow9LzQ8g35sAAADGAAAASAAYAAAAAAABAAAApIFzZQUAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9ub3NuaWZmL3BhcnNpbmctbm9zbmlmZi1zdGRlcnIudHh0
VVQFAANXu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASKMPS/JyZqOrAAAA6gIAAD8AGAAA
AAAAAQAAAKSBkGYFAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvbm9zbmlm
Zi9zY3JpcHQtc3RkZXJyLnR4dFVUBQADWLuTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEij
D0tSOB/vrgAAAPYCAABDABgAAAAAAAEAAACkgbRnBQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2ZldGNoL25vc25pZmYvc3R5bGVzaGVldC1zdGRlcnIudHh0VVQFAANYu5NZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAA3KMPSwAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1B32gFAGlu
c3BlY3Rvci9VVAUAA3C8k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADQow9LAAAAAAAAAAAA
AAAADgAYAAAAAAAAABAA7UEjaQUAaW5zcGVjdG9yL2RvbS9VVAUAA1i8k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADQow9LV34VnikgAAA11QAAMgAYAAAAAAABAAAApIFraQUAaW5zcGVjdG9y
L2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLWNyYXNoLWxvZy50eHRVVAUAA1i8k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADQow9LVrvoE/kfAAD11AAALwAYAAAAAAABAAAApIEAigUAaW5z
cGVjdG9yL2RvbS9kb211dGlsaXRpZXMtcGF0aC1kdW1wLXN0ZGVyci50eHRVVAUAA1i8k1l1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAADcow9LAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UFiqgUA
aW5zcGVjdG9yL21vZGVsL1VUBQADcLyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANyjD0vY
9imBt04AAMgDAgA6ABgAAAAAAAEAAACkgayqBQBpbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVj
dC1nZXQtcHJvcGVydGllcy1jcmFzaC1sb2cudHh0VVQFAANwvJNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA3KMPS1R1y3OITgAAiAMCADcAGAAAAAAAAQAAAKSB1/kFAGluc3BlY3Rvci9tb2Rl
bC9yZW1vdGUtb2JqZWN0LWdldC1wcm9wZXJ0aWVzLXN0ZGVyci50eHRVVAUAA3C8k1l1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAACMow9LAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UHQSAYAaW5z
cGVjdG9yL3J1bnRpbWUvVVQFAAPXu5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAjKMPS4AY
DaanAAAA0gAAADMAGAAAAAAAAQAAAKSBHEkGAGluc3BlY3Rvci9ydW50aW1lL0NvbW1hbmRMaW5l
QVBJLWluc3BlY3Qtc3RkZXJyLnR4dFVUBQAD17uTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
ABekD0sAAAAAAAAAAAAAAAAHABgAAAAAAAAAEADtQTBKBgBqcXVlcnkvVVQFAAPdvJNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAF6QPSwo+xMTPvwAAkqcHACEAGAAAAAAAAQAAAKSBcUoGAGpx
dWVyeS9tYW5pcHVsYXRpb24tY3Jhc2gtbG9nLnR4dFVUBQAD3byTWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIABekD0sqn48An78AAFKnBwAeABgAAAAAAAEAAACkgZsKBwBqcXVlcnkvbWFuaXB1
bGF0aW9uLXN0ZGVyci50eHRVVAUAA928k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACvpA9L
AAAAAAAAAAAAAAAAAwAYAAAAAAAAABAA7UGSygcAanMvVVQFAAP5vZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAiKQPSwAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1Bz8oHAGpzL2RvbS9VVAUA
A6+9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACaow9LgBgNpqcAAADSAAAANQAYAAAAAAAB
AAAApIEQywcAanMvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50LXN0ZGVy
ci50eHRVVAUAA/O7k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADUow9LgBgNpqcAAADSAAAA
MAAYAAAAAAABAAAApIEmzAcAanMvZG9tL2V4Y2VwdGlvbnMtdGhyb3duLWluLWNhbGxiYWNrcy1z
dGRlcnIudHh0VVQFAANgvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOKYPS79vqx89XgAA
2dABAC8AGAAAAAAAAQAAAKSBN80HAGpzL2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0eS1j
cmFzaC1sb2cudHh0VVQFAAPbwJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOKQPSwBZB76y
ZgAAmm8EACwAGAAAAAAAAQAAAKSB3SsIAGpzL2RvbS9yZXNlcnZlZC13b3Jkcy1hcy1wcm9wZXJ0
eS1zdGRlcnIudHh0VVQFAAMcvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOKYPS74oX9w/
SwAAF3gBACQAGAAAAAAAAQAAAKSB9ZIIAGpzL2RvbS90cnktY2F0Y2gtY3Jhc2gtY3Jhc2gtbG9n
LnR4dFVUBQAD28CTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAIikD0uV20B37RkAAOCnAAAh
ABgAAAAAAAEAAACkgZLeCABqcy9kb20vdHJ5LWNhdGNoLWNyYXNoLXN0ZGVyci50eHRVVAUAA6+9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB1pA9LRf7tK/4rAABQKQEAGwAYAAAAAAABAAAA
pIHa+AgAanMvbGV0LXN5bnRheC1jcmFzaC1sb2cudHh0VVQFAAONvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAdaQPSx9XdCzLKwAAECkBABgAGAAAAAAAAQAAAKSBLSUJAGpzL2xldC1zeW50
YXgtc3RkZXJyLnR4dFVUBQADjb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADimD0tTV4ln
5EkAACNlAQAkABgAAAAAAAEAAACkgUpRCQBqcy9wYXJzZXItc3ludGF4LWNoZWNrLWNyYXNoLWxv
Zy50eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACspA9Lckjk5VCYAADQOQYA
IQAYAAAAAAABAAAApIGMmwkAanMvcGFyc2VyLXN5bnRheC1jaGVjay1zdGRlcnIudHh0VVQFAAPz
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAr6QPSxUBVH9TAQAA0g8AABwAGAAAAAAAAQAA
AKSBNzQKAGpzL3JlZ2V4cC11bmljb2RlLXN0ZGVyci50eHRVVAUAA/m9k1l1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAC8ow9LAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UHgNQoAcGxhdGZvcm0v
VVQFAAMzvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAvKMPSwAAAAAAAAAAAAAAAA0AGAAA
AAAAAAAQAO1BIzYKAHBsYXRmb3JtL21hYy9VVAUAAzO8k1l1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAC8ow9LAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UFqNgoAcGxhdGZvcm0vbWFjL3dlYnJ0
Yy9VVAUAAzO8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC8ow9LbC5ovfsBAAATBgAARAAY
AAAAAAABAAAApIG4NgoAcGxhdGZvcm0vbWFjL3dlYnJ0Yy9jYXB0dXJlQ2FudmFzLXdlYnJ0Yy1z
b2Z0d2FyZS1lbmNvZGVyLXN0ZGVyci50eHRVVAUAAzO8k1l1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAADBow9LAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UExOQoAcGx1Z2lucy9VVAUAAzm8k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADBow9LQ/jevq8AAADxAAAALwAYAAAAAAABAAAApIFz
OQoAcGx1Z2lucy9tb3VzZS1jbGljay1pZnJhbWUtdG8tcGx1Z2luLXN0ZGVyci50eHRVVAUAAzm8
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAHow9L2iQYWE8CAACQEAAAGgAYAAAAAAABAAAA
pIGLOgoAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAUAA966k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAHow9LvTZRNQgBAACPAgAAGgAYAAAAAAABAAAApIEuPQoAcHl3ZWJzb2NrZXQu
d3MubG9nLW91dC50eHRVVAUAA966k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABrog9LAAAA
AAAAAAAAAAAAGwAYAAAAAAAAAAAApIGKPgoAcHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQF
AAO5uZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAa6IPSwAAAAAAAAAAAAAAABsAGAAAAAAA
AAAAAKSB3z4KAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4dFVUBQADubmTWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADimD0uPylJacSkAAMavAAAMABgAAAAAAAEAAACkgTQ/CgByZXN1bHRz
Lmh0bWxVVAUAA9zAk1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACmpQ9LAAAAAAAAAAAAAAAA
CAAYAAAAAAAAABAA7UHraAoAc3B1dG5pay9VVAUAA8i/k1l1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAAAqpA9LAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UEtaQoAc3B1dG5pay9Db25mb3JtYW5j
ZS9VVAUAA/+8k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAqpA9LAAAAAAAAAAAAAAAAJgAY
AAAAAAAAABAA7UF7aQoAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy9VVAUA
A/+8k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAqpA9LAAAAAAAAAAAAAAAAPQAYAAAAAAAA
ABAA7UHbaQoAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9H
bG9iYWxfT2JqZWN0L1VUBQAD/7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACqkD0sAAAAA
AAAAAAAAAABEABgAAAAAAAAAEADtQVJqCgBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9P
YmplY3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4zL1VUBQAD/7yTWXV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAGClD0sAAAAAAAAAAAAAAABXABgAAAAAAAAAEADtQdBqCgBzcHV0bmlr
L0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUu
MS4zLzE1LjEuMy4xX2RlY29kZVVSSS9VVAUAA0S/k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAA4pg9LxWSJkrFJAAAYJgEAdwAYAAAAAAABAAAApIFhawoAc3B1dG5pay9Db25mb3JtYW5jZS8x
NV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9k
ZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjEwX1QxLWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACWpA9LShabrRcxAADgZwEAdAAYAAAAAAABAAAApIHDtQoAc3B1
dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0
LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjEwX1QxLXN0ZGVyci50eHRV
VAUAA8u9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4pg9LZbTfKPVJAAB6JwEAdwAYAAAA
AAABAAAApIGI5woAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1Ro
ZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjEx
X1QxLWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADBpA9L
SAQN93AxAAAfagEAdAAYAAAAAAABAAAApIEuMgsAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVV
UkkvUzE1LjEuMy4xX0ExLjExX1QxLXN0ZGVyci50eHRVVAUAAxm+k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAA4pg9LxJ+Ata5KAADKKgEAdwAYAAAAAAABAAAApIFMZAsAc3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8x
NS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjExX1QyLWNyYXNoLWxvZy50eHRVVAUAA9vA
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADopA9LHc4YbXYxAAAfagEAdAAYAAAAAAABAAAA
pIGrrwsAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9i
YWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjExX1QyLXN0
ZGVyci50eHRVVAUAA2S+k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4pg9LLCjb5q1IAABH
IQEAdwAYAAAAAAABAAAApIHP4QsAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEu
My4xX0ExLjEyX1QxLWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAQpQ9L5nqIYn0xAAAtagEAdAAYAAAAAAABAAAApIEtKwwAc3B1dG5pay9Db25mb3JtYW5j
ZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMu
MV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjEyX1QxLXN0ZGVyci50eHRVVAUAA6++k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAA4pg9L3UMIKHhKAADYKAEAdwAYAAAAAAABAAAApIFYXQwAc3B1
dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0
LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjEyX1QyLWNyYXNoLWxvZy50
eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA3pQ9LRy1WqIIxAABcawEAdAAY
AAAAAAABAAAApIGBqAwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4x
X1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0Ex
LjEyX1QyLXN0ZGVyci50eHRVVAUAA/m+k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4pg9L
9EV8YGZMAADKPQEAdwAYAAAAAAABAAAApIGx2gwAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRp
dmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVV
UkkvUzE1LjEuMy4xX0ExLjEyX1QzLWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABgpQ9LGmGChGwxAAAnagEAdAAYAAAAAAABAAAApIHIJw0Ac3B1dG5pay9D
b25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEu
My8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjEyX1QzLXN0ZGVyci50eHRVVAUAA0S/
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4pg9LIZH7uN1NAABMewEAdgAYAAAAAAABAAAA
pIHiWQ0Ac3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9i
YWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjJfVDEtY3Jh
c2gtbG9nLnR4dFVUBQAD28CTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACqkD0ubW2fbBjEA
AK5mAQBzABgAAAAAAAEAAACkgW+oDQBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmpl
Y3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3QvMTUuMS4zLzE1LjEuMy4xX2RlY29kZVVSSS9TMTUu
MS4zLjFfQTEuMl9UMS1zdGRlcnIudHh0VVQFAAP/vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAOKYPS8w6S4W9SgAAQSsBAHYAGAAAAAAAAQAAAKSBItoNAHNwdXRuaWsvQ29uZm9ybWFuY2Uv
MTVfTmF0aXZlX09iamVjdHMvMTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjFf
ZGVjb2RlVVJJL1MxNS4xLjMuMV9BMS4yX1QyLWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABrpA9LXKJmCewwAABjZgEAcwAYAAAAAAABAAAApIGPJQ4Ac3B1
dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0
LzE1LjEuMy8xNS4xLjMuMV9kZWNvZGVVUkkvUzE1LjEuMy4xX0ExLjJfVDItc3RkZXJyLnR4dFVU
BQADer2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGClD0sAAAAAAAAAAAAAAABgABgAAAAA
AAAAEADtQShXDgBzcHV0bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjFfVGhl
X0dsb2JhbF9PYmplY3QvMTUuMS4zLzE1LjEuMy4yX2RlY29kZVVSSUNvbXBvbmVudC9VVAUAA0S/
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4pg9Lpn4S5XtLAACoagEAgAAYAAAAAAABAAAA
pIHCVw4Ac3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9i
YWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0Ex
LjEwX1QxLWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACW
pA9LoX2q3SwxAADyZwEAfQAYAAAAAAABAAAApIH3ow4Ac3B1dG5pay9Db25mb3JtYW5jZS8xNV9O
YXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNv
ZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjEwX1QxLXN0ZGVyci50eHRVVAUAA8u9k1l1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAA4pg9La/MICeNIAACIIgEAgAAYAAAAAAABAAAApIHa1Q4A
c3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2Jq
ZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjExX1Qx
LWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADBpA9LGplI
EnkxAAAxagEAfQAYAAAAAAABAAAApIF3Hw8Ac3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklD
b21wb25lbnQvUzE1LjEuMy4yX0ExLjExX1QxLXN0ZGVyci50eHRVVAUAAxm+k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA4pg9LM1N8HS9IAACoHAEAgAAYAAAAAAABAAAApIGnUQ8Ac3B1dG5p
ay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1
LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjExX1QyLWNyYXNo
LWxvZy50eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADopA9L1Syw0W8xAAAx
agEAfQAYAAAAAAABAAAApIGQmg8Ac3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0
cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklDb21wb25l
bnQvUzE1LjEuMy4yX0ExLjExX1QyLXN0ZGVyci50eHRVVAUAA2S+k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAA4pg9LlHSojbFJAAD7IgEAgAAYAAAAAAABAAAApIG2zA8Ac3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8x
NS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjEyX1QxLWNyYXNoLWxvZy50
eHRVVAUAA9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQpQ9LUFtKLXsxAAA1agEAfQAY
AAAAAAABAAAApIEhFxAAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4x
X1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1
LjEuMy4yX0ExLjEyX1QxLXN0ZGVyci50eHRVVAUAA6++k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAA4pg9Ll/i6dpFIAADSHgEAgAAYAAAAAAABAAAApIFTSRAAc3B1dG5pay9Db25mb3JtYW5j
ZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMu
Ml9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjEyX1QyLWNyYXNoLWxvZy50eHRVVAUA
A9vAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA3pQ9Ln1Ien5AxAABuawEAfQAYAAAAAAAB
AAAApIGekhAAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9H
bG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4y
X0ExLjEyX1QyLXN0ZGVyci50eHRVVAUAA/m+k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4
pg9LqBpqzdVKAACJLAEAgAAYAAAAAAABAAAApIHlxBAAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9O
YXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNv
ZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjEyX1QzLWNyYXNoLWxvZy50eHRVVAUAA9vAk1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABgpQ9LEAORz3MxAAA5agEAfQAYAAAAAAABAAAApIF0
EBEAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxf
T2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjEy
X1QzLXN0ZGVyci50eHRVVAUAA0S/k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAqpA9LSH+x
XlcxAABCZwEAfwAYAAAAAAABAAAApIGeQhEAc3B1dG5pay9Db25mb3JtYW5jZS8xNV9OYXRpdmVf
T2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8xNS4xLjMuMl9kZWNvZGVVUklD
b21wb25lbnQvUzE1LjEuMy4yX0ExLjJfVDEtY3Jhc2gtbG9nLnR4dFVUBQAD/7yTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIACqkD0ukYnmbKDEAAAJnAQB8ABgAAAAAAAEAAACkga50EQBzcHV0
bmlrL0NvbmZvcm1hbmNlLzE1X05hdGl2ZV9PYmplY3RzLzE1LjFfVGhlX0dsb2JhbF9PYmplY3Qv
MTUuMS4zLzE1LjEuMy4yX2RlY29kZVVSSUNvbXBvbmVudC9TMTUuMS4zLjJfQTEuMl9UMS1zdGRl
cnIudHh0VVQFAAP/vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAa6QPS5G91DYMMQAAp2YB
AH8AGAAAAAAAAQAAAKSBjKYRAHNwdXRuaWsvQ29uZm9ybWFuY2UvMTVfTmF0aXZlX09iamVjdHMv
MTUuMV9UaGVfR2xvYmFsX09iamVjdC8xNS4xLjMvMTUuMS4zLjJfZGVjb2RlVVJJQ29tcG9uZW50
L1MxNS4xLjMuMl9BMS4yX1QyLWNyYXNoLWxvZy50eHRVVAUAA3q9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABrpA9LHISNbN8wAABnZgEAfAAYAAAAAAABAAAApIFR2BEAc3B1dG5pay9Db25m
b3JtYW5jZS8xNV9OYXRpdmVfT2JqZWN0cy8xNS4xX1RoZV9HbG9iYWxfT2JqZWN0LzE1LjEuMy8x
NS4xLjMuMl9kZWNvZGVVUklDb21wb25lbnQvUzE1LjEuMy4yX0ExLjJfVDItc3RkZXJyLnR4dFVU
BQADer2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACOmD0sAAAAAAAAAAAAAAAAQABgAAAAA
AAAAEADtQeYJEgBzcHV0bmlrL1VuaWNvZGUvVVQFAAOywJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAApqUPSwAAAAAAAAAAAAAAABwAGAAAAAAAAAAQAO1BMAoSAHNwdXRuaWsvVW5pY29kZS9V
bmljb2RlXzIxOC9VVAUAA8i/k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4pg9Lkvis9ytc
AAD3EwIANgAYAAAAAAABAAAApIGGChIAc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfMjE4L1M3LjZf
QTUuM19UMS1jcmFzaC1sb2cudHh0VVQFAAPbwJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
pqUPS360bSJnQQIAd9ggADMAGAAAAAAAAQAAAKSBIWcSAHNwdXRuaWsvVW5pY29kZS9Vbmljb2Rl
XzIxOC9TNy42X0E1LjNfVDEtc3RkZXJyLnR4dFVUBQADyL+TWXV4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAALelD0sAAAAAAAAAAAAAAAAcABgAAAAAAAAAEADtQfWoFABzcHV0bmlrL1VuaWNvZGUv
VW5pY29kZV8zMjAvVVQFAAPqv5NZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAt6UPS/j9o02V
RQIAgz4jADMAGAAAAAAAAQAAAKSBS6kUAHNwdXRuaWsvVW5pY29kZS9Vbmljb2RlXzMyMC9TNy42
X0EzLjEtY3Jhc2gtbG9nLnR4dFVUBQAD6r+TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALel
D0vzGEjKWkUCAEM+IwAwABgAAAAAAAEAAACkgU3vFgBzcHV0bmlrL1VuaWNvZGUvVW5pY29kZV8z
MjAvUzcuNl9BMy4xLXN0ZGVyci50eHRVVAUAA+q/k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AAAjpg9LAAAAAAAAAAAAAAAAHAAYAAAAAAAAABAA7UERNRkAc3B1dG5pay9Vbmljb2RlL1VuaWNv
ZGVfNDEwL1VUBQADssCTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACOmD0termCIR3wCAMNJ
JwAzABgAAAAAAAEAAACkgWc1GQBzcHV0bmlrL1VuaWNvZGUvVW5pY29kZV80MTAvUzcuNl9BMy4x
LWNyYXNoLWxvZy50eHRVVAUAA7LAk1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAjpg9LNRyn
hRJ8AgCDSScAMAAYAAAAAAABAAAApIEbshsAc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVfNDEwL1M3
LjZfQTMuMS1zdGRlcnIudHh0VVQFAAOywJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOKYP
S74MvOoVxgkAQOUyAAoAGAAAAAAAAQAAAKSBly4eAHN0YXRzLmpzb25VVAUAA9zAk1l1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAAAEpA9LAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UHw9CcAc3Rv
cmFnZS9VVAUAA7i8k1l1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABwpA9LAAAAAAAAAAAAAAAA
EgAYAAAAAAAAABAA7UEy9ScAc3RvcmFnZS9pbmRleGVkZGIvVVQFAAODvZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAI6QPSx3RjyajAAAATwIAACkAGAAAAAAAAQAAAKSBfvUnAHN0b3JhZ2Uv
aW5kZXhlZGRiL2luZGV4LWJhc2ljcy1zdGRlcnIudHh0VVQFAAPyvJNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAI6QPSx3RjyajAAAATwIAADEAGAAAAAAAAQAAAKSBhPYnAHN0b3JhZ2UvaW5k
ZXhlZGRiL2luZGV4LWJhc2ljcy13b3JrZXJzLXN0ZGVyci50eHRVVAUAA/K8k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAkpA9LbU2yna8AAAABCgAAKAAYAAAAAAABAAAApIGS9ycAc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtY291bnQtc3RkZXJyLnR4dFVUBQAD87yTWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACikD0vWw6YOpAAAABQDAAAtABgAAAAAAAEAAACkgaP4JwBzdG9yYWdlL2lu
ZGV4ZWRkYi9pbmRleC1tdWx0aWVudHJ5LXN0ZGVyci50eHRVVAUAA/y8k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAppA9LRmgb25kAAADFAAAALQAYAAAAAAABAAAApIGu+ScAc3RvcmFnZS9p
bmRleGVkZGIvaW5kZXgtcG9wdWxhdGlvbi1zdGRlcnIudHh0VVQFAAP9vJNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgALaQPS8rfZi73BQAAMTIAAEUAGAAAAAAAAAAAAKSBrvonAHN0b3JhZ2Uv
aW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi1pbi11cGdyYWRlbmVlZGVkLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADBb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC2kD0sziEapCAYAAJI2AAA9
ABgAAAAAAAAAAACkgSQBKABzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4taW4tdXBn
cmFkZW5lZWRlZC1zdGRlcnIudHh0VVQFAAMFvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
LaQPS1PNrH+FBAAA3hgAAEEAGAAAAAAAAAAAAKSBowcoAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZl
cnNpb24tb3Blbi13aXRoLXZlcnNpb24tcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMFvZNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgALaQPS2ODbw1zBAAAVRgAADkAGAAAAAAAAAAAAKSBowwoAHN0
b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tb3Blbi13aXRoLXZlcnNpb24tc3RkZXJyLnR4dFVU
BQADBr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC2kD0vqqVIEKgUAAPY7AABRABgAAAAA
AAAAAACkgYkRKABzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXBlbmRpbmctdmVyc2lvbi1j
aGFuZ2VzLWFzY2VuZGluZy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwa9k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAtpA9LCuKUskYFAAAPPQAASQAYAAAAAAAAAAAApIE+FygAc3RvcmFnZS9p
bmRleGVkZGIvaW50dmVyc2lvbi1wZW5kaW5nLXZlcnNpb24tY2hhbmdlcy1hc2NlbmRpbmctc3Rk
ZXJyLnR4dFVUBQADBr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC6kD0uujgpPEAUAAP8u
AABSABgAAAAAAAAAAACkgQcdKABzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXBlbmRpbmct
dmVyc2lvbi1jaGFuZ2VzLWRlc2NlbmRpbmctcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMHvZNZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALqQPS0cors8mBQAAGywAAEoAGAAAAAAAAAAAAKSBoyIo
AHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tcGVuZGluZy12ZXJzaW9uLWNoYW5nZXMtZGVz
Y2VuZGluZy1zdGRlcnIudHh0VVQFAAMHvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgALqQP
S5Cu/CzhBAAAPCsAAEwAGAAAAAAAAAAAAKSBTSgoAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNp
b24tcGVuZGluZy12ZXJzaW9uLWNoYW5nZXMtc2FtZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwi9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAupA9LlmeeeyAFAAApMAAARAAYAAAAAAAAAAAA
pIG0LSgAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1wZW5kaW5nLXZlcnNpb24tY2hhbmdl
cy1zYW1lLXN0ZGVyci50eHRVVAUAAwi9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAupA9L
7SJSIlgEAABHHQAAOwAYAAAAAAAAAAAApIFSMygAc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lv
bi1wZXJzaXN0ZW5jZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwi9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAvpA9LJCNK1RoEAABUGgAAMwAYAAAAAAAAAAAApIEfOCgAc3RvcmFnZS9pbmRl
eGVkZGIvaW50dmVyc2lvbi1wZXJzaXN0ZW5jZS1zdGRlcnIudHh0VVQFAAMJvZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAL6QPS7gyideMBQAAJC0AAD8AGAAAAAAAAAAAAKSBpjwoAHN0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tcmV2ZXJ0LW9uLWFib3J0LXByaXZhdGUtc3RkZXJyLnR4
dFVUBQADCb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC+kD0tYJx9QkgUAALouAAA3ABgA
AAAAAAAAAACkgatCKABzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXJldmVydC1vbi1hYm9y
dC1zdGRlcnIudHh0VVQFAAMJvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAL6QPS+CdDjwe
BAAAERoAAEUAGAAAAAAAAAAAAKSBrkgoAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tdHdv
LW9wZW5zLW5vLXZlcnNpb25zLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADCr2TWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAC+kD0tWYt6QPQQAAN8bAAA9ABgAAAAAAAAAAACkgUtNKABzdG9yYWdl
L2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXR3by1vcGVucy1uby12ZXJzaW9ucy1zdGRlcnIudHh0VVQF
AAMKvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMKQPS2Lkte1ZBQAAYkcAADgAGAAAAAAA
AAAAAKSB/1EoAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tdXBncmFkZXMtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAAMLvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMKQPS6jGF6KCBQAA
Y0kAADAAGAAAAAAAAAAAAKSBylcoAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tdXBncmFk
ZXMtc3RkZXJyLnR4dFVUBQADC72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADCkD0ue/sH1
TwMAAMIRAAAxABgAAAAAAAAAAACkgbZdKABzdG9yYWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMt
cHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMLvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMKQP
S2afODTaAwAAIRMAACkAGAAAAAAAAAAAAKSBcGEoAHN0b3JhZ2UvaW5kZXhlZGRiL2ludmFsaWQt
a2V5cy1zdGRlcnIudHh0VVQFAAMMvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMaQPSxte
c2R+DwAA2MYBADIAGAAAAAAAAAAAAKSBrWUoAHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1nZW5lcmF0
b3ItcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMNvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
MqQPS24wIwwjDwAAgNABACoAGAAAAAAAAAAAAKSBl3UoAHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1n
ZW5lcmF0b3Itc3RkZXJyLnR4dFVUBQADD72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADKk
D0s+cr0ccgUAANU+AABAABgAAAAAAAAAAACkgR6FKABzdG9yYWdlL2luZGV4ZWRkYi9rZXktc29y
dC1vcmRlci1hY3Jvc3MtdHlwZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMQvZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAMqQPSw5MU2R+BgAAjEUAADgAGAAAAAAAAAAAAKSBCosoAHN0b3Jh
Z2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWFjcm9zcy10eXBlcy1zdGRlcnIudHh0VVQFAAMQ
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMqQPS006dzJ8BQAA0TQAADgAGAAAAAAAAAAA
AKSB+pEoAHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUtcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAAMQvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAM6QPS3IJAzoyBgAAWjwA
ADAAGAAAAAAAAAAAAKSB6JcoAHN0b3JhZ2UvaW5kZXhlZGRiL2tleS1zb3J0LW9yZGVyLWRhdGUt
c3RkZXJyLnR4dFVUBQADEb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADOkD0tgeaJ3YQgA
AD3aAAAzABgAAAAAAAAAAACkgYSeKABzdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1hcnJheS1w
cml2YXRlLXN0ZGVyci50eHRVVAUAAxK9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA0pA9L
QBgY4S4GAAA+QAAANAAYAAAAAAAAAAAApIFSpygAc3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUt
YmluYXJ5LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADE72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADSkD0tIvg7ORgYAACVCAAAsABgAAAAAAAAAAACkge6tKABzdG9yYWdlL2luZGV4ZWRkYi9r
ZXktdHlwZS1iaW5hcnktc3RkZXJyLnR4dFVUBQADE72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADSkD0sFkPJUYwQAABgaAAA2ABgAAAAAAAAAAACkgZq0KABzdG9yYWdlL2luZGV4ZWRkYi9r
ZXktdHlwZS1pbmZpbml0eS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxO9k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAA0pA9L267ODeMEAADDHAAALgAYAAAAAAAAAAAApIFtuSgAc3RvcmFnZS9p
bmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHktc3RkZXJyLnR4dFVUBQADFL2TWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADSkD0srz7LjggcAAPc9AAAzABgAAAAAAAAAAACkgbi+KABzdG9yYWdl
L2luZGV4ZWRkYi9rZXlwYXRoLWFycmF5cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxS9k1l1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAA1pA9L9KcUOL0HAADLQAAAKwAYAAAAAAAAAAAApIGnxigA
c3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1hcnJheXMtc3RkZXJyLnR4dFVUBQADFb2TWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIADakD0v6FMZUGgQAAG1iAAAzABgAAAAAAAAAAACkgcnOKABz
dG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxe9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA3pA9LpRKlvDwFAAChpgAAKwAYAAAAAAAAAAAA
pIFQ0ygAc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNpY3Mtc3RkZXJyLnR4dFVUBQADGb2T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADekD0v9Xji87QYAABmAAAAyABgAAAAAAAAAAACk
gfHYKABzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLXByaXZhdGUtc3RkZXJyLnR4dFVU
BQADGb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADekD0s0T/o0+QUAABg7AAAqABgAAAAA
AAAAAACkgUrgKABzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2VzLXN0ZGVyci50eHRVVAUA
Axq9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA3pA9Lgle8XVgFAAA0QwAANgAYAAAAAAAA
AAAApIGn5igAc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1mZXRjaC1rZXktcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAAMavZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOKQPS25Y+L5WBgAAz0kA
AC4AGAAAAAAAAAAAAKSBb+woAHN0b3JhZ2UvaW5kZXhlZGRiL2tleXBhdGgtZmV0Y2gta2V5LXN0
ZGVyci50eHRVVAUAAxu9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA4pA9LfLSDn/gHAADC
aAAAQQAYAAAAAAAAAAAApIEt8ygAc3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1pbnRyaW5zaWMt
cHJvcGVydGllcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxu9k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAA4pA9LZxfZdIwIAABEeAAAOQAYAAAAAAAAAAAApIGg+ygAc3RvcmFnZS9pbmRleGVk
ZGIva2V5cGF0aC1pbnRyaW5zaWMtcHJvcGVydGllcy1zdGRlcnIudHh0VVQFAAMbvZNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAOKQPS05m1u38AAAA+QIAAC0AGAAAAAAAAAAAAKSBnwQpAHN0
b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADHL2TWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIADmkD0tOXN1jNQkAALCMAAA6ABgAAAAAAAAAAACkgQIGKQBz
dG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRpb24tcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAAMevZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOqQPS1RmTizSCQAAG5AAADIAGAAA
AAAAAAAAAKSBqw8pAHN0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtcG9wdWxhdGlvbi1zdGRl
cnIudHh0VVQFAAMfvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOqQPS0pTdEw4CAAAGmQA
ADUAGAAAAAAAAAAAAKSB6RkpAHN0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgtdHlwZXMtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAMfvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOqQPS+0/
S/2YCQAAuXsAAC0AGAAAAAAAAAAAAKSBkCIpAHN0b3JhZ2UvaW5kZXhlZGRiL2xhenktaW5kZXgt
dHlwZXMtc3RkZXJyLnR4dFVUBQADIL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADqkD0tO
Ztbt/AAAAPkCAAA1ABgAAAAAAAAAAACkgY8sKQBzdG9yYWdlL2luZGV4ZWRkYi9sZWdhY3ktY29u
c3RhbnRzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADIL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADqkD0sT0hZW7wUAAFOZAAAyABgAAAAAAAAAAACkgfotKQBzdG9yYWdlL2luZGV4ZWRkYi9s
aXN0LW9yZGVyaW5nLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADIL2TWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIADukD0v/x4MOsgYAAEWaAAAqABgAAAAAAAAAAACkgVU0KQBzdG9yYWdlL2luZGV4
ZWRkYi9saXN0LW9yZGVyaW5nLXN0ZGVyci50eHRVVAUAAyG9k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAA7pA9Ly+apHJAGAAALWQAALQAYAAAAAAAAAAAApIFrOykAc3RvcmFnZS9pbmRleGVk
ZGIvbWV0YWRhdGEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMhvZNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAO6QPS4YI+cpZBQAAMSEAADIAGAAAAAAAAAAAAKSBYkIpAHN0b3JhZ2UvaW5kZXhl
ZGRiL21ldGFkYXRhLXJhY2UtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMivZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAO6QPS367Mbw7BgAA8iUAACoAGAAAAAAAAAAAAKSBJ0gpAHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLXJhY2Utc3RkZXJyLnR4dFVUBQADIr2TWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADukD0v09XFjOQcAADFcAAAlABgAAAAAAAAAAACkgcZOKQBzdG9yYWdlL2lu
ZGV4ZWRkYi9tZXRhZGF0YS1zdGRlcnIudHh0VVQFAAMivZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAVaQPSwAAAAAAAAAAAAAAABkAGAAAAAAAAAAQAO1BXlYpAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9VVAUAA1K9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAADpA9LzeOeCBoHAAB9
dAAANwAYAAAAAAAAAAAApIGxVikAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2F1dG9pbmNyZW1l
bnQtYWJvcnQtc3RkZXJyLnR4dFVUBQADtbyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAOk
D0t/3IvVTQUAAHggAAA1ABgAAAAAAAAAAACkgTxeKQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
YmFzaWMtYWRkLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADtbyTWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAAOkD0v1+oGaUgUAANQgAAAtABgAAAAAAAAAAACkgfhjKQBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vYmFzaWMtYWRkLXN0ZGVyci50eHRVVAUAA7a8k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAADpA9Ltl0i4iEFAACOHQAANQAYAAAAAAAAAAAApIGxaSkAc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2Jhc2ljLXB1dC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA7a8k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAEpA9Lx0dPqCAFAACeHQAALQAYAAAAAAAAAAAApIFBbykAc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLXB1dC1zdGRlcnIudHh0VVQFAAO3vJNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgABKQPSylFKU07BgAAqjEAADkAGAAAAAAAAAAAAKSByHQpAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9iaW5hcnkta2V5cy0xLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD
uLyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAWkD0twT65p1wYAAAY3AAAxABgAAAAAAAAA
AACkgXZ7KQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmluYXJ5LWtleXMtMS1zdGRlcnIudHh0
VVQFAAO5vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABaQPSxmxgJB3BwAA70kAAC8AGAAA
AAAAAAAAAKSBuIIpAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLWN1cnNvci1zdGRlcnIu
dHh0VVQFAAO6vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAB6QPS6hr6vSoCgAATbsAAC8A
GAAAAAAAAAAAAKSBmIopAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS1zdGRl
cnIudHh0VVQFAAO9vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgABqQPS94nt3hDCwAA8rsA
ADcAGAAAAAAAAAAAAKSBqZUpAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLXNpbXBsZS13
b3JrZXJzLXN0ZGVyci50eHRVVAUAA7u8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAHpA9L
b2ybg1IGAACpNwAAMgAYAAAAAAAAAAAApIFdoSkAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Js
b2Itc3ZnLWltYWdlLXN0ZGVyci50eHRVVAUAA768k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAHpA9Lo4dFyZ8GAAAiNgAARAAYAAAAAAAAAAAApIEbqCkAc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2Jsb2NrZWQtb3Blbi1kYi1yZXF1ZXN0cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA768k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAIpA9LWmrrZ+wGAADCNgAAPAAYAAAAAAAAAAAApIE4
rykAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jsb2NrZWQtb3Blbi1kYi1yZXF1ZXN0cy1zdGRl
cnIudHh0VVQFAAO/vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgACKQPS89O84iyBgAA+zQA
AEEAGAAAAAAAAAAAAKSBmrYpAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGUtaW5kZXgt
ZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPAvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgACKQPS41jm7muBgAAlTEAADkAGAAAAAAAAAAAAKSBx70pAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9jcmVhdGUtaW5kZXgtZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQADwLyTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAAmkD0u+kMakZgYAAD5JAABDABgAAAAAAAAAAACkgejEKQBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3JlYXRlb2JqZWN0c3RvcmUtYmFzaWMtcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAAPBvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgACaQPS3YhpTSaBgAAqEoA
ADsAGAAAAAAAAAAAAKSBy8spAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jcmVhdGVvYmplY3Rz
dG9yZS1iYXNpYy1zdGRlcnIudHh0VVQFAAPCvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
CaQPS2JJoKDZBAAA4hwAAEYAGAAAAAAAAAAAAKSB2tIpAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9jcmVhdGVvYmplY3RzdG9yZS1mYWlsdXJlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA8K8k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAKpA9L4M23TXgEAADMGQAAPgAYAAAAAAAAAAAApIEz
2CkAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2NyZWF0ZW9iamVjdHN0b3JlLWZhaWx1cmVzLXN0
ZGVyci50eHRVVAUAA8O8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAKpA9LRYcb4GcHAAAN
cAAANAAYAAAAAAAAAAAApIEj3SkAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci0xLXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQADw7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAqkD0vl
edIjcwcAAKh7AAAsABgAAAAAAAAAAACkgfjkKQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vy
c29yLTEtc3RkZXJyLnR4dFVUBQADxLyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAukD0s7
ZE/DlQcAAJuUAAA0ABgAAAAAAAAAAACkgdHsKQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vy
c29yLTItcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPFvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgADKQPS5dyPLULCAAASqoAACwAGAAAAAAAAAAAAKSB1PQpAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9jdXJzb3ItMi1zdGRlcnIudHh0VVQFAAPHvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgADKQPS7owg6X0BgAA6WUAADQAGAAAAAAAAAAAAKSBRf0pAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9jdXJzb3ItMy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA8e8k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAMpA9LYrGbUoEHAACyeQAALAAYAAAAAAAAAAAApIGnBCoAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2N1cnNvci0zLXN0ZGVyci50eHRVVAUAA8i8k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAANpA9LvsMoqNYGAACLXwAANAAYAAAAAAAAAAAApIGODCoAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2N1cnNvci00LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADybyTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAA2kD0vxPAQKNQcAAE9xAAAsABgAAAAAAAAAAACkgdITKgBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTQtc3RkZXJyLnR4dFVUBQADyryTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAA2kD0tqnpaffwYAAG00AAA0ABgAAAAAAAAAAACkgW0bKgBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPKvJNZ
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADqQPS8s45zgKBwAALjkAACwAGAAAAAAAAAAAAKSB
WiIqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNS1zdGRlcnIudHh0VVQFAAPLvJNZ
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADqQPSyqwUkZ2BgAAbTQAADQAGAAAAAAAAAAAAKSB
yikqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJzb3ItNi1wcml2YXRlLXN0ZGVyci50eHRV
VAUAA8y8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAOpA9LQlceL/8GAAB6OQAALAAYAAAA
AAAAAAAApIGuMCoAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci02LXN0ZGVyci50eHRV
VAUAA8y8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPpA9LHfDtfjwGAABOLgAANAAYAAAA
AAAAAAAApIETOCoAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2N1cnNvci03LXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADzbyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA+kD0sPzxZUlwYAACIx
AAAsABgAAAAAAAAAAACkgb0+KgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTctc3Rk
ZXJyLnR4dFVUBQADzbyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA+kD0sFSPmuMgYAAE4u
AAA0ABgAAAAAAAAAAACkgbpFKgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vY3Vyc29yLTgtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAPOvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEKQPSxw8
B8ChBgAAKjAAACwAGAAAAAAAAAAAAKSBWkwqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9jdXJz
b3ItOC1zdGRlcnIudHh0VVQFAAPPvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEKQPS8GG
soarBgAAdEgAADYAGAAAAAAAAAAAAKSBYVMqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kYXRl
LWJhc2ljLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADz7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIABCkD0vsJpIexwYAAKxJAAAuABgAAAAAAAAAAACkgXxaKgBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vZGF0ZS1iYXNpYy1zdGRlcnIudHh0VVQFAAPQvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAEaQPS1/KkxCtBQAA7TAAADwAGAAAAAAAAAAAAKSBq2EqAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9kZWxldGVkYXRhYmFzZS0xLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD0byTWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIABGkD0tzLuyL1AUAAGoxAAA0ABgAAAAAAAAAAACkgc5nKgBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtMS1zdGRlcnIudHh0VVQFAAPS
vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEaQPSzmqSWtrBgAAIzQAADwAGAAAAAAAAAAA
AKSBEG4qAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVkYXRhYmFzZS0yLXByaXZhdGUt
c3RkZXJyLnR4dFVUBQAD0ryTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABKkD0uv5vQGewYA
AK80AAA0ABgAAAAAAAAAAACkgfF0KgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0
YWJhc2UtMi1zdGRlcnIudHh0VVQFAAPTvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAEqQP
S20zcHb/AAAAmQMAAE4AGAAAAAAAAAAAAKSB2nsqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9k
ZWxldGVkYXRhYmFzZS1udWxsLW5hbWUtZXhjZXB0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD
1LyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABOkD0sFkqLSTAEAAJ0DAABIABgAAAAAAAAA
AACkgWF9KgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1l
dmVudC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9W8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAATpA9Ls5zlXIgBAABCBAAAQAAYAAAAAAAAAAAApIEvfyoAc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2RlbGV0ZWRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtc3RkZXJyLnR4dFVUBQAD1ryTWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIABOkD0tgNvQyVgAAAJkAAABCABgAAAAAAAAAAACkgTGBKgBz
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlZGF0YWJhc2UtcmVxdWVzdC1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA9a8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAUpA9LADo3vg4BAAAh
AwAAOgAYAAAAAAAAAAAApIEDgioAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWRhdGFi
YXNlLXJlcXVlc3Qtc3RkZXJyLnR4dFVUBQAD17yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ABSkD0sdgzMCuAcAAPw9AAA5ABgAAAAAAAAAAACkgYWDKgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vZGVsZXRlaW5kZXgtMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9i8k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAUpA9L/7QYMM4IAACpRAAAMQAYAAAAAAAAAAAApIGwiyoAc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTEtc3RkZXJyLnR4dFVUBQAD2LyTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIABWkD0scRo3mgwgAANdaAAA5ABgAAAAAAAAAAACkgemUKgBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMi1wcml2YXRlLXN0ZGVyci50eHRVVAUA
A9m8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAVpA9LsaiOG7wJAAA8ZwAAMQAYAAAAAAAA
AAAApIHfnSoAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0ZWluZGV4LTItc3RkZXJyLnR4
dFVUBQAD2ryTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABWkD0t4x8ktyQUAAFUoAAA5ABgA
AAAAAAAAAACkgQaoKgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZGVsZXRlaW5kZXgtMy1wcml2
YXRlLXN0ZGVyci50eHRVVAUAA9q8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAWpA9LDouu
bngGAAAILAAAMQAYAAAAAAAAAAAApIFCrioAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0
ZWluZGV4LTMtc3RkZXJyLnR4dFVUBQAD27yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABak
D0uVzeGbEgYAAHQxAAA5ABgAAAAAAAAAAACkgSW1KgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
ZGVsZXRlaW5kZXgtNC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9u8k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAWpA9L5LlneyUIAABWdAAAPwAYAAAAAAAAAAAApIGquyoAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RlbGV0ZW9iamVjdHN0b3JlLTEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPc
vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAF6QPS3hGKC3UBwAAFnoAADcAGAAAAAAAAAAA
AKSBSMQqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVvYmplY3RzdG9yZS0xLXN0ZGVy
ci50eHRVVAUAA928k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAXpA9LNlITGesDAACmFQAA
OAAYAAAAAAAAAAAApIGNzCoAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RvdWJsZS1hYm9ydC1w
cml2YXRlLXN0ZGVyci50eHRVVAUAA968k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAYpA9L
7eh5IQgEAAC6EwAAMAAYAAAAAAAAAAAApIHq0CoAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Rv
dWJsZS1hYm9ydC1zdGRlcnIudHh0VVQFAAPfvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
GKQPS3ifZRp5AwAAzRMAADcAGAAAAAAAAAAAAKSBXNUqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9kb3VibGUtb3Blbi1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9+8k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAYpA9LIg0/lLMDAABtFwAALwAYAAAAAAAAAAAApIFG2SoAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2RvdWJsZS1vcGVuLXN0ZGVyci50eHRVVAUAA+C8k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAZpA9LhWDVZr8EAAByJgAAPgAYAAAAAAAAAAAApIFi3SoAc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2djLWNsb3Nlcy1kYXRhYmFzZS1wcml2YXRlLXN0ZGVyci50eHRVVAUA
A+G8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAZpA9LdzENHdgEAACTJgAANgAYAAAAAAAA
AAAApIGZ4ioAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2djLWNsb3Nlcy1kYXRhYmFzZS1zdGRl
cnIudHh0VVQFAAPivJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGaQPSzNvAkiwBgAAHTsA
AD4AGAAAAAAAAAAAAKSB4ecqAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9nZXQtaW5kZXgtZmFp
bHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPivJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAGqQPS3ckZ2fyBgAAKToAADYAGAAAAAAAAAAAAKSBCe8qAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9nZXQtaW5kZXgtZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQAD47yTWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIABqkD0sDB6tmsgwAAMA9AgA4ABgAAAAAAAAAAACkgWv2KgBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD5LyTWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABukD0syhMbq5wwAAIlaAgAwABgAAAAAAAAAAACkgY8D
KwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vZ2V0LWtleXJhbmdlLXN0ZGVyci50eHRVVAUAA+a8
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAcpA9LKhMxC+AFAADoJAAANgAYAAAAAAAAAAAA
pIHgECsAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2hhbmRsZS11c2VyLWRlbGV0ZS1zdGRlcnIu
dHh0VVQFAAPnvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHKQPS5k8TJqVEwAAc/YCAEwA
GAAAAAAAAAAAAKSBMBcrAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJjdXJzb3ItY29udGlu
dWUtcHJpbWFyeS1rZXktMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA+i8k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAgpA9Lc6W9gzkWAAAJZgMARAAYAAAAAAAAAAAApIFLKysAc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYmN1cnNvci1jb250aW51ZS1wcmltYXJ5LWtleS0xLXN0ZGVyci50
eHRVVAUAA+u8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAgpA9LACznaaIGAADrQwAAUgAY
AAAAAAAAAAAApIECQisAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLWRlbGV0
ZW9iamVjdHN0b3JlLWZhaWx1cmVzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD7LyTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIACGkD0sg/1eyigYAAPg5AABKABgAAAAAAAAAAACkgTBJKwBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0YWJhc2UtZGVsZXRlb2JqZWN0c3RvcmUtZmFpbHVy
ZXMtc3RkZXJyLnR4dFVUBQAD7byTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACGkD0vduafy
4AQAAHkbAABMABgAAAAAAAAAAACkgT5QKwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiZGF0
YWJhc2UtdHJhbnNhY3Rpb24tZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPtvJNZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIaQPSzUk3ljeBAAALBsAAEQAGAAAAAAAAAAAAKSBpFUr
AHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS10cmFuc2FjdGlvbi1mYWlsdXJl
cy1zdGRlcnIudHh0VVQFAAPuvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIqQPS0LHujSE
BwAAm1wAAD0AGAAAAAAAAAAAAKSBAFsrAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJpbmRl
eC1nZXRhbGwtMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA++8k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAipA9LPjfgEzIIAABRdgAANQAYAAAAAAAAAAAApIH7YisAc3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbC0xLXN0ZGVyci50eHRVVAUAA/C8k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAjpA9LSuzGtpwHAACrXgAAQQAYAAAAAAAAAAAApIGcaysAc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtleXMtMS1wcml2YXRlLXN0ZGVyci50
eHRVVAUAA/G8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAjpA9LPXNih1EIAABtdgAAOQAY
AAAAAAAAAAAApIGzcysAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmluZGV4LWdldGFsbGtl
eXMtMS1zdGRlcnIudHh0VVQFAAPyvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJKQPS7Na
4aEBBgAAvT4AAEUAGAAAAAAAAAAAAKSBd3wrAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJp
bmRleC1wcm9wZXJ0aWVzLWJhc2ljLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD87yTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIACSkD0vsfY6aEgYAAE8+AAA9ABgAAAAAAAAAAACkgfeCKwBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRiaW5kZXgtcHJvcGVydGllcy1iYXNpYy1zdGRlcnIudHh0
VVQFAAPzvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJaQPSzQUWj9XGgAAG6YGAEEAGAAA
AAAAAAAAAKSBgIkrAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJrZXktYXJyYXktZXF1YWxp
dHktcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAP2vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
JqQPSy0b2Rz8FwAAluEHADkAGAAAAAAAAAAAAKSBUqQrAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJrZXktYXJyYXktZXF1YWxpdHktc3RkZXJyLnR4dFVUBQAD+LyTWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACekD0uTLuVliAgAAGeBAABCABgAAAAAAAAAAACkgcG8KwBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY2xlYXItMS1wcml2YXRlLXN0ZGVyci50eHRV
VAUAA/m8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAnpA9L2fgUJT4IAAB+ggAAOgAYAAAA
AAAAAAAApIHFxSsAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFy
LTEtc3RkZXJyLnR4dFVUBQAD+ryTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACikD0tarB7C
0QgAAM2tAABCABgAAAAAAAAAAACkgXfOKwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtY2xlYXItMi1wcml2YXRlLXN0ZGVyci50eHRVVAUAA/u8k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAopA9LPhBlueUIAAC+sQAAOgAYAAAAAAAAAAAApIHE1ysAc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNsZWFyLTItc3RkZXJyLnR4dFVUBQAD/LyT
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACmkD0s9BCpdEggAAMjIAABCABgAAAAAAAAAAACk
gR3hKwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS1wcml2
YXRlLXN0ZGVyci50eHRVVAUAA/28k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAppA9Lkv5C
ifcKAABwUQEAOgAYAAAAAAAAAAAApIGr6SsAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLWNvdW50LTEtc3RkZXJyLnR4dFVUBQAD/ryTWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACqkD0vN0Q22QgYAAEkzAABJABgAAAAAAAAAAACkgRb1KwBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAAP/vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAKqQPS6LAlFxIBgAAcDMAAEEAGAAA
AAAAAAAAAKSB2/srAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3Vu
dC1mYWlsdXJlcy1zdGRlcnIudHh0VVQFAAMAvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
K6QPSxvQ4RcVDQAAB90BAEMAGAAAAAAAAAAAAKSBngIsAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1kZWxldGUtMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwG9k1l1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAArpA9LdpzEI7cSAACfgwMAOwAYAAAAAAAAAAAApIEwECwA
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRlbGV0ZS0xLXN0ZGVyci50
eHRVVAUAAwK9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAspA9Lqx6N+d0GAACSOQAAQwAY
AAAAAAAAAAAApIFcIywAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWRl
bGV0ZS0yLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADA72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACykD0trRNYj1QYAACE5AAA7ABgAAAAAAAAAAACkgbYqLABzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLTItc3RkZXJyLnR4dFVUBQADBL2TWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIACykD0uPs9SzeQYAAKE9AABKABgAAAAAAAAAAACkgQAyLABzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtZGVsZXRlLWZhaWx1cmVzLXByaXZh
dGUtc3RkZXJyLnR4dFVUBQADBL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAC2kD0seLKYp
uAYAAMg9AABCABgAAAAAAAAAAACkgf04LABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtZGVsZXRlLWZhaWx1cmVzLXN0ZGVyci50eHRVVAUAAwW9k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAtpA9L2igk90AGAACXMwAARwAYAAAAAAAAAAAApIExQCwAc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWdldC1mYWlsdXJlcy1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAAwa9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAupA9LJ7wqtFAGAABuMwAA
PwAYAAAAAAAAAAAApIHyRiwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3Jl
LWdldC1mYWlsdXJlcy1zdGRlcnIudHh0VVQFAAMHvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgALqQPS6cFUcaRBgAA4kgAAEMAGAAAAAAAAAAAAKSBu00sAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pZGJvYmplY3RzdG9yZS1nZXRhbGwtMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwe9k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAupA9LCU1FU7AGAAA7TwAAOwAYAAAAAAAAAAAApIHJ
VCwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWdldGFsbC0xLXN0ZGVy
ci50eHRVVAUAAwi9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAvpA9L30lllqwGAABDTQAA
RwAYAAAAAAAAAAAApIHuWywAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3Jl
LWdldGFsbGtleXMtMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAwm9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAvpA9LOsaoq8QGAADNTgAAPwAYAAAAAAAAAAAApIEbYywAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWdldGFsbGtleXMtMS1zdGRlcnIudHh0VVQFAAMK
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAL6QPS8FgLrWuBgAASUUAAEMAGAAAAAAAAAAA
AKSBWGosAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1nZXRrZXktMS1w
cml2YXRlLXN0ZGVyci50eHRVVAUAAwq9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAwpA9L
Z+akbIkGAAAbSQAAOwAYAAAAAAAAAAAApIGDcSwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWdldGtleS0xLXN0ZGVyci50eHRVVAUAAwu9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAwpA9LeSLujqgGAADNQAAAUQAYAAAAAAAAAAAApIGBeCwAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLXB1dC1hbmQtY2xlYXItZmFpbHVyZXMtcHJpdmF0
ZS1zdGRlcnIudHh0VVQFAAMMvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMaQPSz+rbG+/
BgAAzz0AAEkAGAAAAAAAAAAAAKSBtH8sAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmpl
Y3RzdG9yZS1wdXQtYW5kLWNsZWFyLWZhaWx1cmVzLXN0ZGVyci50eHRVVAUAAw29k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAxpA9LmyUleMUDAAClEgAATwAYAAAAAAAAAAAApIH2hiwAc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYnRyYW5zYWN0aW9uLW9iamVjdHN0b3JlLWZhaWx1cmVz
LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADDr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADGk
D0vtQW1hLgQAAKUUAABHABgAAAAAAAAAAACkgUSLLABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmUtZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQADDr2TWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADKkD0tDPVSWQgUAAAEqAABJABgAAAAAAAAAAACkgfOP
LABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRidHJhbnNhY3Rpb24tb2JqZWN0c3RvcmVzLTEt
cHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMPvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAMqQP
S+mCG8chBQAA/ScAAEEAGAAAAAAAAAAAAKSBuJUsAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9p
ZGJ0cmFuc2FjdGlvbi1vYmplY3RzdG9yZXMtMS1zdGRlcnIudHh0VVQFAAMQvZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAM6QPS3IrF9QsAQAA5AQAAEUAGAAAAAAAAAAAAKSBVJssAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJ2ZXJzaW9uY2hhbmdlZXZlbnQtY29uc3RydWN0b3Itc3Rk
ZXJyLnR4dFVUBQADEb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADOkD0um29wORAsAAHiK
AQAzABgAAAAAAAAAAACkgf+cLABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMS1wcml2
YXRlLXN0ZGVyci50eHRVVAUAAxK9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA0pA9LDh0l
PtIMAADlpwEAKwAYAAAAAAAAAAAApIGwqCwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LTEtc3RkZXJyLnR4dFVUBQADE72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADWkD0vqxeYf
chAAABWkAQAzABgAAAAAAAAAAACkgee1LABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgt
Mi1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxW9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA1
pA9LuyeyWRYQAAAwtQEAKwAYAAAAAAAAAAAApIHGxiwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2luZGV4LTItc3RkZXJyLnR4dFVUBQADFr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADak
D0sK2pSXnAcAAGpWAAAzABgAAAAAAAAAAACkgUHXLABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aW5kZXgtMy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxe9k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAA2pA9LatElotUHAAAlZAAAKwAYAAAAAAAAAAAApIFK3ywAc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2luZGV4LTMtc3RkZXJyLnR4dFVUBQADGL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIADekD0u2Na6vGQgAAEGcAAAzABgAAAAAAAAAAACkgYTnLABzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaW5kZXgtNC1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxm9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAA3pA9LCdDO0y8KAAAqzAAAKwAYAAAAAAAAAAAApIEK8CwAc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2luZGV4LTQtc3RkZXJyLnR4dFVUBQADGr2TWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIADekD0sLxMH9YAYAAPAmAAAzABgAAAAAAAAAAACkgZ76LABzdG9yYWdlL2luZGV4
ZWRkYi9tb2Rlcm4vaW5kZXgtNS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAxq9k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAA4pA9LqI+MNnQGAADqJAAAKwAYAAAAAAAAAAAApIFrAS0Ac3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTUtc3RkZXJyLnR4dFVUBQADG72TWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIADmkD0veaUFrlggAAARSAQA6ABgAAAAAAAAAAACkgUQILQBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMd
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOaQPS1HRB80ZDAAAHLUBADIAGAAAAAAAAAAA
AKSBThEtAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMS1zdGRlcnIudHh0
VVQFAAMevZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOqQPS9eleZPACQAAEHQBADoAGAAA
AAAAAAAAAKSB0x0tAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1jdXJzb3ItMi1wcml2
YXRlLXN0ZGVyci50eHRVVAUAAyC9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA7pA9LDaSX
1OkLAAAy0wEAMgAYAAAAAAAAAAAApIEHKC0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LWN1cnNvci0yLXN0ZGVyci50eHRVVAUAAyG9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAA8
pA9LCaarLkYTAACdbgIAOgAYAAAAAAAAAAAApIFcNC0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2luZGV4LWN1cnNvci0zLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADI72TWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAD2kD0ud02nNcxkAADo2AwAyABgAAAAAAAAAAACkgRZILQBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTMtc3RkZXJyLnR4dFVUBQADJb2TWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAD2kD0vO6D7mWwYAAEkpAABBABgAAAAAAAAAAACkgfVhLQBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50LWJhc2ljLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADJr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAD2kD0smhOiACQcAAEEqAAA5
ABgAAAAAAAAAAACkgctoLQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtZ2V0LWNvdW50
LWJhc2ljLXN0ZGVyci50eHRVVAUAAya9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABApA9L
J9Et8fYGAAAFOgAARAAYAAAAAAAAAAAApIFHcC0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lu
ZGV4LWdldC1jb3VudC1mYWlsdXJlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAye9k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABApA9Lla69i9gHAABgPAAAPAAYAAAAAAAAAAAApIG7dy0Ac3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3VudC1mYWlsdXJlcy1zdGRlcnIudHh0
VVQFAAMovZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQaQPSwwRK4ZzBwAAVEoAADoAGAAA
AAAAAAAAAKSBCYAtAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC1yZW5hbWUtMS1wcml2
YXRlLXN0ZGVyci50eHRVVAUAAym9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABBpA9LxbRU
V98HAAAATgAAMgAYAAAAAAAAAAAApIHwhy0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4
LXJlbmFtZS0xLXN0ZGVyci50eHRVVAUAAym9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABB
pA9LiZb1ki0FAAATKQAAOQAYAAAAAAAAAAAApIE7kC0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L2tleXBhdGgtYmFzaWMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMqvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAQqQPSwK9njUlBQAALicAADEAGAAAAAAAAAAAAKSB25UtAHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9rZXlwYXRoLWJhc2ljLXN0ZGVyci50eHRVVAUAAyu9k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABDpA9LvEVYQzkFAACiIwAAKgAYAAAAAAAAAAAApIFrmy0Ac3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2xlYWstMS1zdGRlcnIudHh0VVQFAAMtvZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAQ6QPS41I8Af6CAAA6RgCAFUAGAAAAAAAAAAAAKSBCKEtAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9tZW1vcnktaW5kZXgtbm90LWRlbGV0ZWQtd2l0aC1vYmplY3RzdG9y
ZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAy69k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABE
pA9L9coCzbUJAADUJQIATQAYAAAAAAAAAAAApIGRqi0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L21lbW9yeS1pbmRleC1ub3QtZGVsZXRlZC13aXRoLW9iamVjdHN0b3JlLXN0ZGVyci50eHRVVAUA
Ay+9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABEpA9LRRKppmMIAAB8cQAAVwAYAAAAAAAA
AAAApIHNtC0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL211bHRpcGxlLW9iamVjdHN0b3JlLWlu
ZGV4LWN1cnNvci1jb2xsaXNpb24tcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMwvZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgARaQPS14GpKMKCQAABIQAAE8AGAAAAAAAAAAAAKSBwb0tAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9tdWx0aXBsZS1vYmplY3RzdG9yZS1pbmRleC1jdXJzb3ItY29s
bGlzaW9uLXN0ZGVyci50eHRVVAUAAzG9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABFpA9L
dg36hmIGAAB6LgAAQgAYAAAAAAAAAAAApIFUxy0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL25l
dy1kYXRhYmFzZS1hZnRlci11c2VyLWRlbGV0ZS1zdGRlcnIudHh0VVQFAAMyvZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgARaQPSzdHotnqBQAAEjIAAEIAGAAAAAAAAAAAAKSBMs4tAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9vYmplY3RzdG9yZS1hdHRyaWJ1dGVzLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADMr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEakD0ue6mKk8gUAAG0xAAA6
ABgAAAAAAAAAAACkgZjULQBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb2JqZWN0c3RvcmUtYXR0
cmlidXRlcy1zdGRlcnIudHh0VVQFAAMzvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARqQP
S/7QeCe+CQAA650AAE8AGAAAAAAAAAAAAKSB/totAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9v
YmplY3RzdG9yZS1jdXJzb3ItYWR2YW5jZS1mYWlsdXJlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUA
AzS9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABGpA9Lf83WwM4JAABoqQAARwAYAAAAAAAA
AAAApIFF5S0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1cnNvci1hZHZh
bmNlLWZhaWx1cmVzLXN0ZGVyci50eHRVVAUAAzS9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABHpA9LnyGfZs4JAAA1ogAAUAAYAAAAAAAAAAAApIGU7y0Ac3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL29iamVjdHN0b3JlLWN1cnNvci1jb250aW51ZS1mYWlsdXJlcy1wcml2YXRlLXN0ZGVyci50
eHRVVAUAAzW9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABHpA9LTTd1gA0KAABgrQAASAAY
AAAAAAAAAAAApIHs+S0Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLWN1cnNv
ci1jb250aW51ZS1mYWlsdXJlcy1zdGRlcnIudHh0VVQFAAM2vZNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgASKQPS6Tz7TaYBgAAJj8AAEAAGAAAAAAAAAAAAKSBewQuAHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9vYmplY3RzdG9yZS1yZW5hbWUtMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAze9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABIpA9LmvKWTY4GAACHPwAAOAAYAAAAAAAAAAAA
pIGNCy4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29iamVjdHN0b3JlLXJlbmFtZS0xLXN0ZGVy
ci50eHRVVAUAAzi9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABJpA9LMNb4cfUGAACBPAAA
PwAYAAAAAAAAAAAApIGNEi4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5jdXJzb3ItZmFp
bHVyZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAM5vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgASaQPS5H+x01fBwAAcT0AADcAGAAAAAAAAAAAAKSB+xkuAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9vcGVuY3Vyc29yLWZhaWx1cmVzLXN0ZGVyci50eHRVVAUAAzm9k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABJpA9LRDxZZLYCAACzCgAARgAYAAAAAAAAAAAApIHLIS4Ac3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50LXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADOr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEqkD0sdOVMHGQMAAIYMAAA+
ABgAAAAAAAAAAACkgQElLgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJl
cXVlc3QtZXZlbnQtc3RkZXJyLnR4dFVUBQADO72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AEqkD0vJ9D4LfgEAAFwFAABAABgAAAAAAAAAAACkgZIoLgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAM7vZNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgASqQPS7Cci9U+AQAApAYAADgAGAAAAAAAAAAAAKSBiiouAHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1zdGRlcnIudHh0VVQF
AAM8vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAS6QPS4T3Gj0lBAAA2yQAAFQAGAAAAAAA
AAAAAKSBOiwuAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2Utc3VjY2Vzcy1h
ZnRlci12ZXJzaW9uY2hhbmdlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADPb2TWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEukD0uOAei7WgQAAFomAABMABgAAAAAAAAAAACkge0wLgBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXN1Y2Nlc3MtYWZ0ZXItdmVyc2lvbmNoYW5n
ZS1zdGRlcnIudHh0VVQFAAM+vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAS6QPS0ZZeJeS
BAAAbzEAAEEAGAAAAAAAAAAAAKSBzTUuAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0
YWJhc2UtdmVyc2lvbnMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAM+vZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgATKQPS+1TH66PBAAApCwAADkAGAAAAAAAAAAAAKSB2jouAHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtdmVyc2lvbnMtc3RkZXJyLnR4dFVUBQADP72TWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEykD0tVCsKIDAUAACQfAAA+ABgAAAAAAAAAAACkgdw/
LgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVxdWVzdC1yZWFkeXN0YXRlLXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADQL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE2kD0ue6gTzhAUAAJEh
AAA2ABgAAAAAAAAAAACkgWBFLgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vcmVxdWVzdC1yZWFk
eXN0YXRlLXN0ZGVyci50eHRVVAUAA0G9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNpA9L
m4yukL0FAAD3IAAAUAAYAAAAAAAAAAAApIFUSy4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Np
bmdsZS1lbnRyeS1pbmRleC1pbnZhbGlkLWtleS1jcmFzaC1wcml2YXRlLXN0ZGVyci50eHRVVAUA
A0G9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNpA9LCY4XjCIGAACYIgAASAAYAAAAAAAA
AAAApIGbUS4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3NpbmdsZS1lbnRyeS1pbmRleC1pbnZh
bGlkLWtleS1jcmFzaC1zdGRlcnIudHh0VVQFAANCvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgATqQPS36Zl2V/BgAAaTsAAEMAGAAAAAAAAAAAAKSBP1guAHN0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA0O9k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABOpA9Lxf3vEh8HAAD8SQAAQwAYAAAAAAAAAAAApIE7
Xy4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci0yLXByaXZh
dGUtc3RkZXJyLnR4dFVUBQADRL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE+kD0vG/VyZ
+wYAAAxLAABDABgAAAAAAAAAAACkgddmLgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNh
Y3Rpb24tc2NoZWR1bGVyLTMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANFvZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAT6QPS0bEkHu4BgAAxkAAADsAGAAAAAAAAAAAAKSBT24uAHN0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItMy1zdGRlcnIudHh0VVQFAANG
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUKQPSyv51IClBgAA93UAAEMAGAAAAAAAAAAA
AKSBfHUuAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi90cmFuc2FjdGlvbi1zY2hlZHVsZXItNC1w
cml2YXRlLXN0ZGVyci50eHRVVAUAA0e9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABQpA9L
RQGcJAQHAAA9fgAAOwAYAAAAAAAAAAAApIGefC4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3Ry
YW5zYWN0aW9uLXNjaGVkdWxlci00LXN0ZGVyci50eHRVVAUAA0i9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABRpA9L8JiOuUAHAABLVQAAQwAYAAAAAAAAAAAApIEXhC4Ac3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL3RyYW5zYWN0aW9uLXNjaGVkdWxlci01LXByaXZhdGUtc3RkZXJyLnR4dFVU
BQADSb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFGkD0sBMnU1mQYAAGBJAABDABgAAAAA
AAAAAACkgdSLLgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb24tc2NoZWR1bGVy
LTYtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANKvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
UqQPS5fIkERyBQAAuzIAAEsAGAAAAAAAAAAAAKSB6pIuAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi90cmFuc2FjdGlvbnMtc3RvcC1vbi1uYXZpZ2F0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD
S72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFOkD0tMyOK0MwsAAMdgAQBDABgAAAAAAAAA
AACkgeGYLgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdHJhbnNhY3Rpb25zLXN0b3Atb24tbmF2
aWdhdGlvbi1zdGRlcnIudHh0VVQFAANNvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAU6QP
S3uuG6EDBQAARTUAAEsAGAAAAAAAAAAAAKSBkaQuAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi92
ZXJzaW9uY2hhbmdlLWFib3J0LXRoZW4tcmVvcGVuLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADTr2T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFOkD0v36zpNhQUAAFI8AABDABgAAAAAAAAAAACk
gRmqLgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vdmVyc2lvbmNoYW5nZS1hYm9ydC10aGVuLXJl
b3Blbi1zdGRlcnIudHh0VVQFAANOvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVKQPS1Pf
5Ok9BQAAzSsAAD8AGAAAAAAAAAAAAKSBG7AuAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi92ZXJz
aW9uY2hhbmdlLWV2ZW50LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADT72TWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAFSkD0tUOosMYQUAAOQrAAA3ABgAAAAAAAAAAACkgdG1LgBzdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vdmVyc2lvbmNoYW5nZS1ldmVudC1zdGRlcnIudHh0VVQFAANQvZNZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVaQPS7vkCOusBQAAcicAADEAGAAAAAAAAAAAAKSBo7su
AHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi93b3JrZXItZ2V0YWxsLXN0ZGVyci50eHRVVAUAA1G9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABVpA9LZTDzgAUBAAC7AwAANAAYAAAAAAAAAAAA
pIG6wS4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL3dvcmtlcnMtZGlzYWJsZWQtc3RkZXJyLnR4
dFVUBQADUr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADykD0sKg/bqjAcAAHN0AAA0ABgA
AAAAAAAAAACkgS3DLgBzdG9yYWdlL2luZGV4ZWRkYi9tdXRhdGluZy1jdXJzb3ItcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAAMjvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAPKQPS4vpUTYvCAAA
H4IAACwAGAAAAAAAAAAAAKSBJ8suAHN0b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci1z
dGRlcnIudHh0VVQFAAMkvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAPKQPS0pJYHdxBAAA
iBcAAEQAGAAAAAAAAAAAAKSBvNMuAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdC1sb29rdXBzLWlu
LXZlcnNpb25jaGFuZ2UtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMkvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAPKQPSwWWO8R7BAAAhxgAADwAGAAAAAAAAAAAAKSBq9guAHN0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdC1sb29rdXBzLWluLXZlcnNpb25jaGFuZ2Utc3RkZXJyLnR4dFVUBQADJL2T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADykD0vEH1RfXwMAANoPAABDABgAAAAAAAAAAACk
gZzdLgBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1hcmd1bWVudHMtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAMkvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAPaQPSx2s
1TjEAwAAkREAADsAGAAAAAAAAAAAAKSBeOEuAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdFN0b3Jl
LXJlcXVpcmVkLWFyZ3VtZW50cy1zdGRlcnIudHh0VVQFAAMlvZNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAPaQPS7Fft99uCAAASnsAAD4AGAAAAAAAAAAAAKSBseUuAHN0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMlvZNZ
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAPaQPSx/4dxKcCAAAPXwAADYAGAAAAAAAAAAAAKSB
l+4uAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQtc3RkZXJyLnR4
dFVUBQADJr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAECkD0sAjhETUgoAAAKXAAA3ABgA
AAAAAAAAAACkgaP3LgBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3MtcHJpdmF0
ZS1zdGRlcnIudHh0VVQFAAMnvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQaQPS/lTqjDq
CgAAhZsAAC8AGAAAAAAAAAAAAKSBZgIvAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWJh
c2ljcy1zdGRlcnIudHh0VVQFAAMpvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQKQPSwKq
oeZMCwAAzp0AADcAGAAAAAAAAAAAAKSBuQ0vAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3Jl
LWJhc2ljcy13b3JrZXJzLXN0ZGVyci50eHRVVAUAAyi9k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABBpA9LezDOtJkHAAC7PgAANgAYAAAAAAAAAAAApIF2GS8Ac3RvcmFnZS9pbmRleGVkZGIv
b2JqZWN0c3RvcmUtY2xlYXItcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMpvZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAQaQPS++7VU/OBwAAx0AAAC4AGAAAAAAAAAAAAKSBfyEvAHN0b3JhZ2Uv
aW5kZXhlZGRiL29iamVjdHN0b3JlLWNsZWFyLXN0ZGVyci50eHRVVAUAAym9k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABBpA9Lt9d9yIMLAAAjtAEANgAYAAAAAAAAAAAApIG1KS8Ac3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY291bnQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAMqvZNZ
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQqQPS88xAkSMDwAAbBIDAC4AGAAAAAAAAAAAAKSB
qDUvAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LXN0ZGVyci50eHRVVAUAAyy9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABFpA9LOJP5DPkQAADgQQcANwAYAAAAAAAAAAAA
pIGcRS8Ac3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADMr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEmkD0tkEXjs9BUAABX1CAAv
ABgAAAAAAAAAAACkgQZXLwBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3Itc3Rk
ZXJyLnR4dFVUBQADOb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEmkD0vrcpdvlgcAANZM
AABCABgAAAAAAAAAAACkgWNtLwBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1yZW1vdmVv
YmplY3RzdG9yZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAAzq9k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABJpA9Ln7RAmPUHAADbTwAAOgAYAAAAAAAAAAAApIF1dS8Ac3RvcmFnZS9pbmRleGVk
ZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0c3RvcmUtc3RkZXJyLnR4dFVUBQADOr2TWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAEqkD0sl425T8wgAAOYJAQAwABgAAAAAAAAAAACkgd59LwBz
dG9yYWdlL2luZGV4ZWRkYi9vZGQtc3RyaW5ncy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAzu9k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKpA9LAaxrl04EAADeMwAANgAYAAAAAAAAAAAApIE7
hy8Ac3RvcmFnZS9pbmRleGVkZGIvb3Blbi1iYWQtdmVyc2lvbnMtcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAAM8vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAS6QPSz0PnLwHBAAAriIAAC4AGAAA
AAAAAAAAAKSB+YsvAHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tYmFkLXZlcnNpb25zLXN0ZGVyci50
eHRVVAUAAz29k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABLpA9LLzRSkOgEAACqIwAAMAAY
AAAAAAAAAAAApIFokC8Ac3RvcmFnZS9pbmRleGVkZGIvb3Blbi1jdXJzb3ItcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAAM+vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAS6QPS809x0KeBQAAfigA
ACgAGAAAAAAAAAAAAKSBupUvAHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLXN0ZGVyci50
eHRVVAUAAz69k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABLpA9L6y+Ed0AGAACBOgAAPAAY
AAAAAAAAAAAApIG6my8Ac3RvcmFnZS9pbmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24t
cHJpdmF0ZS1zdGRlcnIudHh0VVQFAAM+vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATKQP
S5HxjV0+BgAABUEAADQAGAAAAAAAAAAAAKSBcKIvAHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZHVy
aW5nLXRyYW5zYWN0aW9uLXN0ZGVyci50eHRVVAUAAz+9k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABMpA9LDtC7yg0FAAA8OQAAMgAYAAAAAAAAAAAApIEcqS8Ac3RvcmFnZS9pbmRleGVkZGIv
b3Blbi1vcmRlcmluZy1wcml2YXRlLXN0ZGVyci50eHRVVAUAAz+9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABMpA9L53C6PTgFAAAdOgAAKgAYAAAAAAAAAAAApIGVri8Ac3RvcmFnZS9pbmRl
eGVkZGIvb3Blbi1vcmRlcmluZy1zdGRlcnIudHh0VVQFAANAvZNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgATKQPS41NisD0AwAARSIAAC8AGAAAAAAAAAAAAKSBMbQvAHN0b3JhZ2UvaW5kZXhl
ZGRiL29wZW4tdHdpY2Utd29ya2Vycy1zdGRlcnIudHh0VVQFAANAvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgATaQPS5XmfEc6CQAAr5wAADMAGAAAAAAAAAAAAKSBjrgvAHN0b3JhZ2UvaW5k
ZXhlZGRiL29wZW5jdXJzb3Ita2V5LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADQb2TWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAE2kD0tLrhtvZQkAAFC/AAArABgAAAAAAAAAAACkgTXCLwBzdG9y
YWdlL2luZGV4ZWRkYi9vcGVuY3Vyc29yLWtleS1zdGRlcnIudHh0VVQFAANBvZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgATaQPS6eEbICvCgAAXB4BADcAGAAAAAAAAAAAAKSB/8svAHN0b3Jh
Z2UvaW5kZXhlZGRiL29wdGlvbmFsLWFyZ3VtZW50cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA0K9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABOpA9Lz8lUjzEMAADrZwEALwAYAAAAAAAAAAAA
pIEf1y8Ac3RvcmFnZS9pbmRleGVkZGIvb3B0aW9uYWwtYXJndW1lbnRzLXN0ZGVyci50eHRVVAUA
A0O9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABPpA9LI8HxnuYGAADLPgAANQAYAAAAAAAA
AAAApIG54y8Ac3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAA0a9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABRpA9LVyyVZVEHAADSQAAA
LQAYAAAAAAAAAAAApIEO6y8Ac3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS1zdGRl
cnIudHh0VVQFAANKvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUKQPS6tJvhTSBwAA7kQA
ADUAGAAAAAAAAAAAAKSBxvIvAHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29y
a2Vycy1zdGRlcnIudHh0VVQFAANIvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUqQPSwUW
k7YGBQAAayUAAEMAGAAAAAAAAAAAAKSBB/svAHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctdmVy
c2lvbi1jaGFuZ2Utb24tZXhpdC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA0u9k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABSpA9Ll+7PwsQEAACGHAAAOwAYAAAAAAAAAAAApIGKADAAc3RvcmFn
ZS9pbmRleGVkZGIvcGVuZGluZy12ZXJzaW9uLWNoYW5nZS1vbi1leGl0LXN0ZGVyci50eHRVVAUA
A0u9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABSpA9Ln0QSLJwEAABsHwAAQQAYAAAAAAAA
AAAApIHDBTAAc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy12ZXJzaW9uLWNoYW5nZS1zdHVjay1w
cml2YXRlLXN0ZGVyci50eHRVVAUAA0y9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABTpA9L
tB7bBdIEAADOIwAAOQAYAAAAAAAAAAAApIHaCjAAc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy12
ZXJzaW9uLWNoYW5nZS1zdHVjay1zdGRlcnIudHh0VVQFAANNvZNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAUqQPS/pKN+m8BAAASSIAAFYAGAAAAAAAAAAAAKSBHxAwAHN0b3JhZ2UvaW5kZXhl
ZGRiL3BlbmRpbmctdmVyc2lvbi1jaGFuZ2Utc3R1Y2std29ya3Mtd2l0aC10ZXJtaW5hdGUtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAANMvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAU6QPSyFf
LRcABQAA4yQAAE4AGAAAAAAAAAAAAKSBaxUwAHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctdmVy
c2lvbi1jaGFuZ2Utc3R1Y2std29ya3Mtd2l0aC10ZXJtaW5hdGUtc3RkZXJyLnR4dFVUBQADTb2T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFOkD0vyt1PFZgYAAMhnAAAwABgAAAAAAAAAAACk
gfMaMABzdG9yYWdlL2luZGV4ZWRkYi9wZXJzaXN0ZW5jZS1wcml2YXRlLXN0ZGVyci50eHRVVAUA
A069k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABTpA9Lg0y6fXwGAABVZwAAKAAYAAAAAAAA
AAAApIHDITAAc3RvcmFnZS9pbmRleGVkZGIvcGVyc2lzdGVuY2Utc3RkZXJyLnR4dFVUBQADTr2T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFSkD0vbSOKwiQgAABd3AAA7ABgAAAAAAAAAAACk
gaEoMABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADT72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFSkD0s8kLr8VAkAAHqC
AAAzABgAAAAAAAAAAACkgZ8xMABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4
MDcxLXN0ZGVyci50eHRVVAUAA0+9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABVpA9LhTbz
jcsaAAAZRAgAOgAYAAAAAAAAAAAApIFgOzAAc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gtaW52
YWxpZGF0aW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADUr2TWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAFekD0sVTkH/JCAAAHSgCQAyABgAAAAAAAAAAACkgZ9WMABzdG9yYWdlL2luZGV4ZWRk
Yi9wcmVmZXRjaC1pbnZhbGlkYXRpb24tc3RkZXJyLnR4dFVUBQADVb2TWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAFekD0uTLEEQigcAAKJkAAAyABgAAAAAAAAAAACkgS93MABzdG9yYWdlL2lu
ZGV4ZWRkYi9wcmVmZXRjaC1yYWNlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADVr2TWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAFekD0t5MIcF4gcAAFRsAAAqABgAAAAAAAAAAACkgSV/MABzdG9y
YWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1yYWNlLXN0ZGVyci50eHRVVAUAA1a9k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABXpA9LBpfNkVMGAABhRAAARgAYAAAAAAAAAAAApIFrhzAAc3RvcmFn
ZS9pbmRleGVkZGIvcHJpbWFyeS1rZXktdW5pcXVlLXRvLW9iamVjdHN0b3JlLXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADVr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFikD0vmyatydAYAABZQ
AAA+ABgAAAAAAAAAAACkgT6OMABzdG9yYWdlL2luZGV4ZWRkYi9wcmltYXJ5LWtleS11bmlxdWUt
dG8tb2JqZWN0c3RvcmUtc3RkZXJyLnR4dFVUBQADV72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAFikD0sgraA+bwUAAHgkAAA0ABgAAAAAAAAAAACkgSqVMABzdG9yYWdlL2luZGV4ZWRkYi9x
dWV1ZWQtY29tbWFuZHMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANXvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAWKQPS3HZXsgDBgAAFiYAACwAGAAAAAAAAAAAAKSBB5swAHN0b3JhZ2UvaW5k
ZXhlZGRiL3F1ZXVlZC1jb21tYW5kcy1zdGRlcnIudHh0VVQFAANXvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAWKQPS3xjU+fcBQAAWSMAAC0AGAAAAAAAAAAAAKSBcKEwAHN0b3JhZ2UvaW5k
ZXhlZGRiL3JlYWRvbmx5LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADWL2TWXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAFikD0vjdmrqTQMAAI0PAAA4ABgAAAAAAAAAAACkgbOnMABzdG9yYWdlL2lu
ZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADWL2TWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFikD0vaQX1ZyQMAAMMRAAAwABgAAAAAAAAAAACkgXKr
MABzdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0aWVzLXN0ZGVyci50eHRVVAUAA1i9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABZpA9L7R4hAnQGAAAQJgAAJQAYAAAAAAAAAAAA
pIGlrzAAc3RvcmFnZS9pbmRleGVkZGIvcmVhZG9ubHktc3RkZXJyLnR4dFVUBQADWb2TWXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAFmkD0sZhTUGwQYAANAvAAA7ABgAAAAAAAAAAACkgXi2MABz
dG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWNvbnRpbnVlLWFib3J0LXByaXZhdGUtc3RkZXJyLnR4
dFVUBQADWb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFmkD0vYjtZl3wYAAJ8uAAAzABgA
AAAAAAAAAACkga69MABzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LWNvbnRpbnVlLWFib3J0LXN0
ZGVyci50eHRVVAUAA1q9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABZpA9LZPzFl2kGAADA
RAAAPgAYAAAAAAAAAAAApIH6xDAAc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9w
YWdhdGlvbi1wcml2YXRlLXN0ZGVyci50eHRVVAUAA1q9k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABapA9Lkhf+FmsGAACjQwAANgAYAAAAAAAAAAAApIHbyzAAc3RvcmFnZS9pbmRleGVkZGIv
cmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi1zdGRlcnIudHh0VVQFAANbvZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAWqQPS+ZXgGFSBgAAEC0AADkAGAAAAAAAAAAAAKSBttIwAHN0b3JhZ2Uv
aW5kZXhlZGRiL3JlcXVlc3QtcmVzdWx0LWNhY2hlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADW72T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFqkD0syMFHtrAYAABUuAAAxABgAAAAAAAAAAACk
gXvZMABzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LXJlc3VsdC1jYWNoZS1zdGRlcnIudHh0VVQF
AANbvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWqQPS3STbILcBAAA7yEAADgAGAAAAAAA
AAAAAKSBkuAwAHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAANcvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWqQPS7qCibZOBQAA
rCQAADAAGAAAAAAAAAAAAKSB4OUwAHN0b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2Nr
ZWQtc3RkZXJyLnR4dFVUBQADXL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFqkD0sz+pOn
yAQAAAQqAABOABgAAAAAAAAAAACkgZjrMABzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLWJs
b2NrZWQtYnktdmVyc2lvbmNoYW5nZS1jbG9zZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA1y9k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABbpA9LMVGvsZkEAADJKgAARgAYAAAAAAAAAAAApIHo
8DAAc3RvcmFnZS9pbmRleGVkZGIvc2V0dmVyc2lvbi1ibG9ja2VkLWJ5LXZlcnNpb25jaGFuZ2Ut
Y2xvc2Utc3RkZXJyLnR4dFVUBQADXb2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFukD0u8
GCAJwQQAAO4nAAA7ABgAAAAAAAAAAACkgQH2MABzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9u
LW5vdC1ibG9ja2VkLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADXb2TWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAFukD0vSZhSe1gQAAL8nAAAzABgAAAAAAAAAAACkgTf7MABzdG9yYWdlL2luZGV4
ZWRkYi9zZXR2ZXJzaW9uLW5vdC1ibG9ja2VkLXN0ZGVyci50eHRVVAUAA129k1l1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABdpA9LP/lu2bIQAACF0gQANQAYAAAAAAAAAAAApIF6ADEAc3RvcmFn
ZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA2G9k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhpA9L1mr3pqAQAABQ3gQALQAYAAAAAAAAAAAApIGb
ETEAc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1zdGRlcnIudHh0VVQFAANlvZNZ
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYaQPS4Tk/IYqBgAAaSgAAC4AGAAAAAAAAAAAAKSB
oiIxAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFib3J0LXN0ZGVyci50eHRVVAUAA2W9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhpA9LgBPnNZgLAADV9AAAPAAYAAAAAAAAAAAA
pIE0KTEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWN0aXZlLWZsYWctcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAANmvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYqQPS0KjRvPODgAA
mh0BADQAGAAAAAAAAAAAAKSBQjUxAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2
ZS1mbGFnLXN0ZGVyci50eHRVVAUAA2e9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABipA9L
kFzZ5AYGAABYPgAAPAAYAAAAAAAAAAAApIF+RDEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYWZ0ZXItY2xvc2UtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANnvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAYqQPS/0WBqgGBgAA+z0AADQAGAAAAAAAAAAAAKSB+koxAHN0b3JhZ2UvaW5k
ZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVyLWNsb3NlLXN0ZGVyci50eHRVVAUAA2i9k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABipA9L2S2Jj08HAABEdgAARgAYAAAAAAAAAAAApIFuUTEAc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLXByaXZhdGUt
c3RkZXJyLnR4dFVUBQADaL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGOkD0vmkfAWlgcA
AIKAAAA+ABgAAAAAAAAAAACkgT1ZMQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQt
b2JqZWN0c3RvcmUtY2FsbHMtc3RkZXJyLnR4dFVUBQADab2TWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAGOkD0uBqicS6wgAAKCtAAA3ABgAAAAAAAAAAACkgUthMQBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1iYXNpY3MtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANqvZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAZKQPS/Om48GXCQAAZLUAAC8AGAAAAAAAAAAAAKSBp2oxAHN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWJhc2ljcy1zdGRlcnIudHh0VVQFAANrvZNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAZKQPS1yf0EAtBQAAKyoAAFcAGAAAAAAAAAAAAKSBp3QxAHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNy
b3NzLWZyYW1lLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADa72TWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAGSkD0uvmmnzywUAACMqAABPABgAAAAAAAAAAACkgWV6MQBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1zdGRl
cnIudHh0VVQFAANsvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZKQPSwD6WduVBQAAaSoA
AEsAGAAAAAAAAAAAAKSBuYAxAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRl
LXdpdGgtanMtcmVjdXJzaW9uLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADbL2TWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAGWkD0vF2GYFwQUAAK4pAABDABgAAAAAAAAAAACkgdOGMQBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1zdGRlcnIu
dHh0VVQFAANtvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZaQPSwpS2YydBgAACVYAAEEA
GAAAAAAAAAAAAKSBEY0xAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdv
cmtlcnMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAANtvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAZaQPS8ca9xAwBgAAMFQAADkAGAAAAAAAAAAAAKSBKZQxAHN0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMtc3RkZXJyLnR4dFVUBQADbr2TWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAGWkD0ukcux3eAYAALVRAABOABgAAAAAAAAAAACkgcyaMQBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy1wcml2
YXRlLXN0ZGVyci50eHRVVAUAA269k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABmpA9LsqrG
/ZgGAADEVAAARgAYAAAAAAAAAAAApIHMoTEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24t
Y29vcmRpbmF0aW9uLWFjcm9zcy1kYXRhYmFzZXMtc3RkZXJyLnR4dFVUBQADb72TWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGakD0v+zJ0gaAYAADE7AABNABgAAAAAAAAAAACkgeSoMQBzdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQADb72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGakD0vl
mBHLEwEAALUDAAA/ABgAAAAAAAAAAACkgdOvMQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1jcmFzaC1pbi10YXNrcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3C9k1l1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABmpA9L0wBqOCsBAAA2BAAANwAYAAAAAAAAAAAApIFfsTEAc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtaW4tdGFza3Mtc3RkZXJyLnR4dFVUBQADcL2TWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGekD0vJ0/wwhwQAAM8YAAA/ABgAAAAAAAAAAACkgfuy
MQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1vbi1hYm9ydC1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA3G9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABnpA9LqQqsm68EAADA
GQAANwAYAAAAAAAAAAAApIH7tzEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gt
b24tYWJvcnQtc3RkZXJyLnR4dFVUBQADcr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGik
D0u/kAWAywcAAABlAAA2ABgAAAAAAAAAAACkgRu9MQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2Fj
dGlvbi1lcnJvci1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3O9k1l1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABopA9LGSRavFYIAADFZAAALgAYAAAAAAAAAAAApIFWxTEAc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tZXJyb3Itc3RkZXJyLnR4dFVUBQADc72TWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAGikD0uxgvWaSwYAAK83AABCABgAAAAAAAAAAACkgRTOMQBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1wcm9wYWdhdGlvbi1wcml2YXRlLXN0ZGVyci50eHRVVAUA
A3S9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABopA9LfR9ESEgGAADnNgAAOgAYAAAAAAAA
AAAApIHb1DEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24t
c3RkZXJyLnR4dFVUBQADdL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGikD0ulsLSOpgUA
AOgxAAA5ABgAAAAAAAAAAACkgZfbMQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1vcmRl
cmluZy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3S9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABppA9LdVRHANgFAAATMgAAMQAYAAAAAAAAAAAApIGw4TEAc3RvcmFnZS9pbmRleGVkZGIvdHJh
bnNhY3Rpb24tb3JkZXJpbmctc3RkZXJyLnR4dFVUBQADdb2TWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAGmkD0tHenoDWQYAADg4AAA8ABgAAAAAAAAAAACkgfPnMQBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1vdmVybGFwcGluZy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA3W9k1l1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABppA9L1I+xqp4GAADmUwAANAAYAAAAAAAAAAAApIHC7jEA
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tb3ZlcmxhcHBpbmctc3RkZXJyLnR4dFVUBQAD
dr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmkD0uFDU8YUAYAAOE1AAA6ABgAAAAAAAAA
AACkgc71MQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yZWFkLW9ubHktcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAAN2vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaqQPSyMazW8KBwAA
1DwAADIAGAAAAAAAAAAAAKSBkvwxAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQt
b25seS1zdGRlcnIudHh0VVQFAAN3vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaqQPS14b
02pPBgAAvkoAAEQAGAAAAAAAAAAAAKSBCAQyAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LXJlYWR3cml0ZS1leGNsdXNpdmUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN3vZNZdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAaqQPS3IZ/WFjBgAAgkkAADwAGAAAAAAAAAAAAKSB1QoyAHN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUtc3RkZXJyLnR4dFVU
BQADeL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGqkD0ssXw8czQYAAMc0AAA5ABgAAAAA
AAAAAACkga4RMgBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay1wcml2YXRl
LXN0ZGVyci50eHRVVAUAA3i9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABqpA9LYJGSbzIH
AADFNQAAMQAYAAAAAAAAAAAApIHuGDIAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9s
bGJhY2stc3RkZXJyLnR4dFVUBQADeL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGukD0uS
+9EyLgYAACNMAABBABgAAAAAAAAAAACkgYsgMgBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1zY29wZS1zZXF1ZW5jaW5nLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADeb2TWXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAGukD0sGfXEHFwYAANBFAAA5ABgAAAAAAAAAAACkgTQnMgBzdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLXN0ZGVyci50eHRVVAUAA3m9
k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrpA9LibajTBwDAABADgAARAAYAAAAAAAAAAAA
pIG+LTIAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC1w
cml2YXRlLXN0ZGVyci50eHRVVAUAA3m9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrpA9L
EzzquKUDAADmEAAAPAAYAAAAAAAAAAAApIFYMTIAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tc3RvcmVOYW1lcy1yZXF1aXJlZC1zdGRlcnIudHh0VVQFAAN6vZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAa6QPSwzVF0LiBAAAsSIAAD4AGAAAAAAAAAAAAKSBczUyAHN0b3JhZ2UvaW5k
ZXhlZGRiL3VuYmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN6
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbKQPS6vYX23gBAAAsCIAADYAGAAAAAAAAAAA
AKSBzToyAHN0b3JhZ2UvaW5kZXhlZGRiL3VuYmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMtc3RkZXJy
LnR4dFVUBQADe72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGykD0uKHc2sMgEAAIEEAAAt
ABgAAAAAAAAAAACkgR1AMgBzdG9yYWdlL2luZGV4ZWRkYi91bnByZWZpeC1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAA3u9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABspA9L/2rp0qcEAACmGQAA
NAAYAAAAAAAAAAAApIG2QTIAc3RvcmFnZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLXByaXZh
dGUtc3RkZXJyLnR4dFVUBQADfL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGykD0tbdmkg
uQUAALofAAAsABgAAAAAAAAAAACkgctGMgBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11bmRlZmlu
ZWQtc3RkZXJyLnR4dFVUBQADfL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGykD0tgaGqx
kAUAAHU1AAA1ABgAAAAAAAAAAACkgepMMgBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5
cGVzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADfL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AG2kD0v0c9ztTgYAAP48AAAtABgAAAAAAAAAAACkgelSMgBzdG9yYWdlL2luZGV4ZWRkYi92YWx1
ZXMtb2RkLXR5cGVzLXN0ZGVyci50eHRVVAUAA329k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABtpA9Lgbl+D+8FAADKLwAAOQAYAAAAAAAAAAAApIGeWTIAc3RvcmFnZS9pbmRleGVkZGIvdmVy
c2lvbi1jaGFuZ2UtYWJvcnQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN9vZNZdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAbaQPSyW167HVBQAA6C8AADEAGAAAAAAAAAAAAKSBAGAyAHN0b3JhZ2Uv
aW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWFib3J0LXN0ZGVyci50eHRVVAUAA369k1l1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABtpA9LQbzGsxUDAADBGgAAPwAYAAAAAAAAAAAApIFAZjIAc3Rv
cmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXZlbnQtYmFzaWMtcHJpdmF0ZS1zdGRlcnIu
dHh0VVQFAAN+vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbaQPS4F5+7xbBAAAmC0AADcA
GAAAAAAAAAAAAKSBzmkyAHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV2ZW50LWJh
c2ljLXN0ZGVyci50eHRVVAUAA369k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABtpA9LZKCb
k/IFAABSMQAAOQAYAAAAAAAAAAAApIGabjIAc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFu
Z2UtZXZlbnQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAN+vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAbqQPS4hVGtdMBQAA9SoAADEAGAAAAAAAAAAAAKSB/3QyAHN0b3JhZ2UvaW5kZXhlZGRi
L3ZlcnNpb24tY2hhbmdlLWV2ZW50LXN0ZGVyci50eHRVVAUAA3+9k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABupA9LPPs9DosFAABUQQAAPQAYAAAAAAAAAAAApIG2ejIAc3RvcmFnZS9pbmRl
eGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhjbHVzaXZlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADf72T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG6kD0uUDu4YjgUAANJDAAA1ABgAAAAAAAAAAACk
gbiAMgBzdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtc3RkZXJyLnR4
dFVUBQADgL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG+kD0ufP6pe0QMAAEcVAABJABgA
AAAAAAAAAACkgbWGMgBzdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAOBvZNZdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAcKQPS9F2SiUDBAAAHxUAAEEAGAAAAAAAAAAAAKSBCYsyAHN0b3JhZ2UvaW5kZXhl
ZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdC1zdGRlcnIudHh0VVQFAAOD
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcKQPS2w03KCQBAAAohgAACwAGAAAAAAAAAAA
AKSBh48yAHN0b3JhZ2UvaW5kZXhlZGRiL3dhc20tZXhjZXB0aW9ucy1zdGRlcnIudHh0VVQFAAOD
vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAKqQPSwAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQ
AO1BfZQyAHN0b3JhZ2Uvd2Vic3FsL1VUBQAD/7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AASkD0uAGA2mpwAAANIAAAAtABgAAAAAAAEAAACkgcaUMgBzdG9yYWdlL3dlYnNxbC9hbHRlci10
by1pbmZvLXRhYmxlLXN0ZGVyci50eHRVVAUAA7i8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAFpA9LgBgNpqcAAADSAAAANQAYAAAAAAABAAAApIHUlTIAc3RvcmFnZS93ZWJzcWwvY2hhbmdl
LXZlcnNpb24taGFuZGxlLXJldXNlLXN0ZGVyci50eHRVVAUAA7m8k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAGpA9LgBgNpqcAAADSAAAARgAYAAAAAAABAAAApIHqljIAc3RvcmFnZS93ZWJz
cWwvY2hhbmdlLXZlcnNpb24tbm8tY3Jhc2gtb24tcHJlZmxpZ2h0LWZhaWx1cmUtc3RkZXJyLnR4
dFVUBQADu7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAekD0v/IS/dsgAAAEgDAAAoABgA
AAAAAAEAAACkgRGYMgBzdG9yYWdlL3dlYnNxbC9jaGFuZ2UtdmVyc2lvbi1zdGRlcnIudHh0VVQF
AAO+vJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgACKQPS4AYDaanAAAA0gAAADIAGAAAAAAA
AQAAAKSBJZkyAHN0b3JhZ2Uvd2Vic3FsL2Nsb3NlLWR1cmluZy1zdHJlc3MtdGVzdC1zdGRlcnIu
dHh0VVQFAAPAvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgACqQPS71sQcWtAAAApAEAADQA
GAAAAAAAAQAAAKSBOJoyAHN0b3JhZ2Uvd2Vic3FsL2RhdGFiYXNlLWxvY2stYWZ0ZXItcmVsb2Fk
LXN0ZGVyci50eHRVVAUAA8O8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAKpA9LgBgNpqcA
AADSAAAAKQAYAAAAAAABAAAApIFTmzIAc3RvcmFnZS93ZWJzcWwvZW1wdHktc3RhdGVtZW50LXN0
ZGVyci50eHRVVAUAA8S8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAALpA9LgBgNpqcAAADS
AAAAKgAYAAAAAAABAAAApIFdnDIAc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJncy1zdGRl
cnIudHh0VVQFAAPGvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADKQPS4AYDaanAAAA0gAA
ADIAGAAAAAAAAQAAAKSBaJ0yAHN0b3JhZ2Uvd2Vic3FsL2V4ZWN1dGUtc3FsLXJvd3NBZmZlY3Rl
ZC1zdGRlcnIudHh0VVQFAAPIvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADaQPS4AYDaan
AAAA0gAAAD8AGAAAAAAAAQAAAKSBe54yAHN0b3JhZ2Uvd2Vic3FsL2V4ZWN1dGVzcWwtYWNjZXB0
cy1vbmx5LW9uZS1zdGF0ZW1lbnQtc3RkZXJyLnR4dFVUBQADyryTWXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAA+kD0uAGA2mpwAAANIAAAAuABgAAAAAAAEAAACkgZufMgBzdG9yYWdlL3dlYnNx
bC9oYXNoLWNoYW5nZS13aXRoLXhoci1zdGRlcnIudHh0VVQFAAPNvJNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAEKQPS71sQcWtAAAApAEAAD8AGAAAAAAAAQAAAKSBqqAyAHN0b3JhZ2Uvd2Vi
c3FsL211bHRpcGxlLWRhdGFiYXNlcy1nYXJiYWdlLWNvbGxlY3Rpb24tc3RkZXJyLnR4dFVUBQAD
z7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABCkD0tdYBZxsAAAAHYCAABEABgAAAAAAAEA
AACkgdChMgBzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50
LWhhbmRsZXMtc3RkZXJyLnR4dFVUBQAD0LyTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABGk
D0uAGA2mpwAAANIAAAAvABgAAAAAAAEAAACkgf6iMgBzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10
cmFuc2FjdGlvbnMtc3RkZXJyLnR4dFVUBQAD0ryTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ABKkD0uAGA2mpwAAANIAAAAoABgAAAAAAAEAAACkgQ6kMgBzdG9yYWdlL3dlYnNxbC9udWxsLWNh
bGxiYWNrcy1zdGRlcnIudHh0VVQFAAPUvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAE6QP
S71sQcWtAAAApAEAAEgAGAAAAAAAAQAAAKSBF6UyAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJh
c2UtY3JlYXRpb24tY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUBQAD1byTWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABSkD0v/IS/dsgAAAEgDAAA5ABgAAAAAAAEAAACkgUam
MgBzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLWNyZWF0aW9uLWNhbGxiYWNrLXN0ZGVyci50
eHRVVAUAA9e8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAVpA9LgBgNpqcAAADSAAAANQAY
AAAAAAABAAAApIFrpzIAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1lbXB0eS12ZXJzaW9u
LXN0ZGVyci50eHRVVAUAA9m8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAVpA9LgBgNpqcA
AADSAAAANAAYAAAAAAABAAAApIGBqDIAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBh
bmQtcXVvdGEtc3RkZXJyLnR4dFVUBQAD2ryTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABek
D0tPnOOYCgEAALgCAAA5ABgAAAAAAAEAAACkgZapMgBzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFi
YXNlLXNldC1lbXB0eS12ZXJzaW9uLXN0ZGVyci50eHRVVAUAA968k1l1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAYpA9LvWxBxa0AAACkAQAARQAYAAAAAAABAAAApIETqzIAc3RvcmFnZS93ZWJz
cWwvb3Blbi1kYXRhYmFzZS13aGlsZS10cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy1zdGRlcnIudHh0
VVQFAAPgvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGaQPS4AYDaanAAAA0gAAADkAGAAA
AAAAAQAAAKSBP6wyAHN0b3JhZ2Uvd2Vic3FsL3ByaXZhdGUtYnJvd3Npbmctbm9yZWFkLW5vd3Jp
dGUtc3RkZXJyLnR4dFVUBQAD4byTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABukD0tdYBZx
sAAAAHYCAABHABgAAAAAAAEAAACkgVmtMgBzdG9yYWdlL3dlYnNxbC9yZWFkLWFuZC13cml0ZS10
cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXItc3RkZXJyLnR4dFVUBQAD5byTWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIABykD0u9bEHFrQAAAKQBAABAABgAAAAAAAEAAACkgYquMgBzdG9y
YWdlL3dlYnNxbC9yZWFkLXRyYW5zYWN0aW9ucy1ydW5uaW5nLWNvbmN1cnJlbnRseS1zdGRlcnIu
dHh0VVQFAAPnvJNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAHKQPS4AYDaanAAAA0gAAACgA
GAAAAAAAAQAAAKSBsa8yAHN0b3JhZ2Uvd2Vic3FsL3NxbC1kYXRhLXR5cGVzLXN0ZGVyci50eHRV
VAUAA+i8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAdpA9LvWxBxa0AAACkAQAAQQAYAAAA
AAABAAAApIG6sDIAc3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLWlzb2xh
dGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAA+q8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAg
pA9LgBgNpqcAAADSAAAAMgAYAAAAAAABAAAApIHisTIAc3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50
LWVycm9yLWNhbGxiYWNrLXN0ZGVyci50eHRVVAUAA+y8k1l1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAhpA9LvWxBxa0AAACkAQAAQwAYAAAAAAABAAAApIH1sjIAc3RvcmFnZS93ZWJzcWwvc3Rh
dGVtZW50LXN1Y2Nlc3MtY2FsbGJhY2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUBQAD7ryT
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACOkD0uAGA2mpwAAANIAAAAqABgAAAAAAAEAAACk
gR+0MgBzdG9yYWdlL3dlYnNxbC9zdWNjZXNzLWNhbGxiYWNrLXN0ZGVyci50eHRVVAUAA/G8k1l1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAipA9LgBgNpqcAAADSAAAAQwAYAAAAAAABAAAApIEq
tTIAc3RvcmFnZS93ZWJzcWwvc3VjY2Vzcy1jYWxsYmFjay13aGVuLXBhZ2UtZGVmZXJzLWxvYWRp
bmctc3RkZXJyLnR4dFVUBQAD77yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACSkD0uAGA2m
pwAAANIAAAApABgAAAAAAAEAAACkgU62MgBzdG9yYWdlL3dlYnNxbC90ZXN0LWF1dGhvcml6ZXIt
c3RkZXJyLnR4dFVUBQAD87yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACWkD0uAGA2mpwAA
ANIAAAA+ABgAAAAAAAEAAACkgVi3MgBzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1jYWxsYmFj
ay1leGNlcHRpb24tY3Jhc2gtc3RkZXJyLnR4dFVUBQAD9byTWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACakD0u9bEHFrQAAAKQBAAA9ABgAAAAAAAEAAACkgXe4MgBzdG9yYWdlL3dlYnNxbC90
cmFuc2FjdGlvbi1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1zdGRlcnIudHh0VVQFAAP3vJNZdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJ6QPS71sQcWtAAAApAEAAEMAGAAAAAAAAQAAAKSBm7ky
AHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxk
LXN0ZGVyci50eHRVVAUAA/m8k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAopA9LgBgNpqcA
AADSAAAANAAYAAAAAAABAAAApIHFujIAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tZXJyb3It
Y2FsbGJhY2stc3RkZXJyLnR4dFVUBQAD+7yTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACmk
D0uAGA2mpwAAANIAAAAvABgAAAAAAAEAAACkgdq7MgBzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlv
bi1wcm90b3R5cGUtc3RkZXJyLnR4dFVUBQAD/byTWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACqkD0u9bEHFrQAAAKQBAABFABgAAAAAAAEAAACkgeq8MgBzdG9yYWdlL3dlYnNxbC90cmFuc2Fj
dGlvbi1zdWNjZXNzLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAA/+8k1l1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABopA9LAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UEW
vjIAd2VicnRjL1VUBQADc72TWXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAG+kD0sAAAAAAAAA
AAAAAAATABgAAAAAAAAAEADtQVe+MgB3ZWJydGMvZGF0YWNoYW5uZWwvVVQFAAOCvZNZdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAaKQPS7LPnou0AAAAbAMAACMAGAAAAAAAAQAAAKSBpL4yAHdl
YnJ0Yy9kYXRhY2hhbm5lbC9iYXNpYy1zdGRlcnIudHh0VVQFAANzvZNZdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAaKQPSzTE1DmqAAAAGAEAACcAGAAAAAAAAQAAAKSBtb8yAHdlYnJ0Yy9kYXRh
Y2hhbm5lbC9iYXNpYy10Y3Atc3RkZXJyLnR4dFVUBQADc72TWXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAGikD0u2cUaYeQAAAMcAAAAkABgAAAAAAAEAAACkgcDAMgB3ZWJydGMvZGF0YWNoYW5u
ZWwvYmluYXJ5LXN0ZGVyci50eHRVVAUAA3S9k1l1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABo
pA9LO1eAEkIAAAB+AAAAQAAYAAAAAAABAAAApIGXwTIAd2VicnRjL2RhdGFjaGFubmVsL2J1ZmZl
cmVkQW1vdW50TG93VGhyZXNob2xkLWRlZmF1bHQtc3RkZXJyLnR4dFVUBQADdL2TWXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGikD0vaTqX0eQAAAEUBAAA4ABgAAAAAAAEAAACkgVPCMgB3ZWJy
dGMvZGF0YWNoYW5uZWwvYnVmZmVyZWRBbW91bnRMb3dUaHJlc2hvbGQtc3RkZXJyLnR4dFVUBQAD
dL2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmkD0s3WwtFjAAAAGYDAAAmABgAAAAAAAEA
AACkgT7DMgB3ZWJydGMvZGF0YWNoYW5uZWwvY3JlYXRpb24tc3RkZXJyLnR4dFVUBQADdb2TWXV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmkD0s6kUwlPgAAAD8AAAAvABgAAAAAAAEAAACkgSrE
MgB3ZWJydGMvZGF0YWNoYW5uZWwvZGF0YWNoYW5uZWwtZXZlbnQtc3RkZXJyLnR4dFVUBQADdb2T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmkD0u2cUaYeQAAAMcAAAAsABgAAAAAAAEAAACk
gdHEMgB3ZWJydGMvZGF0YWNoYW5uZWwvZGF0YWNoYW5uZWwtZ2Mtc3RkZXJyLnR4dFVUBQADdb2T
WXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmkD0u2cUaYeQAAAMcAAAAvABgAAAAAAAEAAACk
gbDFMgB3ZWJydGMvZGF0YWNoYW5uZWwvZGF0YWNoYW5uZWwtc3RhdHMtc3RkZXJyLnR4dFVUBQAD
db2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmkD0s7V4ASQgAAAH4AAAAyABgAAAAAAAEA
AACkgZLGMgB3ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5kaWRhdGUtc3RkZXJyLnR4
dFVUBQADdr2TWXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGmkD0u8xH2EfwAAABABAAArABgA
AAAAAAEAAACkgUDHMgB3ZWJydGMvZGF0YWNoYW5uZWwvbXVsdGktY2hhbm5lbC1zdGRlcnIudHh0
VVQFAAN2vZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAb6QPSwXSJYotAgAAetwAADIAGAAA
AAAAAQAAAKSBJMgyAHdlYnJ0Yy9kYXRhY2hhbm5lbC9tdWx0aXBsZS1jb25uZWN0aW9ucy1zdGRl
cnIudHh0VVQFAAOCvZNZdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAOKYPSyt0KIw5MwYAYXzp
ABkAGAAAAAAAAQAAAKSBvcoyAHdwdHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA9vAk1l1eAsA
AQT1AQAABBQAAABQSwUGAAAAAKsCqwKETQEASf44AAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318283</attachid>
            <date>2017-08-16 13:01:45 -0700</date>
            <delta_ts>2017-08-16 20:36:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>175123</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZH
UGxhbi5jcHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJl
ZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThB
QTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25T
ZXQuY3BwICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAq
LzsgfTsKIAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYx
OTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYz
RTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1
M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERG
R1ByZVBvc3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8q
IEFpck9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1
NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVH
ZW5lcmF0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYw
MDcyNDUwQiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2
QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3
OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
M0MxRjE5MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0g
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGM0UwMUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3Bw
OyBwYXRoID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5n
Lmg7IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFs
UmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEz
MUY4RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2
IEBACiAJCQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQz
NTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5
MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlD
RTAxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJ
CQkwRjJCOUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAq
LywKIAkJCQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5Lmgg
Ki8sCkBAIC04Njk4LDcgKzg2OTIsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAv
KiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3
NTE2QzFEQjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2
MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNF
RDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJl
VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODcsNyArMTA0ODAsNiBAQAogCQkJCUE3OEE5
NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlE
MzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVy
ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAv
KiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2
aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAg
ICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jYXRjaCIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcCIsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBvcF90aHJvdzogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0
LCAidGhyb3ciLCByMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE0
Miw2ICsxNDIsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2dldF9wYXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9wcm9maWxlX2NhdGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
dGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAg
ICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDoKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpA
QCAtMzY4LDYgKzM2OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayoKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bfbm9wOgogICAgIGNhc2Ugb3BfdW5y
ZWFjaGFibGU6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogI2RlZmluZSBMTElOVF9IRUxQ
RVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNI
X0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExM
SU5UX0hFTFBFUl9PUENPREVTCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1Mjks
OCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGlu
c3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAg
IH07CiAKKyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGFmdGVyQ2F0Y2hJbmRpY2VzOworCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAg
ICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5l
eHQoKTsKIApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICAgICAgYWZ0
ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9
CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAg
ICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpk
dW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAg
aWYgKGFmdGVyQ2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMmIGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNh
dGNoUHJvZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0
ZXJDYXRjaEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9
IGJ5dGVjb2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNh
dGNoSW5kZXgpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJh
bmRzOworICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2
ZUxvY2Fscy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJp
dChbJl0gKHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5k
cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVP
cGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIu
Z2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAg
ICAgbV9pbnN0cnVjdGlvbnNbYWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmls
ZXMuZ2V0KCk7CisgICAgICAgICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2Zp
bGVzKSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZN
b3ZlKGNhdGNoUHJvZmlsZXMpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+
bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3Qg
SWRlbnRpZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0
ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cykKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAg
ICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9m
U2FtcGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxl
OjpudW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFs
dWUgcHJvZmlsZXMgYXJlIGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90
YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBu
dW1TYW1wbGVzID0gcHJvZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiAr
MjU0MCwxMiBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAg
ICAgICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAg
cHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAg
Zm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHBy
b2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bnMobG9ja2VyKTsKQEAgLTI3NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9j
azo6dmFsdWVQcm9maWxlRm9yCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1
ZVByb2ZpbGUqIHJlc3VsdCA9IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3Ro
IC0gMV0udS5wcm9maWxlOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0g
ZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxl
cygpOyArK2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxl
KGkpOworICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9m
ZnNldCkgeworICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIEFTU0VSVChmb3VuZCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
IENvZGVCbG9jazo6dmFsaWRhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4g
bV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0
b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRl
ZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7
CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQ
cm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2Zp
bGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0
czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2Zp
bGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBi
eXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5
dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCAr
MjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICBy
ZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBp
bnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIg
eworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAg
ICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUg
aGFzIG1vcmUgc3R1ZmYgdGhhbiB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGVzZSB2YWx1
ZSBwcm9maWxlcworICAgICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAg
ICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9j
KG1fc2l6ZSAqIHNpemVvZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVm
ZmVyLmdldCgpW2ldKSBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0u
flZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rpb24+CisgICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1f
c2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3MCw2ICszOTcwLDkgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkp
OworCisgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJl
Z2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2Ug
Y29uZGl0aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAK
KwogICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwog
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dh
cmRzQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNDRkcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDog
cHVibGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGlj
IEJhY2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3
YXJkc0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFj
a3dhcmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpn
cmFwaC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxT
U0FDRkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdp
bihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0
KGZhbHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNp
dGVkKGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5k
Q29uc3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6
ZSgpOwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQo
aSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
SnVtcDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6
Ci0gICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0g
ICAgICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAg
ICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWlu
YWwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAg
ICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVy
IGVuZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFi
bHkgb25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUg
YWxsIG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAg
ICAgICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZl
cnNhbCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBA
QCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRl
eCBpbmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVu
dHJ5cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2
aXNpdDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5
cGUuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1v
ZGUuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIK
ICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuaCIKQEAgLTQ3OCw4ICs0NzksMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFyZ3VtZW50
UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSBmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2Fs
KG9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGFyZ3VtZW50UG9zaXRpb24pCiAgICAgICAgICAg
ICAgICAgZmx1c2hEaXJlY3Qob3BlcmFuZCwgYXJndW1lbnRQb3NpdGlvbik7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpICYmIG9wZXJhbmQgPT0gbV9j
b2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSkKLSAgICAgICAgICAgICAgICBmbHVzaChvcGVyYW5k
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGgubmVlZHNTY29wZVJlZ2lzdGVyKCkgJiYg
b3BlcmFuZCA9PSBtX2NvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKSB7CisgICAgICAgICAgICAg
ICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRMb2NhbCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1
bWVudHMuY29udGFpbnMobV9jdXJyZW50QmxvY2spCisgICAgICAgICAgICAgICAgICAgICYmICFt
X2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlzUHJpbW9yZGlhbFNldExvY2FsKQorICAgICAgICAgICAgICAgICAgICBmbHVz
aChvcGVyYW5kKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9w
ZXJhbmQpOwpAQCAtMTEzMSw3ICsxMTM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50
aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdp
biwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBz
YW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xp
bmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBi
YXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAg
IC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3Nv
cnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRo
ZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTQwNzUsNyArNDA4MCwx
MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgLy8gdXMg
dG8gdHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0aGUgYWN0dWFsIGFyZ3Vt
ZW50IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEgdmFsdWUgd2Ugc2V0IGV4
cGxpY2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3JhcGguYmxvY2soMCkgJiYg
IWlubGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHMucmVzaXpl
KG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50
cnlwb2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4Pigp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAg
ICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1
bWVudHMpOworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhl
eSBkb24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwogICAg
ICAgICAvLyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CkBAIC00MDg4
LDcgKzQwOTcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZv
KHZhcmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IHNldEFyZ3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0g
PSBzZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKICAgICAgICAg
fQogICAgIH0KQEAgLTUxNjEsNiArNTE3MCwxMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9n
cmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfY2F0Y2g6IHsKKyAgICAg
ICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRv
bid0IGRvIGFueXRoaW5nIGhlcmUgZm9yIGlubGluZWQgZnJhbWVzLiBXZSBkb24ndCB0cmVhdCB0
aGlzIGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHJv
ZmlsZV9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dy
YXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNh
dGNoIGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3Byb2ZpbGVfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKworICAgICAg
ICAgICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBhcmd1bWVudFByZWRpY3Rpb25zKG1fbnVtQXJn
dW1lbnRzKTsKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbG9jYWxQcmVkaWN0
aW9uczsKKyAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25l
ZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJn
dW1lbnRzOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisK
KyAgICAgICAgICAgICAgICBib29sIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQm
IHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQo
cHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxv
Y2tlcik7CisgICAgICAgICAgICAgICAgICAgIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJj0gcHJl
ZGljdGlvbiA9PSBTcGVjTm9uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNM
b2NhbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQo
cHJlZGljdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3BlcmFuZC5pc0FyZ3VtZW50KCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJh
bmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3Vt
ZW50KCldID0gcHJlZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwg
bV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzZWVuQXJndW1lbnRzLmNvbnRhaW5zKGFyZ3VtZW50KSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJiYg
KGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpIHx8IGxvY2FsUHJlZGljdGlvbnMuc2l6ZSgpKSkg
eworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSBoYXZlbid0
IGV4ZWN1dGVkIHRoaXMgY2F0Y2ggeWV0LiBMZXQncyBub3QgY29tcGlsZQorICAgICAgICAgICAg
ICAgICAgICAvLyBpdCBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY29tcGlsaW5nIHRo
aXMgYXMgYW4gZW50cnlwb2ludC4KKworICAgICAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNl
IHdoZW4gc2VhcmNoaW5nIGZvciB3aGVyZSB0byBPU1IgZW50ZXIsIHdlIGRvIGl0IHJlbGF0aXZl
CisgICAgICAgICAgICAvLyB0byB0aGUgYnl0ZWNvZGUgb2Zmc2V0IG9mIG9wX3Byb2ZpbGVfY2F0
Y2guCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVu
dEluZGV4OworCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNDYXRjaEVudHJ5cG9pbnQg
PSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJl
bnRCbG9jayk7CisKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVy
LCBOb2RlKj4+IGxvY2Fsc1RvU2V0OworICAgICAgICAgICAgbG9jYWxzVG9TZXQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCByZXNlcnZl
IG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUg
YnVmZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxz
ZTsgLy8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxkIG5vdCBr
bm93IGhvdyB0byBkbyB2YWx1ZSByZWNvdmVyeS4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mTG9jYWxzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJh
bmQuaXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2
YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2Fs
cyksIE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAg
ICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZI
aW50LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAg
bG9jYWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVl
KSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9j
YWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbm93IGV4aXQg
YmVjYXVzZSB3ZSd2ZSBzZXQgdXAgb3VyIE9TUiBleGl0IHN0YXRlIHRvIHJlY292ZXIgYW55IGxp
dmUgbG9jYWxzLgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNl
dCB1cCBvdXIgYXJndW1lbnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LiBUaGlzIGhhcHBl
bnMgaGVyZSBiZWNhdXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcyB1cAorICAgICAgICAgICAg
ICAgIC8vIHRvIHRoaXMgcG9pbnQgaW4gdGhlIHByb2dyYW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0
byBleGl0LgorICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7
CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwor
ICAgICAgICAgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1
bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsg
Kythcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3Vt
ZW50UHJlZGljdGlvbnNbYXJndW1lbnRdKTsKKworICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdl
Q2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFk
SW5kZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQg
PSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0
VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBv
aW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbG9j
YWxzVG9TZXQpCisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwg
cGFpci5maXJzdCwgcGFpci5zZWNvbmQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHJvZmlsZV9jYXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJ
bnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwpAQCAtNjE1Niw4ICs2Mjc3LDEw
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRC
bG9jayhibG9jay5wdHIoKSkpOwogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4K
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKQorICAgICAgICAg
ICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1v
dmUoYmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTYyMTQsMTAgKzYzMzcsMTIgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2UoKQogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxp
bmVDYWxsRnJhbWU6OkNhbGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBs
aW5rQmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tF
bnRyeS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFj
aGFiaWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCisgICAg
bV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKICAg
ICAKICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJs
b2NrKGJsb2NrSW5kZXgpOwpAQCAtNjIyOCw3ICs2MzUzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2UoKQogICAgICAgICBBU1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJP
ZkxvY2FscygpID09IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxv
Y2FscygpKTsKICAgICAgICAgQVNTRVJUKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZB
cmd1bWVudHMoKSA9PSBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZB
cmd1bWVudHMoKSk7CiAgICAgfQotICAgIAorCiAgICAgbV9ncmFwaC5tX2xvY2FsVmFycyA9IG1f
bnVtTG9jYWxzOwogICAgIG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1ldGVyU2xv
dHM7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVC
ZWdpbiAhPSBtX2dyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAg
aWYgKG1fdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVz
dC1oYW5kbGUgYmxvY2s6ICIsICpibG9jaywgIlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9j
a1NldC5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSA8d3RmL1NpbmdsZVJvb3RH
cmFwaC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTQ4LDcgKzQ5
LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTm9kZSByb290KCkgeyByZXR1cm4g
bV9ncmFwaC5ibG9jaygwKTsgfQorICAgIE5vZGUgcm9vdCgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBIHx8IG1fZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7
CisgICAgICAgIHJldHVybiBtX2dyYXBoLmJsb2NrKDApOworICAgIH0KKworICAgIExpc3Qgcm9v
dHMoKQorICAgIHsKKyAgICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogcm9vdCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQocm9vdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gQmxvY2tNYXA8VD4obV9n
cmFwaCk7IH0KQEAgLTcxLDYgKzg0LDMxIEBAIHByaXZhdGU6CiAgICAgR3JhcGgmIG1fZ3JhcGg7
CiB9OwogCitjbGFzcyBDUFNDRkcgOiBwdWJsaWMgU2luZ2xlUm9vdEdyYXBoPENGRz4geworcHVi
bGljOgorICAgIENQU0NGRyhHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogU2luZ2xlUm9vdEdyYXBo
PENGRz4oKmdyYXBoLm1fc3NhQ0ZHKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZW50
cnlwb2ludHMuc2l6ZSgpKTsKKyAgICB9Cit9OworCit1c2luZyBTU0FDRkcgPSBDRkc7CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0
ZDo6aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1ZT46OnR5cGU+CitDUFNDRkcmIHNlbGVjdENGRyhH
cmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9jcHNDRkcpOworICAg
IHJldHVybiAqZ3JhcGgubV9jcHNDRkc7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2
YWx1ZT46OnR5cGU+CitTU0FDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQoZ3JhcGgubV9zc2FDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9zc2FDRkc7
Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjksOCArMzY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVu
dHMgdXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2Nr
IGdldAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNl
ZCB0d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAg
ICAgLy8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNl
cy4gQnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9n
cmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1f
Z3JhcGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVu
dHJ5cG9pbnQgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4m
IGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBh
cmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlh
Ymxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAg
ICB9CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQo
bV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguaW5pdGlh
bGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAg
bV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpOwogICAgICAgICAKQEAgLTY5
MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTm9k
ZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxv
Y2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRl
cyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIG1fbm9kZS0+
cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0cmljdCBkb21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3
b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3VyIG93biBibG9jayBpZgogICAgICAgICAgICAgLy8g
dGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hp
bGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdz
IGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KLSAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2sp
KSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9t
aW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRl
cy5cbiIpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRh
LmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
aWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAg
ICAgICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtp
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93
bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5k
aWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLT5yZXBsYWNlV2l0aChj
YW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnNldE5vZGUoY2Fu
ZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSw3IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1c2hf
d2l0aF9zY29wZToKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9j
YXRjaDoKKyAgICBjYXNlIG9wX3Byb2ZpbGVfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVz
dDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3df
Y2hpY2tlbl9wcm9sb2d1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAg
ICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAg
ICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDog
bV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2Jh
Y2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAg
IHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5h
dG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2
aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAg
ICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVz
KG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3Rv
ciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAg
ICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8g
YSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlz
aW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVy
OjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAgZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwog
ICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3Jh
cGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7
CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVD
UFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7
CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwNzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTcsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBC
dWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2Fs
OgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcElu
TG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAotY2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpE
b21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3Jz
KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3Jz
KEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9j
ZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5k
PihncmFwaCkpCiAgICAgewogICAgIH0KIH07CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21p
bmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9y
cyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdy
YXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46
OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3Jh
cGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJ
KHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURv
bWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAg
ICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAgICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7Cisg
ICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBib29sIHJlc3Vs
dCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBt
X2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJi
b3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICJDaGVja2luZyBp
ZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5vZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OTQsNiArMTk5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFw
czoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50
cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBM
b29wSGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQgOiB1
aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNoZWRJ
bnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNp
bmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHTmF0dXJhbExvb3BzLmgiCi0jaW5j
bHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNz
RGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgogI2luY2x1ZGUg
IkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcgKzcyLDcgQEAgR3JhcGg6OkdyYXBo
KFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2RlQmxv
Y2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFrZV91bmlxdWU8Q0ZHPigqdGhpcykp
CisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQogICAgICwg
bV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4cG9p
bnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVkUmVn
aXN0ZXJpbmcpCkBAIC00MDksOSArNDA4LDEzIEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0FyZVZh
bGlkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9v
cE5vZGUoY29uc3QgQ1BTQ0ZHOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGUoKTsgfQor
c3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoQmFzaWNCbG9jayogYmxvY2spIHsgcmV0
dXJuIGJsb2NrOyB9CisKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVtcE1v
ZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQucHJp
bnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDAp
LT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUgPyAi
IiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDog
IiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIs
IGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIs
CisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+
aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBv
aW50ID8gIiAoQ2F0Y2ggRW50cnlwb2ludCkiIDogIiIsICJcbiIpOwogICAgIGlmIChibG9jay0+
ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBFeGVjdXRpb24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3VudCwg
IlxuIik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAtNDIy
LDE4ICs0MjUsMjYgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgog
ICAgIGlmIChibG9jay0+dGVybWluYWwoKSkgewogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgIG91dC5wcmludCgi
ICIsICpzdWNjZXNzb3IpOwotICAgICAgICAgICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykKLSAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5lZGdlS2lu
ZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAg
ICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsKICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAgaWYg
KG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7Ci0gICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21pbmF0b3JzLT5kb21pbmF0b3JzT2Yo
YmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVzOiAi
LCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7Ci0gICAgICAg
IG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3Jz
LT5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChw
cmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3JzLT5p
dGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoQmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIpOwor
CisgICAgYXV0byBwcmludERvbWluYXRvcnMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBkb21pbmF0b3JzLmRv
bWluYXRvcnNPZihibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBE
b21pbmF0ZXM6ICIsIGRvbWluYXRvcnMuYmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsK
KyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBkb21p
bmF0b3JzLmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLAorICAgICAgICAg
ICAgZG9taW5hdG9ycy5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YodHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGRvbWluYXRvcnMpPjo6dHlwZTo6TGlzdCB7IGJsb2Nr
IH0pLCAiXG4iKTsKKyAgICB9OworCisgICAgaWYgKHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKKyAg
ICAgICAgaWYgKG1fc3NhRG9taW5hdG9ycykKKyAgICAgICAgICAgIHByaW50RG9taW5hdG9ycygq
bV9zc2FEb21pbmF0b3JzKTsKKyAgICAgICAgZWxzZSBpZiAobV9jcHNEb21pbmF0b3JzKQorICAg
ICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX2Nwc0RvbWluYXRvcnMpOwogICAgIH0KKwogICAg
IGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewogICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAiLCBtX2Jh
Y2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwogICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3YXJkc0Rv
bWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CkBAIC00NDYsMjkgKzQ1
NywzMyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgICAg
IH0KICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0TnVt
YmVyaW5nKQotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJpbmc6
ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJlTnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBvc3RO
dW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2spLCAiXG4iKTsKLSAgICBpZiAobV9uYXR1cmFsTG9v
cHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFsTG9v
cHMtPmhlYWRlck9mKGJsb2NrKSkgeworCisgICAgYXV0byBwcmludE5hdHVyYWxMb29wcyA9IFsm
XSAoYXV0byYgbmF0dXJhbExvb3BzKSB7CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBsb29wID0g
bmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKICAgICAgICAgICAgIG91dC5wcmludChw
cmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKICAgICAgICAgICAgIFZlY3RvcjxC
bG9ja0luZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxvY2tM
aXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgICAgICAgICAgICAgIHNvcnRlZEJs
b2NrTGlzdC5hcHBlbmQodW5ib3hMb29wTm9kZShsb29wLT5hdChpKSktPmluZGV4KTsKICAgICAg
ICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9ja0xpc3QuYmVnaW4oKSwgc29ydGVkQmxvY2tMaXN0
LmVuZCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRCbG9j
a0xpc3Quc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIyIsIHNvcnRl
ZEJsb2NrTGlzdFtpXSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGNvbnRhaW5pbmdM
b29wcyA9Ci0gICAgICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7CisgICAg
ICAgIGF1dG8gY29udGFpbmluZ0xvb3BzID0gbmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsK
ICAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3AgaGVhZGVyczoiKTsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+aGVh
ZGVyKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIsICp1bmJveExvb3BOb2RlKGNv
bnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpKTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4i
KTsKICAgICAgICAgfQotICAgIH0KKyAgICB9OworCisgICAgaWYgKG1fc3NhTmF0dXJhbExvb3Bz
KQorICAgICAgICBwcmludE5hdHVyYWxMb29wcyhtX3NzYU5hdHVyYWxMb29wcyk7CisgICAgZWxz
ZSBpZiAobV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1fY3Bz
TmF0dXJhbExvb3BzKTsKKwogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUxNywx
MCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0LnBy
aW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1f
Zm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVm
IGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zvcm0g
PT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1
bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5wcmlu
dCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAgZWxz
ZSB7CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpCisg
ICAgICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtleS0+
aW5kZXgsICI6ICIsIGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAgb3V0
LnByaW50KCJcbiIpOwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAgLTY0
MCw4ICs2NTcsMTAgQEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNpYwog
dm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFzaWNC
bG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwotICAg
IGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRy
eXBvaW50IDogbV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNoYWJs
ZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9CiAg
ICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgxNywxMCBAQCB2b2lkIEdyYXBo
OjpraWxsVW5yZWFjaGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZHKCkK
IHsKLSAgICBtX2RvbWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0gbnVs
bHB0cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9taW5h
dG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nw
c05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxscHRy
OwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1fYmFj
a3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxscHRy
OwpAQCAtODUwLDEyICs4NzAsMzcgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9yZGVy
KCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7
Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRy
eXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50
KTsKICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewogICAg
ICAgICByZXN1bHQuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxv
Y2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goYmxv
Y2stPnN1Y2Nlc3NvcihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkp
IHsKKyAgICAgICAgLy8gV2hlbiBpdGVyYXRpbmcgb3ZlciBwcmUgb3JkZXIsIHdlIHNob3VsZCBz
ZWUgZG9taW5hdG9ycworICAgICAgICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisg
ICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisg
ICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpIDwgaik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0g
PT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3Vs
dHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFs
aWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7CisgICAgfQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTg2Myw3ICs5MDgsOCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0lu
UG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJsb2Nr
V29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9y
IChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xp
c3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdv
cmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAgICBj
YXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTg3Niw2ICs5MjIsMzEgQEAgQmxvY2tMaXN0IEdyYXBo
OjpibG9ja3NJblBvc3RPcmRlcigpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
IH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8gdmFsaWRh
dGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICAvLyBXaGVu
IGl0ZXJhdGluZyBvdmVyIHJldmVyc2UgcG9zdCBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0
b3JzCisgICAgICAgICAgICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAg
ICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpID4gaik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NB
IHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5z
dXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVS
ZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtMTQ3MiwzMCArMTU0Myw0NCBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRpb25G
YWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlvbkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygiV2hp
bGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxlLCBs
aW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsKIH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVuc3Vy
ZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMo
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZl
cnNpb24pOworICAgIGlmICghbV9jcHNEb21pbmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWluYXRv
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4g
Km1fY3BzRG9taW5hdG9yczsKK30KKworU1NBRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNTQURv
bWluYXRvcnMoKQogewotICAgIGlmICghbV9kb21pbmF0b3JzKQotICAgICAgICBtX2RvbWluYXRv
cnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1f
ZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNT
QUNvbnZlcnNpb24pOworICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQorICAgICAgICBtX3NzYURv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6OmVu
c3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlQ1BT
TmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAoIW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAgICAg
bV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5nPigq
dGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBvc3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9BU1NF
UlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJlQ1BT
RG9taW5hdG9ycygpOworICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fY3Bz
TmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlzKTsK
KyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExvb3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdyYXBo
OjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFtX25h
dHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE5h
dHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygpOwor
ICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fc3NhTmF0dXJhbExvb3BzID0g
c3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1f
c3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2Fy
ZHNDRkcoKQogeworICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBmdXR1
cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0EuCisg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2FyZHND
RkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHND
Rkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2ICsxNTg4
LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBCYWNrd2Fy
ZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7CisgICAg
UkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0RvbWlu
YXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8
QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNEb21p
bmF0b3JzOwpAQCAtMTUxMCw2ICsxNTk2LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6
OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVuc3Vy
ZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zv
cm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCiAgICAg
ICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3ICsxNjE0LDcgQEAgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmxv
Y2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCkudG9B
cmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBtX2Fy
Z3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVu
dF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpKQpAQCAtMTY5OCw2ICsxNzg1LDEzIEBAIGJvb2wgR3JhcGg6OmNhbkRvRmFzdFNwcmVhZChO
b2RlKiBub2RlLCAKICAgICByZXR1cm4gYWxsR29vZDsKIH0KIAordm9pZCBHcmFwaDo6Y2xlYXJD
UFNDRkdEYXRhKCkKK3sKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9j
cHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc0NGRyA9IG51bGxwdHI7Cit9CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIwNzc3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNs
YXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVC
bG9jazsKQEAgLTU2LDEwICs2MCwxNyBAQCBjbGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNr
d2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERv
bWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xh
c3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJl
cmluZzsKKworY2xhc3MgQ1BTQ0ZHOwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit1c2luZyBDUFNE
b21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERv
bWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxD
UFNDRkc+OwordXNpbmcgU1NBTmF0dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAK
IHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGbG93TWFwOwogCkBAIC05MDEsOSArOTEyLDEwIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAotICAgIERvbWluYXRvcnMmIGVuc3VyZURvbWluYXRv
cnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5nJiBlbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Ci0g
ICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBDUFNEb21pbmF0b3Jz
JiBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgU1NBRG9taW5hdG9ycyYgZW5zdXJlU1NBRG9t
aW5hdG9ycygpOworICAgIENQU05hdHVyYWxMb29wcyYgZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7
CisgICAgU1NBTmF0dXJhbExvb3BzJiBlbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICBCYWNr
d2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NGRygpOwogICAgIEJhY2t3YXJkc0RvbWluYXRvcnMm
IGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKTsKICAgICBDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyYgZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKQEAgLTkxNiwxMiArOTI4
LDE1IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzU2NvcGVSZWdpc3RlcigpIGNvbnN0IHsgcmV0
dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAg
ICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2stPnVz
ZXNFdmFsKCk7IH0KIAorICAgIHZvaWQgY2xlYXJDUFNDRkdEYXRhKCk7CisKICAgICBWTSYgbV92
bTsKICAgICBQbGFuJiBtX3BsYW47CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKICAgICBD
b2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAgICBWZWN0b3I8IFJlZlB0cjxCYXNp
Y0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxSZWZQdHI8QmFzaWNCbG9jaz4sIDg+
IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMT4gbV9lbnRyeXBvaW50czsKICAg
ICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47CiAKICAgICBIYXNoTWFwPEVuY29k
ZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1ZhbHVlSGFzaCwgRW5jb2RlZEpTVmFs
dWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAtOTU2LDExICs5NzEsMTEgQEAgcHVi
bGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBBcml0aEFkZCBhbmQgd2UgcmVtb3Zl
IHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0IGRvIHRoZSBzaWRlCiAgICAgLy8g
ZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJndW1lbnRzOworICAgIEhhc2hNYXA8
QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwog
ICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlz
IHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0
b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVk
VmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAg
IFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25z
OwogICAgIEJhZzxUcmFuc2l0aW9uPiBtX3RyYW5zaXRpb25zOwpAQCAtOTgyLDEwICs5OTcsMTIg
QEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZz
ZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVk
VHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBl
dD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1f
ZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQ
b3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJh
bExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BT
TmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NB
TmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NB
Q0ZHPiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAyNiw4IEBAIHB1YmxpYzoKICAgICBS
ZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFi
bGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZs
b3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFw
PEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
CShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxh
Y2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDYxIEBAIHN0
YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJz
dHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3Jh
cGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9v
dC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0g
ZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0
dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWls
ID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290
LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3Qt
PnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0
IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAg
IGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAg
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9
PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBv
aW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNo
b3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0g
ZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Cisg
ICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVj
dHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVy
U3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygp
OyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChp
KS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUgRlRMLCB3ZSBuZWVk
IHRvIGNoYW5nZQorICAgICAgICAgICAgICAgIC8vIHdoYXQgd2UgZG8gaGVyZTogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIGZv
cm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAgICAgICAgICAgICAgIGlmICgh
bm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewor
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBl
KFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Rmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFy
Z3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJn
dW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVz
aGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZs
dXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Rmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSku
c2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1
c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVt
YmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChp
KS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsK
LSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8
IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2sp
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNB
dFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAg
ICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAg
ICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsK
ICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2st
PmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw3ICszNzEsNyBAQCBpbmxpbmUgYm9vbCBJ
blBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdl
KGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVy
biBjaGFuZ2VkOwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNl
IFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYg
KzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1Rv
Rml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1Rv
Rml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0
aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hy
aW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6
ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJ
bmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURh
dGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAg
ICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigK
KyAgICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBi
eXRlY29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEq
IGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAg
dm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpz
b3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10g
KGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEm
IGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29k
ZUluZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2ln
bmVkIHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2lu
dERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NF
UlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAg
ICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAg
fQorI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVz
aEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9p
bnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNv
ZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAg
dW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEz
MiwxMCArMTU4LDEzIEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247
CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8Q2F0
Y2hFbnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRyeXBvaW50czsKICAgICBTZWdtZW50ZWRWZWN0b3I8
REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVj
b3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFt
IHZhcmlhYmxlRXZlbnRTdHJlYW07CiAgICAgREZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZH
OworICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50cnlCdWZmZXI7CisKICNpZiBFTkFCTEUo
RlRMX0pJVCkKICAgICB1aW50OF90IG5ldmVyRXhlY3V0ZWRFbnRyeSB7IDEgfTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDggQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNr
T3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAg
ICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAg
ICBjb21waWxlRW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxT
cGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQyOCw4IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogewor
ICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwog
ICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NSwyMyBAQCB2b2lkKiBKSVRDb21w
aWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxl
cjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBp
bGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxGbHVz
aEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNC
bG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5p
bnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIGJ5IGRlZmlu
aXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBvaW50KGJh
c2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBX
VEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VP
U1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tI
ZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNp
Y0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxs
b3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5
c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9q
aXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5r
QnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0
ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAg
ICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwg
YSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApAQCAtNjcwLDYgKzY4MywxMiBA
QCB2b2lkIEpJVENvbXBpbGVyOjpzZXRFbmRPZkNvZGUoKQogICAgIG1fZGlzYXNzZW1ibGVyLT5z
ZXRFbmRPZkNvZGUobGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkpOwogfQogCit2b2lkIEpJVENv
bXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpCit7CisgICAgaWYgKG1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBtX2ppdENvZGUtPmNhdGNoT1NSRW50
cnlCdWZmZXIgPSB2bSgpLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoSlNWYWx1ZSkgKiAo
Km1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIwNzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNl
T1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtC
dWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1h
dD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2Rl
KCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkBAIC0yODQsNiArMjg1LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgYXBwZW5kRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0KEV4aXRLaW5kLCB1
bnNpZ25lZCBldmVudFN0cmVhbUluZGV4LCBDb2RlT3JpZ2luLCBIYW5kbGVySW5mbyogZXhjZXB0
aW9uSGFuZGxlciwgQ2FsbFNpdGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBz
VG9GYWlsID0gTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0KCkpOwogCisgICAgdm9pZCBtYWtlQ2F0
Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAgLy8gVGhlIGRhdGFmbG93IGdyYXBoIGN1cnJlbnRs
eSBiZWluZyBnZW5lcmF0ZWQuCiAgICAgR3JhcGgmIG1fZ3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5h
bWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVj
dCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRy
KQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1f
Z3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1
cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAg
ICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5z
dXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkg
ewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0
dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3Vy
ZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGlu
ZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0
aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFi
bG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0
dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0
dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29w
T2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07
CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6
CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFr
ZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZv
ciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMo
KTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9
IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygp
OyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0g
bV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAg
TG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZm9yICgKLSAgICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJM
b29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwor
ICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAg
ICAgb3V0ZXJMb29wOwotICAgICAgICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1
cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAg
ICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxv
b3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgo
KV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFk
ZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNz
b3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5h
dGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgICAgIHByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5
Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0
YWNrOwogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9z
dExvb3BPZihibG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1f
Z3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAg
ICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAK
QEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAg
ICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAg
ICBjdXJyZW50OwotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExv
b3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJl
bnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJl
bnQpKQogICAgICAgICAgICAgICAgIGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlu
bmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQg
bW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBi
b2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFz
aWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29u
c3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJP
ZihzdWJCbG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1f
Z3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAg
IGlmICghc3ViTG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJh
c2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFk
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxl
UHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFi
bGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMiArMTAxLDE2
IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBi
bG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVu
dCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50
KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVu
dCgpXTsKKwogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2Fs
bEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKIAotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlh
bFNldCA9IChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQpCisgICAgICAgICAgICAgICAgICAgICYmICFjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJh
bmQobm9kZS0+bG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgbV9ncmFwaC5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5jb250YWlucyhibG9jayk7CisKKyAgICAgICAgICAgICAgICBpZiAo
KG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCkgJiYg
IWlzUHJpbW9yZGlhbFNldCkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAKICAgICAgICAgICAgICAgICAgICAgaW50IHN0YWNr
T2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6
IDA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVh
dGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9j
a0luc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSwg
IkFuIGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AiKTsKKwogICAgIC8vIEZJWE1F
OiBJZiB3ZSBydW4gdGhpcyB1dGlsaXR5IG9uIFNTQSBJUiwgdGhlbiB3ZSBtYXkgZW5kIHVwIHdp
dGggYSBiaXphcnJlIGFycmFuZ2VtZW50IG9mCiAgICAgLy8gVXBzaWxvbnMgYW5kIFBoaXMsIGxp
a2U6CiAgICAgLy8KQEAgLTY5LDcgKzcxLDggQEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVy
KEdyYXBoJiBncmFwaAogICAgIC8vIEluc3RlYWQsIHdlIHVzZSB0aGUgbWF4IG9mIHRoZSBmcmVx
dWVuY2llcyBvZiB0aGUgbG9vcCBib2R5J3Mgbm9uLWxvb3AgcHJlZGVjZXNzb3JzLgogICAgIGZs
b2F0IGZyZXF1ZW5jeSA9IDA7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJs
b2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0g
IT0gU1NBKTsKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJs
b2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZnJlcXVl
bmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNlc3Nvci0+ZXhlY3V0aW9uQ291bnQpOwog
ICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3Jh
cGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gMDsg
cHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3Nv
ckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJl
ZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0
b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdyYXBoLm1f
Y3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4
LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7CiAgICAgICAgIGJsb2NrLT5wcmVkZWNl
c3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsxMzMsMTYgQEAgcHVibGljOgogICAgIAog
ICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFs
TG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxv
b3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVy
ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fY3BzTmF0
dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0
IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcChs
b29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSBu
dWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05ld1ByZUhlYWRlciA9IGZhbHNlOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFkZXIoKS0+
cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgewotICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3Jz
W3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5h
dG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHByZWRlY2Vzc29yKSkKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5w
cmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7CisgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+cHJlZGVj
ZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
Y3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCkubm9kZSgpLCBwcmVkZWNlc3Nv
cikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmICgh
ZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdQcmVIZWFk
ZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY4LDE0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1bCBpZiBpdCdzIHBvc3NpYmxlIHRvIGV4
aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAgICAgICAgICAvLyBpZiB0aGUgdGVybWlu
YWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9lc24ndCBhbGxvdyBmb3IgZXhpdCwgYnV0
IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2luIG9mIHRoZSBsb29wIGhlYWRlciBkb2Vz
LCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJlLWhlYWRlci4KLSAgICAgICAgICAgIGlm
ICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS0+YXQoMCktPm9yaWdpbi5leGl0
T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS5u
b2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAgICAgICAgICAgICAgJiYgIWV4aXN0aW5n
UHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhpdE9LKQogICAgICAgICAgICAgICAgIG5l
ZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFu
ZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBs
b29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBtX2lu
c2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw4ICs2NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2Rl
KiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCku
aXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKV07Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9j
YWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3Vt
ZW50KSkgeworCisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXQgPSAobm9kZS0+
b3AoKSA9PSBTZXRMb2NhbCB8fCBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KQorICAgICAgICAg
ICAgICAgICAgICAmJiAhY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5vZGUtPmxvY2Fs
KCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuY29udGFpbnMoYmxvY2spOworCisgICAgICAgICAgICAgICAgaWYgKChub2RlLT5vcCgpID09
IFNldExvY2FsIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpICYmICFpc1ByaW1vcmRpYWxT
ZXQpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2Rl
LT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNo
QWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFmbHVzaEFjY2Vzc0RhdGEpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDYgKzg0LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAg
IGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2Fs
Tm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpOYXR1cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29w
OwotCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIE5hdHVyYWxMb29wcyA6IHB1Ymxp
YyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6TmF0dXJhbExvb3Bz
PENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVEb21pbmF0b3JzKCksIHZhbGlkYXRpb25F
bmFibGVkKCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZH
PENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9yc0ZvckNGRzxDRkdLaW5kPihncmFwaCks
IHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgewogICAgIH0KIH07CiAKK3VzaW5nIFNTQU5hdHVy
YWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+OwordXNpbmcgQ1BTTmF0dXJhbExvb3Ag
PSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3LDcgKzEyNzcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3
aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
b3AoKSA9PSBTd2l0Y2g7CiAgICAgfQpAQCAtMTM3Miw2ICsxMzcyLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7
CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAgICAgICAgIGNhc2UgMDoK
ICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1NDEsNiArMTU0MiwxOCBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChvcCgpID09IElkZW50aXR5V2l0aFByb2ZpbGUpOwogICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8U3BlY3VsYXRlZFR5cGU+KCk7CiAgICAgfQorCisgICAgdWludDMy
X3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgp
ID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQz
Ml90PigpOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRUeXBlIGNhdGNoTG9jYWxQcmVkaWN0aW9u
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxTcGVjdWxhdGVkVHlwZT4oKTsKKyAgICB9CiAgICAg
CiAgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewpAQCAtMTkzNiw3ICsxOTQ5LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQo
KTsKICAgICB9Ci0gICAgCisKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzky
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFNwZWNpYWwgbm9k
ZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQgd2UncmUgbG9hZGlu
ZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAq
L1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAg
bWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBU
aWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hl
Y2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlZN
SW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw2OCBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhl
Y1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVD
YXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvREZH
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdK
SVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5k
ZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2RlKTsKKworICAgIERGRzo6Q2F0Y2hFbnRy
eXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50ID0gaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFG
b3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICghY2F0Y2hFbnRyeXBvaW50
KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2Vz
LiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3ZSBkaWRuJ3QgY29tcGlsZSB0aGlzCisgICAgICAg
IC8vIHByb2ZpbGVfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhl
Y3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9u
bHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJs
ZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1l
bnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVu
dCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChj
YXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBj
YXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Nl
bGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZh
bHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAv
LyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBh
bGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
REZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZp
YWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
fQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVx
dWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VM
WSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhl
Yy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUu
b3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NhdGNoKTsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
Kj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0
KCkgKyAxXS51LnBvaW50ZXIpOworICAgIEpTVmFsdWUqIGRhdGFCdWZmZXIgPSByZWludGVycHJl
dF9jYXN0PEpTVmFsdWUqPihqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVy
KCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIGlmICghVmlydHVhbFJl
Z2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5pc0xvY2FsKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGRhdGFCdWZmZXJbaW5kZXhdID0gZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1f
b3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2luZGV4OworICAgIH0pOworCisgICAgcmV0
dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5t
X21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0Zs
dXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVj
dG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURh
dGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9
CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2Rl
SW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2Ug
dGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50
cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBj
YXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwor
fTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1Ig
ZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5z
IG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVC
bG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVk
LCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1
bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9T
UkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENy
ZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNC
bG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1
ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFBy
ZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0g
VUlOVF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRl
cigpLgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFw
aC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJh
c2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsx
MTMsMTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAg
ICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0
b3I8Tm9kZSosIDg+IG5ld0FyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3Vt
ZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50
KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQu
YXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAg
ICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2
ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBo
Lm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICBvbGROb2RlID0gbmV3QXJn
dW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25l
LCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1th
cmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbmV3QXJndW1lbnRzW2FyZ3VtZW50XSA9IG5v
ZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFz
ZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzksOCArMTQxLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgaW5z
ZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRpb25TZXQuZXhl
Y3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5z
aXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7
CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xlYXIoKTsKKyAgICAg
ICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9vdCwgbmV3QXJndW1l
bnRzKTsKKworICAgICAgICBtX2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFND
Rkc+KG1fZ3JhcGgpOworCiAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAg
ICAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKKwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsNyArNzI3LDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3JhcGguY29tcHV0ZVJlZkNvdW50cygpOwogICAgICAg
ICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJl
RG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAg
ICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIHBlcmZvcm1P
U1JBdmFpbGFiaWxpdHlBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAgbV9jb21iaW5lZExpdmVu
ZXNzID0gQ29tYmluZWRMaXZlbmVzcyhtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDkgKzM2Niw4IEBAIFBs
YW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAvLyBJZiB3ZSdyZSBk
b2luZyB2YWxpZGF0aW9uLCB0aGVuIHJ1biBzb21lIGFuYWx5c2VzLCB0byBnaXZlIHRoZW0gYW4g
b3Bwb3J0dW5pdHkKICAgICAvLyB0byBzZWxmLXZhbGlkYXRlLiBOb3cgaXMgYXMgZ29vZCBhIHRp
bWUgYXMgYW55IHRvIGRvIHRoaXMuCiAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKLSAg
ICAgICAgZGZnLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgZGZnLmVuc3VyZU5hdHVyYWxM
b29wcygpOwotICAgICAgICBkZmcuZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOworICAgICAgICBk
ZmcuZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBkZmcuZW5zdXJlQ1BTTmF0dXJhbExv
b3BzKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2RlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
REZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRl
ICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRlICJERkdCbG9ja1dvcmtsaXN0LmgiCi0j
aW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewot
Ci1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKLXsKLSAg
ICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3JhcGgpOwotICAgIAotICAgIFBvc3RPcmRl
ckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChncmFwaC5ibG9jaygw
KSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBv
c3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3Qu
cG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlz
aXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3ByZU51bWJlciA9
IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdvcmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9k
ZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+
c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goc3VjY2Vzc29yKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAg
ICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51bWJlciA9IG5leHRQb3N0TnVtYmVyKys7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotUHJlUG9zdE51bWJl
cmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzo6REZHOwotCi12b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRWRnZUtpbmQga2luZCkKLXsKLSAgICBz
d2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRFZGdlOgotICAgICAgICBvdXQucHJpbnQo
IkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyb3NzRWRnZToKLSAg
ICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
QmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFja0VkZ2UiKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2
aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVt
YmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdC
bG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBF
ZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdl
Ci19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmco
KTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyBy
ZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJl
cihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51
bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0g
ICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayog
dG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVt
YmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8p
OwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBC
YXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8
IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNT
dHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8s
IGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dl
ciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVy
bWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0
IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2lj
QmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9m
KHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0g
ICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEJh
Y2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAg
Ci1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcgewotICAgICAgICB1bnNpZ25lZCBtX3By
ZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBC
bG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAg
ewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCkt
Pm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBm
b3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQor
ICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxh
dGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMg
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSkt
PnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAg
ICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFs
dWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRjaExvY2FsUHJlZGljdGlvbigpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBSZXNvbHZlU2NvcGVG
b3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6IHsK
ICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5dGVjb2RlVG9wKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1
dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogCi0gICAgICAg
IG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURv
bWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIFNTQUNhbGN1bGF0b3Igc3NhQ2FsY3VsYXRv
cihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNw
cAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FD
YWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTIgKzk1LDEyIEBAIFNTQUNhbGN1
bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUKIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBT
U0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVmKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJp
YWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOworICAgIHJldHVybiByZWFjaGlu
Z0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxl
KTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0
VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIGZvciAo
OyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKKyAg
ICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxv
Y2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1fZGF0YVtibG9ja10ubV9kZWZzLmdldCh2
YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVmOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9pZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJ
bnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9ycyk7CisgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMpOwogICAgICAgICAKICAg
ICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBtX3ZhcmlhYmxlcykgewotICAgICAgICAg
ICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21p
bmFuY2VGcm9udGllck9mKAorICAgICAgICAgICAgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmZv
ckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAogICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMsCiAgICAgICAgICAgICAgICAgWyZdIChC
YXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHBo
aU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw4IEBAIHB1YmxpYzoKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpOwogICAgICAgICAK
ICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50cygpOwotICAgICAgICBtX2dyYXBoLmVu
c3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5jbGVhckNQU0NGR0RhdGEoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBp
ZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFNTQSB0cmFu
c2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVk
LiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAg
IC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2Ug
U1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0
ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxs
cyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAg
WyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJs
b2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJp
YWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0z
ODEsMTggKzM4MiwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFk
LmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNp
Y0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1f
Z3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgp
KTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7
IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50
cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBv
aW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAg
ICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRz
W2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJn
dW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9k
ZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ld
ID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8v
IFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0
IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8g
UmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQg
b2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgu
bV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQyMSwxMiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZv
cm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICByZXR1cm4gcnVuUGhhc2U8U1NB
Q29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJ
blNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24gPSB0cnVlOwor
ICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZ3JhcGgu
bV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYg
KzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBj
YXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJh
Y3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NjM3LDYgKzU2MzcsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB1bnJlYWNoYWJsZShub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGFnKHRoaXMpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcGF5bG9hZCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgdGVtcEdQ
UiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0YWdHUFIgPSB0YWcuZ3ByKCk7CisgICAg
ICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gcGF5bG9hZC5ncHIoKTsKKworICAgICAgICBKU1ZhbHVl
KiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRj
aE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25vZGUtPmNhdGNoT1NSRW50cnlJbmRleCgp
XTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocHRyKSwg
dGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVt
cEdQUiwgVGFnT2Zmc2V0KSwgdGFnR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBQYXlsb2FkT2Zmc2V0KSwgcGF5bG9hZEdQUik7CisgICAg
ICAgIGpzVmFsdWVSZXN1bHQodGFnR1BSLCBwYXlsb2FkR1BSLCBub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAg
Y2FzZSBVcHNpbG9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OTk3LDYgKzU5OTcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjb21waWxlQ2hlY2tTdWJDbGFzcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAK
KyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZy
ZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlC
dWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1w
LmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihw
dHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVz
cyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAg
CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBAIC02MDg1LDYgKzYwOTUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwog
ICAgICAgICBicmVhazsKICAgICB9CisKICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNh
c2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjkzLDYgKzE2OTMsMTMgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1cm47CiAgICAg
fQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIG1faml0
LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9p
bnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0
LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFn
Q2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgIH0KKwog
ICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAg
CiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKQEAgLTE3ODcsOCArMTc5
NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBBU1NF
UlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2lu
KDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0
LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2ppdC5ncmFwaCgpLmJsb2Nr
KDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+
bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBo
KCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAg
ICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQu
IFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xODcyLDEyICsxODgwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNy
ZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1faml0LmdyYXBo
KCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9T
UiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KLSAgICAgICAgLy8gaGVyZSBp
ZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVh
ZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChibG9jay0+aXNPU1JUYXJnZXQgfHwgYmxv
Y2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgZG9u
J3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCisgICAgICAg
ICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBw
ZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIH0KICAgICB9CiB9
CiAKQEAgLTE4ODgsMTAgKzE4OTUsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVu
dHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxv
Y2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCisgICAgICAgIGlmICghYmxvY2st
PmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5
SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIGlmIChibG9jay0+
aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1faml0LmdyYXBo
KCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICBhdXRv
JiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZlY3RvcjxGbHVz
aEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7CisgICAgICAgICAg
ICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0
IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZv
cm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hl
ZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRDZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRKU1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9y
bWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tv
c3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc09TUlRhcmdldCk7
CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFk
c1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgfQogICAgIH0KKworICAg
IG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCk7CisKICAgICBB
U1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAKICAg
ICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlv
bkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIGJv
b2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAogICAgICAg
ICAvLyBFc3RpbWF0ZSBiYXNpYyBibG9jayBleGVjdXRpb24gY291bnRzIGJhc2VkIG9uIGxvb3Ag
ZGVwdGguCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1C
bG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmxvb3BEZXB0aChibG9jaykpOworICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50
ID0gcG93KDEwLCBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYnJhbmNoIHdlaWdodHMg
YmFzZWQgb24gZXhlY3V0aW9uIGNvdW50cy4gVGhpcyBpc24ndCBxdWl0ZSBjb3JyZWN0LiBJdCds
bApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMo
ZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHN0YXRp
YyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFsRlQKICAgICByZXR1cm4gZnRsV2hpdGVs
aXN0OwogfQogCit1c2luZyBOYXR1cmFsTG9vcCA9IENQU05hdHVyYWxMb29wOworCiBjbGFzcyBU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKICAgICBU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKQEAgLTgxLDggKzgzLDggQEAg
cHVibGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9GVEwoKSkKICAgICAg
ICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwogICAgICAgICAKLSAgICAgICAgbV9ncmFw
aC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9v
cHMgPSAqbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNO
YXR1cmFsTG9vcHMoKTsKKyAgICAgICAgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMgPSAq
bV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wczsKICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFs
TG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcFRvTG9vcEhpbnQgPSBidWlsZE5hdHVyYWxMb29w
VG9Mb29wSGludE1hcChuYXR1cmFsTG9vcHMpOwogCiAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQs
IExvb3BIaW50RGVzY3JpcHRvcj4gdGllclVwSGllcmFyY2h5OwpAQCAtMTgyLDcgKzE4NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEhhc2hNYXA8Y29u
c3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAo
Y29uc3QgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCisgICAgSGFzaE1hcDxjb25zdCBOYXR1
cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChjb25zdCBD
UFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKICAgICB7CiAgICAgICAgIEhhc2hNYXA8Y29u
c3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BzVG9Mb29wSGludDsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXRlci0+
dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1
bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWJsb2Nr
SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkg
YmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQu
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFp
bnMoYmxvY2spKTsKIAogICAgICAgICAgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5v
ZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4
aXRPSyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBOb2RlKiBn
ZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFibGUtPnByZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9y
aWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShy
ZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTAgKzgzLDEzIEBAIHB1YmxpYzoKICAgICAgICAg
Ly8gTkIuIFRoaXMgY29kZSBpcyBub3Qgd3JpdHRlbiBmb3IgcGVyZm9ybWFuY2UsIHNpbmNlIGl0
IGlzIG5vdCBpbnRlbmRlZCB0byBydW4KICAgICAgICAgLy8gaW4gcmVsZWFzZSBidWlsZHMuCiAK
LSAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCBhbGwgbG9jYWwgdmFyaWFibGVzIGF0IHRoZSBoZWFk
IG9mIHRoZSByb290IGJsb2NrIGFyZSBkZWFkLgotICAgICAgICBCYXNpY0Jsb2NrKiByb290ID0g
bV9ncmFwaC5ibG9jaygwKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJvb3Qt
PnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCi0gICAgICAgICAgICBWX0VR
VUFMKCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwgcm9vdCksIHN0YXRpY19jYXN0PE5vZGUq
PigwKSwgcm9vdC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGkpKTsKKyAgICAgICAgVkFMSURBVEUo
KG1fZ3JhcGguYmxvY2soMCkpLCBtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMobV9ncmFw
aC5ibG9jaygwKSkpOworCisgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlh
YmxlcyBhdCB0aGUgaGVhZCBvZiBhbGwgZW50cnlwb2ludHMgYXJlIGRlYWQuCisgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0
SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCisgICAgICAgICAgICAgICAgVl9FUVVBTCgodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIGVudHJ5cG9pbnQpLCBzdGF0aWNfY2FzdDxOb2RlKj4o
bnVsbHB0ciksIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChpKSk7CisgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIC8vIFZhbGlkYXRlIHJlZiBjb3VudHMgYW5kIHVzZXMuCiAg
ICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3Jh
cGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw4IEBAIHZvaWQg
bGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2soKSwK
ICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVkIEZUTCBKSVQgY29kZSBmb3IgIiwgQ29k
ZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLCAiLCBpbnN0cnVj
dGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICI6
XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAg
ICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAg
ICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpzQm9keSI7CiAgICAgICAgIAotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FE
b21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkK
ICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJlYWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcu
XG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgbV9u
b2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4o
MCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVl
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygp
OyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tp
XTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgICAgICBt
X291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOwogICAgICAgICAgICAgCkBAIC00NDMs
NyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIERGRzo6QmFzaWNCbG9jayogdGFyZ2V0
ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghdGFyZ2V0KQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21p
bmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdldCkpIHsKKyAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJnZXQp
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sgIiwgKnRhcmdldCwgIiB3aWxsIGJhaWwg
YWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNl
OwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2dyYXBoLm1f
ZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKKyAgICAg
ICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCks
IG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24g
MjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzKQogICAg
ICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFyZ3MpCiAgICAgICAgIERFRklORV9PUChv
cF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfY2F0Y2gpCiAgICAgICAgIERF
RklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERFRklORV9PUChvcF9jcmVhdGVfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9wcm9maWxlX2NhdGNoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90
aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b190aGlzKEluc3RydWN0
aW9uKik7CkBAIC03OTYsNiArNzk3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVpaLCBpbnQsIGlu
dDMyX3QsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFBfSklUT3BlcmF0aW9uX0UpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUywgR1BSUmVnLCBzaXplX3QpOworICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSwgdWlu
dDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklU
T3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUosIFJlZ2lzdGVySUQp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0
aW9uX0VKSSwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNiArNDYz
LDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1
cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNh
bGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9wZXJhdGlvbiwgdWludDMyX3QgYXJnMSkK
K3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsK
KyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOworfQorCiAjaWYgVVNFKEpTVkFMVUU2NCkKIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWlogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgaW50MzJfdCBhcmcyLCBpbnQzMl90IGFyZzMpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1MzcsNiArMTUzNywzMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF91bnJlYWNoYWJsZShJbnN0
cnVjdGlvCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bf
cHJvZmlsZV9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIC8v
IEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0aGUgcHJvY2VzcyBvZiBkb2luZyBPU1Ig
ZW50cnksIGluY2x1ZGluZworICAgIC8vIGFyZ3VtZW50IHR5cGUgcHJvb2ZzLCBzdG9yaW5nIGxv
Y2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRyeU9T
UkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0byBza2lwT1NSRW50cnkg
PSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UmVzdG9yZUNh
bGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7CisgICAgc2tpcE9TUkVudHJ5
LmxpbmsodGhpcyk7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkgeworICAgICAgICBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7
CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHBy
b2ZpbGUpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVn
cyhyZWdUMCk7CisjZWxzZQorICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMSwgcmVn
VDApOworI2VuZGlmCisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUu
bV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnBy
b2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
MTUsNiArMTUxNSwxOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRp
CiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkci
LCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKwor
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRl
KiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAg
Q29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBs
YWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJ
VENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVk
UmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNyw3IEBAIHR5cGVkZWYgY2hhciog
KEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04g
KlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBl
ZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSos
IGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRP
cGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFy
KiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJf
dCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRP
cGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmlu
Z0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBK
U1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVy
YXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAtMzk3LDYgKzM5OCw3IEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5B
QkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25P
cHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkg
V1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
bmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUp
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdU
Rl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4
LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElO
VF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0
Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIq
PihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNr
ZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJh
bmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJu
ICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3Io
Vk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiAr
MTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdQogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19pZl9leGNlcHRpb25faXNfdW5j
YXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsKTsKK0xMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRjaCk7CiBleHRlcm4g
IkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihW
TSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwogI2lmICFFTkFCTEUoSklUKQogZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfc3RhY2tfY2hlY2tfYXRfdm1fZW50cnko
Vk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMTg4MSw2ICsxODgxLDExIEBAIF9sbGludF9vcF9yZXNvbHZl
X3Njb3BlX2Zvcl9ob2lzdGluZ19mdW4KICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0
aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCkKICAgICBkaXNw
YXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2lu
X2V2YWxfbGVuZ3RoKQogCitfbGxpbnRfb3BfcHJvZmlsZV9jYXRjaDoKKyAgICBjYWxsT3Bjb2Rl
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQorICAgIGRpc3BhdGNoKGNv
bnN0ZXhwciBvcF9wcm9maWxlX2NhdGNoX2xlbmd0aCkKKworCiAjIExhc3RseSwgbWFrZSBzdXJl
IHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rl
cy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBv
ciBlaXRoZXIgSklULiBXZSBhc3NlcnQKICMgYXMgbXVjaC4KSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYg
KzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJp
bmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBE
MUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
bWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1
ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVD
NkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNG
NzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Mzgs
NiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWly
LmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNw
cCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1t
ICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAq
LywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVD
ODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQx
REM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYv
QmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNH
cmFwaC5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFw
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyAr
MzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhh
dmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAi
I2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUo
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAg
ICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9v
dCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAg
ICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0K
LSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBu
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0
eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxz
ZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0
KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25z
dCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAg
ICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0
KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2Rl
Lm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUm
IG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29u
dGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3Qp
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290
IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFz
cyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAg
ICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21h
cC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAg
ICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAg
IHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYg
b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAg
ICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAg
ICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0
ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1
c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0g
U2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNp
bmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9k
ZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3
ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5w
cmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAg
ICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6
cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBo
LmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9XVEYvd3RmL0Rv
bWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNw
YWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewog
cHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERv
bWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6
IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxC
bG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJU
YXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNv
bXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9j
a0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEg
c3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ug
d2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRl
IHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAg
ICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0
ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJv
bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVi
bGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJ
dGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBo
OjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0
JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUg
R3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VG
cm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9
KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5j
ZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAg
dHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlz
dCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0
OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwo
CkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAg
ICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFt
ZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBm
b3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93
dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xl
Um9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdy
YXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBo
X2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RH
cmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRo
ZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5v
ZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisg
ICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVS
b290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jv
b3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lz
Um9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisg
ICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290Owor
ICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQor
Citwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1f
aXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNz
IFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5v
ZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsK
KyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290
LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQor
CisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwg
ZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9
CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBp
ZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAg
IHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290
KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAg
IG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBH
cmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7
CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgor
ICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRl
bXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNp
bmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFw
KSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAg
ICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7
CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgq
Y29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBU
JiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21h
cFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBO
b2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5n
bGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlw
ZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5v
ZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3Jh
cGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290
R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAg
ICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygp
KSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlz
RW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9v
dCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0K
KworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+
KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7Cisg
ICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5v
ZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0
IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNz
ZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAg
ICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5j
b250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRl
Y2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0
IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAg
Zm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9k
ZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsK
KyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5v
ZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAx
OworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAg
ICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAg
ICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAg
ICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUo
aSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0
LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwor
ICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQor
ICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAg
ICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3Vj
Y3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAg
IGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRl
bXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhl
IHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhl
IHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3Rl
ZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3Mu
CisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUg
R3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290
U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0
eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9T
aW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318324</attachid>
            <date>2017-08-16 20:36:21 -0700</date>
            <delta_ts>2017-08-17 20:00:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>175546</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMzg5LDcgKzM4OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1BoYXNlLmNwcAogICAgIGRmZy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZH
UGxhbi5jcHAKLSAgICBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJl
ZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKICAgICBkZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTM5NCw4ICszOTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThB
QTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25T
ZXQuY3BwICovOyB9OwogCQkwRjNDMUYxQTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAq
LzsgfTsKIAkJMEYzQzFGMUIxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYx
OTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYz
RTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAw
RjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1
M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERG
R1ByZVBvc3ROdW1iZXJpbmcuaCAqLzsgfTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8q
IEFpck9wY29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MTgzMzIxQzQ1RjM1QzAwNzI0NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1
NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVH
ZW5lcmF0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjQwRTRBOTFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYw
MDcyNDUwQiAvKiBBaXJPcGNvZGVVdGlscy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0yOTg3LDggKzI5ODUsNiBAQAogCQkwRjNCRDFCNjFCODk2
QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR0luc2VydGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0
aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3
OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
M0MxRjE5MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0g
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGM0UwMUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3Bw
OyBwYXRoID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmlu
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5n
Lmg7IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFs
UmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEz
MUY4RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERh
dGFGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc0OTMsOCArNzQ4OSw2
IEBACiAJCQkJMEZCRTBGNkUxNkMxREIwMTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rp
b25QaGFzZS5oICovLAogCQkJCTBGRkZDOTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgKi8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQz
NTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5
MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlD
RTAxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJ
CQkwRjJCOUNFMTE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAq
LywKIAkJCQkwRkZDOTIxNTFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5Lmgg
Ki8sCkBAIC04Njk4LDcgKzg2OTIsNiBAQAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAv
KiBERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3
NTE2QzFEQjBCMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZGQzk1RTE0RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2
MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNF
RDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJl
VmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0ODcsNyArMTA0ODAsNiBAQAogCQkJCUE3OEE5
NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBERkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QkUwRjc0MTZDMURCMDkwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGRkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlE
MzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVy
ZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAv
KiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2
aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDEyIEBAIHZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAg
ICAgICB2b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKKyAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHJvZmlsZV9jYXRjaCIpOworICAgICAg
ICBvdXQucHJpbnRmKCIlcCIsIHBvaW50ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBvcF90aHJvdzogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgbG9jYXRpb24sIGl0
LCAidGhyb3ciLCByMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTE0
Miw2ICsxNDIsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2dldF9wYXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9wcm9maWxlX2NhdGNoIiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
dGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayoKICAgICBjYXNlIG9wX2dldF9hcmd1bWVudDoKICAgICBjYXNlIG9wX25vcDoKICAg
ICBjYXNlIG9wX3VucmVhY2hhYmxlOgorICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDoKICAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpA
QCAtMzY4LDYgKzM2OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayoKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bfbm9wOgogICAgIGNhc2Ugb3BfdW5y
ZWFjaGFibGU6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogI2RlZmluZSBMTElOVF9IRUxQ
RVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNI
X0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExM
SU5UX0hFTFBFUl9PUENPREVTCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1Mjks
OCBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGlu
c3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAg
IH07CiAKKyAgICBWZWN0b3I8dW5zaWduZWQsIDQ+IGFmdGVyQ2F0Y2hJbmRpY2VzOworCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAg
ICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5l
eHQoKTsKIApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgbV9udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG51
bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGNhc2Ugb3BfcHJvZmlsZV9jYXRjaDogeworICAgICAgICAgICAgYWZ0
ZXJDYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICB9
CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKICAg
ICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCArODM4LDM4IEBAIGJvb2wg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpk
dW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOworCisgICAg
aWYgKGFmdGVyQ2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMmIGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNh
dGNoUHJvZmlsZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgYWZ0ZXJDYXRjaEluZGV4IDogYWZ0
ZXJDYXRjaEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9
IGJ5dGVjb2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChhZnRlckNh
dGNoSW5kZXgpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9wZXJh
bmRzOworICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGl2
ZUxvY2Fscy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNldEJp
dChbJl0gKHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5k
cy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVP
cGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIu
Z2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAg
ICAgbV9pbnN0cnVjdGlvbnNbYWZ0ZXJDYXRjaEluZGV4ICsgMV0udS5wb2ludGVyID0gcHJvZmls
ZXMuZ2V0KCk7CisgICAgICAgICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2Zp
bGVzKSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZN
b3ZlKGNhdGNoUHJvZmlsZXMpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+
bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAg
ICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjIsMTAgQEAgY29uc3Qg
SWRlbnRpZmllciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0
ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9u
QXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxl
cykKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAg
ICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9m
U2FtcGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxl
OjpudW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFs
dWUgcHJvZmlsZXMgYXJlIGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90
YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBu
dW1TYW1wbGVzID0gcHJvZmlsZS0+dG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKQEAgLTI1MDMsNiAr
MjU0MCwxMiBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDCiAgICAg
ICAgICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAg
cHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAgICAgfQorCisgICAg
Zm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7CisgICAgICAgIHBy
b2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rp
b24obG9ja2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bnMobG9ja2VyKTsKQEAgLTI3NDMsNyArMjc4NiwyMCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9j
azo6dmFsdWVQcm9maWxlRm9yCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdKTsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwotICAgIHJldHVybiBpbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyAgICBWYWx1
ZVByb2ZpbGUqIHJlc3VsdCA9IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3Ro
IC0gMV0udS5wcm9maWxlOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBib29sIGZvdW5kID0g
ZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVQcm9maWxl
cygpOyArK2kpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gdmFsdWVQcm9maWxl
KGkpOworICAgICAgICBpZiAocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSBieXRlY29kZU9m
ZnNldCkgeworICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUgPT0gcmVzdWx0KTsKKyAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIEFTU0VSVChmb3VuZCk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lk
IENvZGVCbG9jazo6dmFsaWRhdGUoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAyLDYgKzEwMDIs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmlsZT4g
bV9hcmd1bWVudFZhbHVlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRlZEFycmF5PFZhbHVlUHJvZmls
ZT4gbV92YWx1ZVByb2ZpbGVzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IG1fY2F0Y2hQcm9maWxlczsKICAgICBTZWdtZW50ZWRWZWN0
b3I8UmFyZUNhc2VQcm9maWxlLCA4PiBtX3JhcmVDYXNlUHJvZmlsZXM7CiAgICAgUmVmQ291bnRl
ZEFycmF5PEFycmF5QWxsb2NhdGlvblByb2ZpbGU+IG1fYXJyYXlBbGxvY2F0aW9uUHJvZmlsZXM7
CiAgICAgQXJyYXlQcm9maWxlVmVjdG9yIG1fYXJyYXlQcm9maWxlczsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTc0LDggKzE3NCw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXQKIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQ
cm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7Ci0gICAgVmFsdWVQcm9maWxlKCk6IFZh
bHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KLSAgICBWYWx1ZVByb2Zp
bGUoaW50IGJ5dGVjb2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0
czwwPihieXRlY29kZU9mZnNldCkgeyB9CisgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2Zp
bGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9CisgICAgVmFsdWVQcm9maWxlKGludCBi
eXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5
dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC0yMDIsNCAr
MjAyLDM4IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQcm9maWxlQnl0ZWNvZGVPZmYKICAgICBy
ZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCitzdHJ1Y3QgVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCB7CisgICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsKKyAgICBp
bnQgbV9vcGVyYW5kOworfTsKKworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIg
eworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIodW5zaWduZWQgc2l6ZSkKKyAgICAg
ICAgOiBtX3NpemUoc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBWYWx1ZVByb2ZpbGUg
aGFzIG1vcmUgc3R1ZmYgdGhhbiB3ZSBuZWVkLiBXZSBjb3VsZCBvcHRpbWl6ZSB0aGVzZSB2YWx1
ZSBwcm9maWxlcworICAgICAgICAvLyB0byBiZSBtb3JlIHNwYWNlIGVmZmljaWVudC4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQxMworICAg
ICAgICBtX2J1ZmZlciA9IE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPjo6bWFsbG9j
KG1fc2l6ZSAqIHNpemVvZihWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG5ldyAoJm1fYnVm
ZmVyLmdldCgpW2ldKSBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgflZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbV9idWZmZXIuZ2V0KClbaV0u
flZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rpb24+CisgICAgdm9pZCBmb3JFYWNoKEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAg
ICAgZnVuY3Rpb24obV9idWZmZXIuZ2V0KClbaV0pOworICAgIH0KKworICAgIHVuc2lnbmVkIG1f
c2l6ZTsKKyAgICBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD4gbV9idWZmZXI7Cit9
OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3MCw2ICszOTcwLDkgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKFJlZ2lzdAogICAgIGVtaXRPcGNvZGUob3BfY2F0Y2gp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkp
OworCisgICAgZW1pdE9wY29kZShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJl
Z2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDYgKzIwOCw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6IHsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVU
b3AoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODM5LDcgKzE4NDAsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIEZJWE1FOiBEbyBzcGFyc2Ug
Y29uZGl0aW9uYWwgdGhpbmdzLgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgICAgICAK
KwogICAgIGNhc2UgUmV0dXJuOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwog
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dh
cmRzQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNr
d2FyZHNDRkcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYWNrd2FyZHNDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgQmFja3dhcmRzQ0ZHIDog
cHVibGljIEJhY2t3YXJkc0dyYXBoPENGRz4geworY2xhc3MgQmFja3dhcmRzQ0ZHIDogcHVibGlj
IEJhY2t3YXJkc0dyYXBoPFNTQUNGRz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3
YXJkc0NGRyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQmFj
a3dhcmRzQ0ZHKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxDRkc+KCpn
cmFwaC5tX2NmZykKKyAgICAgICAgOiBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+KHNlbGVjdENGRzxT
U0FDRkc+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsNyBAQCBCYXNpY0Jsb2NrOjpCYXNpY0Jsb2NrKAogICAgIDogYnl0ZWNvZGVCZWdp
bihieXRlY29kZUJlZ2luKQogICAgICwgaW5kZXgoTm9CbG9jaykKICAgICAsIGlzT1NSVGFyZ2V0
KGZhbHNlKQorICAgICwgaXNDYXRjaEVudHJ5cG9pbnQoZmFsc2UpCiAgICAgLCBjZmFIYXNWaXNp
dGVkKGZhbHNlKQogICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKICAgICAsIGNmYUZvdW5k
Q29uc3RhbnRzKGZhbHNlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNp
Y0Jsb2NrLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxNyArODIsOSBAQCBzdHJ1Y3Qg
QmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgICAgIHNpemVfdCBpID0gc2l6
ZSgpOwogICAgICAgICB3aGlsZSAoaS0tKSB7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gYXQo
aSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2Ug
SnVtcDoKLSAgICAgICAgICAgIGNhc2UgQnJhbmNoOgotICAgICAgICAgICAgY2FzZSBTd2l0Y2g6
Ci0gICAgICAgICAgICBjYXNlIFJldHVybjoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGw6Ci0g
ICAgICAgICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3M6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6Ci0gICAg
ICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgorICAgICAgICAgICAgaWYgKG5vZGUtPmlzVGVybWlu
YWwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUsIGkpOworICAg
ICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVy
IGVuZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFi
bHkgb25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUg
YWxsIG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KICAgICAg
ICAgICAgIGNhc2UgQ2hlY2s6IC8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIGl0J3Mgb3VyIHVuaXZl
cnNhbCBuby1vcC4KICAgICAgICAgICAgIGNhc2UgUGhhbnRvbToKQEAgLTE4NSw2ICsxNzcsNyBA
QCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8QmFzaWNCbG9jCiAgICAgQmxvY2tJbmRl
eCBpbmRleDsKICAgICAKICAgICBib29sIGlzT1NSVGFyZ2V0OworICAgIGJvb2wgaXNDYXRjaEVu
dHJ5cG9pbnQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2
aXNpdDsKICAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5
cGUuaCIKICNpbmNsdWRlICJERkdBYnN0cmFjdEhlYXAuaCIKICNpbmNsdWRlICJERkdBcnJheU1v
ZGUuaCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIK
ICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuaCIKQEAgLTQ3OCw4ICs0NzksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFyZ3VtZW50
UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSBmaW5kQXJndW1lbnRQb3NpdGlvbkZvckxvY2Fs
KG9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKGFyZ3VtZW50UG9zaXRpb24pCiAgICAgICAgICAg
ICAgICAgZmx1c2hEaXJlY3Qob3BlcmFuZCwgYXJndW1lbnRQb3NpdGlvbik7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpICYmIG9wZXJhbmQgPT0gbV9j
b2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSkKLSAgICAgICAgICAgICAgICBmbHVzaChvcGVyYW5k
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fZ3JhcGgubmVlZHNTY29wZVJlZ2lzdGVyKCkgJiYg
b3BlcmFuZCA9PSBtX2NvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKSB7CisKKworICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0TG9jYWwgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmNvbnRhaW5zKG1fY3VycmVudEJsb2NrKQorICAgICAgICAgICAgICAgICAgICAm
JiAhbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChsb2NhbCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFpc1ByaW1vcmRpYWxTZXRMb2NhbCkKKyAgICAgICAgICAgICAgICAgICAg
Zmx1c2gob3BlcmFuZCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0
YShvcGVyYW5kKTsKQEAgLTExMzEsNyArMTEzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFBv
dGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVjb2Rl
QmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2ZSB0
aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1fYmxv
Y2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxzaXRl
J3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQogICAg
ICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBzdWNj
ZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0IG5v
dCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc1LDcgKzQw
ODIsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8v
IHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBh
cmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNl
dCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDAp
ICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJl
c2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwg
OD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAg
ICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVt
QXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMu
IFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28K
ICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAt
NDA4OCw3ICs0MDk5LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9w
SW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVu
dF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1l
bnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVz
QXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC01MTYxLDYgKzUxNzIsMTE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9jYXRjaDoKICAgICAgICAgICAg
IG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9jYXRjaCk7CisKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOiB7Cisg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBX
ZSBkb24ndCBkbyBhbnl0aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2UgZG9uJ3QgdHJl
YXQgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3Byb2ZpbGVfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNGVEwo
bV9ncmFwaC5tX3BsYW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dCBjYXRjaCBpbiB0aGUgRlRMLgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAg
ICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251
bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJl
ZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5z
aWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2Vl
bkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2sp
OworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9
IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5k
LmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBw
ZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90Pihv
cGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9B
cmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVu
dCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5
ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUo
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2
ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHJvZmlsZV9jYXRjaCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSdyZSBub3cgY29tbWl0dGVkIHRvIGNvbXBpbGlu
ZyB0aGlzIGFzIGFuIGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVj
YXVzZSB3aGVuIHNlYXJjaGluZyBmb3Igd2hlcmUgdG8gT1NSIGVudGVyLCB3ZSBkbyBpdCByZWxh
dGl2ZQorICAgICAgICAgICAgLy8gdG8gdGhlIGJ5dGVjb2RlIG9mZnNldCBvZiBvcF9wcm9maWxl
X2NhdGNoLgorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmJ5dGVjb2RlQmVnaW4gPSBtX2N1
cnJlbnRJbmRleDsKKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmlzQ2F0Y2hFbnRyeXBv
aW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQobV9j
dXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFZpcnR1YWxSZWdp
c3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3RlOiBUaGlzIHdpbGwgcmVz
ZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2VlIGJlbG93IGJlY2F1c2Ug
dGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAgICAgIG1fZXhpdE9LID0g
ZmFsc2U7IC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBu
b3Qga25vdyBob3cgdG8gZG8gdmFsdWUgcmVjb3ZlcnkuCisgICAgICAgICAgICB1bnNpZ25lZCBu
dW1iZXJPZkxvY2FscyA9IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChv
cGVyYW5kLmlzQXJndW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIEFTU0VSVChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9k
ZSogdmFsdWUgPSBhZGRUb0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZM
b2NhbHMpLCBPcEluZm8obG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAg
ICAgICAgICAgICArK251bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
TW92SGludCwgT3BJbmZvKHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAg
ICAgIGxvY2Fsc1RvU2V0LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2
YWx1ZSkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21h
eExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9t
YXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY2FuIG5vdyBl
eGl0IGJlY2F1c2Ugd2UndmUgc2V0IHVwIG91ciBPU1IgZXhpdCBzdGF0ZSB0byByZWNvdmVyIGFu
eSBsaXZlIGxvY2Fscy4KKyAgICAgICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAg
ICBhZGRUb0dyYXBoKEV4aXRPSyk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBTZXQgdXAgb3VyIGFyZ3VtZW50cyBub3cgdGhhdCBpdCdzIHNhZmUgdG8gZXhpdC4gVGhpcyBo
YXBwZW5zIGhlcmUgYmVjYXVzZSB3ZSBtYXkgaG9pc3QgdHlwZSBjaGVja3MgdXAKKyAgICAgICAg
ICAgICAgICAvLyB0byB0aGlzIHBvaW50IGluIHRoZSBwcm9ncmFtLCBzbyBpdCBtdXN0IGJlIHNh
ZmUgdG8gZXhpdC4KKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBWZWN0b3I8Tm9kZSosIDg+
KCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRz
ID0gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50
QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXpl
KCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudChhcmd1bWVudCkpOworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChh
cmd1bWVudFByZWRpY3Rpb25zW2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFy
aWFibGUtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5t
ZXJnZUNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZEluZGV4aW5nVHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3Vt
ZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRG
aXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50
cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6
IGxvY2Fsc1RvU2V0KQorICAgICAgICAgICAgICAgIHNldExvY2FsKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCBJbW1lZGlhdGVOYWtlZFNldCk7CisKKyAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX3Byb2ZpbGVfY2F0Y2gpOworICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKQEAgLTYxNTYsOCArNjI3
OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlu
a2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJn
ZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhX
VEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2so
KTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjE0LDEwICs2MzM5LDEyIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwg
SW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwotCiAg
ICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0
YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKKwogICAgIG1fZ3JhcGguZGV0ZXJtaW5l
UmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKKwor
ICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4obV9ncmFwaCk7
CiAgICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2Nr
cygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTYyMjgsNyArNjM1NSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVt
YmVyT2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZMb2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJl
ck9mQXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mQXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwogICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMg
PSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRl
clNsb3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5dGVj
b2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRlY29kZUluZGV4KQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
ICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIEZvdW5k
IG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZH
QmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVS
b290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00OCw3
ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsgcmV0
dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNvbnZlcnNp
b24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsKKyAgICB9CisKKyAgICBMaXN0
IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+
KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBwcml2YXRlOgogICAgIEdyYXBoJiBtX2dy
YXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGljIFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsK
K3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFNpbmdsZVJvb3RH
cmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5t
X2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsKKwordXNpbmcgU1NBQ0ZHID0gQ0ZHOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxlY3RD
RkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fY3BzQ0ZHKTsK
KyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZH
Pjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAg
IFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fc3Nh
Q0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJn
dW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVC
bG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFk
IHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzCiAg
ICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVy
IHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAg
IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShp
LCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBt
X2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSos
IDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52
YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAg
ICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2lu
ZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNT
RVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmlu
aXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAg
ICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAgICAgCkBA
IC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAg
IE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBt
X2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21p
bmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBtX25v
ZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC03NzksNyArNzc5LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJpY3QgZG9taW5hdGlvbiBiZWNhdXNlIHRo
aXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBvd24gYmxvY2sgaWYKICAgICAgICAgICAg
IC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlvbiBpbiB0aGUgYmxvY2suIENsZWFybHks
IHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAgICAgICAgIC8vIGl0c2VsZiwgdGhlIHRo
aW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3QgZG9taW5hdGUgdXMuCi0gICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Js
b2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5zdHJpY3Rs
eURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBJdCBzdHJpY3RseSBkb21p
bmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
ZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFs
dWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMt
PmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRl
LT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cmVwbGFjZVdp
dGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC5zZXROb2Rl
KGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OSw2ICsyNDksNyBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlECiAgICAgY2FzZSBvcF9w
dXNoX3dpdGhfc2NvcGU6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ug
b3BfY2F0Y2g6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogICAgIGNhc2Ugb3BfY3JlYXRl
X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF9sb2dfc2hh
ZG93X2NoaWNrZW5fcHJvbG9ndWU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCB2
b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9t
OgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBj
YXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3Mg
Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKEdyYXBoJiBncmFwaCkK
LSAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpKQorICAgICAg
ICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCkpCiAgICAgICAgICwg
bV9iYWNrd2FyZHNEb21pbmF0b3JzKGdyYXBoLmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKSkK
ICAgICB7CiAgICAgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIERvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKKyAgICBTU0FEb21pbmF0b3JzJiBtX2Rv
bWluYXRvcnM7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgbV9iYWNrd2FyZHNEb21pbmF0b3Jz
OwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAg
ICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAgICAgICAgIAotICAgICAgICBjbGVhblZhcmlh
YmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNW
ZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLnZhbHVlcygpKQorICAgICAg
ICAgICAgY2xlYW5WYXJpYWJsZXMoYXJndW1lbnRzVmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0
IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9yIChCbG9ja0lu
ZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShy
ZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2Vt
Ymxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAgVmVjdG9yPERpc2Fzc2Vt
Ymxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYgogICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVy
KTsKICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKICAgICAKLSAgICBt
X2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29w
cygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIG1fZ3JhcGguZW5z
dXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgCiAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAg
ICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2VtYmx5UHJlZml4ID0gIiAgICAgICAgIjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5
TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVy
VXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM1LDE2ICszNSwzMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKLWNsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGRz4gewor
dGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdU
Rjo6RG9taW5hdG9yczxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9taW5h
dG9ycyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5h
dG9ycyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGRz4oKmdyYXBo
Lm1fY2ZnKQorICAgICAgICA6IFdURjo6RG9taW5hdG9yczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZH
S2luZD4oZ3JhcGgpKQogICAgIHsKICAgICB9CiB9OwogCit1c2luZyBTU0FEb21pbmF0b3JzID0g
RG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BT
Q0ZHPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0RvbWlu
YXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVy
biBncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FD
Rkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZH
KEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygp
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRl
cy5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Vk
Z2VEb21pbmF0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQogICAgICAgICAsIG1fcmVzdWx0KHRydWUpCiAgICAg
eworICAgICAgICBBU1NFUlQoZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgb3BlcmF0b3IoKShOb2RlKiwgRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgYm9vbCBy
ZXN1bHQgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25l
ciwgbV9ibG9jayk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX3NzYURvbWluYXRv
cnMtPmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOwogICAgICAgICBpZiAo
dmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAiQ2hlY2tp
bmcgaWYgIiwgZWRnZSwgIiBpbiAiLCAqZWRnZS5ub2RlKCktPm93bmVyLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTk0LDYgKzE5OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNr
VHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9T
UkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNh
c2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVI
aW50OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAko
cmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZv
cm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0
IDogdWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVz
aGVkSW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2
aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgi
CiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgot
I2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNs
dWRlICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCkBAIC03Myw3ICs3Miw3IEBAIEdyYXBoOjpH
cmFwaChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1fY29k
ZUJsb2NrKG1fcGxhbi5jb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2RlQmxv
Y2stPmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRo
aXMpKQorICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkKICAg
ICAsIG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZp
eHBvaW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3RhcnRl
ZFJlZ2lzdGVyaW5nKQpAQCAtNDA5LDkgKzQwOCwxMyBAQCBib29sIEdyYXBoOjp0ZXJtaW5hbHNB
cmVWYWxpZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBCYXNpY0Jsb2NrKiB1bmJv
eExvb3BOb2RlKGNvbnN0IENQU0NGRzo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlKCk7
IH0KK3N0YXRpYyBCYXNpY0Jsb2NrKiB1bmJveExvb3BOb2RlKEJhc2ljQmxvY2sqIGJsb2NrKSB7
IHJldHVybiBibG9jazsgfQorCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1
bXBNb2RlIHBoaU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0
LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5h
dCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxl
ID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQp
IiA6ICIiLCAiXG4iKTsKKyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAi
ICgiLCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAi
KToiLAorICAgICAgICBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxv
Y2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoRW50
cnlwb2ludCA/ICIgKENhdGNoIEVudHJ5cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxv
Y2stPmV4ZWN1dGlvbkNvdW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291
bnQsICJcbiIpOwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAg
LTQyMiwxOCArNDI1LDI2IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVh
bSYKICAgICBpZiAoYmxvY2stPnRlcm1pbmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQucHJp
bnQoIiAiLCAqc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcp
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+ZWRn
ZUtpbmQoYmxvY2ssIHN1Y2Nlc3NvciksICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAg
ICAgICAgb3V0LnByaW50KCIgPGludmFsaWQ+Iik7CiAgICAgb3V0LnByaW50KCJcbiIpOwotICAg
IGlmIChtX2RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewotICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9y
c09mKGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRl
czogIiwgbV9kb21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwotICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5h
dG9ycy0+ZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9y
cy0+aXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4i
KTsKKworICAgIGF1dG8gcHJpbnREb21pbmF0b3JzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7
CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgZG9taW5hdG9y
cy5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwg
IiAgRG9taW5hdGVzOiAiLCBkb21pbmF0b3JzLmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxu
Iik7CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjogIiwg
ZG9taW5hdG9ycy5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7CisgICAgICAgIG91
dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwKKyAgICAg
ICAgICAgIGRvbWluYXRvcnMuaXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShkb21pbmF0b3JzKT46OnR5cGU6Okxpc3QgeyBi
bG9jayB9KSwgIlxuIik7CisgICAgfTsKKworICAgIGlmICh0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7
CisgICAgICAgIGlmIChtX3NzYURvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWluYXRv
cnMoKm1fc3NhRG9taW5hdG9ycyk7CisgICAgICAgIGVsc2UgaWYgKG1fY3BzRG9taW5hdG9ycykK
KyAgICAgICAgICAgIHByaW50RG9taW5hdG9ycygqbV9jcHNEb21pbmF0b3JzKTsKICAgICB9CisK
ICAgICBpZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsK
ICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwg
bV9iYWNrd2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2Fy
ZHNEb21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5
ICs0NTcsMzMgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAg
ICAgICB9CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9z
dE51bWJlcmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVy
aW5nOiAiLCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQ
b3N0TnVtYmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJh
bExvb3BzKSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJh
bExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKKworICAgIGF1dG8gcHJpbnROYXR1cmFsTG9vcHMg
PSBbJl0gKGF1dG8mIG5hdHVyYWxMb29wcykgeworICAgICAgICBpZiAoY29uc3QgYXV0byogbG9v
cCA9IG5hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CiAgICAgICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBMb29wIGhlYWRlciwgY29udGFpbnM6Iik7CiAgICAgICAgICAgICBWZWN0
b3I8QmxvY2tJbmRleD4gc29ydGVkQmxvY2tMaXN0OwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIHNvcnRlZEJs
b2NrTGlzdC5hcHBlbmQobG9vcC0+YXQoaSktPmluZGV4KTsKKyAgICAgICAgICAgICAgICBzb3J0
ZWRCbG9ja0xpc3QuYXBwZW5kKHVuYm94TG9vcE5vZGUobG9vcC0+YXQoaSkpLT5pbmRleCk7CiAg
ICAgICAgICAgICBzdGQ6OnNvcnQoc29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2Nr
TGlzdC5lbmQoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc29ydGVk
QmxvY2tMaXN0LnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBz
b3J0ZWRCbG9ja0xpc3RbaV0pOwogICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWlu
aW5nTG9vcHMgPQotICAgICAgICAgICAgbV9uYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwor
ICAgICAgICBhdXRvIGNvbnRhaW5pbmdMb29wcyA9IG5hdHVyYWxMb29wcy0+bG9vcHNPZihibG9j
ayk7CiAgICAgICAgIGlmICghY29udGFpbmluZ0xvb3BzLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIsICpjb250YWluaW5nTG9vcHNbaV0t
PmhlYWRlcigpKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqdW5ib3hMb29wTm9k
ZShjb250YWluaW5nTG9vcHNbaV0tPmhlYWRlcigpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQo
IlxuIik7CiAgICAgICAgIH0KLSAgICB9CisgICAgfTsKKworICAgIGlmIChtX3NzYU5hdHVyYWxM
b29wcykKKyAgICAgICAgcHJpbnROYXR1cmFsTG9vcHMobV9zc2FOYXR1cmFsTG9vcHMpOworICAg
IGVsc2UgaWYgKG1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29wcyht
X2Nwc05hdHVyYWxMb29wcyk7CisKICAgICBpZiAoIWJsb2NrLT5waGlzLmlzRW1wdHkoKSkgewog
ICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQaGkgTm9kZXM6Iik7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpIHsKQEAgLTUwMiw4ICs1
MTcsMTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwogICAgIG91
dC5wcmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBGb3JtOiAi
LCBtX2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3RhdGUsICI7
IFJlZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBpZiAobV9m
b3JtID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6ICIsIGxp
c3REdW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAgICBvdXQu
cHJpbnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIpOworICAg
IGVsc2UgeworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJndW1lbnRz
KQorICAgICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwgcGFpci5r
ZXktPmluZGV4LCAiOiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAgfQogICAg
IG91dC5wcmludCgiXG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CkBA
IC02NDAsOCArNjU3LDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFz
aWMKIHZvaWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJh
c2ljQmxvY2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsK
LSAgICBibG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayog
ZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFj
aGFibGUgPSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAg
fQogICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sq
IGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTc5OCw5ICs4MTcsMTAgQEAgdm9pZCBH
cmFwaDo6a2lsbFVucmVhY2hhYmxlQmxvY2tzKCkKIAogdm9pZCBHcmFwaDo6aW52YWxpZGF0ZUNG
RygpCiB7Ci0gICAgbV9kb21pbmF0b3JzID0gbnVsbHB0cjsKLSAgICBtX25hdHVyYWxMb29wcyA9
IG51bGxwdHI7Ci0gICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gbnVsbHB0cjsKKyAgICBtX2Nwc0Rv
bWluYXRvcnMgPSBudWxscHRyOworICAgIG1fc3NhRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAg
bV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbnVs
bHB0cjsKICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsKICAgICBt
X2JhY2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVs
bHB0cjsKQEAgLTg1MCwxMiArODcwLDM3IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5QcmVP
cmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0IHdvcmts
aXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayog
ZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlw
b2ludCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsK
ICAgICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCiAgICAgICAgICAgICB3b3JrbGlzdC5wdXNo
KGJsb2NrLT5zdWNjZXNzb3IoaSkpOwogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxl
ZCgpKSB7CisgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcHJlIG9yZGVyLCB3ZSBzaG91
bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRl
LgorICAgICAgICBhdXRvIHZhbGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykg
eworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAg
ICAgICAgICAgaWYgKCFhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAg
ICAgICAgICAgIGlmICghYiB8fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIp
KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA8IGopOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9m
b3JtID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVS
ZXN1bHRzKGVuc3VyZVNTQURvbWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC04NjMsNyArOTA4LDggQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9j
a3NJblBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJC
bG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAg
IGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdv
cmtsaXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0g
PSB3b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAg
ICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC04NzYsNiArOTIyLDMxIEBAIEJsb2NrTGlzdCBH
cmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBhdXRvIHZh
bGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICAgICAgLy8g
V2hlbiBpdGVyYXRpbmcgb3ZlciByZXZlcnNlIHBvc3Qgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9t
aW5hdG9ycworICAgICAgICAgICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAgICAg
ICAgaWYgKCFhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAgICAg
ICAgIGlmICghYiB8fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA+IGopOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3JtID09
IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRz
KGVuc3VyZVNTQURvbWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbGlk
YXRlUmVzdWx0cyhlbnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KKwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTE0NzIsMzAgKzE1NDMsNDQgQEAgdm9pZCBHcmFwaDo6bG9nQXNzZXJ0
aW9uRmFpbHVyZSgKICAgICBsb2dERkdBc3NlcnRpb25GYWlsdXJlKCp0aGlzLCB0b0NTdHJpbmco
IldoaWxlIGhhbmRsaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuXG4iKSwgZmls
ZSwgbGluZSwgZnVuY3Rpb24sIGFzc2VydGlvbik7CiB9CiAKLURvbWluYXRvcnMmIEdyYXBoOjpl
bnN1cmVEb21pbmF0b3JzKCkKK0NQU0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0
b3JzKCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICBpZiAoIW1fY3BzRG9taW5hdG9ycykKKyAgICAgICAgbV9jcHNEb21p
bmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0
dXJuICptX2Nwc0RvbWluYXRvcnM7Cit9CisKK1NTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVT
U0FEb21pbmF0b3JzKCkKIHsKLSAgICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21p
bmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7Ci0gICAgcmV0dXJu
ICptX2RvbWluYXRvcnM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSB8fCBtX2lz
SW5TU0FDb252ZXJzaW9uKTsKKyAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykKKyAgICAgICAgbV9z
c2FEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7Cisg
ICAgcmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKLVByZVBvc3ROdW1iZXJpbmcmIEdyYXBo
OjplbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCkKK0NQU05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3Vy
ZUNQU05hdHVyYWxMb29wcygpCiB7Ci0gICAgaWYgKCFtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAg
ICAgIG1fcHJlUG9zdE51bWJlcmluZyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlUG9zdE51bWJlcmlu
Zz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9wcmVQb3N0TnVtYmVyaW5nOworICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGVuc3Vy
ZUNQU0RvbWluYXRvcnMoKTsKKyAgICBpZiAoIW1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBt
X2Nwc05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhp
cyk7CisgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29wczsKIH0KIAotTmF0dXJhbExvb3BzJiBH
cmFwaDo6ZW5zdXJlTmF0dXJhbExvb3BzKCkKK1NTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3Vy
ZVNTQU5hdHVyYWxMb29wcygpCiB7Ci0gICAgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIGlmICgh
bV9uYXR1cmFsTG9vcHMpCi0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1
ZTxOYXR1cmFsTG9vcHM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOworICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOworICAgIGVuc3VyZVNTQURvbWluYXRvcnMo
KTsKKyAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBtX3NzYU5hdHVyYWxMb29w
cyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0dXJu
ICptX3NzYU5hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFj
a3dhcmRzQ0ZHKCkKIHsKKyAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhpcyBpbiB0aGUg
ZnV0dXJlIHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVzZWQgaW4gU1NB
LgorICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAoIW1fYmFja3dh
cmRzQ0ZHKQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dh
cmRzQ0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1MDMsNiAr
MTU4OCw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygKIAogQmFj
a3dhcmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogewor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNE
b21pbmF0b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRz
RG9taW5hdG9yczsKQEAgLTE1MTAsNiArMTU5Niw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdy
YXBoOjplbnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjpl
bnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQog
ICAgICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTYxNCw3IEBAIE1ldGhvZE9mR2V0dGlu
Z0FWYWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2Rl
LT5sb2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgp
LnRvQXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0g
bV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVu
dE5vZGUgPSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJn
dW1lbnRdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKSkKQEAgLTE2OTgsNiArMTc4NSwxMyBAQCBib29sIEdyYXBoOjpjYW5Eb0Zhc3RTcHJl
YWQoTm9kZSogbm9kZSwgCiAgICAgcmV0dXJuIGFsbEdvb2Q7CiB9CiAKK3ZvaWQgR3JhcGg6OmNs
ZWFyQ1BTQ0ZHRGF0YSgpCit7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAg
IG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNDRkcgPSBudWxscHRyOworfQor
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDc3NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpA
QCAtNDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBD
b2RlQmxvY2s7CkBAIC01NiwxMCArNjAsMTcgQEAgY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xhc3Mg
QmFja3dhcmRzRG9taW5hdG9yczsKIGNsYXNzIENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5j
ZUFuYWx5c2lzOwotY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29wczsK
IGNsYXNzIEZsb3dJbmRleGluZzsKLWNsYXNzIE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBvc3RO
dW1iZXJpbmc7CisKK2NsYXNzIENQU0NGRzsKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNpbmcg
Q1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRvcnMg
PSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9v
cHM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FDRkc+
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAtOTAxLDkgKzkxMiwx
MCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVEb21p
bmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmluZygp
OwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9taW5h
dG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRvcnMmIGVuc3VyZVNT
QURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxMb29w
cygpOworICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAg
QmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21pbmF0
b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CkBAIC05MTYsMTIg
KzkyOCwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc1Njb3BlUmVnaXN0ZXIoKSBjb25zdCB7
IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZCB8fCBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsg
fQogICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
LT51c2VzRXZhbCgpOyB9CiAKKyAgICB2b2lkIGNsZWFyQ1BTQ0ZHRGF0YSgpOworCiAgICAgVk0m
IG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAg
ICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8
QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+
LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7
CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxF
bmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRK
U1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxMSArOTcxLDExIEBA
IHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJl
bW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAg
IC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBIYXNo
TWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+PiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50
czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMgbWVhbmluZ2xlc3MuIEluIFNTQSwgdGhp
cyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhhdCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAg
VmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKLSAgICAKKwogICAgIFNlZ21l
bnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsK
ICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0
aW9uczsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKQEAgLTk4MiwxMCArOTk3
LDEyIEBAIHB1YmxpYzoKICAgICBIYXNoU2V0PHN0ZDo6cGFpcjxKU09iamVjdCosIFByb3BlcnR5
T2Zmc2V0Pj4gbV9zYWZlVG9Mb2FkOwogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZl
cnJlZFR5cGU6OkRlc2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNu
aXBwZXQ+PiBtX2RvbUpJVFNuaXBwZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3Jz
PiBtX2RvbWluYXRvcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1f
cHJlUG9zdE51bWJlcmluZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25h
dHVyYWxMb29wczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q1BTRG9taW5hdG9ycz4gbV9jcHNEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTU0FEb21pbmF0b3JzPiBtX3NzYURvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PENQU05hdHVyYWxMb29wcz4gbV9jcHNOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNTQU5hdHVyYWxMb29wcz4gbV9zc2FOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNTQUNGRz4gbV9zc2FDRkc7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0NGRz4gbV9jcHNDRkc7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9y
czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+IG1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xMDA5LDYgKzEwMjYsOCBAQCBwdWJsaWM6CiAg
ICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2Vy
RW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1
aW50MzJfdD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxGbG93SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxv
d01hcDxBYnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRl
LmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw2MSBA
QCBzdGF0aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBt
X2dyYXBoLmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAg
IHJvb3QtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50
cyA9IGZhbHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0
cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0
VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICBy
b290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZv
cm1hdCBmb3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAg
ICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAg
ICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1Zh
bHVlOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9w
KCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50
cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5j
ZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRl
ZCA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNl
OworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBT
dHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xv
YmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVu
dHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1l
bnQoaSkuY2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgeworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXaGVuIHN1cHBvcnRpbmcgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTCwgd2Ug
bmVlZCB0byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAvLyB3aGF0IHdlIGRvIGhlcmU6IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBp
ZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQp
IHsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5
cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoK
KyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShTcGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9y
IGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2Ug
Rmx1c2hlZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
LnNldFR5cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50
KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQu
YXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFk
IGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9j
YWwoaSkuY2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFy
KCk7Ci0gICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5k
ZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNC
bG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJs
b2NrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0
SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7Cisg
ICAgICAgIGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKSB7CisgICAg
ICAgICAgICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBhYm92ZS4KICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1JlYWNoYWJs
ZSk7CiAgICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0gZmFsc2U7CiAgICAgICAgIGJs
b2NrLT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNyArMzcxLDcgQEAgaW5saW5lIGJv
b2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2spOwogICAgICAgICBy
ZXR1cm4gY2hhbmdlZDsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBSZXR1cm46CiAgICAg
Y2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw2ICs2Myw3IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQoKQogICAgIGNvbW1vbi5zaHJp
bmtUb0ZpdCgpOwogICAgIG9zckVudHJ5LnNocmlua1RvRml0KCk7CiAgICAgb3NyRXhpdC5zaHJp
bmtUb0ZpdCgpOworICAgIGNhdGNoRW50cnlwb2ludHMuc2hyaW5rVG9GaXQoKTsKICAgICBzcGVj
dWxhdGlvblJlY292ZXJ5LnNocmlua1RvRml0KCk7CiAgICAgbWluaWZpZWRERkcucHJlcGFyZUFu
ZFNocmluaygpOwogICAgIHZhcmlhYmxlRXZlbnRTdHJlYW0uc2hyaW5rVG9GaXQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShyZXZpc2lvbiAyMjA3NzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjksNiArNjksMzIgQEAgcHVibGljOgogICAgICAgICAgICAgb3NyRW50cnksIG9zckVudHJ5
LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdldE9TUkVudHJ5RGF0YUJ5dGVj
b2RlSW5kZXgpOwogICAgIH0KKworICAgIENhdGNoRW50cnlwb2ludERhdGEqIGNhdGNoT1NSRW50
cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxDYXRjaEVudHJ5cG9pbnREYXRhLCB1bnNpZ25l
ZD4oCisgICAgICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLCBjYXRjaEVudHJ5cG9pbnRzLnNpemUo
KSwgYnl0ZWNvZGVJbmRleCwKKyAgICAgICAgICAgIFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnRE
YXRhKiBpdGVtKSB7IHJldHVybiBpdGVtLT5tX2J5dGVjb2RlSW5kZXg7IH0pOworICAgIH0KKwor
ICAgIHZvaWQgZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCkKKyAgICB7CisgICAgICAgIHN0
ZDo6c29ydChjYXRjaEVudHJ5cG9pbnRzLmJlZ2luKCksIGNhdGNoRW50cnlwb2ludHMuZW5kKCks
IFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBhLCBjb25zdCBDYXRjaEVudHJ5cG9pbnRE
YXRhJiBiKSB7CisgICAgICAgICAgICByZXR1cm4gYS5tX2J5dGVjb2RlSW5kZXggPCBiLm1fYnl0
ZWNvZGVJbmRleDsKKyAgICAgICAgfSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB1
bnNpZ25lZCBwcmV2aW91c0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBDYXRjaEVudHJ5
cG9pbnREYXRhJiBlbnRyeXBvaW50IDogY2F0Y2hFbnRyeXBvaW50cykgeworICAgICAgICAgICAg
QVNTRVJUKHByZXZpb3VzSW5kZXggPCBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleCk7CisgICAg
ICAgICAgICBwcmV2aW91c0luZGV4ID0gZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXg7CisgICAg
ICAgIH0KKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYXBwZW5kQ2F0Y2hFbnRyeXBvaW50KHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVDb2RlT2Zmc2V0LCBWZWN0b3I8
Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsKKyAgICAgICAgY2F0Y2hFbnRy
eXBvaW50cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5dGVjb2RlSW5kZXgsIG1hY2hp
bmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykgfSk7CisgICAgfQogICAgIAog
ICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhpdCYgZXhpdCkKICAgICB7CkBA
IC0xMzIsMTAgKzE1OCwxMyBAQCBwcml2YXRlOgogcHVibGljOgogICAgIENvbW1vbkRhdGEgY29t
bW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3NyRW50cnk7CisgICAgVmVjdG9y
PENhdGNoRW50cnlwb2ludERhdGE+IGNhdGNoRW50cnlwb2ludHM7CiAgICAgU2VnbWVudGVkVmVj
dG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0b3I8REZHOjpTcGVjdWxhdGlv
blJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERGRzo6VmFyaWFibGVFdmVudFN0
cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwogICAgIERGRzo6TWluaWZpZWRHcmFwaCBtaW5pZmll
ZERGRzsKKyAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOworCiAjaWYgRU5B
QkxFKEZUTF9KSVQpCiAgICAgdWludDhfdCBuZXZlckV4ZWN1dGVkRW50cnkgeyAxIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw4IEBAIHN0YXRpYyB2b2lkIGVtaXRT
dGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiB7
CisgICAgbWFrZUNhdGNoT1NSRW50cnlCdWZmZXIoKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7
CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2ZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0MjgsOCBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkK
IHsKKyAgICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAgc2V0U3RhcnRPZkNvZGUo
KTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1NTUsMjMgQEAgdm9pZCogSklU
Q29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2VuZGlmCiAKK3ZvaWQgSklUQ29t
cGlsZXI6Om5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRD
b21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBWZWN0b3I8
Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGJh
c2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKGJhc2ljQmxv
Y2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4gZW50cnlwb2ludCBpcyBieSBk
ZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFwcGVuZENhdGNoRW50cnlwb2lu
dChiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFk
KSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30KKwogdm9pZCBKSVRDb21waWxlcjo6bm90
aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJs
b2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBSRUxFQVNFX0FTU0VSVCgh
YmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisKICAgICAvLyBPU1IgZW50cnkgaXMgbm90
IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxlIGJ5IGNvbnRyb2wgZmxvdyBh
bmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NSRW50cnlEYXRhKiBlbnRyeSA9
IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwg
bGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAKKwogICAgIGVudHJ5LT5tX2V4
cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZlBhc3RWYWx1ZXNBdEhlYWQ7
CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFsdWVzOiBpbiBvdXIgcHJvdG9j
b2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0ZWQKQEAgLTY3MCw2ICs2ODMs
MTIgQEAgdm9pZCBKSVRDb21waWxlcjo6c2V0RW5kT2ZDb2RlKCkKICAgICBtX2Rpc2Fzc2VtYmxl
ci0+c2V0RW5kT2ZDb2RlKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50cygpKTsKIH0KIAordm9pZCBK
SVRDb21waWxlcjo6bWFrZUNhdGNoT1NSRW50cnlCdWZmZXIoKQoreworICAgIGlmIChtX2dyYXBo
Lm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9T
UkVudHJ5QnVmZmVyID0gdm0oKS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKEpTVmFsdWUp
ICogKCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkpOworfQorCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5v
dGljZU9TUkVudHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBM
aW5rQnVmZmVyJik7CisgICAgdm9pZCBub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9jayYs
IEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImLCBWZWN0b3I8Rmx1c2hG
b3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gaml0
Q29kZSgpIHsgcmV0dXJuIG1faml0Q29kZTsgfQogICAgIApAQCAtMjg0LDYgKzI4NSw4IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGFwcGVuZEV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdChFeGl0S2lu
ZCwgdW5zaWduZWQgZXZlbnRTdHJlYW1JbmRleCwgQ29kZU9yaWdpbiwgSGFuZGxlckluZm8qIGV4
Y2VwdGlvbkhhbmRsZXIsIENhbGxTaXRlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBq
dW1wc1RvRmFpbCA9IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCgpKTsKIAorICAgIHZvaWQgbWFr
ZUNhdGNoT1NSRW50cnlCdWZmZXIoKTsKKwogICAgIC8vIFRoZSBkYXRhZmxvdyBncmFwaCBjdXJy
ZW50bHkgYmVpbmcgZ2VuZXJhdGVkLgogICAgIEdyYXBoJiBtX2dyYXBoOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiBuYW1lc3BhY2UgewogCit1c2luZyBOYXR1cmFsTG9vcCA9IFNTQU5hdHVyYWxMb29wOworCiBz
dHJ1Y3QgTG9vcERhdGEgewogICAgIExvb3BEYXRhKCkKICAgICAgICAgOiBwcmVIZWFkZXIobnVs
bHB0cikKQEAgLTc0LDggKzc2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAg
ICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJl
TmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwor
ICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICBtX2dyYXBo
LmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAKICAgICAgICAgaWYgKHZlcmJv
c2UpIHsKQEAgLTgzLDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1w
KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5t
X25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKSk7CisgICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFw
aC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBG
aWd1cmUgb3V0IHRoZSBzZXQgb2YgdGhpbmdzIGVhY2ggbG9vcCB3cml0ZXMgdG8sIG5vdCBpbmNs
dWRpbmcgYmxvY2tzIHRoYXQKICAgICAgICAgLy8gYmVsb25nIHRvIGlubmVyIGxvb3BzLiBXZSBm
aXggdGhpcyBsYXRlci4KQEAgLTk4LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlm
ICghYmxvY2stPmNmYUhhc1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5t
X25hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0
TG9vcE9mKGJsb2NrKTsKICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AtPmluZGV4
KCldOwpAQCAtMTE2LDE0ICsxMTgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBGb3IgZWFjaCBs
b29wOgogICAgICAgICAvLyAtIElkZW50aWZ5IGl0cyBwcmUtaGVhZGVyLgogICAgICAgICAvLyAt
IE1ha2Ugc3VyZSBpdHMgb3V0ZXIgbG9vcHMga25vdyB3aGF0IGl0IGNsb2JiZXJzLgotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxv
b3BzKCk7IGxvb3BJbmRleC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxv
b3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9v
cHMoKTsgbG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9v
cCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKICAgICAgICAg
ICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AuaW5kZXgoKV07CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGZvciAoCi0gICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91
dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29w
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFw
aC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwogICAgICAgICAg
ICAgICAgIG91dGVyTG9vcDsKLSAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCisgICAgICAgICAg
ICAgICAgb3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0
ZXJMb29wKCpvdXRlckxvb3ApKQogICAgICAgICAgICAgICAgIG1fZGF0YVtvdXRlckxvb3AtPmlu
ZGV4KCldLndyaXRlcy5hZGRBbGwoZGF0YS53cml0ZXMpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBoZWFkZXIgPSBsb29wLmhlYWRlcigpOwpAQCAtMTM3LDcgKzEzOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
aGVhZGVyLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgQmFz
aWNCbG9jayogcHJlZGVjZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vzc29yc1tpXTsKLSAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIsIHByZWRl
Y2Vzc29yKSkKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRv
bWluYXRlcyhoZWFkZXIsIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAKICAgICAgICAgICAgICAgICBwcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE5MSw3
ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxv
b3BTdGFjazsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoQmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkgewotICAgICAgICAg
ICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5l
ck1vc3RMb29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3Ag
PSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAg
ICAgICAgICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgCkBAIC0xOTksNyArMjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yICgKICAgICAg
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogY3VycmVudCA9IGxvb3A7CiAgICAgICAgICAg
ICAgICAgY3VycmVudDsKLSAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFwaC5tX25hdHVy
YWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICBj
dXJyZW50ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpj
dXJyZW50KSkKICAgICAgICAgICAgICAgICBsb29wU3RhY2suYXBwZW5kKGN1cnJlbnQpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICAvLyBSZW1lbWJlcjogdGhlIGxvb3Agc3RhY2sgaGFzIHRo
ZSBpbm5lci1tb3N0IGxvb3AgYXQgaW5kZXggMCwgc28gaWYgd2Ugd2FudApAQCAtMzE4LDcgKzMy
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGJlY2F1c2UgbW9zdCBsb29wcyBhcmUgc21hbGwg
YW5kIG1vc3QgYmxvY2tzIGJlbG9uZyB0byBmZXcgbG9vcHMuCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgYm9keUluZGV4ID0gbG9vcC0+c2l6ZSgpOyBib2R5SW5kZXgtLTspIHsKICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIHN1YkJsb2NrID0gbG9vcC0+YXQoYm9keUluZGV4KTsKLSAgICAgICAgICAg
IGNvbnN0IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aGVh
ZGVyT2Yoc3ViQmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3Ag
PSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CiAgICAgICAg
ICAgICBpZiAoIXN1Ykxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBCYXNpY0Jsb2NrKiBzdWJQcmVIZWFkZXIgPSBtX2RhdGFbc3ViTG9vcC0+aW5kZXgoKV0ucHJl
SGVhZGVyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJp
YWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZh
cmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTIgKzEw
MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1
bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKV07CisKICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGlu
ZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAh
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXQgPSAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50KQorICAgICAgICAgICAgICAgICAgICAmJiAhY3VycmVudEJsb2NrQWNjZXNzRGF0YS5v
cGVyYW5kKG5vZGUtPmxvY2FsKCkpCisgICAgICAgICAgICAgICAgICAgICYmIG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuY29udGFpbnMoYmxvY2spOworCisgICAgICAgICAgICAgICAg
aWYgKChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQp
ICYmICFpc1ByaW1vcmRpYWxTZXQpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogCiAgICAgICAgICAgICAgICAgICAgIGludCBz
dGFja09mZnNldCA9IGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgOiAwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVy
Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaCwg
QmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9jayogYmxvY2spCiB7Cisg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9j
ayksICJBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUgaW4gYSBsb29wIik7CisKICAgICAvLyBG
SVhNRTogSWYgd2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBTU0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1
cCB3aXRoIGEgYml6YXJyZSBhcnJhbmdlbWVudCBvZgogICAgIC8vIFVwc2lsb25zIGFuZCBQaGlz
LCBsaWtlOgogICAgIC8vCkBAIC02OSw3ICs3MSw4IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhl
YWRlcihHcmFwaCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUg
ZnJlcXVlbmNpZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5vbi1sb29wIHByZWRlY2Vzc29ycy4KICAg
ICBmbG9hdCBmcmVxdWVuY3kgPSAwOwogICAgIGZvciAoQmFzaWNCbG9jayogcHJlZGVjZXNzb3Ig
OiBibG9jay0+cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMt
PmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBBU1NFUlQoZ3JhcGgubV9m
b3JtICE9IFNTQSk7CisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRl
cyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZy
ZXF1ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5jeSwgcHJlZGVjZXNzb3ItPmV4ZWN1dGlvbkNvdW50
KTsKICAgICB9CkBAIC0xMDMsNyArMTA2LDcgQEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVy
KEdyYXBoJiBncmFwaAogICAgIAogICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9
IDA7IHByZWRlY2Vzc29ySW5kZXggPCBibG9jay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVj
ZXNzb3JJbmRleCsrKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2st
PnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIGlmIChncmFw
aC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJ
bmRleC0tXSA9IGJsb2NrLT5wcmVkZWNlc3NvcnMubGFzdCgpOwogICAgICAgICBibG9jay0+cHJl
ZGVjZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAgLTEzMCwxNiArMTMzLDE2IEBAIHB1YmxpYzoKICAg
ICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRv
cnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9n
cmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0
dXJhbExvb3BzKCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9
IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgewotICAg
ICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3Bz
LT5sb29wKGxvb3BJbmRleCk7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhl
YWRlciA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX2Nw
c05hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7CisgICAgICAgICAgICBj
b25zdCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxv
b3AobG9vcEluZGV4KTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVy
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgbmVlZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVy
KCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsKLSAgICAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vz
c29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Rv
bWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLCBwcmVkZWNlc3NvcikpCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLm5vZGUo
KS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgeworICAgICAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnBy
ZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigpLm5vZGUoKSwgcHJlZGVj
ZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBp
ZiAoIWV4aXN0aW5nUHJlSGVhZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUHJl
SGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xNjUsMTQgKzE2OCwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAvLyBBIHByZS1oZWFkZXIgaXMgbW9zdCB1c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0
byBleGl0IGZyb20gaXRzIHRlcm1pbmFsLiBIZW5jZQogICAgICAgICAgICAgLy8gaWYgdGhlIHRl
cm1pbmFsIG9mIHRoZSBleGlzdGluZyBwcmUtaGVhZGVyIGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQs
IGJ1dCB0aGUgZmlyc3QKICAgICAgICAgICAgIC8vIG9yaWdpbiBvZiB0aGUgbG9vcCBoZWFkZXIg
ZG9lcywgdGhlbiB3ZSBzaG91bGQgY3JlYXRlIGEgbmV3IHByZS1oZWFkZXIuCi0gICAgICAgICAg
ICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCktPmF0KDApLT5vcmlnaW4u
ZXhpdE9LCisgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVy
KCkubm9kZSgpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSwogICAgICAgICAgICAgICAgICYmICFleGlz
dGluZ1ByZUhlYWRlci0+dGVybWluYWwoKS0+b3JpZ2luLmV4aXRPSykKICAgICAgICAgICAgICAg
ICBuZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
ICghbmVlZHNOZXdQcmVIZWFkZXIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNl
dCwgbG9vcC5oZWFkZXIoKSk7CisgICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwg
bV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkubm9kZSgpKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5z
ZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTMsOCArNTMsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOwogICAgICAgICB9CiAKLSAgICAgICAgdHJlYXRSb290QmxvY2sobV9ncmFwaC5i
bG9jaygwKSwgaW5zZXJ0aW9uU2V0KTsKLSAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9n
cmFwaC5ibG9jaygwKSk7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1f
Z3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICAgICAgdHJlYXRSb290QmxvY2soZW50cnlw
b2ludCwgaW5zZXJ0aW9uU2V0KTsKKyAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGVu
dHJ5cG9pbnQpOworICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
NjcsNyArNjksMTMgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlh
bFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgp
LmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwo
KS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1
bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2sp
OworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAhPSBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaXNQcmltb3JkaWFsU2V0
QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgp
XTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9
PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFs
U2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3Bl
cmFuZCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJl
dmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwo
R3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJl
cDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAg
Y2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05h
dHVyYWxMb29wcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TmF0dXJhbExvb3BzLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwyMCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpOYXR1
cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29wOwotCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMg
V1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2Ns
YXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAg
ICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVE
b21pbmF0b3JzKCksIHZhbGlkYXRpb25FbmFibGVkKCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFs
TG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9y
c0ZvckNGRzxDRkdLaW5kPihncmFwaCksIHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgewogICAg
IH0KIH07CiAKK3VzaW5nIFNTQU5hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+
OwordXNpbmcgQ1BTTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3
LDcgKzEyNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBpc1N3aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gb3AoKSA9PSBTd2l0Y2g7CiAgICAgfQpAQCAtMTM3Miw2
ICsxMzcyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0g
c3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERh
dGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKGlu
ZGV4KSB7CiAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1
NDEsNiArMTU0MiwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IElkZW50aXR5
V2l0aFByb2ZpbGUpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3BlY3VsYXRlZFR5cGU+
KCk7CiAgICAgfQorCisgICAgdWludDMyX3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRU
eXBlIGNhdGNoTG9jYWxQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09
IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxTcGVjdWxh
dGVkVHlwZT4oKTsKKyAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAg
ewpAQCAtMTkzNiw3ICsxOTQ5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
dmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKTsKICAgICB9Ci0gICAgCisKICAgICBWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNSZXN1bHQo
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lv
biAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIFNwZWNpYWwgbm9kZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5k
aWNhdGVzIHRoYXQgd2UncmUgbG9hZGluZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZy
b20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAqL1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1
bHRKUykgXAogICAgIFwKICAgICAvKiBUaWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhl
IEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hlY2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZp
c2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlZNSW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw2OCBAQCB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0
Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFP
cHRpb25zOjp1c2VPU1JFbnRyeVRvREZHKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmpp
dFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9
IGNvZGVCbG9jay0+aml0Q29kZSgpLT5kZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2Rl
KTsKKworICAgIERGRzo6Q2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50ID0gaml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOwor
ICAgIGlmICghY2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwg
dW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3ZSBkaWRu
J3QgY29tcGlsZSB0aGlzCisgICAgICAgIC8vIHByb2ZpbGVfY2F0Y2ggYXMgYW4gZW50cnlwb2lu
dCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQuCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUg
cHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRG
b3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFs
dWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRz
W2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xl
YW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpE
ZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3Qg
YWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAg
IC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVh
azsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hl
Y2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5k
RXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhl
Yy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2sp
Lm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4
ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9wcm9maWxlX2NhdGNoKTsKKyAg
ICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCkgKyAxXS51LnBvaW50ZXIpOworICAgIEpTVmFsdWUq
IGRhdGFCdWZmZXIgPSByZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihqaXRDb2RlLT5jYXRjaE9T
UkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpOworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAg
ICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7
CisgICAgICAgIGlmICghVmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kKS5pc0xvY2Fs
KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRhdGFCdWZmZXJbaW5kZXhdID0gZXhl
Yy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpOworICAgICAgICArK2lu
ZGV4OworICAgIH0pOworCisgICAgcmV0dXJuIGppdENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRP
ZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCShyZXZpc2lvbiAyMjA3NzcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RW
YWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGlu
ZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUkKICAgICByZXR1cm4gb3NyRW50cnlE
YXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsK
KyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29k
ZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRj
aC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAgIC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlw
ZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBibG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3Jt
YXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwogLy8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBk
YXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkgdGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAv
LyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGwsIGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9T
UkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwor
CisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBjYW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90
IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8uCit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRy
eShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbHNl
CiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVu
c2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9j
a0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlOVF9NQVgpOwogICAgICAgICAKICAgICAgICAgLy8g
TmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigpLgotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAg
IAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7
CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMsMTcgQEAgcHVibGljOgogICAgICAgICAvLyB0eXBl
IGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmlnaW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47
CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9kZSosIDg+IG5ld0FyZ3VtZW50cyA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7
CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVt
UGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAgICAgICAgICAgICBOb2RlKiBvbGROb2RlID0g
dGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAg
aWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdh
eXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYgaXQncyBub3QgbmVlZGVkLgotICAgICAgICAg
ICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAg
ICAgICAgICBvbGROb2RlID0gbmV3QXJndW1lbnRzW2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdSb290LT5hcHBlbmROb2RlKAogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRBcmd1bWVudCwgb3JpZ2luLAogICAgICAgICAg
ICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAg
ICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOworICAgICAgICAgICAgbmV3
QXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGlu
dCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUtPm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2Fs
KSB7CkBAIC0xMzksOCArMTQxLDE3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVh
dGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9uU2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAog
ICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworCisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9l
bnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50
cy5hZGQobmV3Um9vdCwgbmV3QXJndW1lbnRzKTsKKworICAgICAgICBtX2dyYXBoLm1fY3BzQ0ZH
ID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgpOworCiAgICAgICAgIG1fZ3JhcGgu
cmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9j
a3MoKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25T
aW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MjcsNyArNzI3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3JhcGguY29t
cHV0ZVJlZkNvdW50cygpOwogICAgICAgICBtX2dyYXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7
Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9n
cmFwaCk7CiAgICAgICAgIHBlcmZvcm1PU1JBdmFpbGFiaWxpdHlBbmFseXNpcyhtX2dyYXBoKTsK
ICAgICAgICAgbV9jb21iaW5lZExpdmVuZXNzID0gQ29tYmluZWRMaXZlbmVzcyhtX2dyYXBoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjIwNzc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY2LDkgKzM2Niw4IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxl
SW5UaHIKICAgICAvLyBJZiB3ZSdyZSBkb2luZyB2YWxpZGF0aW9uLCB0aGVuIHJ1biBzb21lIGFu
YWx5c2VzLCB0byBnaXZlIHRoZW0gYW4gb3Bwb3J0dW5pdHkKICAgICAvLyB0byBzZWxmLXZhbGlk
YXRlLiBOb3cgaXMgYXMgZ29vZCBhIHRpbWUgYXMgYW55IHRvIGRvIHRoaXMuCiAgICAgaWYgKHZh
bGlkYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAgZGZnLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICAgICAgZGZnLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBkZmcuZW5zdXJlUHJlUG9z
dE51bWJlcmluZygpOworICAgICAgICBkZmcuZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAg
ICBkZmcuZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2Rl
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRl
ICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQb3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVy
aW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21hcCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3Jh
cGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29y
a2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0gICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9
IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1iZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dp
dGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9y
ZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgotICAgICAgICAgICAgbV9tYXBb
aXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQcmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0gICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vzc29ycygpKQotICAgICAgICAgICAgICAgIHdv
cmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51
bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwg
RWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndhcmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFj
a0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBv
c3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01hcC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2luZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAg
Q3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19OwotCi1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQb3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7
Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQotICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNp
Y0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9
Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1
cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsgfQotICAgIAotICAgIC8vIElzIGZyb20gYSBz
dHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9vbCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNC
bG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
cHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRvKQotICAgICAgICAgICAgJiYgcG9zdE51bWJl
cihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0
b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3RyaWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3REZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNTdHJpY3RB
bmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlz
IHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVk
Z2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQotICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNo
IGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJzZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5k
KEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAg
aWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBG
b3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20p
KQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdlOwotICAgICAgICAKLSAgICAgICAgcmV0dXJu
IENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcg
ewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJlcjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0
TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01hcDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQot
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpERkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUx
LDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxv
Y2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMg
aGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAg
ICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworCiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJh
bWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAg
ICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKworICAgICAgICAgICAgICAgIGFyZ3VtZW50
c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIw
Nzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0
Y2hMb2NhbDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRj
aExvY2FsUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAg
ICBjYXNlIEdldER5bmFtaWNWYXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5
dGVjb2RlVG9wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tT
aW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAo
KTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAg
ICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIFNT
QUNhbGN1bGF0b3Igc3NhQ2FsY3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0
IGluc2VydGlvblNldChtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU1NBQ2FsY3VsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTUsMTIgKzk1LDEyIEBAIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUK
IAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVm
KEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJl
YWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFi
bGUpOworICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9y
cy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FD
YWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUq
IHZhcmlhYmxlKQogewotICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5h
dG9ycy0+aWRvbShibG9jaykpIHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5t
X3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1f
ZGF0YVtibG9ja10ubV9kZWZzLmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVm
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3Vs
YXRvci5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUNhbGN1bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9p
ZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsK
LSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9y
cyk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURv
bWluYXRvcnMpOwogICAgICAgICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBt
X3ZhcmlhYmxlcykgewotICAgICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJs
b2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAgICAgbV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKAogICAgICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMs
CiAgICAgICAgICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2sp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVy
c2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0g
VGhyZWFkZWRDUFMpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50
cygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFw
aC5jbGVhckNQU0NGR0RhdGEoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3Jz
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygiR3JhcGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMSw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJl
IFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vz
bid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJl
IHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAg
ICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24g
d2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNv
bXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3Nh
VmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FW
YXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3Nh
ID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1f
Z3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9n
cmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3Vw
cG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8m
IGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBo
LmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVz
aXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVu
dHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVz
aGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5n
LmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5z
dGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dy
YXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBh
cmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAg
YXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFy
Z3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQyMSwxMiBA
QCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsK
LSAgICByZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJ
blNTQUNvbnZlcnNpb24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29u
dmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NB
Q29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0
cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFj
dENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjM3LDYgKzU2Mzcs
MjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB1
bnJlYWNoYWJsZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRj
aExvY2FsOiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgdGFnKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcGF5bG9hZCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0
YWdHUFIgPSB0YWcuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gcGF5bG9hZC5n
cHIoKTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25v
ZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiwgVGFnT2Zmc2V0KSwgdGFnR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBQYXlsb2FkT2Zm
c2V0KSwgcGF5bG9hZEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGFnR1BSLCBwYXlsb2Fk
R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5
cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
MjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTk3LDYgKzU5OTcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ2hlY2tTdWJDbGFzcyhu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7Cisg
ICAgICAgIEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5q
aXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hP
U1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpz
VmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lm
IEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRk
MzIoCkBAIC02MDg1LDYgKzYwOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKICNlbHNlIC8v
IEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjkzLDYgKzE2OTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9j
awogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50KSB7CisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSks
IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJS
ZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAg
bV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQu
ZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFi
bGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxs
RnJhbWUoKTsKQEAgLTE3ODcsOCArMTc5NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2lu
ID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAg
IGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAg
Tm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUq
IG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAg
Ly8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2gg
YXJndW1lbnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODcyLDEyICsxODgwLDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlm
ICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNP
U1JUYXJnZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRk
IHRoZW0KLSAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVh
ZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChi
bG9jay0+aXNPU1JUYXJnZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdl
IGNvdWxkIGFkZCB0aGVtCisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAg
ICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4
XSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE4ODgsMTAgKzE4OTUsMzAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxv
Y2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJn
ZXQpCisgICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NS
RW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZl
cik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAg
IGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChi
bG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsK
KyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAg
ICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVj
dG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1l
bnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRD
ZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hl
Y2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgq
YmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZN
b3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNT
RVJUKGJsb2NrLT5pc09TUlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRy
eSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsK
KyAgICAgICAgfQogICAgIH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9T
UkVudHJ5cG9pbnRzKCk7CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5
SGVhZHMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNv
dW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGgu
ZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExv
b3BzKCk7CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBiYXNpYyBibG9jayBleGVjdXRp
b24gY291bnRzIGJhc2VkIG9uIGxvb3AgZGVwdGguCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3co
MTAsIG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOworICAgICAgICAg
ICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fY3BzTmF0dXJhbExv
b3BzLT5sb29wRGVwdGgoYmxvY2spKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8g
RXN0aW1hdGUgYnJhbmNoIHdlaWdodHMgYmFzZWQgb24gZXhlY3V0aW9uIGNvdW50cy4gVGhpcyBp
c24ndCBxdWl0ZSBjb3JyZWN0LiBJdCdsbApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCw4IEBAIHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFs
RlQKICAgICByZXR1cm4gZnRsV2hpdGVsaXN0OwogfQogCit1c2luZyBOYXR1cmFsTG9vcCA9IENQ
U05hdHVyYWxMb29wOworCiBjbGFzcyBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKIHB1YmxpYzoKICAgICBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlKEdyYXBoJiBn
cmFwaCkKQEAgLTgxLDggKzgzLDggQEAgcHVibGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OnVz
ZU9TUkVudHJ5VG9GVEwoKSkKICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwog
ICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAg
TmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgQ1BTTmF0dXJh
bExvb3BzJiBuYXR1cmFsTG9vcHMgPSAqbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wczsKICAgICAg
ICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcFRvTG9v
cEhpbnQgPSBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChuYXR1cmFsTG9vcHMpOwogCiAg
ICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIExvb3BIaW50RGVzY3JpcHRvcj4gdGllclVwSGllcmFy
Y2h5OwpAQCAtMTgyLDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGRO
YXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAoY29uc3QgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMp
CisgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxM
b29wVG9Mb29wSGludE1hcChjb25zdCBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKICAg
ICB7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJh
bExvb3BzVG9Mb29wSGludDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVl
Lm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0
aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAvLyBD
dXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJn
dW1lbnRzIGF0IGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dy
YXBoLm1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spKTsKIAogICAgICAgICAgICAgICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IG5vZGUtPm9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob3JpZ2luLmV4aXRPSyk7CiAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBnZXRMb2NhbCA9IGluc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrICsgMSwgdmFyaWFibGUtPnBy
ZWRpY3Rpb24oKSwgR2V0TG9jYWwsIG9yaWdpbiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTAgKzgz
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgLy8gTkIuIFRoaXMgY29kZSBpcyBub3Qgd3JpdHRlbiBm
b3IgcGVyZm9ybWFuY2UsIHNpbmNlIGl0IGlzIG5vdCBpbnRlbmRlZCB0byBydW4KICAgICAgICAg
Ly8gaW4gcmVsZWFzZSBidWlsZHMuCiAKLSAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCBhbGwgbG9j
YWwgdmFyaWFibGVzIGF0IHRoZSBoZWFkIG9mIHRoZSByb290IGJsb2NrIGFyZSBkZWFkLgotICAg
ICAgICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fscygp
OyArK2kpCi0gICAgICAgICAgICBWX0VRVUFMKCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwg
cm9vdCksIHN0YXRpY19jYXN0PE5vZGUqPigwKSwgcm9vdC0+dmFyaWFibGVzQXRIZWFkLmxvY2Fs
KGkpKTsKKyAgICAgICAgVkFMSURBVEUoKG1fZ3JhcGguYmxvY2soMCkpLCBtX2dyYXBoLm1fZW50
cnlwb2ludHMuY29udGFpbnMobV9ncmFwaC5ibG9jaygwKSkpOworCisgICAgICAgIC8vIFZhbGlk
YXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxlcyBhdCB0aGUgaGVhZCBvZiBhbGwgZW50cnlwb2lu
dHMgYXJlIGRlYWQuCisgICAgICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3Jh
cGgubV9lbnRyeXBvaW50cykgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpCisgICAg
ICAgICAgICAgICAgVl9FUVVBTCgodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIGVudHJ5cG9p
bnQpLCBzdGF0aWNfY2FzdDxOb2RlKj4obnVsbHB0ciksIGVudHJ5cG9pbnQtPnZhcmlhYmxlc0F0
SGVhZC5sb2NhbChpKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIFZhbGlkYXRl
IHJlZiBjb3VudHMgYW5kIHVzZXMuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAyMjA3Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw4ICs3NCw4IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBQ
cm9maWxlcjo6T3JpZ2luU3RhY2soKSwKICAgICAgICAgICAgIHRvQ1N0cmluZygiR2VuZXJhdGVk
IEZUTCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUoY29kZUJsb2NrLCBKSVRD
b2RlOjpGVExKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIGdyYXBoLm1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCksICI6XG4iKSk7CiAgICAgICAgIAotICAgICAgICBncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGdyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwor
ICAgICAgICBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIGdyYXBoLmVuc3Vy
ZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgY29uc3QgY2hhciogcHJlZml4
ID0gIiAgICAiOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcg
KzE1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBuYW1lID0gImpz
Qm9keSI7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAg
ICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAKICAgICAgICAgaWYgKHZlcmJv
c2VDb21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZ1bmN0aW9uIHJl
YWR5LCBiZWdpbm5pbmcgbG93ZXJpbmcuXG4iKTsKQEAgLTI2Niw4ICsyNjYsOSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKICAgICAgICAgbV9vcmlnaW4g
PSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOworICAgICAg
ICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQo
bV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1
bWVudHNbaV07CiAgICAgICAgICAgICBtX291dC5zZXRPcmlnaW4obm9kZSk7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkp
OwogICAgICAgICAgICAgCkBAIC00NDMsNyArNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IERGRzo6QmFzaWNCbG9jayogdGFyZ2V0ID0gbV9ncmFwaC5ibG9jayhibG9ja0luZGV4KTsKICAg
ICAgICAgICAgIGlmICghdGFyZ2V0KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRh
cmdldCkpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5h
dGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VD
b21waWxhdGlvbkVuYWJsZWQoKSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQmxvY2sg
IiwgKnRhcmdldCwgIiB3aWxsIGJhaWwgYWxzby5cbiIpOwogICAgICAgICAgICAgICAgIHRhcmdl
dC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMTQ0MTQsNyArMTQ0MTUsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKHZhbHVlLmJsb2Nr
KCksIG1faGlnaEJsb2NrKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
ZG9taW5hdGVzKHZhbHVlLmJsb2NrKCksIG1faGlnaEJsb2NrKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjIwNzc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiArMjc3LDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdGFpbF9jYWxs
X2ZvcndhcmRfYXJndW1lbnRzKQogICAgICAgICBERUZJTkVfT1Aob3BfY29uc3RydWN0X3ZhcmFy
Z3MpCiAgICAgICAgIERFRklORV9PUChvcF9jYXRjaCkKKyAgICAgICAgREVGSU5FX09QKG9wX3By
b2ZpbGVfY2F0Y2gpCiAgICAgICAgIERFRklORV9PUChvcF9jb25zdHJ1Y3QpCiAgICAgICAgIERF
RklORV9PUChvcF9jcmVhdGVfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3RvX3RoaXMpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3Niw2ICs0NzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX3RhaWxfY2FsbF9mb3J3YXJk
X2FyZ3VtZW50cyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29uc3RydWN0
X3ZhcmFyZ3MoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhdGNoKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wcm9maWxlX2NhdGNoKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF90b190aGlzKEluc3RydWN0aW9uKik7CkBAIC03OTYsNiArNzk3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRVpaLCBpbnQsIGludDMyX3QsIGludDMyX3QpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0UpOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VKUywgR1BS
UmVnLCBzaXplX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFBfSklUT3BlcmF0aW9uX0VVaSwgdWludDMyX3QpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VDQywgUmVnaXN0ZXJJRCwgUmVnaXN0
ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRP
cGVyYXRpb25fRUosIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKSSwgR1BSUmVnLCBVbmlxdWVkU3RyaW5nSW1w
bCopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9u
IDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NjMsNiArNDYzLDEzIEBAIEFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gY2FsbDsKIH0KIAorQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpIG9w
ZXJhdGlvbiwgdWludDMyX3QgYXJnMSkKK3sKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyKGFyZzEpKTsKKyAgICB1cGRhdGVUb3BDYWxsRnJhbWUoKTsKKyAgICBy
ZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworfQorCiAjaWYgVVNFKEpTVkFMVUU2NCkKIEFM
V0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFpfSklU
T3BlcmF0aW9uX0VKWlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgaW50MzJfdCBhcmcyLCBpbnQz
Ml90IGFyZzMpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAJKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzcsNiArMTUzNywzMSBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF91bnJlYWNoYWJsZShJbnN0cnVjdGlvCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsK
IH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV9jYXRjaChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0
aGUgcHJvY2VzcyBvZiBkb2luZyBPU1IgZW50cnksIGluY2x1ZGluZworICAgIC8vIGFyZ3VtZW50
IHR5cGUgcHJvb2ZzLCBzdG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7
CisgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVl
R1BSKTsKKyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1
ZUdQUik7CisgICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgaWYgKHNob3VsZEVtaXRQ
cm9maWxpbmcoKSkgeworICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZm
ZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudElu
c3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMCk7CisjZWxzZQorICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVncyhyZWdUMSwgcmVnVDApOworI2VuZGlmCisgICAgICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVt
aXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTUsNiArMTUxNSwxOSBAQCBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxv
Y2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlP
U1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQor
eworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBs
YWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNo
T1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30K
KwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5k
ZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYg
KzMxNyw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVk
ZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwg
aW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9w
ZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFy
KiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUs
IGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25f
RVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAo
SklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExp
bmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJh
dGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJ
VF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpA
QCAtMzk3LDYgKzM5OCw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVj
U3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90
KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRj
aChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
aW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQz
Ml90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIwNzc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAg
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVl
UHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1sxXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAg
cHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVu
Y2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBM
TElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhy
b3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFt
ZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIy
MDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
aGVja19pZl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9w
cm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFk
b3dfY2hpY2tlbl90YWlsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHJvZmlsZV9jYXRjaCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJv
d19zdGFja19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFM
OwogI2lmICFFTkFCTEUoSklUKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
c3RhY2tfY2hlY2tfYXRfdm1fZW50cnkoVk0qLCBSZWdpc3RlciopIFdURl9JTlRFUk5BTDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20JKHJldmlzaW9uIDIyMDc3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTg4MSw2ICsxODgx
LDExIEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW4KICAgICBjYWxs
T3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5j
X2RlY2xfaW5fZXZhbCkKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfcmVzb2x2ZV9zY29wZV9m
b3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWxfbGVuZ3RoKQogCitfbGxpbnRfb3BfcHJvZmls
ZV9jYXRjaDoKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxl
X2NhdGNoKQorICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9wcm9maWxlX2NhdGNoX2xlbmd0aCkK
KworCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2Ug
ZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIg
YXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKICMgYXMgbXVj
aC4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjIwNzc3KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0
OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5
bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2
ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJ
RC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRF
MTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUx
NDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQy
MSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIg
LyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFt
YmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICov
LApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA3NzcpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2Rl
V29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
U2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8g
dGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVu
YW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAg
ICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVy
Lm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290Owot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAg
ICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRT
ZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5u
b2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAg
cmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3RO
YW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7
Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFw
KEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFw
PFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0g
VCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2lu
ZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUo
KV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUm
IG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8
TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQg
bV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxH
cmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47
CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBo
KEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
bm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYg
KG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0
dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDc3
NykKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFw
aD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFt
ZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZD
aGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRh
KGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1
YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAg
ICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dy
YXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20g
aGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFu
ZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBv
dmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJl
IHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0g
ICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0
eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2
b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3Qm
IGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9j
a3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20s
CkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5n
IHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZv
aWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAg
ICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJs
b2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3Jh
cGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6
Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5
cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVk
RG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tz
SW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFt
ZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAg
ICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7
Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAg
TGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRh
a2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJ
bXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9o
CisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVX
b3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBH
cmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVz
ZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsK
KworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5
cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAg
IH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAg
ICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAw
OworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2Rl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9u
b2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmds
ZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2Rl
IG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAg
IHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpO
b2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJv
b3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBu
b2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1
cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFk
ZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9k
ZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVt
b3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUm
IG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUo
KSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJv
b3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNS
b290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBo
PgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFw
aE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQor
ICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9
CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBt
X21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhl
ci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAg
ICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAg
ICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFd
OworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykp
W2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisg
ICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jv
b3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29u
c3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0K
KyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21h
cDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3Mg
U2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3Jh
cGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmds
ZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1h
cCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9k
ZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1f
Z3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJl
YWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5w
cmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNj
ZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JT
ZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vz
c29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJu
IE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4g
bmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3Nv
cnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lz
dGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3Ig
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2Rl
KCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBj
b25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAg
aWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAg
ICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDog
bV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUu
aXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgu
aW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQg
aW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0
dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAg
IH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2Rl
IG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAg
ICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAg
IGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9v
dE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1
bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAg
IE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwg
IjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAg
ICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29y
IDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
ZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAg
ICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21t
YVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3Jz
KG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3Ip
KTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJp
dmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QK
KyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJv
b3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBj
YW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEg
dXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAv
LyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3
IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7
CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJv
b3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9v
dCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFs
Um9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUo
KSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JM
aXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9y
b290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3Nv
clNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RH
cmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318460</attachid>
            <date>2017-08-17 20:00:34 -0700</date>
            <delta_ts>2017-08-18 19:16:11 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>187715</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jb25zdC1ub3Qtc3RyaWN0LW1vZGUuanMJKHJldmlz
aW9uIDIyMDg2MikKKysrIEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAgZnVuY3Rpb24gdHJ1dGgoKSB7CiB9CiBub0lu
bGluZSh0cnV0aCk7CiAKLWZ1bmN0aW9uIGFzc2VydChjb25kKSB7CitmdW5jdGlvbiBhc3NlcnQo
Y29uZCwgbT0iIikgewogICAgIGlmICghY29uZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
cm9rZSBhc3NlcnRpb24iKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJicm9rZSBhc3NlcnRp
b246ICIgKyBtKTsKIH0KIG5vSW5saW5lKGFzc2VydCk7CiAKQEAgLTEzMiw3ICsxMzIsOCBAQCBm
dW5jdGlvbiBiYXooKSB7CiAgICAgICAgIGFzc2VydCh5ID09PSA2MCk7CiAgICAgICAgIGlmICh0
cnV0aCgpKSB7CiAgICAgICAgICAgICBjb25zdCB5ID0gNTAsIHogPSA3MCwgeCA9IDQwOwotICAg
ICAgICAgICAgYXNzZXJ0KGV2YWwoZXZhbFN0cmluZykgPT09IDQwKTsKKyAgICAgICAgICAgIGxl
dCByID0gZXZhbChldmFsU3RyaW5nKTsKKyAgICAgICAgICAgIGFzc2VydChyID09PSA0MCwgcik7
CiAgICAgICAgICAgICBhc3NlcnQoeSA9PT0gNTAgJiYgeiA9PT0gNzApOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIw
ODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0zODksNyArMzg5LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBk
ZmcvREZHUGhhc2UuY3BwCiAgICAgZGZnL0RGR1BoaUNoaWxkcmVuLmNwcAogICAgIGRmZy9ERkdQ
bGFuLmNwcAotICAgIGRmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAogICAgIGRmZy9ERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAogICAgIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzk0LDggKzM5NCw2IEBACiAJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFB
NiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzQkQxQjYxQjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNl
dC5jcHAgKi87IH07CiAJCTBGM0MxRjFBMUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjNDMUYxODFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICov
OyB9OwogCQkwRjNDMUYxQjFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovOyB9OwotCQkwRjNF
MDFBQTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNFMDFBODE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgKi87IH07Ci0JCTBGM0UwMUFCMTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZH
UHJlUG9zdE51bWJlcmluZy5oICovOyB9OwogCQkwRjQwRTRBNzFDNDk3Rjc0MDBBNTc3RkEgLyog
QWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjYxODMzMjFDNDVGMzVDMDA3MjQ1MEIgLyogQWlyT3Bjb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3
N0ZBIC8qIEFpck9wY29kZUdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzQxQzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZUdl
bmVyYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVVdGlscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzUxQzQ1RjNCNjAw
NzI0NTBCIC8qIEFpck9wY29kZVV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5ODcsOCArMjk4NSw2IEBACiAJCTBGM0JEMUI2MUI4OTZB
MDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNDMUYxODFCODY4RTc5
MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYz
QzFGMTkxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHBhdGggPSBk
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUHJlUG9zdE51bWJlcmluZy5jcHA7
IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcu
aDsgcGF0aCA9IGRmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxS
ZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMx
RjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ5Myw4ICs3NDg5LDYg
QEAKIAkJCQkwRkJFMEY2RTE2QzFEQjAxMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmggKi8sCiAJCQkJMEZGRkM5NTExNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1MjE0RUY5MDk1MDBDNzI1MzIg
LyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCAqLywKLQkJCQkwRjNFMDFBODE5RDM1
M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgKi8sCi0JCQkJMEYzRTAxQTkx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCAqLywKIAkJCQkwRjJCOUNF
MDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwICovLAogCQkJ
CTBGMkI5Q0UxMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oICov
LAogCQkJCTBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAq
LywKQEAgLTg2OTgsNyArODY5Miw2IEBACiAJCQkJREMwMDAzOTMxOUQ4QkU2RjAwMDIzRUIwIC8q
IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkUwRjc1
MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzRTAxQUIxOUQzNTNBNTAwRjYx
QjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VE
MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGQzkyMTYxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQ4Nyw3ICsxMDQ4MCw2IEBACiAJCQkJQTc4QTk3
N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
RTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzRTAxQUExOUQz
NTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYyMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQTFCRjkxQTlFQ0I3RDAwMERFMDFBIC8q
IERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCShyZXZp
c2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQyLDYgKzE1NDIsMTIgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOiB7CisgICAg
ICAgIHZvaWQqIHBvaW50ZXIgPSBnZXRQb2ludGVyKCooKytpdCkpOworICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJwcm9maWxlX2NhdGNoIik7CisgICAgICAg
IG91dC5wcmludGYoIiVwIiwgcG9pbnRlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIG9wX3Rocm93OiB7CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBsb2NhdGlvbiwgaXQs
ICJ0aHJvdyIsIHIwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTQy
LDYgKzE0Miw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Z2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3Byb2ZpbGVfY2F0Y2giLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3Rocm93IiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90
aHJvd19zdGF0aWNfZXJyb3IiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMjIwODYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKgogICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50OgogICAgIGNhc2Ugb3Bfbm9wOgogICAg
IGNhc2Ugb3BfdW5yZWFjaGFibGU6CisgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOgogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBA
IC0zNjgsNiArMzY5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KgogICAgIGNhc2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9ub3A6CiAgICAgY2FzZSBvcF91bnJl
YWNoYWJsZToKKyAgICBjYXNlIG9wX3Byb2ZpbGVfY2F0Y2g6CiAjZGVmaW5lIExMSU5UX0hFTFBF
Ul9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAgRk9SX0VBQ0hf
TExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAjdW5kZWYgTExJ
TlRfSEVMUEVSX09QQ09ERVMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4
IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAg
fTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZCwgND4gYWZ0ZXJDYXRjaEluZGljZXM7CisKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAg
ICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4
dCgpOwogCkBAIC04MDUsMTAgKzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgY2FzZSBvcF9wcm9maWxlX2NhdGNoOiB7CisgICAgICAgICAgICBhZnRl
ckNhdGNoSW5kaWNlcy5hcHBlbmQoaSk7CisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIH0K
IAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKwogICAg
ICAgICBpICs9IG9wTGVuZ3RoOwogICAgIH0KIApAQCAtODMwLDEwICs4MzgsMzggQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogCiAgICAgaWYgKE9wdGlvbnM6OmR1
bXBHZW5lcmF0ZWRCeXRlY29kZXMoKSkKICAgICAgICAgZHVtcEJ5dGVjb2RlKCk7CisKKyAgICBp
ZiAoYWZ0ZXJDYXRjaEluZGljZXMuc2l6ZSgpKSB7CisgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcyYgYnl0ZWNvZGVMaXZlbmVzcyA9IGxpdmVuZXNzQW5hbHlzaXMoKTsKKyAgICAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPj4gY2F0
Y2hQcm9maWxlczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBhZnRlckNhdGNoSW5kZXggOiBhZnRl
ckNhdGNoSW5kaWNlcykgeworICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlTG9jYWxzID0g
Ynl0ZWNvZGVMaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGFmdGVyQ2F0
Y2hJbmRleCk7CisgICAgICAgICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyPiBsaXZlT3BlcmFu
ZHM7CisgICAgICAgICAgICBsaXZlT3BlcmFuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaXZl
TG9jYWxzLmJpdENvdW50KCkpOworICAgICAgICAgICAgbGl2ZUxvY2Fscy5mb3JFYWNoU2V0Qml0
KFsmXSAodW5zaWduZWQgbGl2ZUxvY2FsKSB7CisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRz
LmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsaXZlTG9jYWwpKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsg
KytpKQorICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSkpOworCisgICAgICAgICAgICBhdXRvIHByb2ZpbGVzID0gc3RkOjptYWtl
X3VuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUgPT0gbGl2ZU9w
ZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJv
ZmlsZXMtPm1fc2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5n
ZXQoKVtpXS5tX29wZXJhbmQgPSBsaXZlT3BlcmFuZHNbaV0ub2Zmc2V0KCk7CisgICAgICAgICAg
ICBtX2luc3RydWN0aW9uc1thZnRlckNhdGNoSW5kZXggKyAxXS51LnBvaW50ZXIgPSBwcm9maWxl
cy5nZXQoKTsKKyAgICAgICAgICAgIGNhdGNoUHJvZmlsZXMuYXBwZW5kKFdURk1vdmUocHJvZmls
ZXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgIG1fY2F0Y2hQcm9maWxlcyA9IFdURk1v
dmUoY2F0Y2hQcm9maWxlcyk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5t
X2NvZGVCbG9ja3MtPmFkZCh0aGlzKTsKICAgICBoZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5QWxs
b2NhdGVkKG1faW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpOwotICAg
IAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0ODYsOSArMjUyMiwxMCBAQCBjb25zdCBJ
ZGVudGlmaWVyJiBDb2RlQmxvY2s6OmlkZW50aWZpZXIoCiB2b2lkIENvZGVCbG9jazo6dXBkYXRl
QWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25B
cmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVz
KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAKKwogICAg
IG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA9IDA7CiAgICAgbnVtYmVyT2ZT
YW1wbGVzSW5Qcm9maWxlcyA9IDA7IC8vIElmIHRoaXMgZGl2aWRlZCBieSBWYWx1ZVByb2ZpbGU6
Om51bWJlck9mQnVja2V0cyBlcXVhbHMgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgdGhlbiB2YWx1
ZSBwcm9maWxlcyBhcmUgZnVsbC4KKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3Rh
bE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAgICAgIHVuc2lnbmVkIG51
bVNhbXBsZXMgPSBwcm9maWxlLT50b3RhbE51bWJlck9mU2FtcGxlcygpOwpAQCAtMjUwMyw2ICsy
NTQwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZEMKICAgICAg
ICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBw
cm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICB9CisKKyAgICBm
b3IgKGF1dG8mIHByb2ZpbGVCdWNrZXQgOiBtX2NhdGNoUHJvZmlsZXMpIHsKKyAgICAgICAgcHJv
ZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUp
IHsKKyAgICAgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgbV9sYXp5T3BlcmFuZFZhbHVlUHJvZmlsZXMuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
cyhsb2NrZXIpOwpAQCAtMjc0Myw3ICsyNzg2LDIwIEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2Nr
Ojp2YWx1ZVByb2ZpbGVGb3IKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0pOwogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7Ci0gICAgcmV0dXJuIGluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOworICAgIFZhbHVl
UHJvZmlsZSogcmVzdWx0ID0gaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGgg
LSAxXS51LnByb2ZpbGU7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVz
KCk7ICsraSkgeworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSB2YWx1ZVByb2ZpbGUo
aSk7CisgICAgICAgIGlmIChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IGJ5dGVjb2RlT2Zm
c2V0KSB7CisgICAgICAgICAgICBBU1NFUlQocHJvZmlsZSA9PSByZXN1bHQpOworICAgICAgICAg
ICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgQVNTRVJUKGZvdW5kKTsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQg
Q29kZUJsb2NrOjp2YWxpZGF0ZSgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDIsNiArMTAwMiw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBt
X2FyZ3VtZW50VmFsdWVQcm9maWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxl
PiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogICAgIFNlZ21lbnRlZFZlY3Rv
cjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9maWxlczsKICAgICBSZWZDb3VudGVk
QXJyYXk8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZT4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlczsK
ICAgICBBcnJheVByb2ZpbGVWZWN0b3IgbV9hcnJheVByb2ZpbGVzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjIwODYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsOCArMTc0LDggQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldAogfTsKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKLSAgICBWYWx1ZVByb2ZpbGUoKTogVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPigpIHsgfQotICAgIFZhbHVlUHJvZmls
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRz
PDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmls
ZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5
dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0
ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTIwMiw0ICsy
MDIsMzggQEAgaW5saW5lIGludCBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZgogICAgIHJl
dHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7CiB9CiAKK3N0cnVjdCBWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kIHsKKyAgICBWYWx1ZVByb2ZpbGUgbV9wcm9maWxlOworICAgIGlu
dCBtX29wZXJhbmQ7Cit9OworCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciB7
CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcih1bnNpZ25lZCBzaXplKQorICAgICAg
ICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFZhbHVlUHJvZmlsZSBo
YXMgbW9yZSBzdHVmZiB0aGFuIHdlIG5lZWQuIFdlIGNvdWxkIG9wdGltaXplIHRoZXNlIHZhbHVl
IHByb2ZpbGVzCisgICAgICAgIC8vIHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAg
ICAgIG1fYnVmZmVyID0gTWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2Mo
bV9zaXplICogc2l6ZW9mKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZm
ZXIuZ2V0KClbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4KKyAgICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBmdW5jdGlvbihtX2J1ZmZlci5nZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9z
aXplOworICAgIE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIy
MDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTY4LDYgKzM5NjgsOSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0CiAgICAgZW1pdE9wY29kZShvcF9jYXRjaCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7
CisKKyAgICBlbWl0T3Bjb2RlKG9wX3Byb2ZpbGVfY2F0Y2gpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzdG9yZVNjb3BlUmVn
aXN0ZXIoaW50IGxleGljYWxTY29wZUluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2
aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNiArMjA4LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRy
YWN0T1NSRW50cnlMb2NhbDogewogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRv
cCgpOwogICAgICAgICBicmVhazsKQEAgLTE4MzksNyArMTg0MCw3IEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gRklYTUU6IERvIHNwYXJzZSBj
b25kaXRpb25hbCB0aGluZ3MuCiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAgICAgICAgIAor
CiAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CiAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNDRkcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3
YXJkc0NGRy5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMTIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBCYWNrd2FyZHNDRkcgOiBw
dWJsaWMgQmFja3dhcmRzR3JhcGg8Q0ZHPiB7CitjbGFzcyBCYWNrd2FyZHNDRkcgOiBwdWJsaWMg
QmFja3dhcmRzR3JhcGg8U1NBQ0ZHPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dh
cmRzQ0ZHKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBCYWNr
d2FyZHNDRkcoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IEJhY2t3YXJkc0dyYXBoPENGRz4oKmdy
YXBoLm1fY2ZnKQorICAgICAgICA6IEJhY2t3YXJkc0dyYXBoPFNTQUNGRz4oc2VsZWN0Q0ZHPFNT
QUNGRz4oZ3JhcGgpKQogICAgIHsKICAgICB9CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNyw3IEBAIEJhc2ljQmxvY2s6OkJhc2ljQmxvY2soCiAgICAgOiBieXRlY29kZUJlZ2lu
KGJ5dGVjb2RlQmVnaW4pCiAgICAgLCBpbmRleChOb0Jsb2NrKQogICAgICwgaXNPU1JUYXJnZXQo
ZmFsc2UpCisgICAgLCBpc0NhdGNoRW50cnlwb2ludChmYWxzZSkKICAgICAsIGNmYUhhc1Zpc2l0
ZWQoZmFsc2UpCiAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZhbHNlKQogICAgICwgY2ZhRm91bmRD
b25zdGFudHMoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDE3ICs4Miw5IEBAIHN0cnVjdCBC
YXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICAgICAgc2l6ZV90IGkgPSBzaXpl
KCk7CiAgICAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBhdChp
KTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBK
dW1wOgotICAgICAgICAgICAgY2FzZSBCcmFuY2g6Ci0gICAgICAgICAgICBjYXNlIFN3aXRjaDoK
LSAgICAgICAgICAgIGNhc2UgUmV0dXJuOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKLSAg
ICAgICAgICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxs
VmFyYXJnczoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKLSAgICAg
ICAgICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgICAgICAgICBpZiAobm9kZS0+aXNUZXJtaW5h
bCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOb2RlQW5kSW5kZXgobm9kZSwgaSk7CisgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBiaXR0ZXIg
ZW5kIGNhbiBjb250YWluIFBoYW50b21zIGFuZCB0aGUgbGlrZS4gVGhlcmUgd2lsbCBwcm9iYWJs
eSBvbmx5IGJlIG9uZSBvciB0d28gbm9kZXMgYWZ0ZXIgdGhlIHRlcm1pbmFsLiBUaGV5IGFyZSBh
bGwgbm8tb3BzIGFuZCB3aWxsIG5vdCBoYXZlIGFueSBjaGVja2VkIGNoaWxkcmVuLgogICAgICAg
ICAgICAgY2FzZSBDaGVjazogLy8gVGhpcyBpcyBoZXJlIGJlY2F1c2UgaXQncyBvdXIgdW5pdmVy
c2FsIG5vLW9wLgogICAgICAgICAgICAgY2FzZSBQaGFudG9tOgpAQCAtMTg1LDYgKzE3Nyw3IEBA
IHN0cnVjdCBCYXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBCbG9ja0luZGV4
IGluZGV4OwogICAgIAogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CisgICAgYm9vbCBpc0NhdGNoRW50
cnlwb2ludDsKICAgICBib29sIGNmYUhhc1Zpc2l0ZWQ7CiAgICAgYm9vbCBjZmFTaG91bGRSZXZp
c2l0OwogICAgIGJvb2wgY2ZhRm91bmRDb25zdGFudHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjIwODYyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlw
ZS5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SGVhcC5oIgogI2luY2x1ZGUgIkRGR0FycmF5TW9k
ZS5oIgorI2luY2x1ZGUgIkRGR0NGRy5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgog
I2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdDbG9iYmVyc0V4aXRTdGF0
ZS5oIgpAQCAtNDc4LDggKzQ3OSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgQXJndW1lbnRQ
b3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbiA9IGZpbmRBcmd1bWVudFBvc2l0aW9uRm9yTG9jYWwo
b3BlcmFuZCk7CiAgICAgICAgICAgICBpZiAoYXJndW1lbnRQb3NpdGlvbikKICAgICAgICAgICAg
ICAgICBmbHVzaERpcmVjdChvcGVyYW5kLCBhcmd1bWVudFBvc2l0aW9uKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKG1fZ3JhcGgubmVlZHNTY29wZVJlZ2lzdGVyKCkgJiYgb3BlcmFuZCA9PSBtX2Nv
ZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKQotICAgICAgICAgICAgICAgIGZsdXNoKG9wZXJhbmQp
OworICAgICAgICAgICAgZWxzZSBpZiAobV9ncmFwaC5uZWVkc1Njb3BlUmVnaXN0ZXIoKSAmJiBv
cGVyYW5kID09IG1fY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpIHsKKyAgICAgICAgICAgICAg
ICAvL2Jvb2wgaXNQcmltb3JkaWFsU2V0TG9jYWwgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJn
dW1lbnRzLmNvbnRhaW5zKG1fY3VycmVudEJsb2NrKQorICAgICAgICAgICAgICAgIC8vICAgICYm
ICFtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKGxvY2FsKTsKKyAgICAgICAg
ICAgICAgICAvL2lmICghaXNQcmltb3JkaWFsU2V0TG9jYWwpCisgICAgICAgICAgICAgICAgLy8g
ICAgZmx1c2gob3BlcmFuZCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNz
RGF0YShvcGVyYW5kKTsKQEAgLTY0Miw4ICs2NDcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Zmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOwogICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnkt
Pm1faW5saW5lQ2FsbEZyYW1lICYmIG1fZ3JhcGgubmVlZHNGbHVzaGVkVGhpcygpKQogICAgICAg
ICAgICAgZmx1c2hEaXJlY3QodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCkpOwotICAgICAg
ICBpZiAobV9ncmFwaC5uZWVkc1Njb3BlUmVnaXN0ZXIoKSkKLSAgICAgICAgICAgIGZsdXNoRGly
ZWN0KG1fY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpOworICAgICAgICAvL2lmIChtX2dyYXBo
Lm5lZWRzU2NvcGVSZWdpc3RlcigpKQorICAgICAgICAvLyAgICBmbHVzaERpcmVjdChtX2NvZGVC
bG9jay0+c2NvcGVSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICB2b2lkIGZsdXNoRm9yVGVybWlu
YWwoKQpAQCAtMTEzMSw3ICsxMTM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50aWFs
IGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwg
YW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1l
IGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtp
bmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNp
YyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAgIC8v
IHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3NvcnMg
bGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRoZSBv
dGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTQwNzUsNyArNDA4MCwxMSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgLy8gdXMgdG8g
dHJhY2sgaWYgYSB1c2Ugb2YgYW4gYXJndW1lbnQgbWF5IHVzZSB0aGUgYWN0dWFsIGFyZ3VtZW50
IHBhc3NlZCwgYXMKICAgICAvLyBvcHBvc2VkIHRvIHVzaW5nIGEgdmFsdWUgd2Ugc2V0IGV4cGxp
Y2l0bHkuCiAgICAgaWYgKG1fY3VycmVudEJsb2NrID09IG1fZ3JhcGguYmxvY2soMCkgJiYgIWlu
bGluZUNhbGxGcmFtZSgpKSB7Ci0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHMucmVzaXplKG1f
bnVtQXJndW1lbnRzKTsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmFkZChtX2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4PigpKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICBW
ZWN0b3I8Tm9kZSosIDg+JiBlbnRyeXBvaW50QXJndW1lbnRzID0gYWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZTsKKyAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVu
dHMpOworCiAgICAgICAgIC8vIFdlIHdpbGwgZW1pdCBTZXRBcmd1bWVudCBub2Rlcy4gVGhleSBk
b24ndCBleGl0LCBidXQgd2UncmUgYXQgdGhlIHRvcCBvZiBhbiBvcF9lbnRlciBzbwogICAgICAg
ICAvLyBleGl0T0sgPSB0cnVlLgogICAgICAgICBtX2V4aXRPSyA9IHRydWU7CkBAIC00MDg4LDcg
KzQwOTcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZSht
X2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZh
cmlhYmxlKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IHNl
dEFyZ3VtZW50OworICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBz
ZXRBcmd1bWVudDsKICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
c2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTUxNjEsNiArNTE3MCwxMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX2NhdGNoOgogICAgICAgICAgICAgbV9ncmFw
aC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2NhdGNoKTsKKworICAgICAgICBjYXNlIG9wX3Byb2ZpbGVfY2F0Y2g6IHsKKyAgICAgICAg
ICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0
IGRvIGFueXRoaW5nIGhlcmUgZm9yIGlubGluZWQgZnJhbWVzLiBXZSBkb24ndCB0cmVhdCB0aGlz
IGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHJvZmls
ZV9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBo
Lm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNo
IGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3By
b2ZpbGVfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbV9jdXJyZW50QmxvY2stPnNpemUoKSk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5wb2ludGVyKTsKKworICAgICAgICAg
ICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBlPiBhcmd1bWVudFByZWRpY3Rpb25zKG1fbnVtQXJndW1l
bnRzKTsKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gbG9jYWxQcmVkaWN0aW9u
czsKKyAgICAgICAgICAgIEhhc2hTZXQ8dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4s
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1l
bnRzOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAg
ICAgICAgICAgICAgICBib29sIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHBy
b2ZpbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJv
ZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uID0gcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cik7CisgICAgICAgICAgICAgICAgICAgIGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJj0gcHJlZGlj
dGlvbiA9PSBTcGVjTm9uZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2Nh
bCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQocHJl
ZGljdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQob3BlcmFuZC5pc0FyZ3VtZW50KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQu
dG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlZW5Bcmd1bWVudHMuYWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50
KCldID0gcHJlZGljdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9u
dW1Bcmd1bWVudHM7ICsrYXJndW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChzZWVuQXJndW1lbnRzLmNvbnRhaW5zKGFyZ3VtZW50KSk7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJiYgKGFy
Z3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpIHx8IGxvY2FsUHJlZGljdGlvbnMuc2l6ZSgpKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSBoYXZlbid0IGV4
ZWN1dGVkIHRoaXMgY2F0Y2ggeWV0LiBMZXQncyBub3QgY29tcGlsZQorICAgICAgICAgICAgICAg
ICAgICAvLyBpdCBhcyBhbiBlbnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9wcm9maWxlX2NhdGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY29tcGlsaW5nIHRoaXMg
YXMgYW4gZW50cnlwb2ludC4KKworICAgICAgICAgICAgLy8gV2UgZG8gdGhpcyBiZWNhdXNlIHdo
ZW4gc2VhcmNoaW5nIGZvciB3aGVyZSB0byBPU1IgZW50ZXIsIHdlIGRvIGl0IHJlbGF0aXZlCisg
ICAgICAgICAgICAvLyB0byB0aGUgYnl0ZWNvZGUgb2Zmc2V0IG9mIG9wX3Byb2ZpbGVfY2F0Y2gu
CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+Ynl0ZWNvZGVCZWdpbiA9IG1fY3VycmVudElu
ZGV4OworCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPSB0
cnVlOworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJlbnRC
bG9jayk7CisKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVyLCBO
b2RlKj4+IGxvY2Fsc1RvU2V0OworICAgICAgICAgICAgbG9jYWxzVG9TZXQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCByZXNlcnZlIG1v
cmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUgYnVm
ZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsg
Ly8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxkIG5vdCBrbm93
IGhvdyB0byBkbyB2YWx1ZSByZWNvdmVyeS4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
TG9jYWxzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQu
aXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2Fscyks
IE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAgICAg
ICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50
LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgbG9j
YWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVlKSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0
Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbm93IGV4aXQgYmVj
YXVzZSB3ZSd2ZSBzZXQgdXAgb3VyIE9TUiBleGl0IHN0YXRlIHRvIHJlY292ZXIgYW55IGxpdmUg
bG9jYWxzLgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNldCB1
cCBvdXIgYXJndW1lbnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LiBUaGlzIGhhcHBlbnMg
aGVyZSBiZWNhdXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcyB1cAorICAgICAgICAgICAgICAg
IC8vIHRvIHRoaXMgcG9pbnQgaW4gdGhlIHByb2dyYW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0byBl
eGl0LgorICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAg
ICAgICAgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVu
dHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKyth
cmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFy
Z3VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50
UHJlZGljdGlvbnNbYXJndW1lbnRdKTsKKworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hl
Y2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5k
ZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBh
ZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGlt
ZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50
QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbG9jYWxz
VG9TZXQpCisgICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgcGFp
ci5maXJzdCwgcGFpci5zZWNvbmQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKworICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfcHJvZmlsZV9jYXRjaCk7CisgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0
cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwpAQCAtNjE1Niw4ICs2Mjc3LDEwIEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV91bmxpbmtlZEJsb2Nrcy5hcHBlbmQoVW5saW5rZWRCbG9j
ayhibG9jay5wdHIoKSkpOwogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2Jsb2NrTGlua2luZ1RhcmdldHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlIGZpcnN0IGJsb2NrIGlzIGRlZmluaXRlbHkgYW4gT1NSIHRhcmdldC4KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrLT5pc09TUlRhcmdldCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKGJsb2NrLnB0cigpKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZEJsb2NrKFdURk1vdmUo
YmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTYyMTQsMTAgKzYzMzcsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2UoKQogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVD
YWxsRnJhbWU6OkNhbGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7Ci0KICAgICBsaW5r
QmxvY2tzKGlubGluZVN0YWNrRW50cnkubV91bmxpbmtlZEJsb2NrcywgaW5saW5lU3RhY2tFbnRy
eS5tX2Jsb2NrTGlua2luZ1RhcmdldHMpOworCiAgICAgbV9ncmFwaC5kZXRlcm1pbmVSZWFjaGFi
aWxpdHkoKTsKICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCisgICAgbV9n
cmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKICAgICAK
ICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJs
b2NrSW5kZXgtLTspIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2Nr
KGJsb2NrSW5kZXgpOwpAQCAtNjIyOCw3ICs2MzUzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2UoKQogICAgICAgICBBU1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxv
Y2FscygpID09IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpKTsKICAgICAgICAgQVNTRVJUKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1
bWVudHMoKSA9PSBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZBcmd1
bWVudHMoKSk7CiAgICAgfQotICAgIAorCiAgICAgbV9ncmFwaC5tX2xvY2FsVmFycyA9IG1fbnVt
TG9jYWxzOwogICAgIG1fZ3JhcGgubV9wYXJhbWV0ZXJTbG90cyA9IG1fcGFyYW1ldGVyU2xvdHM7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChibG9jay0+Ynl0ZWNvZGVCZWdp
biAhPSBtX2dyYXBoLm1fcGxhbi5vc3JFbnRyeUJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYg
KG1fdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgRm91bmQgbXVzdC1o
YW5kbGUgYmxvY2s6ICIsICpibG9jaywgIlxuIik7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJERkdCbG9ja01hcElubGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja1Nl
dC5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSA8d3RmL1NpbmdsZVJvb3RHcmFw
aC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTQ4LDcgKzQ5LDE5
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgTm9kZSByb290KCkgeyByZXR1cm4gbV9n
cmFwaC5ibG9jaygwKTsgfQorICAgIE5vZGUgcm9vdCgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9ncmFwaC5tX2Zvcm0gPT0gU1NBIHx8IG1fZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7Cisg
ICAgICAgIHJldHVybiBtX2dyYXBoLmJsb2NrKDApOworICAgIH0KKworICAgIExpc3Qgcm9vdHMo
KQorICAgIHsKKyAgICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAgIGZvciAoQmFzaWNCbG9jayog
cm9vdCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
cm9vdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gQmxvY2tNYXA8VD4obV9ncmFw
aCk7IH0KQEAgLTcxLDYgKzg0LDMxIEBAIHByaXZhdGU6CiAgICAgR3JhcGgmIG1fZ3JhcGg7CiB9
OwogCitjbGFzcyBDUFNDRkcgOiBwdWJsaWMgU2luZ2xlUm9vdEdyYXBoPENGRz4geworcHVibGlj
OgorICAgIENQU0NGRyhHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogU2luZ2xlUm9vdEdyYXBoPENG
Rz4oKmdyYXBoLm1fc3NhQ0ZHKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZW50cnlw
b2ludHMuc2l6ZSgpKTsKKyAgICB9Cit9OworCit1c2luZyBTU0FDRkcgPSBDRkc7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfc2FtZTxULCBDUFNDRkc+Ojp2YWx1ZT46OnR5cGU+CitDUFNDRkcmIHNlbGVjdENGRyhHcmFw
aCYgZ3JhcGgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9jcHNDRkcpOworICAgIHJl
dHVybiAqZ3JhcGgubV9jcHNDRkc7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1
ZT46OnR5cGU+CitTU0FDRkcmIHNlbGVjdENGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgUkVMRUFT
RV9BU1NFUlQoZ3JhcGgubV9zc2FDRkcpOworICAgIHJldHVybiAqZ3JhcGgubV9zc2FDRkc7Cit9
CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhy
ZWFkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjks
OCArMzY5LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEJ1dCB0aG9zZSBTZXRBcmd1bWVudHMg
dXNlZCBmb3IgdGhlIGFjdHVhbCBhcmd1bWVudHMgdG8gdGhlIG1hY2hpbmUgQ29kZUJsb2NrIGdl
dAogICAgICAgICAvLyBzcGVjaWFsLWNhc2VkLiBXZSBjb3VsZCBoYXZlIGluc3RlYWQgdXNlZCB0
d28gZGlmZmVyZW50IG5vZGUgdHlwZXMgLSBvbmUgZm9yIHRoZSBhcmd1bWVudHMKICAgICAgICAg
Ly8gYXQgdGhlIHByb2xvZ3VlIGNhc2UsIGFuZCBhbm90aGVyIGZvciB0aGUgb3RoZXIgdXNlcy4g
QnV0IHRoaXMgc2VlbWVkIGxpa2UgSVIgb3ZlcmtpbGwuCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgbV9ncmFw
aC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIG1fZ3Jh
cGgubV9hcmd1bWVudHNbaV0pOworCisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVudHJ5
cG9pbnQgPSBwYWlyLmtleTsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxOb2RlKiwgOD4mIGFy
Z3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1
bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhcmlhYmxl
c0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOworICAgICAgICB9
CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRLaW5kPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDIy
MDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OTgsNyArNTk4LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9n
cmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6
ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAg
ICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgbV9w
cmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpOwogICAgICAgICAKQEAgLTY5MCw3
ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTm9kZSog
Y2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2sp
KSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhj
YW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIG1fbm9kZS0+cmVw
bGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTc3OSw3ICs3NzksNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAvLyBXZSByZXF1aXJlIHN0cmljdCBkb21pbmF0aW9uIGJlY2F1c2UgdGhpcyB3b3Vs
ZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3VyIG93biBibG9jayBpZgogICAgICAgICAgICAgLy8gdGhl
eSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJseSwgd2hpbGUg
b3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUgdGhpbmdzIGlu
IHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KLSAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fZG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7
CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0cmljdGx5RG9taW5h
dGVzKGJsb2NrLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5IGRvbWluYXRlcy5c
biIpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBkYXRhLmRp
ZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
ICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5h
dGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVy
LCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjYW5kaWRh
dGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLT5yZXBsYWNlV2l0aChjYW5k
aWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnNldE5vZGUoY2FuZGlk
YXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDYgKzI0OSw3IEBAIENhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1c2hfd2l0
aF9zY29wZToKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jYXRj
aDoKKyAgICBjYXNlIG9wX3Byb2ZpbGVfY2F0Y2g6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoK
ICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hp
Y2tlbl9wcm9sb2d1ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw3IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAg
Y2FzZSBDaGVjazoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0
cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIy
MDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAg
ICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9k
b21pbmF0b3JzKGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3
YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsK
ICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
RG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9y
czsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNp
b24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAg
ICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1f
Z3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBj
bGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBi
YXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9u
IDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpE
dW1wZWRPcD4gRGlzYXNzZW1iCiAgICAgZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAg
IGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGgu
ZW5zdXJlRG9taW5hdG9ycygpOwotICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Cisg
ICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNO
YXR1cmFsTG9vcHMoKTsKICAgICAKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAg
ICAgY29uc3QgY2hhciogZGlzYXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNr
ZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgog
ICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9v
cDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzUsMTYgKzM1LDMyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAot
Y2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21p
bmF0b3JzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdy
YXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcp
CisgICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihn
cmFwaCkpCiAgICAgewogICAgIH0KIH07CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0
b3JzPFNTQUNGRz47Cit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYg
ZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBo
LmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZh
bHVlPjo6dHlwZT4KK1NTQURvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgm
IGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJl
dmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWlu
YXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAg
ICAsIG1fYmxvY2soYmxvY2spCiAgICAgICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAg
ICAgIEFTU0VSVChncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBv
cGVyYXRvcigpKE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9
IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Js
b2NrKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3Nl
KSB7CiAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAi
LCBlZGdlLCAiIGluICIsICplZGdlLm5vZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5ODksNiArMTk4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoK
ICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29w
SGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkBA
IC0zMTg0LDYgKzMxODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhG
b3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PmlzTnVtYmVyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjQnl0ZWNvZGVEb3VibGUsIERvdWJsZUNvbnN0YW50
LCBvcmlnaW5Gb3JDaGVja3MsCkBAIC0zMjE0LDYgKzMyMTYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChpbmRleEZvckNoZWNrcyAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZWRnZS0+aXNBbnlJbnRDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNBbnlJbnQsIElu
dDUyQ29uc3RhbnQsIG9yaWdpbkZvckNoZWNrcywKQEAgLTMyNDAsNiArMzI0Myw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgp
ICYmICFlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5k
ZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVk
Z2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNCeXRlY29kZURvdWJsZSwgVmFsdWVSZXAsIG9y
aWdpbkZvckNoZWNrcywKQEAgLTMyODEsNiArMzI4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEZvckNoZWNrcyAhPSBVSU5UX01BWCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjTm9uZSwgQ2hlY2ss
IG9yaWdpbkZvckNoZWNrcywgZWRnZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3Jt
YXQgeworZW51bSBGbHVzaEZvcm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBG
bHVzaGVkSW50MzIsCiAgICAgRmx1c2hlZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRl
ICJERkdOYXR1cmFsTG9vcHMuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAj
aW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRl
Y29kZUxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAt
NzMsNyArNzIsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9w
bGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9w
cm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9jZmcoc3Rk
OjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlx
dWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1f
Zml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0
aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTQwOSw5ICs0MDgsMTMgQEAg
Ym9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCitz
dGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9kZShjb25zdCBDUFNDRkc6Ok5vZGUmIG5vZGUp
IHsgcmV0dXJuIG5vZGUubm9kZSgpOyB9CitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9k
ZShCYXNpY0Jsb2NrKiBibG9jaykgeyByZXR1cm4gYmxvY2s7IH0KKwogdm9pZCBHcmFwaDo6ZHVt
cEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNC
bG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0
KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIg
KCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIp
OiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JU
YXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZp
eCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2lu
LnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8g
IiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6
ICIiLCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAi
IiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0
aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDog
IiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00MjIsMTggKzQyNSwyNiBAQCB2b2lkIEdyYXBoOjpkdW1w
QmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAg
ICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBp
ZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBt
X3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAg
IG91dC5wcmludCgiXG4iKTsKLSAgICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZh
bGlkKCkpIHsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBt
X2RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVk
QnkoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNl
IEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAi
XG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZy
b250aWVyOiAiLCBtX2RvbWluYXRvcnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9j
a0xpc3QoMSwgYmxvY2spKSwgIlxuIik7CisKKyAgICBhdXRvIHByaW50RG9taW5hdG9ycyA9IFsm
XSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21p
bmF0ZWQgYnk6ICIsIGRvbWluYXRvcnMuZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgZG9taW5hdG9ycy5ibG9ja3NE
b21pbmF0ZWRCeShibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBE
b21pbmFuY2UgRnJvbnRpZXI6ICIsIGRvbWluYXRvcnMuZG9taW5hbmNlRnJvbnRpZXJPZihibG9j
ayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFu
Y2UgRnJvbnRpZXI6ICIsCisgICAgICAgICAgICBkb21pbmF0b3JzLml0ZXJhdGVkRG9taW5hbmNl
RnJvbnRpZXJPZih0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZG9taW5h
dG9ycyk+Ojp0eXBlOjpMaXN0IHsgYmxvY2sgfSksICJcbiIpOworICAgIH07CisKKyAgICBpZiAo
dGVybWluYWxzQXJlVmFsaWQoKSkgeworICAgICAgICBpZiAobV9zc2FEb21pbmF0b3JzKQorICAg
ICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX3NzYURvbWluYXRvcnMpOworICAgICAgICBlbHNl
IGlmIChtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWluYXRvcnMoKm1fY3Bz
RG9taW5hdG9ycyk7CiAgICAgfQorCiAgICAgaWYgKG1fYmFja3dhcmRzRG9taW5hdG9ycyAmJiB0
ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3
YXJkcyBkb21pbmF0ZXMgYnk6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+ZG9taW5hdG9yc09m
KGJsb2NrKSwgIlxuIik7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBk
b21pbmF0ZXM6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxv
Y2spLCAiXG4iKTsKQEAgLTQ0NiwyOSArNDU3LDMzIEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hl
YWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAg
ICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1i
ZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJc
biIpOwotICAgIGlmIChtX25hdHVyYWxMb29wcykgewotICAgICAgICBpZiAoY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisKKyAgICBh
dXRvIHByaW50TmF0dXJhbExvb3BzID0gWyZdIChhdXRvJiBuYXR1cmFsTG9vcHMpIHsKKyAgICAg
ICAgaWYgKGNvbnN0IGF1dG8qIGxvb3AgPSBuYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkg
ewogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5z
OiIpOwogICAgICAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAg
ICAgICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7
CisgICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZCh1bmJveExvb3BOb2RlKGxv
b3AtPmF0KGkpKS0+aW5kZXgpOwogICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlz
dC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKICAgICAgICAgICAgIG91
dC5wcmludCgiXG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKKyAgICAgICAgYXV0byBjb250YWluaW5nTG9vcHMgPSBuYXR1
cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwogICAgICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcg
bG9vcCBoZWFkZXJzOiIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
bnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
LCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIgIiwgKnVuYm94TG9vcE5vZGUoY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSkpOwog
ICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICB9Ci0gICAgfQorICAgIH07CisK
KyAgICBpZiAobV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1f
c3NhTmF0dXJhbExvb3BzKTsKKyAgICBlbHNlIGlmIChtX2Nwc05hdHVyYWxMb29wcykKKyAgICAg
ICAgcHJpbnROYXR1cmFsTG9vcHMobV9jcHNOYXR1cmFsTG9vcHMpOworCiAgICAgaWYgKCFibG9j
ay0+cGhpcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5v
ZGVzOiIpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUo
KTsgKytpKSB7CkBAIC01MDIsOCArNTE3LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4
cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwg
bV91bmlmaWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0
ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBB
cmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwot
ICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9h
cmd1bWVudHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBt
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVu
dHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1
ZSksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSog
bGFzdE5vZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY1NywxMCBAQCB2b2lkIEdyYXBoOjpoYW5k
bGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxp
dHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmts
aXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBw
ZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03
OTgsOSArODE3LDEwIEBAIHZvaWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZv
aWQgR3JhcGg6OmludmFsaWRhdGVDRkcoKQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7
Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9
IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBt
X3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpcyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAg
ICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg3MCwzNyBAQCBCbG9ja0xp
c3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAg
ICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAg
ICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9j
ayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAg
ICAgICAgICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBv
dmVyIHByZSBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgIC8vIGJlZm9y
ZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBb
Jl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBh
ID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJl
c3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0g
cmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21p
bmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikK
KyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9y
cygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODYzLDcgKzkwOCw4IEBA
IEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCBy
ZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlz
dC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2Vu
dHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxl
IChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNo
IChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtODc2LDYg
KzkyMiwzMSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkpIHsKKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRv
cnMpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcmV2ZXJzZSBwb3N0IG9y
ZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgICAgIC8vIGJlZm9yZSB0aGlu
Z3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVz
dWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5z
aXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0
W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3Jz
LmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGkgPiBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAg
ICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsK
KyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMwICsxNTQzLDQ0IEBA
IHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFp
bHVyZSgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVt
cChibG9jayksICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQog
Ci1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBH
cmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3Jt
ICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRv
cnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5h
dG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21p
bmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWlu
YXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9y
cz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9kb21pbmF0b3JzOworICAgIFJFTEVBU0VfQVNTRVJU
KG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX3NzYURv
bWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NB
RG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1Q
cmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogewotICAgIGlmICghbV9w
cmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51
bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX2Nwc05h
dHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7
CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCitTU0FOYXR1
cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewotICAgIGVuc3VyZURv
bWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxM
b29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0gICAgcmV0dXJu
ICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKKyAg
ICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykKKyAg
ICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29w
cz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJk
c0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgLy8gV2UgY291bGQgZWFz
aWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIgQ1BTLCBidXQgdG9kYXks
IGl0J3Mgb25seSB1c2VkIGluIFNTQS4KKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NB
KTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKICAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNr
d2FyZHNDRkc7CkBAIC0xNTAzLDYgKzE1ODgsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1
cmVCYWNrd2FyZHNDRkcoCiAKIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNr
d2FyZHNEb21pbmF0b3JzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsK
ICAgICBpZiAoIW1fYmFja3dhcmRzRG9taW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21p
bmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAg
ICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1OTYsNyBAQCBC
YWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQog
eworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcykKICAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsK
ICAgICByZXR1cm4gKm1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE2
MTQsNyBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAg
ICAgICAgICAgICAgIGlmICghbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFy
Z3VtZW50ID0gbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAg
IE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChibG9jaygwKSktPnZhbHVlW2FyZ3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFh
cmd1bWVudE5vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3Vt
ZW50Tm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpCkBAIC0xNjk4LDYgKzE3ODUsMTMgQEAgYm9v
bCBHcmFwaDo6Y2FuRG9GYXN0U3ByZWFkKE5vZGUqIG5vZGUsIAogICAgIHJldHVybiBhbGxHb29k
OwogfQogCit2b2lkIEdyYXBoOjpjbGVhckNQU0NGR0RhdGEoKQoreworICAgIG1fY3BzTmF0dXJh
bExvb3BzID0gbnVsbHB0cjsKKyAgICBtX2Nwc0RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1f
Y3BzQ0ZHID0gbnVsbHB0cjsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorbmFtZXNwYWNlIFdURiB7
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgU2luZ2xlUm9vdEdyYXBoOworfQorCiBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOwpAQCAtNTYsMTAgKzYwLDE3IEBAIGNsYXNz
IEJhY2t3YXJkc0NGRzsKIGNsYXNzIEJhY2t3YXJkc0RvbWluYXRvcnM7CiBjbGFzcyBDRkc7CiBj
bGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKLWNsYXNzIERvbWluYXRvcnM7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
PiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBGbG93SW5kZXhpbmc7Ci1jbGFzcyBOYXR1cmFs
TG9vcHM7Ci1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nOworCitjbGFzcyBDUFNDRkc7Cit1c2luZyBT
U0FDRkcgPSBDRkc7CisKK3VzaW5nIENQU0RvbWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47
Cit1c2luZyBTU0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcgQ1BTTmF0
dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPENQU0NGRz47Cit1c2luZyBTU0FOYXR1cmFsTG9vcHMg
PSBOYXR1cmFsTG9vcHM8U1NBQ0ZHPjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZsb3dN
YXA7CiAKQEAgLTkwMSw5ICs5MTIsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNEZWJ1Z2dl
ckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsgfQogCi0gICAg
RG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIFByZVBvc3ROdW1iZXJpbmcmIGVu
c3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKLSAgICBOYXR1cmFsTG9vcHMmIGVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgIENQU0RvbWluYXRvcnMmIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBT
U0FEb21pbmF0b3JzJiBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgQ1BTTmF0dXJhbExvb3Bz
JiBlbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKKyAgICBTU0FOYXR1cmFsTG9vcHMmIGVuc3VyZVNT
QU5hdHVyYWxMb29wcygpOwogICAgIEJhY2t3YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7
CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYgZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwog
ICAgIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBlbnN1cmVDb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcygpOwpAQCAtOTE2LDEyICs5MjgsMTUgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNT
Y29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9j
b2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMoKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQogCisgICAgdm9pZCBjbGVhckNQ
U0NGR0RhdGEoKTsKKwogICAgIFZNJiBtX3ZtOwogICAgIFBsYW4mIG1fcGxhbjsKICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAg
IAotICAgIFZlY3RvcjwgUmVmUHRyPEJhc2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVj
dG9yPFJlZlB0cjxCYXNpY0Jsb2NrPiwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxv
Y2sqLCAxPiBtX2VudHJ5cG9pbnRzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGls
ZHJlbjsKIAogICAgIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2Rl
ZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7
CkBAIC05NTYsMTEgKzk3MSwxMSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0Ug
dGhlIEFyaXRoQWRkIGFuZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMg
d29uJ3QgZG8gdGhlIHNpZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4g
bV9hcmd1bWVudHM7CisgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4g
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHM7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1l
YW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQg
d2UndmUgbG9ja2VkIGluLgogICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1h
dHM7Ci0gICAgCisKICAgICBTZWdtZW50ZWRWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhLCAxNj4g
bV92YXJpYWJsZUFjY2Vzc0RhdGE7CiAgICAgU2VnbWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRp
b24sIDg+IG1fYXJndW1lbnRQb3NpdGlvbnM7CiAgICAgQmFnPFRyYW5zaXRpb24+IG1fdHJhbnNp
dGlvbnM7CkBAIC05ODIsMTAgKzk5NywxMiBAQCBwdWJsaWM6CiAgICAgSGFzaFNldDxzdGQ6OnBh
aXI8SlNPYmplY3QqLCBQcm9wZXJ0eU9mZnNldD4+IG1fc2FmZVRvTG9hZDsKICAgICBIYXNoTWFw
PFByb3BlcnR5VHlwZUtleSwgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yPiBtX2luZmVycmVkVHlw
ZXM7CiAgICAgVmVjdG9yPFJlZjxTbmlwcGV0Pj4gbV9kb21KSVRTbmlwcGV0czsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RG9taW5hdG9ycz4gbV9kb21pbmF0b3JzOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxQcmVQb3N0TnVtYmVyaW5nPiBtX3ByZVBvc3ROdW1iZXJpbmc7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPE5hdHVyYWxMb29wcz4gbV9uYXR1cmFsTG9vcHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENG
Rz4gbV9jZmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0RvbWluYXRvcnM+IG1fY3BzRG9taW5h
dG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBRG9taW5hdG9ycz4gbV9zc2FEb21pbmF0b3Jz
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNOYXR1cmFsTG9vcHM+IG1fY3BzTmF0dXJhbExvb3Bz
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FOYXR1cmFsTG9vcHM+IG1fc3NhTmF0dXJhbExvb3Bz
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FDRkc+IG1fc3NhQ0ZHOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDUFNDRkc+IG1fY3BzQ0ZHOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNDRkc+
IG1fYmFja3dhcmRzQ0ZHOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0b3Jz
PiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzPiBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTAwOSw2
ICsxMDI2LDggQEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRlOwog
ICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlvbkhh
bmRsZXJzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJblNTQUNvbnZlcnNpb24geyBmYWxzZSB9
OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRy
eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1
ZXNDYWNoZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw1NCArOTMsNjEgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0b3I8
Tm9kZUFicwogCiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsKLSAg
ICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFTaG91
bGRSZXZpc2l0ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0gICAg
cm9vdC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1cmVD
bG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5jZmFT
dHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50
cygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFy
KCk7Ci0KLSAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFwaC5t
X2Zvcm0gPT0gU1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9y
bWF0c1tpXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ncmFw
aC5tX2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAgICAg
ICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsKKyAg
ICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsK
KyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2Zh
Rm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJl
Q2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisgICAgICAgIGVudHJ5
cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRj
aGVkOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7CisKKyAgICAgICAgICAgIEZsdXNo
Rm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpIHsK
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiBzdXBwb3J0aW5nIG11bHRpcGxlIGVudHJ5
cG9pbnRzIGluIHRoZSBGVEwsIHdlIG5lZWQgdG8gY2hhbmdlCisgICAgICAgICAgICAgICAgLy8g
d2hhdCB3ZSBkbyBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1Mzk2CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0
c1tpXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFsdWVb
aV07CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBmb3Jt
YXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAg
ICAgICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoK
KyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVj
Q2VsbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRK
U1ZhbHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIs
ICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGZv
cm1hdCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAgICAg
ICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAgICAg
cm9vdC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZhbHVl
c0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0lu
ZGV4KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9ja0lu
ZGV4KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7CisgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAg
ICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAgICAg
ICB9CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tz
SW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNv
bnRhaW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlwb2lu
dHMgYWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIEFT
U0VSVChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2aXNp
dCA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAtMzY0
LDcgKzM3MSw3IEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQKICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0udGFy
Z2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQotICAgICAgICAKKwog
ICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RUYWls
Q2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAkocmV2
aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIEpJVENvZGU6OnNocmlua1Rv
Rml0KCkKICAgICBjb21tb24uc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFbnRyeS5zaHJpbmtUb0Zp
dCgpOwogICAgIG9zckV4aXQuc2hyaW5rVG9GaXQoKTsKKyAgICBjYXRjaEVudHJ5cG9pbnRzLnNo
cmlua1RvRml0KCk7CiAgICAgc3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgpOwogICAg
IG1pbmlmaWVkREZHLnByZXBhcmVBbmRTaHJpbmsoKTsKICAgICB2YXJpYWJsZUV2ZW50U3RyZWFt
LnNocmlua1RvRml0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUu
aAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDMyIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCiAgICAgICAgICAg
ICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAgICBDYXRjaEVudHJ5
cG9pbnREYXRhKiBjYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0
ZWNvZGVJbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8Q2F0Y2hF
bnRyeXBvaW50RGF0YSwgdW5zaWduZWQ+KAorICAgICAgICAgICAgY2F0Y2hFbnRyeXBvaW50cywg
Y2F0Y2hFbnRyeXBvaW50cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgICAgICBbXSAo
Y29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSogaXRlbSkgeyByZXR1cm4gaXRlbS0+bV9ieXRlY29k
ZUluZGV4OyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50
cygpCisgICAgeworICAgICAgICBzdGQ6OnNvcnQoY2F0Y2hFbnRyeXBvaW50cy5iZWdpbigpLCBj
YXRjaEVudHJ5cG9pbnRzLmVuZCgpLCBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYSwg
Y29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEubV9i
eXRlY29kZUluZGV4IDwgYi5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0pOworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICAgICAgdW5zaWduZWQgcHJldmlvdXNJbmRleCA9IDA7CisgICAgICAg
IGZvciAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgZW50cnlwb2ludCA6IGNhdGNoRW50cnlw
b2ludHMpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c0luZGV4IDwgZW50cnlwb2ludC5t
X2J5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGVudHJ5cG9pbnQu
bV9ieXRlY29kZUluZGV4OworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIGFw
cGVuZENhdGNoRW50cnlwb2ludCh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBtYWNo
aW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKKyAg
ICB7CisgICAgICAgIGNhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlwb2ludERhdGEg
eyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwgV1RGTW92ZShhcmd1bWVudEZvcm1h
dHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0IE9T
UkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDEwICsxNTgsMTMgQEAgcHJpdmF0ZToKIHB1Ymxp
YzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+
IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVudHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5cG9p
bnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAgICAg
VmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsKICAg
ICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsKICAgICBERkc6
Ok1pbmlmaWVkR3JhcGggbWluaWZpZWRERkc7CisgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hPU1JF
bnRyeUJ1ZmZlcjsKKwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHVpbnQ4X3QgbmV2ZXJFeGVj
dXRlZEVudHJ5IHsgMSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw2ICszNjcs
OCBAQCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvCiAKIHZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGUoKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisK
ICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAgIG1fc3BlY3Vs
YXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CkBAIC00MjYs
NiArNDI4LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgbWFrZUNhdGNoT1NSRW50cnlCdWZmZXIoKTsK
KwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1MSwx
NCArNTU1LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEKIH0K
ICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNC
bG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZl
ciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKyAgICBS
RUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7IC8v
IEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFibGUuCisgICAgbV9qaXRDb2Rl
LT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVm
ZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9CisK
IHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ss
IEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7
CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworCiAg
ICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJlYWNo
YWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNpY0Jsb2NrLmludGVy
c2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwogICAg
IE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShiYXNp
Y0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7Ci0g
ICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJzZWN0
aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBGaXggdGhlIGV4cGVjdGVk
IHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2lsbCBoYXZlIGFuIGV4
cGVjdGVkCkBAIC02NzAsNiArNjgzLDEyIEBAIHZvaWQgSklUQ29tcGlsZXI6OnNldEVuZE9mQ29k
ZSgpCiAgICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbElnbm9yaW5nV2F0Y2hw
b2ludHMoKSk7CiB9CiAKK3ZvaWQgSklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVudHJ5QnVmZmVy
KCkKK3sKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisgICAg
ICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IHZtKCktPnNjcmF0Y2hCdWZmZXJG
b3JTaXplKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkpKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGls
ZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0Y2hF
bnRyeXBvaW50KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5r
QnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAg
ICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAK
QEAgLTI4NCw2ICsyODUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRFeGNlcHRpb25I
YW5kbGluZ09TUkV4aXQoRXhpdEtpbmQsIHVuc2lnbmVkIGV2ZW50U3RyZWFtSW5kZXgsIENvZGVP
cmlnaW4sIEhhbmRsZXJJbmZvKiBleGNlcHRpb25IYW5kbGVyLCBDYWxsU2l0ZUluZGV4LCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QganVtcHNUb0ZhaWwgPSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QoKSk7CiAKKyAgICB2b2lkIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAgICAvLyBU
aGUgZGF0YWZsb3cgZ3JhcGggY3VycmVudGx5IGJlaW5nIGdlbmVyYXRlZC4KICAgICBHcmFwaCYg
bV9ncmFwaDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNl
LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdM
SUNNUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAordXNpbmcgTmF0dXJhbExvb3Ag
PSBTU0FOYXR1cmFsTG9vcDsKKwogc3RydWN0IExvb3BEYXRhIHsKICAgICBMb29wRGF0YSgpCiAg
ICAgICAgIDogcHJlSGVhZGVyKG51bGxwdHIpCkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0g
PT0gU1NBKTsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwot
ICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9v
cHMoKTsKICAgICAgICAgbV9ncmFwaC5lbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygp
OwogCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CkBAIC04Myw3ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBt
X2RhdGEucmVzaXplKG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOworICAgICAg
ICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOwog
ICAgICAgICAKICAgICAgICAgLy8gRmlndXJlIG91dCB0aGUgc2V0IG9mIHRoaW5ncyBlYWNoIGxv
b3Agd3JpdGVzIHRvLCBub3QgaW5jbHVkaW5nIGJsb2NrcyB0aGF0CiAgICAgICAgIC8vIGJlbG9u
ZyB0byBpbm5lciBsb29wcy4gV2UgZml4IHRoaXMgbGF0ZXIuCkBAIC05OCw3ICsxMDAsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrLT5jZmFIYXNWaXNpdGVkKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zdCBOYXR1cmFs
TG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9j
ayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FO
YXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxv
b3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0
YSA9IG1fZGF0YVtsb29wLT5pbmRleCgpXTsKQEAgLTExNiwxNCArMTE4LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gRm9yIGVhY2ggbG9vcDoKICAgICAgICAgLy8gLSBJZGVudGlmeSBpdHMgcHJl
LWhlYWRlci4KICAgICAgICAgLy8gLSBNYWtlIHN1cmUgaXRzIG91dGVyIGxvb3BzIGtub3cgd2hh
dCBpdCBjbG9iYmVycy4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBo
Lm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAg
IGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChs
b29wSW5kZXgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAg
Y29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5sb29w
KGxvb3BJbmRleCk7CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLmlu
ZGV4KCldOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKAotICAgICAgICAgICAgICAg
IGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5p
bm5lck1vc3RPdXRlckxvb3AobG9vcCk7CisgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExv
b3AqIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVy
TG9vcChsb29wKTsKICAgICAgICAgICAgICAgICBvdXRlckxvb3A7Ci0gICAgICAgICAgICAgICAg
b3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpv
dXRlckxvb3ApKQorICAgICAgICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1
cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKICAgICAgICAgICAgICAg
ICBtX2RhdGFbb3V0ZXJMb29wLT5pbmRleCgpXS53cml0ZXMuYWRkQWxsKGRhdGEud3JpdGVzKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgQmFzaWNCbG9jayogaGVhZGVyID0gbG9vcC5oZWFk
ZXIoKTsKQEAgLTEzNyw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGhlYWRlci0+cHJlZGVjZXNzb3JzLnNpemUoKTsgaS0tOykg
ewogICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gaGVhZGVyLT5wcmVk
ZWNlc3NvcnNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCisgICAgICAgICAgICAgICAgaWYgKG1fZ3Jh
cGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgcHJlSGVhZGVyID0g
cHJlZGVjZXNzb3I7CkBAIC0xOTEsNyArMTkzLDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8
Y29uc3QgTmF0dXJhbExvb3AqPiBsb29wU3RhY2s7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZh
bHNlOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblBy
ZU9yZGVyKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFw
aC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNv
bnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJN
b3N0TG9vcE9mKGJsb2NrKTsKICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIApAQCAtMTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGZvciAoCiAgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGN1cnJl
bnQgPSBsb29wOwogICAgICAgICAgICAgICAgIGN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVu
dCkpCisgICAgICAgICAgICAgICAgY3VycmVudCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMt
PmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkpCiAgICAgICAgICAgICAgICAgbG9vcFN0YWNr
LmFwcGVuZChjdXJyZW50KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVtZW1iZXI6
IHRoZSBsb29wIHN0YWNrIGhhcyB0aGUgaW5uZXItbW9zdCBsb29wIGF0IGluZGV4IDAsIHNvIGlm
IHdlIHdhbnQKQEAgLTMxOCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBiZWNhdXNl
IG1vc3QgbG9vcHMgYXJlIHNtYWxsIGFuZCBtb3N0IGJsb2NrcyBiZWxvbmcgdG8gZmV3IGxvb3Bz
LgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJvZHlJbmRleCA9IGxvb3AtPnNpemUoKTsgYm9keUlu
ZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBzdWJCbG9jayA9IGxvb3AtPmF0KGJv
ZHlJbmRleCk7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aGVhZGVy
T2Yoc3ViQmxvY2spOwogICAgICAgICAgICAgaWYgKCFzdWJMb29wKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViUHJlSGVhZGVyID0gbV9kYXRh
W3N1Ykxvb3AtPmluZGV4KCldLnByZUhlYWRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNl
cnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVk
ZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2lu
Y2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVk
ZSAiREZHUGhhc2UuaCIKQEAgLTQ2LDIyICs0Nyw3NyBAQCBwdWJsaWM6CiAKICAgICBib29sIHJ1
bigpCiAgICAgewotICAgICAgICBpZiAoIW1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycykK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gTG9hZFN0b3JlKTsKIAotICAgICAgICBtX2N1cnJl
bnRCbG9ja0xpdmVuZXNzLnJlc2l6ZShtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdFRhaWwu
bnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgICAgIGlmICghbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhh
bmRsZXJzICYmICFtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7
Ci0gICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJh
bE9yZGVyKCkpIHsKLSAgICAgICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrLCBpbnNlcnRpb25TZXQp
OwotICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworICAgICAgICBpZiAo
bV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRC
bG9ja0xpdmVuZXNzLnJlc2l6ZShtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdFRhaWwubnVt
YmVyT2ZMb2NhbHMoKSk7CisKKyAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVC
bG9ja0ZvclRyeUNhdGNoKGJsb2NrLCBpbnNlcnRpb25TZXQpOworICAgICAgICAgICAgICAgIGlu
c2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpKSB7CisgICAgICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7
CisgICAgICAgICAgICAgICAgaGFuZGxlQmxvY2tGb3JTY29wZUZsdXNoKGJsb2NrLCBpbnNlcnRp
b25TZXQpOworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAor
ICAgIGJvb2wgaXNWYWxpZEZsdXNoTG9jYXRpb24oQmFzaWNCbG9jayogc3RhcnRpbmdCbG9jaywg
dW5zaWduZWQgaW5kZXgsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIHsKKyAgICAgICAg
VmVjdG9yPEJhc2ljQmxvY2sqLCA0PiB3b3JrbGlzdDsKKyAgICAgICAgQmxvY2tTZXQgc2VlbjsK
KworICAgICAgICBhdXRvIGFkZFByZWRlY2Vzc29ycyA9IFsmXSAoQmFzaWNCbG9jayogYmxvY2sp
IHsKKyAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBibG9jay0+cHJlZGVjZXNz
b3JzKSB7CisgICAgICAgICAgICAgICAgYm9vbCBpc05ld0VudHJ5ID0gc2Vlbi5hZGQoYmxvY2sp
OworICAgICAgICAgICAgICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICAgICAgICAgICAgICB3
b3JrbGlzdC5hcHBlbmQoYmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIGF1dG8gZmx1c2hJc0RlZmluaXRlbHlJbnZhbGlkID0gWyZdIChCYXNpY0Jsb2NrKiBibG9j
aywgdW5zaWduZWQgaW5kZXgpIHsKKyAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IGZhbHNlOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXg7IGktLTsgKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGJsb2NrLT5hdChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSAmJiBibG9jay0+
YXQoaSktPmxvY2FsKCkgPT0gb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICBhbGxHb29k
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYWxsR29vZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChibG9jay0+cHJlZGVjZXNzb3JzLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByb290IGJsb2NrLiBXZSBw
cm92ZWQgd2UgcmVhY2hlZCBoZXJlLCB0aGVyZWZvcmUgd2UgY2FuJ3QgRmx1c2gsIGFzCisgICAg
ICAgICAgICAgICAgLy8gaXQnbGwgbWFrZSB0aGlzIGxvY2FsIGxpdmUgYXQgdGhlIHN0YXJ0IG9m
IGEgcm9vdCBibG9jaywgd2hpY2ggaXMgaW52YWxpZCBJUi4KKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYWRkUHJlZGVjZXNzb3JzKGJs
b2NrKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAoZmx1c2hJc0RlZmluaXRlbHlJbnZhbGlkKHN0YXJ0aW5nQmxvY2ssIGluZGV4KSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHko
KSkgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgp
OworICAgICAgICAgICAgaWYgKGZsdXNoSXNEZWZpbml0ZWx5SW52YWxpZChibG9jaywgYmxvY2st
PnNpemUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uKENv
ZGVPcmlnaW4gb3JpZ2luKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleFRv
Q2hlY2sgPSBvcmlnaW4uYnl0ZWNvZGVJbmRleDsKQEAgLTg2LDEyICsxNDIsMTIgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBoYW5kbGVCbG9jayhCYXNpY0Jsb2NrKiBi
bG9jaywgSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQpCisgICAgdm9pZCBoYW5kbGVCbG9ja0Zv
clRyeUNhdGNoKEJhc2ljQmxvY2sqIGJsb2NrLCBJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCkK
ICAgICB7CiAgICAgICAgIC8vIEJlY2F1c2UgcHJlY2lzZSBqdW1wIHRhcmdldHMgZW5zdXJlcyB0
aGF0IHRoZSBzdGFydCBvZiBhICJ0cnkiIGJsb2NrIGlzIGl0cwogICAgICAgICAvLyBvd24gYmFz
aWMgYmxvY2ssIHdlIHdpbGwgbmV2ZXIgaGF2ZSB0d28gInRyeSIgc3RhdGVtZW50cyBpbiB0aGUg
c2FtZSBERkcKLSAgICAgICAgLy8gYmFzaWMgYmxvY2suIFRoZXJlZm9yZSwgY2hlY2tpbmcgdGhl
IGZpcnN0IG5vZGUgaW4gdGhlIGJsb2NrIGlzIHN1ZmZpY2llbnQgCi0gICAgICAgIC8vIHRvIGNo
ZWNraW5nIGlmIHdlJ3JlIGluIGEgdHJ5IGJsb2NrLgorICAgICAgICAvLyBiYXNpYyBibG9jayBh
ZnRlciBieXRlY29kZSBwYXJzaW5nLiBUaGVyZWZvcmUsIGNoZWNraW5nIHRoZSBmaXJzdCBub2Rl
IGluCisgICAgICAgIC8vIHRoZSBibG9jayBpcyBzdWZmaWNpZW50IHRvIGNoZWNraW5nIGlmIHdl
J3JlIGluIGEgdHJ5IGJsb2NrLgogICAgICAgICBpZiAoIXdpbGxDYXRjaEV4Y2VwdGlvbihibG9j
ay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEw
MSwyNCArMTU3LDMwIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRp
YWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwo
KS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2Fs
KCkudG9Bcmd1bWVudCgpXTsKKwogICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKICAg
ICAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgICAgICAgICBz
ZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKIAotICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKKyAgICAgICAgICAgICAgICAvL2Jv
b2wgaXNQcmltb3JkaWFsU2V0ID0gKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwpCisgICAgICAgICAg
ICAgICAgLy8gICAgJiYgIWN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChub2RlLT5sb2Nh
bCgpKQorICAgICAgICAgICAgICAgIC8vICAgICYmICFtX2hhc1JlYWNoaW5nRGVmQXRIZWFkW2Js
b2NrXS5vcGVyYW5kKG5vZGUtPmxvY2FsKCkpOworCisgICAgICAgICAgICAgICAgaWYgKChub2Rl
LT5vcCgpID09IFNldExvY2FsIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsK
IAotICAgICAgICAgICAgICAgICAgICBpbnQgc3RhY2tPZmZzZXQgPSBpbmxpbmVDYWxsRnJhbWUg
PyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMDsKKyAgICAgICAgICAgICAgICAgICAg
Ly9pbnQgc3RhY2tPZmZzZXQgPSBpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0IDogMDsKICAgICAgICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwo
KSAmJiBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHx8IChvcGVyYW5kLm9mZnNldCgpID09IHN0YWNrT2Zmc2V0ICsgQ2Fs
bEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkpIHsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tB
Y2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IXZhcmlhYmxlQWNjZXNzRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJs
ZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKGksIFNwZWNOb25lLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGbHVzaCwgbm9kZS0+b3JpZ2luLCBPcEluZm8odmFy
aWFibGVBY2Nlc3NEYXRhKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB8fCBvcGVyYW5kLmlz
QXJndW1lbnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy98fCAob3BlcmFuZC5vZmZz
ZXQoKSA9PSBzdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZEZsdXNoTG9jYXRpb24oYmxvY2ss
IGksIG9wZXJhbmQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJh
bmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFj
Y2Vzc0RhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNz
RGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKGksIFNwZWNOb25lLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKHZh
cmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xMzQsMTQgKzE5NiwxNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwoKSAmJiBtX2N1cnJl
bnRCbG9ja0xpdmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSkgCiAgICAgICAgICAgICAgICAgICAg
IHx8IG9wZXJhbmQuaXNBcmd1bWVudCgpCiAgICAgICAgICAgICAgICAgICAgIHx8IGFsd2F5c0lu
c2VydCkgewotICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGFjY2Vzc0Rh
dGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmICghYWNjZXNzRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vz
c0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpc1ZhbGlkRmx1c2hMb2NhdGlvbihibG9jaywgYmxvY2stPmZpbmRUZXJtaW5hbCgp
LmluZGV4LCBvcGVyYW5kKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nl
c3NEYXRhKiBhY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhY2Nlc3NEYXRhKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3Bl
cmFuZCk7CiAKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVy
YW5kKG9wZXJhbmQpID0gYWNjZXNzRGF0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSA9IGFjY2Vzc0RhdGE7CiAKLSAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoYmxvY2stPnNpemUoKSwgU3Bl
Y05vbmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gsIG9yaWdpbiwgT3BJbmZvKGFj
Y2Vzc0RhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRO
b2RlKGJsb2NrLT5zaXplKCksIFNwZWNOb25lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGbHVzaCwgb3JpZ2luLCBPcEluZm8oYWNjZXNzRGF0YSkpOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgbG9jYWwgPSAwOyBsb2NhbCA8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZMb2NhbHMoKTsgbG9jYWwrKykKQEAgLTE1Miw2ICsyMTYsNDAgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCisgICAgdm9pZCBoYW5kbGVCbG9ja0ZvclNjb3BlRmx1c2goQmFzaWNCbG9j
ayogYmxvY2ssIEluc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0KQorICAgIHsKKyAgICAgICAgT3Bl
cmFuZHM8VmFyaWFibGVBY2Nlc3NEYXRhKj4gY3VycmVudEJsb2NrQWNjZXNzRGF0YShibG9jay0+
dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCksIGJsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZMb2NhbHMoKSwgbnVsbHB0cik7CisgICAgICAgIAorICAgICAgICBBU1NFUlQo
bV9ncmFwaC5uZWVkc1Njb3BlUmVnaXN0ZXIoKSk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBz
Y29wZU9wZXJhbmQgPSBtX2dyYXBoLm1fY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCk7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgeworICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgIGlmICgobm9k
ZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KSAmJiBub2Rl
LT5sb2NhbCgpID09IHNjb3BlT3BlcmFuZCkgeworICAgICAgICAgICAgICAgIC8vYm9vbCBpc1By
aW1vcmRpYWxTZXQgPSAhY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5vZGUtPmxvY2Fs
KCkpICYmICFtX2hhc1JlYWNoaW5nRGVmQXRIZWFkW2Jsb2NrXS5vcGVyYW5kKG5vZGUtPmxvY2Fs
KCkpOworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRmx1c2hMb2NhdGlvbihibG9jaywgaSwg
c2NvcGVPcGVyYW5kKSkgeworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IGFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQobm9kZS0+bG9jYWwo
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYWNjZXNzRGF0YSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEobm9kZS0+bG9jYWwo
KSk7CisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKGksIFNwZWNO
b25lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoLCBub2RlLT5vcmlnaW4sIE9wSW5m
byhhY2Nlc3NEYXRhKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSkKKyAgICAgICAgICAgICAg
ICBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQobm9kZS0+bG9jYWwoKSkgPSBub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc1ZhbGlkRmx1
c2hMb2NhdGlvbihibG9jaywgYmxvY2stPmZpbmRUZXJtaW5hbCgpLmluZGV4LCBzY29wZU9wZXJh
bmQpKSB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGFjY2Vzc0RhdGEgPSBjdXJy
ZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQoc2NvcGVPcGVyYW5kKTsKKyAgICAgICAgICAgIGlm
ICghYWNjZXNzRGF0YSkKKyAgICAgICAgICAgICAgICBhY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVB
Y2Nlc3NEYXRhKHNjb3BlT3BlcmFuZCk7CisKKyAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKGJsb2NrLT5zaXplKCksIFNwZWNOb25lLCAKKyAgICAgICAgICAgICAgICBGbHVzaCwg
YmxvY2stPmF0KGJsb2NrLT5zaXplKCkgLSAxKS0+b3JpZ2luLCBPcEluZm8oYWNjZXNzRGF0YSkp
OworICAgICAgICB9CisgICAgfQorCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBuZXdWYXJpYWJs
ZUFjY2Vzc0RhdGEoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCiAgICAgewogICAgICAgICBBU1NF
UlQoIW9wZXJhbmQuaXNDb25zdGFudCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVI
ZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhl
YWRlcihHcmFwaCYgZ3JhcGgsIEJsb2NrSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQsIEJhc2lj
QmxvY2sqIGJsb2NrKQogeworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWdyYXBoLm1fZW50cnlw
b2ludHMuY29udGFpbnMoYmxvY2spLCAiQW4gZW50cnlwb2ludCBzaG91bGQgbm90IGJlIGluIGEg
bG9vcCIpOworCiAgICAgLy8gRklYTUU6IElmIHdlIHJ1biB0aGlzIHV0aWxpdHkgb24gU1NBIElS
LCB0aGVuIHdlIG1heSBlbmQgdXAgd2l0aCBhIGJpemFycmUgYXJyYW5nZW1lbnQgb2YKICAgICAv
LyBVcHNpbG9ucyBhbmQgUGhpcywgbGlrZToKICAgICAvLwpAQCAtNjksNyArNzEsOCBAQCBCYXNp
Y0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgLy8gSW5zdGVhZCwgd2Ug
dXNlIHRoZSBtYXggb2YgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBsb29wIGJvZHkncyBub24tbG9v
cCBwcmVkZWNlc3NvcnMuCiAgICAgZmxvYXQgZnJlcXVlbmN5ID0gMDsKICAgICBmb3IgKEJhc2lj
QmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycykgewotICAgICAgICBpZiAo
Z3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAg
ICAgQVNTRVJUKGdyYXBoLm1fZm9ybSAhPSBTU0EpOworICAgICAgICBpZiAoZ3JhcGgubV9jcHNE
b21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1heChmcmVxdWVuY3ksIHByZWRlY2Vz
c29yLT5leGVjdXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAzLDcgKzEwNiw3IEBAIEJhc2ljQmxv
Y2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAKICAgICBmb3IgKHVuc2lnbmVk
IHByZWRlY2Vzc29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4IDwgYmxvY2stPnByZWRlY2Vz
c29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAgICAgICBCYXNpY0Jsb2NrKiBw
cmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAg
ICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3Ip
KQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHBy
ZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBibG9jay0+cHJlZGVj
ZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+cHJlZGVjZXNzb3JzLmxhc3QoKTsK
ICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVMYXN0KCk7CkBAIC0xMzAsMTYgKzEz
MywxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9n
cmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExv
b3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBt
X2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBs
b29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwotICAgICAgICAgICAgQmFzaWNC
bG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJ
bmRleCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0t
OykgeworICAgICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1f
Y3BzTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBleGlzdGluZ1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG5lZWRzTmV3
UHJlSGVhZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29y
SW5kZXggPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3Nvcklu
ZGV4LS07KSB7Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29w
LmhlYWRlcigpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKSwgcHJl
ZGVjZXNzb3IpKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0g
bG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5k
ZXgtLTspIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGxvb3Au
aGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleF07CisgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMobG9vcC5oZWFk
ZXIoKS5ub2RlKCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRlcikgewogICAgICAgICAgICAg
ICAgICAgICBleGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTY1LDE0ICsxNjgs
MTQgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gQSBwcmUtaGVhZGVyIGlzIG1vc3QgdXNlZnVs
IGlmIGl0J3MgcG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0ZXJtaW5hbC4gSGVuY2UKICAgICAg
ICAgICAgIC8vIGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhpc3RpbmcgcHJlLWhlYWRlciBkb2Vz
bid0IGFsbG93IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAgICAgICAgICAgICAvLyBvcmlnaW4g
b2YgdGhlIGxvb3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hvdWxkIGNyZWF0ZSBhIG5ldyBwcmUt
aGVhZGVyLgotICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRl
cigpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhl
YWRlciAmJiBsb29wLmhlYWRlcigpLm5vZGUoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKICAgICAg
ICAgICAgICAgICAmJiAhZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1pbmFsKCktPm9yaWdpbi5leGl0
T0spCiAgICAgICAgICAgICAgICAgbmVlZHNOZXdQcmVIZWFkZXIgPSB0cnVlOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjcmVhdGVQcmVIZWFkZXIobV9n
cmFwaCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkpOworICAgICAgICAgICAgY3JlYXRl
UHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpLm5vZGUoKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBtX2luc2VydGlvblNldC5leGVj
dXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaElu
c2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAgfQogCi0gICAgICAgIHRyZWF0
Um9vdEJsb2NrKG1fZ3JhcGguYmxvY2soMCksIGluc2VydGlvblNldCk7Ci0gICAgICAgIGluc2Vy
dGlvblNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkpOworICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgICAgIHRy
ZWF0Um9vdEJsb2NrKGVudHJ5cG9pbnQsIGluc2VydGlvblNldCk7CisgICAgICAgICAgICBpbnNl
cnRpb25TZXQuZXhlY3V0ZShlbnRyeXBvaW50KTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTY3LDcgKzY5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgewog
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBoLm1fYXJn
dW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICBib29s
IGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBpdGVyLT52YWx1ZVtub2RlLT5s
b2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNj
ZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtMTI4LDEyICsxMzYsMTIgQEAgcHVibGljOgog
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+dmFyaWFibGVzQXRUYWls
Lm51bWJlck9mTG9jYWxzKCk7IGkrKykgewogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsKLSAgICAgICAgICAgIFZhcmlhYmxl
QWNjZXNzRGF0YSogYWNjZXNzRGF0YTsKICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bnVsbHB0ciwgaW5pdGlhbEFjY2Vzc05vZGVzLm9wZXJhbmQob3BlcmFuZCktPm9wKCkgPT0gRmx1
c2gpOyAvLyBXZSBzaG91bGQgaGF2ZSBpbnNlcnRlZCBhIEZsdXNoIGJlZm9yZSBhbnkgU2V0TG9j
YWwvU2V0QXJndW1lbnQgZm9yIHRoZSBsb2NhbCB0aGF0IHdlIGFyZSBhbmFseXppbmcgbm93Lgot
ICAgICAgICAgICAgYWNjZXNzRGF0YSA9IGluaXRpYWxBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFu
ZCk7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGFjY2Vzc0RhdGEgPSBpbml0aWFs
QWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBudWxscHRyLCBhY2Nlc3NEYXRhKTsKICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKDAsIFNwZWNOb25lLCAKICAgICAgICAgICAgICAgICBTZXRMb2NhbCwgb3JpZ2luLCBP
cEluZm8oYWNjZXNzRGF0YSksIEVkZ2UodW5kZWZpbmVkKSk7CisgICAgICAgICAgICBhY2Nlc3NE
YXRhLT5tZXJnZVNob3VsZE5ldmVyVW5ib3godHJ1ZSk7IC8vIFdlIGRvbid0IGtub3cgaWYgd2Ug
Y2FuIGV4aXQgaGVyZS4KICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4
NCw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNl
IEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgTG9naWNhbE5vdDoK
ICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3RydWN0dXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCShyZXZpc2lvbiAyMjA4
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8Q0ZHPiBOYXR1cmFsTG9vcDsKLQot
Y2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3BzPENGRz4gewordGVt
cGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RG
OjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5hdHVy
YWxMb29wcyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTmF0
dXJhbExvb3BzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkc+
KCpncmFwaC5tX2NmZywgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpLCB2YWxpZGF0aW9uRW5hYmxl
ZCgpKQorICAgICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdL
aW5kPihncmFwaCksIGVuc3VyZURvbWluYXRvcnNGb3JDRkc8Q0ZHS2luZD4oZ3JhcGgpLCB2YWxp
ZGF0aW9uRW5hYmxlZCgpKQogICAgIHsKICAgICB9CiB9OwogCit1c2luZyBTU0FOYXR1cmFsTG9v
cCA9IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxMb29wID0gV1RG
OjpOYXR1cmFsTG9vcDxDUFNDRkc+OworCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNTd2l0Y2go
KQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG9wKCkg
PT0gU3dpdGNoOwogICAgIH0KQEAgLTEzNzIsNiArMTM3Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpKTsK
ICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxUaHJvdWdoLmJsb2NrOwogICAg
ICAgICB9CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAgICAgICBjYXNlIDA6CiAgICAg
ICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTQxLDYgKzE1NDIsMTggQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQob3AoKSA9PSBJZGVudGl0eVdpdGhQcm9maWxlKTsKICAgICAgICAgcmV0dXJu
IG1fb3BJbmZvLmFzPFNwZWN1bGF0ZWRUeXBlPigpOwogICAgIH0KKworICAgIHVpbnQzMl90IGNh
dGNoT1NSRW50cnlJbmRleCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQob3AoKSA9PSBF
eHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4o
KTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBjYXRjaExvY2FsUHJlZGljdGlvbigpCisg
ICAgeworICAgICAgICBBU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAg
IHJldHVybiBtX29wSW5mbzIuYXM8U3BlY3VsYXRlZFR5cGU+KCk7CisgICAgfQogICAgIAogICAg
IGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQogICAgIHsKQEAgLTE5MzYsNyArMTk0OSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rlci5pc1ZhbGlkKCk7CiAg
ICAgfQotICAgIAorCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpCiAgICAg
ewogICAgICAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBTcGVjaWFsIG5vZGUgZm9y
IE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0IHdlJ3JlIGxvYWRpbmcgYSBs
b2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3JhdGNoIGJ1ZmZlci4gKi9cCiAg
ICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogVGllci11
cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAogICAgIG1hY3JvKENoZWNrVGll
clVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAj
aW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJWTUlubGlu
ZXMuaCIKQEAgLTMzNiw2ICszMzcsNjggQEAgdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0
ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQogCit2b2lkKiBwcmVwYXJlQ2F0Y2hP
U1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KQoreworICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0RGRygpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
UkVMRUFTRV9BU1NFUlQoY29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsK
KyAgICBERkc6OkpJVENvZGUqIGppdENvZGUgPSBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoaml0Q29kZSk7CisKKyAgICBERkc6OkNhdGNoRW50cnlwb2lu
dERhdGEqIGNhdGNoRW50cnlwb2ludCA9IGppdENvZGUtPmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0
ZWNvZGVJbmRleChieXRlY29kZUluZGV4KTsKKyAgICBpZiAoIWNhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICAvLyBUaGlzIGNhbiBiZSBudWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcy4gVGhl
IG1vc3QgY29tbW9uIGlzIHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgdGhpcworICAgICAgICAvLyBw
cm9maWxlX2NhdGNoIGFzIGFuIGVudHJ5cG9pbnQgc2luY2UgaXQgaGFkIG5ldmVyIGV4ZWN1dGVk
LgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBvbmx5IGFs
bG93ZWQgdG8gT1NSIGVudGVyIGlmIHdlJ3ZlIHByb3ZlbiB3ZSBoYXZlIGNvbXBhdGlibGUgYXJn
dW1lbnQgdHlwZXMuCisgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwg
Y2F0Y2hFbnRyeXBvaW50LT5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7ICsrYXJndW1lbnQpIHsK
KyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoYXJndW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3aXRjaCAoY2F0Y2hF
bnRyeXBvaW50LT5tX2FyZ3VtZW50Rm9ybWF0c1thcmd1bWVudF0pIHsKKyAgICAgICAgY2FzZSBE
Rkc6OkZsdXNoZWRJbnQzMjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgREZHOjpGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBERkc6OkZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5p
c0Jvb2xlYW4oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIERGRzo6RGVhZEZsdXNoOgorICAgICAgICAgICAgLy8gVGhp
cyBtZWFucyB0aGUgYXJndW1lbnQgaXMgbm90IGFsaXZlLiBUaGVyZWZvcmUsIGl0J3MgYWxsb3dl
ZCB0byBiZSBhbnkgdHlwZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6
Rmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAvLyBBbiBhcmd1bWVudCBpcyB0cml2aWFsbHkg
YSBKU1ZhbHVlLgorICAgICAgICAgICAgYnJlYWs7IAorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHVuc2lnbmVkIGZyYW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+Y29tbW9uLnJlcXVpcmVk
UmVnaXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIXZt
LmVuc3VyZVN0YWNrQ2FwYWNpdHlGb3IoJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGZyYW1lU2l6ZUZvckNoZWNrKS5vZmZzZXQoKV0pKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBBU1NFUlQoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpXS51Lm9wY29k
ZSkgPT0gb3BfcHJvZmlsZV9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4
ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsg
MV0udS5wb2ludGVyKTsKKyAgICBKU1ZhbHVlKiBkYXRhQnVmZmVyID0gcmVpbnRlcnByZXRfY2Fz
dDxKU1ZhbHVlKj4oaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsK
KyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rl
cihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBkYXRhQnVmZmVyW2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJh
bmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIHJldHVybiBq
aXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNhdGNoRW50cnlwb2ludC0+bV9tYWNo
aW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNsdWRlICJERkdGbHVzaEZv
cm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5o
PgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0T1NSRW50cnlEYXRhQnl0
ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9ieXRlY29kZUluZGV4OwogfQogCitz
dHJ1Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAgdW5zaWduZWQgbV9ieXRlY29kZUluZGV4
OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAgLy8gV2UgdXNlIHRoaXMg
d2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRoZSBhcmd1bWVudHMKKyAg
ICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVyaW5nIGF0IGEgY2F0Y2gg
YmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9ybWF0czsKK307CisK
IC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhhdCB0aGUgT1NSIGVudHJ5
IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRoaXMgcmV0dXJucyBudWxs
LCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBpcyByZXR1cm5lZCwgd2Ug
Y2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRoZSBQQyB0byBqdW1wIHRv
Lgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQqIHByZXBhcmVPU1JFbnRy
eShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1cm4gMDsgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJE
RkdDRkcuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0xvb3BQcmVIZWFk
ZXJDcmVhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKQEAgLTU0LDcgKzU1LDcg
QEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChieXRlY29kZUluZGV4ICE9IFVJTlRf
TUFYKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5lZWRlZCBieSBjcmVhdGVQcmVIZWFkZXIoKS4K
LSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5z
dXJlQ1BTRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgQ29kZUJsb2NrKiBiYXNlbGlu
ZSA9IG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrOwogICAgICAgICAKQEAgLTExMiwxNiArMTEzLDE3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVyZS4KICAgICAgICAgb3Jp
Z2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAgICAgICAgVmVjdG9yPE5v
ZGUqLCA4PiBuZXdBcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZp
bmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1bWVudCA9
IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkgewog
ICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFyZ3Vt
ZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAgICAg
ICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVuIGlm
IGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5tX2Fy
Z3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IG5ld0FyZ3VtZW50
c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gbmV3
Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwgU2V0
QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1l
bnRdID0gbm9kZTsKKyAgICAgICAgICAgIG5ld0FyZ3VtZW50c1thcmd1bWVudF0gPSBub2RlOwog
ICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2VsaW5l
LT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDggKzE0MSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGluc2VydGlv
blNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
KTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6ZSgp
ID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0gPSBuZXdSb290OworICAg
ICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFyKCk7CisgICAgICAgIG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3QsIG5ld0FyZ3VtZW50cyk7
CisKKyAgICAgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZHPiht
X2dyYXBoKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAgICAg
IG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIw
ODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDcgKzcyNyw3IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9n
cmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAg
IHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZh
aWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9
IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpD
b21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcg
dmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9y
dHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFz
IGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAg
IGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMo
KTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVu
c3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygp
OwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjA4NjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1By
ZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZH
QmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1
ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJl
UG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9t
YXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9j
a1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwot
ICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVt
YmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgp
KSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3Jk
ZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0
UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwot
ICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nl
c3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAg
ICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6
On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQot
bmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNo
IChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3
YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAg
IG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9u
IDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tN
YXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtp
bmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsK
LQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJl
UG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0K
LSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJu
IG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFz
aWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7
IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJv
b2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0
bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNC
bG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0
cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0
RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9j
ayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9t
KTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYg
dGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUK
LSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vy
c2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2Nr
KiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRPZih0bywg
ZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBCYWNrRWRn
ZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJp
dmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1i
ZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tN
YXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQot
bmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xv
Y2spOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRo
ZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAg
ICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3
aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1
ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8
c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAg
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJv
ZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Qo
CisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkt
PnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MjUsNiArNzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Y2F0Y2hMb2NhbFByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgUmVzb2x2ZVNjb3BlRm9ySG9p
c3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICAgICAgY2FzZSBHZXREeW5hbWljVmFyOiB7CiAgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAko
cmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFj
a1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2dy
YXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0
b3JzKCk7CiAgICAgICAgIAogICAgICAgICBTU0FDYWxjdWxhdG9yIHNzYUNhbGN1bGF0b3IobV9n
cmFwaCk7CiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHJl
dmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3Vs
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEyICs5NSwxMiBAQCBTU0FDYWxjdWxhdG9y
OjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0RlCiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2Fs
Y3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZihCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUq
IHZhcmlhYmxlKQogewotICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fZG9t
aW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKKyAgICByZXR1cm4gcmVhY2hpbmdEZWZB
dFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CiB9
CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZBdFRhaWwo
QmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICBmb3IgKDsgYmxv
Y2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7CisgICAgZm9y
ICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkg
ewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBtX2RhdGFbYmxvY2tdLm1fZGVmcy5nZXQodmFyaWFi
bGUpKQogICAgICAgICAgICAgcmV0dXJuIGRlZjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkocmV2aXNpb24gMjIwODYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
aGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZvaWQgY29tcHV0ZVBoaXMoY29uc3QgUGhpSW5zZXJ0
aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwg
bnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRvcnMpOworICAgICAgICBERkdfQVNTRVJUKG1fZ3Jh
cGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzKTsKICAgICAgICAgCiAgICAgICAg
IGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDogbV92YXJpYWJsZXMpIHsKLSAgICAgICAgICAgIG1f
Z3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNl
RnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5mb3JBbGxC
bG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgICAg
ICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZzLAogICAgICAgICAgICAgICAgIFsmXSAoQmFzaWNC
bG9jayogYmxvY2spIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBwaGlOb2Rl
ID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsKICAgICAgICAgCiAgICAg
ICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVudHMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVE
b21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguY2xlYXJDUFNDRkdEYXRhKCk7CisgICAgICAg
IG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgaWYgKHZl
cmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9yZSBTU0EgdHJhbnNmb3Jt
YXRpb246XG4iKTsKQEAgLTExMCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIC8vIERlY2lkZSB3aGVyZSBQaGlzIGFyZSB0byBiZSBpbnNlcnRlZC4gVGhp
cyBjcmVhdGVzIHRoZSBQaGkncyBidXQgZG9lc24ndCBpbnNlcnQgdGhlbQotICAgICAgICAvLyB5
ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgdGhlbSBiZWNhdXNlIFNTQUNh
bGN1bGF0b3IgaXMgc3VjaCBhIGJyby4KKyAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtu
b3cgd2hlcmUgdG8gaW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNTQUNhbGN1bGF0b3IgdGVsbHMgdXMg
dG8uCiAgICAgICAgIG1fY2FsY3VsYXRvci5jb21wdXRlUGhpcygKICAgICAgICAgICAgIFsmXSAo
U1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHNzYVZhcmlhYmxlLCBCYXNpY0Jsb2NrKiBibG9jaykg
LT4gTm9kZSogewogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUg
PSBtX3ZhcmlhYmxlRm9yU1NBSW5kZXhbc3NhVmFyaWFibGUtPmluZGV4KCldOwpAQCAtMzgxLDE4
ICszODIsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgYmxvY2stPnZhbHVlc0F0SGVhZC5jbGVh
cigpOwogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91bmlxdWU8QmFzaWNCbG9j
azo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtX2dyYXBo
Lm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKSk7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBpLS07
KSB7CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4g
REZHIFNTQToKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTM5NgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMu
c2l6ZSgpID09IDEpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOworICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShhcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAg
ICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAKLSAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7
CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KGFyZ3VtZW50
c1tpXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5vZGUpOwog
ICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRhKCktPmZvcm1hdDsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0c1tpXSA9IGZv
cm1hdDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNv
cmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBl
eGl0IHByb2ZpbGluZy4KKyAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29y
ZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4
aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLm1fZm9y
bSA9IFNTQTsKQEAgLTQxNiw3ICs0MjEsMTIgQEAgcHJpdmF0ZToKIAogYm9vbCBwZXJmb3JtU1NB
Q29udmVyc2lvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPFNTQUNvbnZl
cnNpb25QaGFzZT4oZ3JhcGgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFncmFwaC5tX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uID0gdHJ1ZTsKKyAgICBi
b29sIHJlc3VsdCA9IHJ1blBoYXNlPFNTQUNvbnZlcnNpb25QaGFzZT4oZ3JhcGgpOworICAgIFJF
TEVBU0VfQVNTRVJUKGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJ
blNTQUNvbnZlcnNpb24gPSBmYWxzZTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUs
NyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0T1NS
RW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTYzNyw2ICs1NjM3LDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgdW5yZWFjaGFibGUobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRhZyh0aGlzKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHBheWxvYWQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0
ZW1wLmdwcigpOworICAgICAgICBHUFJSZWcgdGFnR1BSID0gdGFnLmdwcigpOworICAgICAgICBH
UFJSZWcgcGF5bG9hZEdQUiA9IHBheWxvYWQuZ3ByKCk7CisKKyAgICAgICAgSlNWYWx1ZSogcHRy
ID0gJnJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KG1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JF
bnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07Cisg
ICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBH
UFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIs
IFRhZ09mZnNldCksIHRhZ0dQUik7CisgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3ModGVtcEdQUiwgUGF5bG9hZE9mZnNldCksIHBheWxvYWRHUFIpOworICAgICAgICBq
c1ZhbHVlUmVzdWx0KHRhZ0dQUiwgcGF5bG9hZEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2Ug
VXBzaWxvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk5Nyw2
ICs1OTk3LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZUNoZWNrU3ViQ2xhc3Mobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAg
Y2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmcmVpbnRl
cnByZXRfY2FzdDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVy
LT5kYXRhQnVmZmVyKCkpW25vZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIo
KTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocHRyKSwg
dGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVt
cEdQUiksIHRlbXBHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHRlbXBHUFIsIG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoRlRMX0pJVCkgICAgICAgIAogICAg
IGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
Y2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApAQCAtNjA4NSw2ICs2MDk1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCiAjZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICBjYXNlIENo
ZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZp
c2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5NCw2ICsxNjk0LDEzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICBtX2ppdC5hZGRQ
dHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgoKS5zdGFja1BvaW50ZXJP
ZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
IENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBtX2ppdC5lbWl0
U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNr
UmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2pp
dC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAgICB9CisKICAgICBt
X3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwogICAgIAogICAg
IG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBAIC0xNzg4LDggKzE3OTUsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMoCiAgICAgQVNTRVJUKCFt
X2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwg
Q29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2ppdC5ncmFw
aCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQuZ3JhcGgoKS5ibG9jaygwKSkt
PnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29kZUJsb2NrKCktPm51bVBh
cmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBtX2ppdC5ncmFwaCgpLm1f
YXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAg
ICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudCBpcyBkZWFkLiBXZSBk
b24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMTg3MywxMiArMTg4MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjcmVhdGVP
U1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJs
b2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50
cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAgICAgIC8vIGhlcmUgaWYgbmVl
ZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClb
YmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NSVGFyZ2V0IHx8IGJsb2NrLT5p
c0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhh
dmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQorICAgICAgICAgICAg
Ly8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZCht
X2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICB9CiAgICAgfQogfQogCkBA
IC0xODg5LDEwICsxODk2LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtPU1JFbnRyaWVz
KExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2ppdC5ncmFwaCgpLmJsb2NrKGJs
b2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAgICBpZiAoIWJsb2NrLT5pc09T
UlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQogICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JFbnRyeUhlYWRz
W29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBpZiAoYmxvY2stPmlzQ2F0
Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2ppdC5ncmFwaCgpLm1f
ZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgYXV0byYgYXJn
dW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICBWZWN0b3I8Rmx1c2hGb3Jt
YXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOworICAgICAgICAgICAgZm9y
IChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3RvcikgeworICAgICAgICAgICAgICAg
IGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmbHVz
aEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQo
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNoZWRJbnQz
MiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVk
Qm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAgICAgICAg
ICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQpOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMu
dW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50
cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNPU1JUYXJnZXQpOworICAg
ICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3Ny
RW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0KICAgICB9CisKKyAgICBtX2pp
dC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygpOworCiAgICAgQVNTRVJU
KG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7CiAgICAgCiAgICAgaWYg
KHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3Vu
dEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1
bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAgICAgLy8g
RXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBiYXNlZCBvbiBsb29wIGRlcHRo
LgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tz
KCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAg
YmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5s
b29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3VudCA9IHBv
dygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJyYW5jaCB3ZWlnaHRzIGJhc2Vk
IG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUgY29ycmVjdC4gSXQnbGwKQEAg
LTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFwcGx5Q291bnRzKGRhdGEt
PmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsOCBAQCBzdGF0aWMgRnVu
Y3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0dXJuIGZ0bFdoaXRlbGlzdDsK
IH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9vcDsKKwogY2xhc3MgVGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJsaWM6CiAgICAgVGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04MSw4ICs4Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvRlRMKCkpCiAgICAgICAgICAg
ICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguZW5z
dXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzID0g
Km1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJh
bExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzID0gKm1fZ3Jh
cGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExvb3Aq
LCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVpbGROYXR1cmFsTG9vcFRvTG9v
cEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBMb29w
SGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4Miw3ICsxODQsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBIYXNoTWFwPGNvbnN0IE5h
dHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKGNvbnN0
IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hNYXA8Y29uc3QgTmF0dXJhbExv
b3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAoY29uc3QgQ1BTTmF0
dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAgICBIYXNoTWFwPGNvbnN0IE5h
dHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9vcEhpbnQ7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDEw
ICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZXItPnZhbHVl
Lm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50
bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRz
IGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFibG9ja0luZGV4
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRv
aW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBhbiBlbnRyeXBvaW50LgorICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJs
b2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBub2RlLT5v
cmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9yaWdpbi5leGl0T0sp
OwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZ2V0TG9j
YWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdldExvY2FsLCBvcmlnaW4s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNp
b24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIE5C
LiBUaGlzIGNvZGUgaXMgbm90IHdyaXR0ZW4gZm9yIHBlcmZvcm1hbmNlLCBzaW5jZSBpdCBpcyBu
b3QgaW50ZW5kZWQgdG8gcnVuCiAgICAgICAgIC8vIGluIHJlbGVhc2UgYnVpbGRzLgogCi0gICAg
ICAgIC8vIFZhbGlkYXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxlcyBhdCB0aGUgaGVhZCBvZiB0
aGUgcm9vdCBibG9jayBhcmUgZGVhZC4KLSAgICAgICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3Jh
cGguYmxvY2soMCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByb290LT52YXJp
YWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAgICAgICAgVl9FUVVBTCgo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIHJvb3QpLCBzdGF0aWNfY2FzdDxOb2RlKj4oMCks
IHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChpKSk7CisgICAgICAgIFZBTElEQVRFKChtX2dy
YXBoLmJsb2NrKDApKSwgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKG1fZ3JhcGguYmxv
Y2soMCkpKTsKKworICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2YXJpYWJsZXMg
YXQgdGhlIGhlYWQgb2YgYWxsIGVudHJ5cG9pbnRzIGFyZSBkZWFkLgorICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQu
bnVtYmVyT2ZMb2NhbHMoKTsgKytpKQorICAgICAgICAgICAgICAgIFZfRVFVQUwoKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGkpLCBlbnRyeXBvaW50KSwgc3RhdGljX2Nhc3Q8Tm9kZSo+KG51bGxw
dHIpLCBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkpOworICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICAvLyBWYWxpZGF0ZSByZWYgY291bnRzIGFuZCB1c2VzLgogICAgICAg
ICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51
bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMaW5rLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCB2b2lkIGxpbmso
U3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksCiAgICAg
ICAgICAgICB0b0NTdHJpbmcoIkdlbmVyYXRlZCBGVEwgSklUIGNvZGUgZm9yICIsIENvZGVCbG9j
a1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24g
Y291bnQgPSAiLCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiOlxuIikp
OwogICAgICAgICAKLSAgICAgICAgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBn
cmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBRG9taW5h
dG9ycygpOworICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAg
CiAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lv
biAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgbmFtZSA9ICJqc0JvZHkiOwogICAgICAgICAKLSAgICAgICAgbV9n
cmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5h
dG9ycygpOwogCiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJGdW5jdGlvbiByZWFkeSwgYmVnaW5uaW5nIGxvd2VyaW5nLlxuIik7
CkBAIC0yNjYsOCArMjY2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIG1fbm9kZSA9
IG51bGxwdHI7CiAgICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBD
b2RlT3JpZ2luKDApLCB0cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0t
OykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Cisg
ICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbV9vdXQu
c2V0T3JpZ2luKG5vZGUpOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIApAQCAtNDQzLDcgKzQ0
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIHRhcmdldCA9IG1f
Z3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIXRhcmdldCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9y
cy0+ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CisgICAgICAgICAgICBpZiAobV9n
cmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgewog
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkJsb2NrICIsICp0YXJnZXQsICIgd2lsbCBiYWlsIGFsc28u
XG4iKTsKICAgICAgICAgICAgICAgICB0YXJnZXQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAg
LTE0NDI3LDcgKzE0NDI4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9ncmFwaC5tX2RvbWlu
YXRvcnMtPmRvbWluYXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hpZ2hCbG9jaykpCisgICAgICAgIGlm
ICghbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hp
Z2hCbG9jaykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDIyMDg2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc3LDYgKzI3Nyw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3RhaWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50cykKICAgICAgICAg
REVGSU5FX09QKG9wX2NvbnN0cnVjdF92YXJhcmdzKQogICAgICAgICBERUZJTkVfT1Aob3BfY2F0
Y2gpCisgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX2NhdGNoKQogICAgICAgICBERUZJTkVf
T1Aob3BfY29uc3RydWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX3RoaXMpCiAgICAg
ICAgIERFRklORV9PUChvcF90b190aGlzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShy
ZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzYsNiArNDc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2NvbnN0cnVjdF92YXJhcmdzKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3BfcHJvZmlsZV9jYXRjaChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY29u
c3RydWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jcmVhdGVfdGhpcyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9fdGhpcyhJbnN0cnVjdGlvbiop
OwpAQCAtNzk2LDYgKzc5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90
LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJh
dGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9F
SkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDYgKzQ2MywxMyBA
QCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGNh
bGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3Bl
cmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7Cisg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAg
dXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsK
K30KKwogI2lmIFVTRShKU1ZBTFVFNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEsIGludDMyX3QgYXJnMiwgaW50MzJfdCBhcmczKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTM3LDYgKzE1MzcsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdW5yZWFjaGFibGUoSW5zdHJ1Y3Rp
bwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3Byb2Zp
bGVfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICAvLyBGSVhN
RTogY29uc2lkZXIgaW5saW5lIGNhY2hpbmcgdGhlIHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5
LCBpbmNsdWRpbmcKKyAgICAvLyBhcmd1bWVudCB0eXBlIHByb29mcywgc3RvcmluZyBsb2NhbHMg
dG8gdGhlIGJ1ZmZlciwgZXRjCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTU5OAorCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRl
ckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJh
bmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVT
YXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOworICAgIHNraXBPU1JFbnRyeS5saW5r
KHRoaXMpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51LnBvaW50ZXIpOworICAg
ICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxl
KSB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MocmVn
VDApOworI2Vsc2UKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MocmVnVDEsIHJlZ1QwKTsK
KyNlbmRpZgorICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3Bl
cmFuZCwgcmVncyk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCZwcm9maWxl
Lm1fcHJvZmlsZSk7CisgICAgICAgIH0pOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTE1LDYg
KzE1MTUsMTkgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAg
IENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJP
U1IgZmFpbGVkIikpOwogICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CiB9CisKK2NoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSogZXhl
YywgdWludDMyX3QgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwor
ICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIENvZGVC
bG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVwbGFjZW1l
bnQoKTsKKyAgICBpZiAob3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2Rl
OjpERkdKSVQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNoYXIqPihERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxh
Y2VtZW50LCBieXRlY29kZUluZGV4KSk7Cit9CisKICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRBcnJheVZhbHVlLCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2
aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRf
T1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJ
VE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBj
aGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2
NF90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0
aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91YmxlLCBpbnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJ
VF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VVaSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwog
dHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKEpJVF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0
aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5rSW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBs
KiAoSklUX09QRVJBVElPTiAqVF9KSVRPcGVyYXRpb25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJp
bmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcqIChKSVRfT1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9u
X0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKQEAgLTM5Nyw2ICszOTgsNyBAQCB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShE
RkdfSklUKQogU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1p
emUoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9J
TlRFUk5BTDsKICNlbmRpZgogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2Vs
bCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MzgsNiArMTYzOCwxOCBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5E
KCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
KiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNb
MV0udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1sw
XSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5q
c1ZhbHVlKCkpOworICAgIH0pOworCisgICAgTExJTlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2
bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0g
dm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3
IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHUKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hh
YmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCk7CitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpOwogZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQ
cm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKICNpZiAhRU5BQkxFKEpJVCkKIGV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3N0YWNrX2NoZWNrX2F0X3ZtX2VudHJ5KFZNKiwg
UmVnaXN0ZXIqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMjA4NjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdv
cmtpbmcgY29weSkKQEAgLTE4ODEsNiArMTg4MSwxMSBAQCBfbGxpbnRfb3BfcmVzb2x2ZV9zY29w
ZV9mb3JfaG9pc3RpbmdfZnVuCiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfcmVz
b2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwpCiAgICAgZGlzcGF0Y2go
Y29uc3RleHByIG9wX3Jlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFs
X2xlbmd0aCkKIAorX2xsaW50X29wX3Byb2ZpbGVfY2F0Y2g6CisgICAgY2FsbE9wY29kZVNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKKyAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfcHJvZmlsZV9jYXRjaF9sZW5ndGgpCisKKwogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0
IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAj
IFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0
aGVyIEpJVC4gV2UgYXNzZXJ0CiAjIGFzIG11Y2guCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQs
NyBAQAogCQk3MEVDQTYwQjFCMDI0MjY4MDA0NDk3MzkgLyogU3ltYm9sSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwRUNBNjBDMUIwMjQyNjgwMDQ0OTczOSAvKiBVbmlxdWVkU3RyaW5nSW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVkU3RyaW5nSW1wbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTM2RDZBOTFDOTlGOEFFMDAwRDFBRUQg
LyogU21hbGxQdHJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU21hbGxQ
dHJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzk1MjEyMDIxRjQyNTg4ODAw
QkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaW5nbGVSb290R3JhcGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FG
RUM2QUUxRUIyMkFDNjAwREFERTM2IC8qIFVVSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVVJRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZCMDFF
QjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBVVUlELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MzRjcyMzkx
RDc4ODExOTAwNjc0RTI2IC8qIEJyaWdhbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnJpZ2FuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM4LDYgKzkz
OSw3IEBACiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICov
LAogCQkJCTE0Njk0MTk4MTZFQUIwNDEwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8s
CiAJCQkJMTQ2OTQxOTUxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLywK
KwkJCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmggKi8sCiAJ
CQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3MjlCIC8qIFNjb3BlLmggKi8sCiAJCQkJMEZFQzg0QjAx
QkRBQ0QzOTAwODBGRjc0IC8qIFNjb3BlZExhbWJkYS5oICovLAogCQkJCTBGNjZCMjg0MURDOTdC
QUIwMDRBMUQzRiAvKiBTZWNvbmRzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JhY2t3
YXJkc0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGgu
aAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1NpbmdsZVJvb3RHcmFwaC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zOCwxMzMgKzM5LDkg
QEAgY2xhc3MgQmFja3dhcmRzR3JhcGggewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3
YXJkc0dyYXBoKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICAv
LyBXZSB1c2UgIiNlbmQiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNy
ZWF0ZWQuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNlbmQi
OyB9OwotCi0gICAgY2xhc3MgTm9kZSB7Ci0gICAgcHVibGljOgotICAgICAgICBOb2RlKHR5cGVu
YW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBlbmFtZSBHcmFwaDo6Tm9kZSgpKQotICAgICAgICAg
ICAgOiBtX25vZGUobm9kZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGlj
IE5vZGUgcm9vdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5vZGUgcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0Lm1fbm9kZSA9IDA7Ci0gICAgICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0
cnVlOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBOb2RlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG1fbm9kZSA9PSBvdGhlci5tX25vZGUKLSAgICAgICAgICAgICAgICAmJiBt
X2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBOb2RlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IE5vZGUoKTsgfQotCi0gICAg
ICAgIGJvb2wgaXNSb290KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
aXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5h
bWUgR3JhcGg6Ok5vZGUgbV9ub2RlOwotICAgICAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsK
LSAgICB9OwotCi0gICAgY2xhc3MgU2V0IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNldCgpCi0g
ICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBhZGQoY29uc3QgTm9k
ZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgdHJ1ZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gbV9zZXQuYWRkKG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja0FuZFNldChtX2hh
c1Jvb3QsIGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5yZW1vdmUobm9kZS5ub2Rl
KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlJiBub2Rl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbV9oYXNSb290OwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LmNvbnRhaW5z
KG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9oYXNSb290KQotICAg
ICAgICAgICAgICAgIG91dC5wcmludChyb290TmFtZSgpLCAiICIpOwotICAgICAgICAgICAgb3V0
LnByaW50KG1fc2V0KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAg
ICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OwotICAgICAgICBib29sIG1faGFzUm9vdCB7IGZh
bHNlIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgY2xhc3MgTWFw
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE1hcChHcmFwaCYgZ3JhcGgpCi0gICAgICAgICAgICA6
IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQotICAgICAgICB7Ci0gICAgICAgIH0K
LQotICAgICAgICB2b2lkIGNsZWFyKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9tYXAuY2xl
YXIoKTsKLSAgICAgICAgICAgIG1fcm9vdCA9IFQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgMTsgfQotCi0gICAgICAg
IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IWluZGV4KQotICAgICAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7Ci0gICAgICAgICAgICByZXR1
cm4gbV9tYXBbaW5kZXggLSAxXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFQmIG9wZXJh
dG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
KCpjb25zdF9jYXN0PE1hcCo+KHRoaXMpKVtpbmRleF07Ci0gICAgICAgIH0KLQotICAgICAgICBU
JiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7Ci0gICAgICAg
ICAgICByZXR1cm4gbV9tYXBbbm9kZS5ub2RlKCldOwotICAgICAgICB9Ci0KLSAgICAgICAgY29u
c3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PE1hcCo+KHRoaXMpKVtub2RlXTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6dGVtcGxh
dGUgTWFwPFQ+IG1fbWFwOwotICAgICAgICBUIG1fcm9vdDsKLSAgICB9OwotCisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmds
ZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1h
cCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OwogICAgIHR5cGVkZWYgVmVjdG9yPE5vZGUsIDQ+
IExpc3Q7CiAKICAgICBCYWNrd2FyZHNHcmFwaChHcmFwaCYgZ3JhcGgpCkBAIC0yNTUsNyArMTMy
LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICBvdXQucHJpbnQo
IjxudWxsPiIpOwogICAgICAgICBlbHNlIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAg
b3V0LnByaW50KHJvb3ROYW1lKCkpOworICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3RO
YW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBvdXQucHJpbnQobV9ncmFwaC5kdW1w
KG5vZGUubm9kZSgpKSk7CiAgICAgICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
RG9taW5hdG9ycy5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0
b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBX
VEYgewogdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CiBjbGFzcyBEb21pbmF0b3JzIHsKIHB1Ymxp
YzoKKyAgICB1c2luZyBMaXN0ID0gdHlwZW5hbWUgR3JhcGg6Okxpc3Q7CisKICAgICBEb21pbmF0
b3JzKEdyYXBoJiBncmFwaCwgYm9vbCBzZWxmQ2hlY2sgPSBmYWxzZSkKICAgICAgICAgOiBtX2dy
YXBoKGdyYXBoKQogICAgICAgICAsIG1fZGF0YShncmFwaC50ZW1wbGF0ZSBuZXdNYXA8QmxvY2tE
YXRhPigpKQpAQCAtNDcsOCArNDksNiBAQCBwdWJsaWM6CiAgICAgICAgIExlbmdhdWVyVGFyamFu
IGxlbmdhdWVyVGFyamFuKG1fZ3JhcGgpOwogICAgICAgICBsZW5nYXVlclRhcmphbi5jb21wdXRl
KCk7CiAKLSAgICAgICAgbV9kYXRhID0gbV9ncmFwaC50ZW1wbGF0ZSBuZXdNYXA8QmxvY2tEYXRh
PigpOwotICAgIAogICAgICAgICAvLyBGcm9tIGhlcmUgd2Ugd2FudCB0byBidWlsZCBhIHNwYW5u
aW5nIHRyZWUgd2l0aCBib3RoIHVwd2FyZCBhbmQgZG93bndhcmQgbGlua3MgYW5kIHdlIHdhbnQK
ICAgICAgICAgLy8gdG8gZG8gYSBzZWFyY2ggb3ZlciB0aGlzIHRyZWUgdG8gY29tcHV0ZSBwcmUg
YW5kIHBvc3QgbnVtYmVycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBkb21pbmFuY2UKICAgICAgICAg
Ly8gdGVzdHMuCkBAIC0yNDAsNyArMjQwLDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRl
ZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9t
aW5hbmNlRnJvbnRpZXJPZihjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogICAgIHsKICAgICAgICAgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZy
b250aWVyT2YoCiAgICAgICAgICAgICBmcm9tLApAQCAtMjU1LDcgKzI1NSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBVc2VmdWwgZm9yIGNvbXB1dGluZyBwcnVuZWQgU1NBIGZvcm0uCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKAotICAgICAgICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlz
dCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICAgICAgY29uc3QgTGlzdCYgZnJv
bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpTZXQgc2V0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRp
ZXJPZkltcGwoCkBAIC0yNjcsNyArMjY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgfSk7CiAg
ICAgfQogICAgIAotICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgaXRlcmF0ZWREb21pbmFuY2VGcm9u
dGllck9mKGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tKSBjb25zdAorICAgIHR5cGVu
YW1lIEdyYXBoOjpTZXQgaXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3QmIGZy
b20pIGNvbnN0CiAgICAgewogICAgICAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IHJlc3VsdDsKICAg
ICAgICAgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKApAQCAt
NzEyLDkgKzcxMiw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KICAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9m
SW1wbCgKLSAgICAgICAgY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20sIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CisgICAgICAgIGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgewotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6TGlz
dCB3b3JrbGlzdCA9IGZyb207CisgICAgICAgIExpc3Qgd29ya2xpc3QgPSBmcm9tOwogICAgICAg
ICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdHlwZW5hbWUgR3Jh
cGg6Ok5vZGUgYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICAgICAgZm9yQWxs
QmxvY2tzSW5Eb21pbmFuY2VGcm9udGllck9mSW1wbCgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Np
bmdsZVJvb3RHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RH
cmFwaC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisj
ZGVmaW5lIFdURl9TaW5nbGVSb290R3JhcGhfaAorCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KKyNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGhO
b2RlIHsKK3B1YmxpYzoKKyAgICAvLyBXZSB1c2UgIiNyb290IiB0byByZWZlciB0byB0aGUgc3lu
dGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgorICAgIHN0YXRpYyBjb25zdCBjaGFyKiByb290
TmFtZSgpIHsgcmV0dXJuICIjcm9vdCI7IH07CisKKyAgICBTaW5nbGVSb290R3JhcGhOb2RlKHR5
cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBlbmFtZSBHcmFwaDo6Tm9kZSgpKQorICAgICAg
ICA6IG1fbm9kZShub2RlKQorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgU2luZ2xlUm9vdEdy
YXBoTm9kZSByb290KCkKKyAgICB7CisgICAgICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUgcmVzdWx0
OworICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKKyAgICAgICAgcmVzdWx0Lm1faXNSb290ID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQorICAgICAgICAgICAgJiYgbV9pc1Jvb3Qg
PT0gb3RoZXIubV9pc1Jvb3Q7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNp
bmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAqdGhpcyAhPSBTaW5nbGVSb290R3JhcGhOb2RlKCk7IH0KKworICAgIGJv
b2wgaXNSb290KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lzUm9vdDsKKyAgICB9
CisKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbV9pc1Jvb3QpOworICAgICAgICByZXR1cm4gbV9ub2RlOworICAgIH0KKworcHJp
dmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7CisgICAgYm9vbCBtX2lzUm9v
dCB7IGZhbHNlIH07Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5n
bGVSb290R3JhcGhTZXQgeworICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdy
YXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290R3JhcGhTZXQoKSA9IGRlZmF1bHQ7CisgICAg
CisgICAgYm9vbCBhZGQoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2Rl
LmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgdHJ1
ZSk7CisgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOworICAgIH0KKworICAg
IGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBjaGVja0FuZFNldChtX2hhc1Jvb3QsIGZhbHNl
KTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7CisgICAgfQorCisg
ICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5v
ZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9oYXNSb290OworICAgICAgICByZXR1
cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOworICAgIH0KKworICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1faGFzUm9vdCkKKyAg
ICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpLCAiICIpOworICAgICAgICBvdXQu
cHJpbnQobV9zZXQpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6
OlNldCBtX3NldDsKKyAgICBib29sIG1faGFzUm9vdCB7IGZhbHNlIH07Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RNYXAgeworICAg
IHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKK3B1YmxpYzoKKyAgICBT
aW5nbGVSb290TWFwKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX21hcChncmFwaC50ZW1wbGF0
ZSBuZXdNYXA8VD4oKSkKKyAgICB7CisgICAgfQorCisgICAgU2luZ2xlUm9vdE1hcChTaW5nbGVS
b290TWFwJiYgb3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisg
ICAgICAgICwgbV9yb290KFdURk1vdmUob3RoZXIubV9yb290KSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX21hcC5jbGVhcigpOworICAgICAgICBt
X3Jvb3QgPSBUKCk7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X21hcC5zaXplKCkgKyAxOyB9CisKKyAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAg
ICB7CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gbV9yb290OworICAg
ICAgICByZXR1cm4gbV9tYXBbaW5kZXggLSAxXTsKKyAgICB9CisKKyAgICBjb25zdCBUJiBvcGVy
YXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoKmNvbnN0
X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtpbmRleF07CisgICAgfQorCisgICAgVCYgb3Bl
cmF0b3JbXShjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290
KCkpCisgICAgICAgICAgICByZXR1cm4gbV9yb290OworICAgICAgICByZXR1cm4gbV9tYXBbbm9k
ZS5ub2RlKCldOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYg
bm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8U2luZ2xlUm9v
dE1hcCo+KHRoaXMpKVtub2RlXTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHR5cGVuYW1l
IEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7CisgICAgVCBtX3Jvb3Q7Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaCB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU2luZ2xlUm9vdEdyYXBoKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKworICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdy
YXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3JhcGhTZXQ8R3JhcGg+OworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5nbGVSb290TWFwPFQsIEdyYXBoPjsK
KyAgICB1c2luZyBMaXN0ID0gVmVjdG9yPE5vZGUsIDQ+OworCisgICAgU2luZ2xlUm9vdEdyYXBo
KEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICAgICAg
Zm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSByZWFsUm9vdCA6IG1fZ3JhcGgucm9vdHMoKSkgewor
ICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgucHJlZGVjZXNzb3JzKHJlYWxSb290KS5pc0VtcHR5
KCkpOworICAgICAgICAgICAgbV9yb290U3VjY2Vzc29yTGlzdC5hcHBlbmQocmVhbFJvb3QpOwor
ICAgICAgICAgICAgbV9yb290U3VjY2Vzc29yU2V0LmFkZChyZWFsUm9vdCk7CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUKG1fcm9vdFN1Y2Nlc3Nvckxpc3Quc2l6ZSgpKTsKKyAgICB9CisKKyAg
ICBOb2RlIHJvb3QoKSBjb25zdCB7IHJldHVybiBOb2RlOjpyb290KCk7IH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIE1hcDxUPihtX2dy
YXBoKTsgfQorCisgICAgTGlzdCBzdWNjZXNzb3JzKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Cisg
ICAgeworICAgICAgICBhc3NlcnRJc0NvbnNpc3RlbnQoKTsKKworICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3RTdWNjZXNzb3JMaXN0OworICAgICAg
ICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDog
bV9ncmFwaC5zdWNjZXNzb3JzKG5vZGUubm9kZSgpKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQobm9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgTGlzdCBwcmVk
ZWNlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElz
Q29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAg
cmV0dXJuIExpc3QgeyB9OworCisgICAgICAgIGlmIChtX3Jvb3RTdWNjZXNzb3JTZXQuY29udGFp
bnMobm9kZS5ub2RlKCkpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3Nv
cnMobm9kZS5ub2RlKCkpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IHJv
b3QoKSB9OworICAgICAgICB9CisKKyAgICAgICAgTGlzdCByZXN1bHQ7CisgICAgICAgIGZvciAo
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1fZ3JhcGgucHJlZGVjZXNzb3JzKG5vZGUubm9k
ZSgpKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobm9kZSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgdW5zaWduZWQgaW5kZXgoY29uc3QgTm9kZSYgbm9kZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmluZGV4KG5vZGUubm9kZSgpKSArIDE7CisgICAg
fQorCisgICAgTm9kZSBub2RlKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiByb290KCk7CisgICAgICAgIHJldHVybiBt
X2dyYXBoLm5vZGUoaW5kZXggLSAxKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBudW1Ob2Rlcygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ncmFwaC5udW1Ob2RlcygpICsgMTsKKyAg
ICB9CisKKyAgICBDU3RyaW5nIGR1bXAoTm9kZSBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAg
U3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICBv
dXQucHJpbnQoIjxudWxsPiIpOworICAgICAgICBlbHNlIGlmIChub2RlLmlzUm9vdCgpKQorICAg
ICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBvdXQucHJpbnQobV9ncmFwaC5kdW1wKG5vZGUubm9kZSgpKSk7CisgICAgICAgIHJl
dHVybiBvdXQudG9DU3RyaW5nKCk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
Tm9kZXMoKTsgKytpKSB7CisgICAgICAgICAgICBOb2RlIG5vZGUgPSB0aGlzLT5ub2RlKGkpOwor
ICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgb3V0LnByaW50KGR1bXAobm9kZSksICI6XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiICAgIFByZWRzOiAiKTsKKyAgICAgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAg
ICAgICAgIGZvciAoTm9kZSBwcmVkZWNlc3NvciA6IHByZWRlY2Vzc29ycyhub2RlKSkKKyAgICAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGR1bXAocHJlZGVjZXNzb3IpKTsKKyAgICAgICAg
ICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAgIFN1Y2NzOiAi
KTsKKyAgICAgICAgICAgIGNvbW1hID0gQ29tbWFQcmludGVyKCk7CisgICAgICAgICAgICBmb3Ig
KE5vZGUgc3VjY2Vzc29yIDogc3VjY2Vzc29ycyhub2RlKSkKKyAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIGR1bXAoc3VjY2Vzc29yKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoIlxu
Iik7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGFzc2VydElzQ29uc2lzdGVudCgpIGNvbnN0CisgICAgeworI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSByb290cygpIGZ1bmN0aW9uIHRvIGJlIGlkZW1wb3Rl
bnQgd2hpbGUgd2UncmUgYWxpdmUgc28gd2UgY2FuIGNhY2hlCisgICAgICAgIC8vIHRoZSByZXN1
bHQgaW4gdGhlIGNvbnN0cnVjdG9yLiBJZiBhIHVzZXIgb2YgdGhpcyBjaGFuZ2VzIHRoZSByZXN1
bHQgb2YgaXRzIHJvb3RzKCkKKyAgICAgICAgLy8gZnVuY3Rpb24sIGl0J3MgZXhwZWN0ZWQgdGhh
dCB0aGUgdXNlciB3aWxsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLgorICAg
ICAgICBMaXN0IHJvb3RTdWNjZXNzb3JMaXN0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBo
OjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBy
b290U3VjY2Vzc29yTGlzdC5hcHBlbmQocmVhbFJvb3QpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChyb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgICAgICBBU1NFUlQocm9vdFN1Y2Nl
c3Nvckxpc3QgPT0gbV9yb290U3VjY2Vzc29yTGlzdCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBH
cmFwaCYgbV9ncmFwaDsKKyAgICBMaXN0IG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgdHlwZW5h
bWUgR3JhcGg6OlNldCBtX3Jvb3RTdWNjZXNzb3JTZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpTaW5nbGVSb290R3JhcGg7CisKKyNlbmRpZiAvLyBXVEZfU2luZ2xl
Um9vdEdyYXBoX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318571</attachid>
            <date>2017-08-18 19:16:11 -0700</date>
            <delta_ts>2017-08-21 13:15:10 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>190834</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jb25zdC1ub3Qtc3RyaWN0LW1vZGUuanMJKHJldmlz
aW9uIDIyMDg2MikKKysrIEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAgZnVuY3Rpb24gdHJ1dGgoKSB7CiB9CiBub0lu
bGluZSh0cnV0aCk7CiAKLWZ1bmN0aW9uIGFzc2VydChjb25kKSB7CitmdW5jdGlvbiBhc3NlcnQo
Y29uZCwgbT0iIikgewogICAgIGlmICghY29uZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
cm9rZSBhc3NlcnRpb24iKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJicm9rZSBhc3NlcnRp
b246ICIgKyBtKTsKIH0KIG5vSW5saW5lKGFzc2VydCk7CiAKQEAgLTEzMiw3ICsxMzIsOCBAQCBm
dW5jdGlvbiBiYXooKSB7CiAgICAgICAgIGFzc2VydCh5ID09PSA2MCk7CiAgICAgICAgIGlmICh0
cnV0aCgpKSB7CiAgICAgICAgICAgICBjb25zdCB5ID0gNTAsIHogPSA3MCwgeCA9IDQwOwotICAg
ICAgICAgICAgYXNzZXJ0KGV2YWwoZXZhbFN0cmluZykgPT09IDQwKTsKKyAgICAgICAgICAgIGxl
dCByID0gZXZhbChldmFsU3RyaW5nKTsKKyAgICAgICAgICAgIGFzc2VydChyID09PSA0MCwgcik7
CiAgICAgICAgICAgICBhc3NlcnQoeSA9PT0gNTAgJiYgeiA9PT0gNzApOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIw
ODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0zODksNyArMzg5LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBk
ZmcvREZHUGhhc2UuY3BwCiAgICAgZGZnL0RGR1BoaUNoaWxkcmVuLmNwcAogICAgIGRmZy9ERkdQ
bGFuLmNwcAotICAgIGRmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAogICAgIGRmZy9ERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAogICAgIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzk0LDggKzM5NCw2IEBACiAJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFB
NiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzQkQxQjYxQjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNl
dC5jcHAgKi87IH07CiAJCTBGM0MxRjFBMUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjNDMUYxODFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICov
OyB9OwogCQkwRjNDMUYxQjFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovOyB9OwotCQkwRjNF
MDFBQTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNFMDFBODE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgKi87IH07Ci0JCTBGM0UwMUFCMTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZH
UHJlUG9zdE51bWJlcmluZy5oICovOyB9OwogCQkwRjQwRTRBNzFDNDk3Rjc0MDBBNTc3RkEgLyog
QWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjYxODMzMjFDNDVGMzVDMDA3MjQ1MEIgLyogQWlyT3Bjb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3
N0ZBIC8qIEFpck9wY29kZUdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzQxQzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZUdl
bmVyYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVVdGlscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzUxQzQ1RjNCNjAw
NzI0NTBCIC8qIEFpck9wY29kZVV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5ODcsOCArMjk4NSw2IEBACiAJCTBGM0JEMUI2MUI4OTZB
MDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNDMUYxODFCODY4RTc5
MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYz
QzFGMTkxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHBhdGggPSBk
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUHJlUG9zdE51bWJlcmluZy5jcHA7
IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcu
aDsgcGF0aCA9IGRmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxS
ZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMx
RjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ5Myw4ICs3NDg5LDYg
QEAKIAkJCQkwRkJFMEY2RTE2QzFEQjAxMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmggKi8sCiAJCQkJMEZGRkM5NTExNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1MjE0RUY5MDk1MDBDNzI1MzIg
LyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCAqLywKLQkJCQkwRjNFMDFBODE5RDM1
M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgKi8sCi0JCQkJMEYzRTAxQTkx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCAqLywKIAkJCQkwRjJCOUNF
MDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwICovLAogCQkJ
CTBGMkI5Q0UxMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oICov
LAogCQkJCTBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAq
LywKQEAgLTg2OTgsNyArODY5Miw2IEBACiAJCQkJREMwMDAzOTMxOUQ4QkU2RjAwMDIzRUIwIC8q
IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkUwRjc1
MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzRTAxQUIxOUQzNTNBNTAwRjYx
QjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VE
MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGQzkyMTYxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQ4Nyw3ICsxMDQ4MCw2IEBACiAJCQkJQTc4QTk3
N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
RTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzRTAxQUExOUQz
NTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYyMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQTFCRjkxQTlFQ0I3RDAwMERFMDFBIC8q
IERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCShyZXZp
c2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTM4LDggKzE1MzgsOSBAQCB2b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgY2FzZSBvcF9jYXRjaDogewogICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIHZvaWQqIHBvaW50ZXIgPSBnZXRQb2ludGVyKCooKytpdCkp
OwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYXRjaCIp
OwotICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVw
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBwb2lu
dGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGhyb3c6IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24J
KHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50IiwgImxl
bmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcGFyZW50X3Njb3Bl
IiwgImxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJs
ZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rocm93IiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvd19zdGF0aWNfZXJyb3IiLCAibGVu
Z3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIg
OiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksOCBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGluc3RydWN0aW9uc1ti
eXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAgIH07CiAKKyAgICBW
ZWN0b3I8dW5zaWduZWQsIDQ+IGNhdGNoSW5kaWNlczsKKwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5r
ZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTgwNSwx
MCArODA3LDE2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAg
ICAgICAgICAgIG1fbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBj
YXNlIG9wX2NhdGNoOiB7CisgICAgICAgICAgICBjYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAg
ICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAK
QEAgLTgzMCwxMCArODM4LDQzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAg
ICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAg
ICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5l
c3NBbmFseXNpcygpOworICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXI+PiBjYXRjaFByb2ZpbGVzOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGNhdGNoSW5kZXggOiBjYXRjaEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3Ig
bGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldChjYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxp
dmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVh
Y2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZl
T3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIFdlIGp1c3QgYXNzdW1lIHRoZXNlIGFyZSBs
aXZlLiBXZSBjb3VsZCBhbHNvIGp1c3QgY29tcHV0ZSB0aGUgbGl2ZS1vdXQKKyAgICAgICAgICAg
IC8vIGluc3RlYWQgb2YgbGl2ZS1pbiBvZiB0aGUgb3BfY2F0Y2guIE9PUFMgbWF5YmUgZG8gdGhp
cz8KKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQoVmlydHVhbFJlZ2lzdGVyKG1faW5z
dHJ1Y3Rpb25zW2NhdGNoSW5kZXggKyAxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGxpdmVP
cGVyYW5kcy5hcHBlbmQoVmlydHVhbFJlZ2lzdGVyKG1faW5zdHJ1Y3Rpb25zW2NhdGNoSW5kZXgg
KyAyXS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Q
YXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9w
ZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9z
aXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxl
cy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgp
OworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbY2F0Y2hJbmRleCArIDNdLnUucG9pbnRlciA9
IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgY2F0Y2hQcm9maWxlcy5hcHBlbmQoV1RGTW92
ZShwcm9maWxlcykpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVz
ID0gV1RGTW92ZShjYXRjaFByb2ZpbGVzKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBo
ZWFwKCktPm1fY29kZUJsb2Nrcy0+YWRkKHRoaXMpOwogICAgIGhlYXAoKS0+cmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQobV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9u
KSk7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQ4Niw5ICsyNTI3LDEwIEBA
IGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgorCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsraSkgewogICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSBnZXRGcm9tQWxsVmFsdWVQcm9maWxlcyhpKTsKICAgICAgICAgdW5z
aWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CkBAIC0y
NTAzLDYgKzI1NDUsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5k
QwogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgIH0K
KworICAgIGZvciAoYXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAg
ICAgICBwcm9maWxlQnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYg
cHJvZmlsZSkgeworICAgICAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIH0pOworICAgIH0KICAgICAKICNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlcy5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb25zKGxvY2tlcik7CkBAIC0yNzQzLDcgKzI3OTEsMjAgQEAgVmFsdWVQcm9maWxlKiBD
b2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvcgogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XSk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKLSAgICByZXR1cm4g
aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2ZpbGU7Cisg
ICAgVmFsdWVQcm9maWxlKiByZXN1bHQgPSBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCAr
IGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVl
UHJvZmlsZShpKTsKKyAgICAgICAgaWYgKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gYnl0
ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9maWxlID09IHJlc3VsdCk7Cisg
ICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBBU1NFUlQoZm91bmQpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAwMiw2
ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVBy
b2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1
ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2NhdGNoUHJvZmlsZXM7CiAgICAgU2VnbWVu
dGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9yYXJlQ2FzZVByb2ZpbGVzOwogICAgIFJl
ZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9maWxlPiBtX2FycmF5QWxsb2NhdGlvblBy
b2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lv
biAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQsOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxl
V2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlIDogcHVibGlj
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4gewotICAgIFZhbHVlUHJvZmls
ZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJP
ZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQorICAgIFZhbHVlUHJvZmlsZSgpIDogVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPigpIHsgfQorICAgIFZhbHVlUHJvZmls
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0
czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
MjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zm
CiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAorc3Ry
dWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7
CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKHVuc2lnbmVkIHNpemUp
CisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVmFsdWVQ
cm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVlZC4gV2UgY291bGQgb3B0aW1pemUgdGhl
c2UgdmFsdWUgcHJvZmlsZXMKKyAgICAgICAgLy8gdG8gYmUgbW9yZSBzcGFjZSBlZmZpY2llbnQu
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0
MTMKKyAgICAgICAgbV9idWZmZXIgPSBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD46
Om1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBuZXcg
KCZtX2J1ZmZlci5nZXQoKVtpXSkgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKwor
ICAgIH5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG1fYnVmZmVyLmdl
dCgpW2ldLn5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAg
ICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyLmdldCgpW2ldKTsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBtX3NpemU7CisgICAgTWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+IG1fYnVm
ZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2
aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTkgQEAgUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogICAgICAgICBlbWl0VW5yZWFj
aGFibGUoKTsKICAgICB9CiAKKyAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jYXRjaGVzVG9FbWl0
KSB7CisgICAgICAgIFJlZjxMYWJlbD4gbGFiZWwgPSBuZXdFbWl0dGVkTGFiZWwoKTsKKyAgICAg
ICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChz
dGQ6OmdldDwxPih0dXBsZSkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3RkOjpn
ZXQ8Mj4odHVwbGUpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAg
ICAgIFRyeURhdGEqIGRhdGEgPSBzdGQ6OmdldDwwPih0dXBsZSk7CisgICAgICAgIGVtaXRKdW1w
KGRhdGEtPnRhcmdldC5nZXQoKSk7CisKKyAgICAgICAgZGF0YS0+dGFyZ2V0ID0gV1RGTW92ZShs
YWJlbCk7CisgICAgfQorCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmtpbGwoKTsKIAog
ICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX3RyeVJhbmdlcykgewpAQCAtNzEwLDcgKzcyMyw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogdW51c2VkID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGVtaXRDYXRjaCh1bnVz
ZWQsIHRocm93blZhbHVlLmdldCgpKTsKKyAgICAgICAgZW1pdENhdGNoKHVudXNlZCwgdGhyb3du
VmFsdWUuZ2V0KCksIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhKTsKIAogICAgICAgICAvLyByZXR1
cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCh0aHJvd25WYWx1ZSkKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBwcm9taXNl
Q2FwYWJpbGl0eVJlZ2lzdGVyKCksIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlamVjdFByaXZhdGVOYW1lKCkpOwpAQCAtMzk2MywxMSArMzk3NiwxNSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpwb3BUcnkoVHJ5RGF0YSogCiAgICAgbV90cnlDb250ZXh0U3RhY2sucmVt
b3ZlTGFzdCgpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0
ZXJJRCogZXhjZXB0aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0ZXIp
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0ZXJJRCogZXhjZXB0aW9u
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0ZXIsIFRyeURhdGEqIGRhdGEp
CiB7Ci0gICAgZW1pdE9wY29kZShvcF9jYXRjaCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
dGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgLy8gT09QUy4gbWFrZSB0aGlzIGhh
cHBlbiBhdCB0aGUgZW5kIG9mIHRoZSBlbnRpcmUgcHJvZ3JhbS4KKyAgICBtX2NhdGNoZXNUb0Vt
aXQuYXBwZW5kKHsgZGF0YSwgZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCksIHRocm93blZhbHVl
UmVnaXN0ZXItPmluZGV4KCkgfSk7CisgICAgLy9lbWl0T3Bjb2RlKG9wX2NhdGNoKTsKKyAgICAv
L1ZlY3RvcjxzdGQ6OnR1cGxlPFRyeURhdGEqLCBpbnQsIGludD4+IG1fY2F0Y2hlc1RvRW1pdDsK
KyAgICAvL2luc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7
CisgICAgLy9pbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgo
KSk7CisgICAgLy9pbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKQEAg
LTQyOTksNyArNDMxNiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlv
bigKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0
ZXIgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5l
d1RlbXBvcmFyeSgpOwogCi0gICAgICAgICAgICBlbWl0Q2F0Y2goY29tcGxldGlvblZhbHVlUmVn
aXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgICAgIGVtaXRDYXRjaChjb21wbGV0aW9uVmFsdWVS
ZWdpc3RlcigpLCB1bnVzZWQsIHRyeURhdGEpOwogICAgICAgICAgICAgZW1pdFNldENvbXBsZXRp
b25UeXBlKENvbXBsZXRpb25UeXBlOjpUaHJvdyk7CiAgICAgICAgICAgICBlbWl0TW92ZShmaW5h
bGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CkBAIC00MzM5LDcg
KzQzNTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oCiAgICAg
ICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwogICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOwog
ICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgpOwotICAg
ICAgICAgICAgICAgIGVtaXRDYXRjaChleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdW51c2VkKTsK
KyAgICAgICAgICAgICAgICBlbWl0Q2F0Y2goZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIHVudXNl
ZCwgcmV0dXJuQ2FsbFRyeURhdGEpOwogICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMg
YSBzeW50aGVzaXplZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBu
ZWVkCiAgICAgICAgICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBz
Y29wZSwgd2UgY2FuIHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQogICAgICAgICAgICAgICAgIC8v
IHJlZ2lzdGVyIGhlcmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc4Niw3ICs3ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
VHJ5RGF0YSogcHVzaFRyeShMYWJlbCYgc3RhcnQsIExhYmVsJiBoYW5kbGVyTGFiZWwsIEhhbmRs
ZXJUeXBlKTsKICAgICAgICAgLy8gRW5kIGEgdHJ5IGJsb2NrLiAnZW5kJyBtdXN0IGhhdmUgYmVl
biBlbWl0dGVkLgogICAgICAgICB2b2lkIHBvcFRyeShUcnlEYXRhKiwgTGFiZWwmIGVuZCk7Ci0g
ICAgICAgIHZvaWQgZW1pdENhdGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lzdGVyLCBSZWdp
c3RlcklEKiB0aHJvd25WYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0Q2F0Y2goUmVn
aXN0ZXJJRCogZXhjZXB0aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0
ZXIsIFRyeURhdGEqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
Q3VycmVudExleGljYWxTY29wZUluZGV4ID0gLTI7CkBAIC0xMTg5LDYgKzExODksOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKICAg
ICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAg
RGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lIH07CisKKyAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VHJ5RGF0YSosIGludCwg
aW50Pj4gbV9jYXRjaGVzVG9FbWl0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAzLDYgKzM0MDMs
OSBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAgICAgTGFiZWwm
IHRyeUhhbmRsZXJMYWJlbCA9IG1fY2F0Y2hCbG9jayA/ICpjYXRjaExhYmVsIDogKmZpbmFsbHlW
aWFUaHJvd0xhYmVsOwogICAgIEhhbmRsZXJUeXBlIHRyeUhhbmRsZXJUeXBlID0gbV9jYXRjaEJs
b2NrID8gSGFuZGxlclR5cGU6OkNhdGNoIDogSGFuZGxlclR5cGU6OkZpbmFsbHk7CiAgICAgVHJ5
RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIHRy
eUhhbmRsZXJMYWJlbCwgdHJ5SGFuZGxlclR5cGUpOworICAgIFRyeURhdGEqIGZpbmFsbHlUcnlE
YXRhID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fY2F0Y2hCbG9jayAmJiBtX2ZpbmFsbHlCbG9jaykK
KyAgICAgICAgZmluYWxseVRyeURhdGEgPSB0cnlEYXRhOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGRzdCwgbV90cnlCbG9jayk7CiAKQEAgLTM0MTksMTQgKzM0MjIsMTMgQEAgdm9pZCBUcnlO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKCpjYXRjaExhYmVsKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVl
UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IHVudXNlZCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYXRjaCh1bnVzZWQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdENhdGNoKHVudXNlZCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgdHJ5RGF0
YSk7CiAgICAgICAgIGdlbmVyYXRvci5yZXN0b3JlU2NvcGVSZWdpc3RlcigpOwogCi0gICAgICAg
IFRyeURhdGEqIHRyeURhdGEgPSBudWxscHRyOwogICAgICAgICBpZiAobV9maW5hbGx5QmxvY2sp
IHsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYXRjaCBibG9jayB0aHJvd3MgYW4gZXhjZXB0aW9u
IGFuZCB3ZSBoYXZlIGEgZmluYWxseSBibG9jaywgdGhlbiB0aGUgZmluYWxseQogICAgICAgICAg
ICAgLy8gYmxvY2sgc2hvdWxkICJjYXRjaCIgdGhhdCBleGNlcHRpb24uCi0gICAgICAgICAgICB0
cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoKmNhdGNoTGFiZWwsICpmaW5hbGx5VmlhVGhyb3dM
YWJlbCwgSGFuZGxlclR5cGU6OkZpbmFsbHkpOworICAgICAgICAgICAgZmluYWxseVRyeURhdGEg
PSBnZW5lcmF0b3IucHVzaFRyeSgqY2F0Y2hMYWJlbCwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsLCBI
YW5kbGVyVHlwZTo6RmluYWxseSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jYXRjaFBh
dHRlcm4pIHsKQEAgLTM0NDcsNyArMzQ0OSw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXIKICAgICAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBlOjpOb3JtYWwp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKCpmaW5hbGx5TGFiZWwpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLnBvcFRyeSh0cnlEYXRhLCAqZmluYWxseVZpYVRocm93TGFiZWwpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeShmaW5hbGx5VHJ5RGF0YSwgKmZpbmFsbHlWaWFU
aHJvd0xhYmVsKTsKICAgICAgICAgfQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoKmNh
dGNoRW5kTGFiZWwpOwpAQCAtMzQ2MCw3ICszNDYyLDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9j
ayBmb3IgQ29tcGxldGlvblR5cGU6OlRocm93LgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KCpmaW5hbGx5VmlhVGhyb3dMYWJlbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5l
cmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYXRjaChnZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2Vk
LCBmaW5hbGx5VHJ5RGF0YSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0Q29tcGxldGlvblR5
cGUoQ29tcGxldGlvblR5cGU6OlRocm93KTsKIAogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmlu
YWxseSBibG9jayBmb3IgQ29tcGxldGlvblR5cGVzIG90aGVyIHRoYW4gVGhyb3cuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwOCw2ICsyMDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOSw3ICsxODQw
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAv
LyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgICAgICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0JhY2t3YXJkc0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNs
YXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxDRkc+IHsKK2NsYXNzIEJh
Y2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShCYWNrd2FyZHNDRkcpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEJhY2t3YXJkc0NGRyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogQmFj
a3dhcmRzR3JhcGg8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogQmFja3dhcmRzR3JhcGg8
U1NBQ0ZHPihzZWxlY3RDRkc8U1NBQ0ZHPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9u
IDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygK
ICAgICA6IGJ5dGVjb2RlQmVnaW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2sp
CiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBvaW50KGZhbHNl
KQogICAgICwgY2ZhSGFzVmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFs
c2UpCiAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIs
MTcgKzgyLDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAg
ICAgICBzaXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAg
ICAgICAgIGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAg
ICBjYXNlIFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAg
ICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAg
IGlmIChub2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJ
bmRleChub2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAg
ICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtl
LiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUg
dGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNr
ZWQgY2hpbGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVj
YXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206
CkBAIC0xODUsNiArMTc3LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2lj
QmxvYwogICAgIEJsb2NrSW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsK
KyAgICBib29sIGlzQ2F0Y2hFbnRyeXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAg
ICBib29sIGNmYVNob3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAi
REZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCkBAIC02NDIsOCArNjQzLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGZsdXNoRGlyZWN0KGlubGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpKTsKICAgICAgICAgaWYgKCFpbmxpbmVT
dGFja0VudHJ5LT5tX2lubGluZUNhbGxGcmFtZSAmJiBtX2dyYXBoLm5lZWRzRmx1c2hlZFRoaXMo
KSkKICAgICAgICAgICAgIGZsdXNoRGlyZWN0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAp
KTsKLSAgICAgICAgaWYgKG1fZ3JhcGgubmVlZHNTY29wZVJlZ2lzdGVyKCkpCi0gICAgICAgICAg
ICBmbHVzaERpcmVjdChtX2NvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKTsKKyAgICAgICAgLy9p
ZiAobV9ncmFwaC5uZWVkc1Njb3BlUmVnaXN0ZXIoKSkKKyAgICAgICAgLy8gICAgZmx1c2hEaXJl
Y3QobV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgdm9pZCBmbHVz
aEZvclRlcm1pbmFsKCkKQEAgLTExMzEsNyArMTEzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IFBvdGVudGlhbCBibG9jayBsaW5raW5nIHRhcmdldHMuIE11c3QgYmUgc29ydGVkIGJ5IGJ5dGVj
b2RlQmVnaW4sIGFuZAogICAgICAgICAvLyBjYW5ub3QgaGF2ZSB0d28gYmxvY2tzIHRoYXQgaGF2
ZSB0aGUgc2FtZSBieXRlY29kZUJlZ2luLgogICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1f
YmxvY2tMaW5raW5nVGFyZ2V0czsKLSAgICAgICAgCisKICAgICAgICAgLy8gSWYgdGhlIGNhbGxz
aXRlJ3MgYmFzaWMgYmxvY2sgd2FzIHNwbGl0IGludG8gdHdvLCB0aGVuIHRoaXMgd2lsbCBiZQog
ICAgICAgICAvLyB0aGUgaGVhZCBvZiB0aGUgY2FsbHNpdGUgYmxvY2suIEl0IG5lZWRzIGl0cyBz
dWNjZXNzb3JzIGxpbmtlZCB0byB0aGUKICAgICAgICAgLy8gbV91bmxpbmtlZEJsb2NrcywgYnV0
IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZDogdGhlcmUncyBubyB3YXkgZm9yCkBAIC00MDc1LDcg
KzQwNzYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
IC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVh
bCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdl
IHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2Nr
KDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRz
LnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFw
aC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2Rl
KiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
KyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1f
bnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9k
ZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIg
c28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpA
QCAtNDA4OCw3ICs0MDkzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQs
IE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1
bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJn
dW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFi
bGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC01MTU4LDEwICs1MTYzLDExNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBhZGRUb0dyYXBoKFVucmVhY2hh
YmxlKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3Rocm93X3N0YXRpY19lcnJvcik7CiAK
LSAgICAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICAgICAgY2FzZSBvcF9jYXRjaDogewogICAgICAg
ICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKLSAgICAgICAgICAgIAorCisgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBkbyBhbnl0
aGluZyBoZXJlIGZvciBpbmxpbmVkIGZyYW1lcy4gV2UgZG9uJ3QgdHJlYXQgdGhpcyBhcyBhbiBl
bnRyeXBvaW50LgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKSB7
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgY2F0Y2ggaW4gdGhlIEZUTC4KKyAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc1Mzk2CisgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9jdXJyZW50QmxvY2stPnNpemUo
KSk7CisKKyAgICAgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9
IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5wb2ludGVyKTsKKworICAgICAgICAgICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBl
PiBhcmd1bWVudFByZWRpY3Rpb25zKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgIFZlY3Rv
cjxTcGVjdWxhdGVkVHlwZT4gbG9jYWxQcmVkaWN0aW9uczsKKyAgICAgICAgICAgIEhhc2hTZXQ8
dW5zaWduZWQsIFdURjo6SW50SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dW5zaWduZWQ+PiBzZWVuQXJndW1lbnRzOworCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7CisKKyAgICAgICAgICAgICAgICBib29sIGFsbFBy
ZWRpY3Rpb25zQXJlRW1wdHkgPSB0cnVlOworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFj
aChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOworICAgICAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5tX3Byb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAg
IGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJj0gcHJlZGljdGlvbiA9PSBTcGVjTm9uZTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQocHJlZGljdGlvbik7CisgICAgICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3Bl
cmFuZC5pc0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG9wZXJhbmQudG9Bcmd1bWVudCgpKSA8IGFyZ3VtZW50
UHJlZGljdGlvbnMuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0
aW9uRW5hYmxlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5Bcmd1bWVudHMu
YWRkKG9wZXJhbmQudG9Bcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50UHJlZGljdGlvbnNbb3BlcmFuZC50b0FyZ3VtZW50KCldID0gcHJlZGljdGlvbjsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAg
aWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgbV9udW1Bcmd1bWVudHM7ICsrYXJndW1lbnQp
CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzZWVuQXJndW1lbnRzLmNv
bnRhaW5zKGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKGFsbFByZWRpY3Rpb25zQXJlRW1wdHkgJiYgKGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgp
IHx8IGxvY2FsUHJlZGljdGlvbnMuc2l6ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGlzIGlzIHRoZSBjYXNlLCB3ZSBoYXZlbid0IGV4ZWN1dGVkIHRoaXMgY2F0Y2ggeWV0LiBM
ZXQncyBub3QgY29tcGlsZQorICAgICAgICAgICAgICAgICAgICAvLyBpdCBhcyBhbiBlbnRyeXBv
aW50LgorICAgICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSdyZSBub3cgY29t
bWl0dGVkIHRvIGNvbXBpbGluZyB0aGlzIGFzIGFuIGVudHJ5cG9pbnQuCisKKyAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCA9IHRydWU7CisgICAgICAgICAgICBt
X2dyYXBoLm1fZW50cnlwb2ludHMuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKworICAgICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxWaXJ0dWFsUmVnaXN0ZXIsIE5vZGUqPj4gbG9jYWxzVG9TZXQ7
CisgICAgICAgICAgICBsb2NhbHNUb1NldC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJ1ZmZlci0+
bV9zaXplKTsgLy8gTm90ZTogVGhpcyB3aWxsIHJlc2VydmUgbW9yZSB0aGFuIHRoZSBudW1iZXIg
b2YgbG9jYWxzIHdlIHNlZSBiZWxvdyBiZWNhdXNlIHRoZSBidWZmZXIgaW5jbHVkZXMgYXJndW1l
bnRzLgorCisgICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBXZSdyZSBub3QgYWxsb3dl
ZCB0byBleGl0IGhlcmUgc2luY2Ugd2Ugd291bGQgbm90IGtub3cgaG93IHRvIGRvIHZhbHVlIHJl
Y292ZXJ5LgorICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMgPSAwOworICAgICAg
ICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9v
cGVyYW5kKTsKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0FyZ3VtZW50KCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBBU1NFUlQob3BlcmFuZC5p
c0xvY2FsKCkpOworICAgICAgICAgICAgICAgIE5vZGUqIHZhbHVlID0gYWRkVG9HcmFwaChFeHRy
YWN0Q2F0Y2hMb2NhbCwgT3BJbmZvKG51bWJlck9mTG9jYWxzKSwgT3BJbmZvKGxvY2FsUHJlZGlj
dGlvbnNbbnVtYmVyT2ZMb2NhbHNdKSk7CisgICAgICAgICAgICAgICAgKytudW1iZXJPZkxvY2Fs
czsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKE1vdkhpbnQsIE9wSW5mbyhwcm9maWxlLm1f
b3BlcmFuZCksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBsb2NhbHNUb1NldC51bmNoZWNrZWRB
cHBlbmQoc3RkOjptYWtlX3BhaXIob3BlcmFuZCwgdmFsdWUpKTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQor
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gMDsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5ID0gc3RkOjpt
YXgobnVtYmVyT2ZMb2NhbHMsICptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSk7
CisKKyAgICAgICAgICAgIC8vIFdlIGNhbiBub3cgZXhpdCBiZWNhdXNlIHdlJ3ZlIHNldCB1cCBv
dXIgT1NSIGV4aXQgc3RhdGUgdG8gcmVjb3ZlciBhbnkgbGl2ZSBsb2NhbHMuCisgICAgICAgICAg
ICBtX2V4aXRPSyA9IHRydWU7IAorICAgICAgICAgICAgYWRkVG9HcmFwaChFeGl0T0spOworCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gU2V0IHVwIG91ciBhcmd1bWVudHMgbm93
IHRoYXQgaXQncyBzYWZlIHRvIGV4aXQuIFRoaXMgaGFwcGVucyBoZXJlIGJlY2F1c2Ugd2UgbWF5
IGhvaXN0IHR5cGUgY2hlY2tzIHVwCisgICAgICAgICAgICAgICAgLy8gdG8gdGhpcyBwb2ludCBp
biB0aGUgcHJvZ3JhbSwgc28gaXQgbXVzdCBiZSBzYWZlIHRvIGV4aXQuCisgICAgICAgICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZCht
X2N1cnJlbnRCbG9jaywgVmVjdG9yPE5vZGUqLCA4PigpKTsKKyAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgICAgICAgICAgVmVjdG9y
PE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1
bWVudHMpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1
bWVudCA8IGFyZ3VtZW50UHJlZGljdGlvbnMuc2l6ZSgpOyArK2FyZ3VtZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFj
Y2Vzc0RhdGEodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPnByZWRpY3QoYXJndW1lbnRQcmVkaWN0aW9uc1thcmd1bWVu
dF0pOworCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZVN0cnVjdHVyZUNoZWNr
SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwor
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWls
ZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKKworICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1l
bnQsIE9wSW5mbyh2YXJpYWJsZSkpOworICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1
bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRd
ID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBsb2NhbHNUb1NldCkKKyAgICAgICAgICAg
ICAgICBzZXRMb2NhbChjdXJyZW50Q29kZU9yaWdpbigpLCBwYWlyLmZpcnN0LCBwYWlyLnNlY29u
ZCwgSW1tZWRpYXRlTmFrZWRTZXQpOworCisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRj
aCk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBoYW5k
bGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwogICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBjdXJy
ZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRoZSBj
YWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKQEAgLTYxNTYsOCArNjI2OCwx
MCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2Vk
QmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQu
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhXVEZN
b3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2soKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC02MjE0LDEwICs2MzI4LDEyIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5s
aW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwotCiAgICAg
bGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0YWNr
RW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKKwogICAgIG1fZ3JhcGguZGV0ZXJtaW5lUmVh
Y2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKKworICAg
IG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4obV9ncmFwaCk7CiAg
ICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2Nrcygp
OyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhibG9ja0luZGV4KTsKQEAgLTYyMjgsNyArNjM0NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVy
T2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZM
b2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9m
QXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9m
QXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwogICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMgPSBt
X251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRlclNs
b3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNwcAko
cmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5dGVjb2Rl
QmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRlY29kZUluZGV4KQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAg
IGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIEZvdW5kIG11
c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxv
Y2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290
R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00OCw3ICs0
OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsgcmV0dXJu
IG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNvbnZlcnNpb24p
OworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsKKyAgICB9CisKKyAgICBMaXN0IHJv
b3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpCisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+KG1f
Z3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBwcml2YXRlOgogICAgIEdyYXBoJiBtX2dyYXBo
OwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGljIFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsKK3B1
YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFNpbmdsZVJvb3RHcmFw
aDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Vu
dHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsKKwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxz
dGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxlY3RDRkco
R3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fY3BzQ0ZHKTsKKyAg
ICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6
dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJF
TEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fc3NhQ0ZH
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNS
ZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJndW1l
bnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVCbG9j
ayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFkIHVz
ZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzCiAgICAg
ICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVyIHVz
ZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIG1f
Z3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBt
X2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBl
bnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSosIDg+
JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YXJp
YWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2luZD4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmluaXRp
YWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwor
ICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAg
IG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAgICAgCkBAIC02
OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIE5v
ZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Js
b2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0
ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBtX25vZGUt
PnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC03NzksNyArNzc5LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJpY3QgZG9taW5hdGlvbiBiZWNhdXNlIHRoaXMg
d291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBvd24gYmxvY2sgaWYKICAgICAgICAgICAgIC8v
IHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlvbiBpbiB0aGUgYmxvY2suIENsZWFybHksIHdo
aWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAgICAgICAgIC8vIGl0c2VsZiwgdGhlIHRoaW5n
cyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3QgZG9taW5hdGUgdXMuCi0gICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2Nr
KSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5zdHJpY3RseURv
bWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkK
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBJdCBzdHJpY3RseSBkb21pbmF0
ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgZGF0
YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVb
aV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRv
bWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5v
d25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2Fu
ZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cmVwbGFjZVdpdGgo
Y2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC5zZXROb2RlKGNh
bmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2Ug
Q2hlY2s6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCShyZXZpc2lvbiAyMjA4NjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBt
X2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpKQorICAgICAgICA6IG1fZG9taW5h
dG9ycyhncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9iYWNrd2FyZHNE
b21pbmF0b3JzKGdyYXBoLmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKSkKICAgICB7CiAgICAg
fQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERvbWlu
YXRvcnMmIG1fZG9taW5hdG9yczsKKyAgICBTU0FEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CiAg
ICAgQmFja3dhcmRzRG9taW5hdG9ycyYgbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIy
MDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4
dXBCbG9jayhibG9jayk7CiAgICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBo
Lm1fYXJndW1lbnRzKTsKKyAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNWZWN0b3IgOiBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLnZhbHVlcygpKQorICAgICAgICAgICAgY2xlYW5W
YXJpYWJsZXMoYXJndW1lbnRzVmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMg
UGhhbnRvbS9DaGVjayBjbGVhbi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjA4
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDggKzk1LDggQEAgVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVk
T3A+IERpc2Fzc2VtYgogICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKICAgICBhcHBl
bmQocmVzdWx0LCBvdXQsIHByZXZpb3VzT3JpZ2luKTsKICAgICAKLSAgICBtX2dyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKTsKLSAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgIG1f
Z3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJh
bExvb3BzKCk7CiAgICAgCiAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAgIGNv
bnN0IGNoYXIqIGRpc2Fzc2VtYmx5UHJlZml4ID0gIiAgICAgICAgIjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3
LDYgKzE5Nyw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0Ogog
ICAgIGNhc2UgVW5yZWFjaGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAg
ICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb21pbmF0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1
LDE2ICszNSwzMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNz
IERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGRz4gewordGVtcGxhdGUgPHR5
cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9taW5hdG9y
czxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9taW5hdG9ycyk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9ycyhHcmFwaCYg
Z3JhcGgpCi0gICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGRz4oKmdyYXBoLm1fY2ZnKQorICAg
ICAgICA6IFdURjo6RG9taW5hdG9yczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgp
KQogICAgIHsKICAgICB9CiB9OwogCit1c2luZyBTU0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxT
U0FDRkc+OwordXNpbmcgQ1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKKwordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19zYW1lPFQsIENQU0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0RvbWluYXRvcnMmIGVuc3Vy
ZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1
cmVDUFNEb21pbmF0b3JzKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46
OnR5cGU+CitTU0FEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBoJiBncmFw
aCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCShyZXZpc2lv
biAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X2Jsb2NrKGJsb2NrKQogICAgICAgICAsIG1fcmVzdWx0KHRydWUpCiAgICAgeworICAgICAgICBB
U1NFUlQoZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgb3BlcmF0
b3IoKShOb2RlKiwgRWRnZSBlZGdlKQogICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dy
YXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7
CisgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRl
cyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOwogICAgICAgICBpZiAodmVyYm9zZSkgewog
ICAgICAgICAgICAgZGF0YUxvZygKICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgaWYgIiwgZWRn
ZSwgIiBpbiAiLCAqZWRnZS5ub2RlKCktPm93bmVyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTg5LDYgKzE5ODksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAg
ICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
CisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6
CiAgICAgICAgIGNhc2UgTW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpAQCAtMzE4
NCw2ICszMTg1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdl
LT5oYXNEb3VibGVSZXN1bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4Rm9yQ2hl
Y2tzICE9IFVJTlRfTUFYKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5pc051
bWJlckNvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEZvckNoZWNrcywgU3BlY0J5dGVjb2RlRG91YmxlLCBEb3VibGVDb25zdGFudCwgb3Jp
Z2luRm9yQ2hlY2tzLApAQCAtMzIxNCw2ICszMjE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVkZ2UtPmlzQW55SW50Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjQW55SW50LCBJbnQ1MkNv
bnN0YW50LCBvcmlnaW5Gb3JDaGVja3MsCkBAIC0zMjQwLDYgKzMyNDMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSAmJiAh
ZWRnZS0+aGFzSW50NTJSZXN1bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4Rm9y
Q2hlY2tzICE9IFVJTlRfTUFYKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5o
YXNEb3VibGVSZXN1bHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjQnl0ZWNvZGVEb3VibGUsIFZhbHVlUmVwLCBvcmlnaW5G
b3JDaGVja3MsCkBAIC0zMjgxLDYgKzMyODUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNrcywgU3BlY05vbmUsIENoZWNrLCBvcmln
aW5Gb3JDaGVja3MsIGVkZ2UpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGbHVzaEZvcm1hdC5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsK
K2VudW0gRmx1c2hGb3JtYXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hl
ZEludDMyLAogICAgIEZsdXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1
ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZH
TmF0dXJhbExvb3BzLmgiCi0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1
ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVM
aXZlbmVzcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcg
KzcyLDcgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihw
bGFuKQogICAgICwgbV9jb2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmls
ZWRCbG9jayhtX2NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFr
ZV91bmlxdWU8Q0ZHPigqdGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNT
QUNGRz4oKnRoaXMpKQogICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBv
aW50U3RhdGUoQmVmb3JlRml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0
YXRlKEhhdmVOb3RTdGFydGVkUmVnaXN0ZXJpbmcpCkBAIC00MDksOSArNDA4LDEzIEBAIGJvb2wg
R3JhcGg6OnRlcm1pbmFsc0FyZVZhbGlkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGlj
IEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoY29uc3QgQ1BTQ0ZHOjpOb2RlJiBub2RlKSB7IHJl
dHVybiBub2RlLm5vZGUoKTsgfQorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoQmFz
aWNCbG9jayogYmxvY2spIHsgcmV0dXJuIGJsb2NrOyB9CisKIHZvaWQgR3JhcGg6OmR1bXBCbG9j
a0hlYWRlcihQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sq
IGJsb2NrLCBQaGlOb2RlRHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29u
dGV4dCkKIHsKLSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBp
bkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBi
bG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0
ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJC
bG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1h
bnRpYywgY29udGV4dCksICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDog
IiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwg
YmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50ID8gIiAoQ2F0Y2ggRW50cnlwb2ludCkiIDogIiIsICJc
biIpOwogICAgIGlmIChibG9jay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4ZWN1dGlvbkNv
dW50KQogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBFeGVjdXRpb24gY291bnQ6ICIsIGJs
b2NrLT5leGVjdXRpb25Db3VudCwgIlxuIik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJl
ZGVjZXNzb3JzOiIpOwpAQCAtNDIyLDE4ICs0MjUsMjYgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2Nr
SGVhZGVyKFByaW50U3RyZWFtJgogICAgIGlmIChibG9jay0+dGVybWluYWwoKSkgewogICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAg
ICAgICAgICAgIG91dC5wcmludCgiICIsICpzdWNjZXNzb3IpOwotICAgICAgICAgICAgaWYgKG1f
cHJlUG9zdE51bWJlcmluZykKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9wcmVQ
b3N0TnVtYmVyaW5nLT5lZGdlS2luZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsKICAgICAgICAg
fQogICAgIH0gZWxzZQogICAgICAgICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsKICAgICBvdXQu
cHJpbnQoIlxuIik7Ci0gICAgaWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgp
KSB7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21p
bmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHBy
ZWZpeCwgIiAgRG9taW5hdGVzOiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJs
b2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9u
dGllcjogIiwgbV9kb21pbmF0b3JzLT5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7
Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGll
cjogIiwgbV9kb21pbmF0b3JzLT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoQmxvY2tMaXN0
KDEsIGJsb2NrKSksICJcbiIpOworCisgICAgYXV0byBwcmludERvbWluYXRvcnMgPSBbJl0gKGF1
dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVk
IGJ5OiAiLCBkb21pbmF0b3JzLmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOworICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIGRvbWluYXRvcnMuYmxvY2tzRG9taW5h
dGVkQnkoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5h
bmNlIEZyb250aWVyOiAiLCBkb21pbmF0b3JzLmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAi
XG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZy
b250aWVyOiAiLAorICAgICAgICAgICAgZG9taW5hdG9ycy5pdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2YodHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGRvbWluYXRvcnMp
Pjo6dHlwZTo6TGlzdCB7IGJsb2NrIH0pLCAiXG4iKTsKKyAgICB9OworCisgICAgaWYgKHRlcm1p
bmFsc0FyZVZhbGlkKCkpIHsKKyAgICAgICAgaWYgKG1fc3NhRG9taW5hdG9ycykKKyAgICAgICAg
ICAgIHByaW50RG9taW5hdG9ycygqbV9zc2FEb21pbmF0b3JzKTsKKyAgICAgICAgZWxzZSBpZiAo
bV9jcHNEb21pbmF0b3JzKQorICAgICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX2Nwc0RvbWlu
YXRvcnMpOwogICAgIH0KKwogICAgIGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMgJiYgdGVybWlu
YWxzQXJlVmFsaWQoKSkgewogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMg
ZG9taW5hdGVzIGJ5OiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9j
ayksICJcbiIpOwogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5h
dGVzOiAiLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwg
IlxuIik7CkBAIC00NDYsMjkgKzQ1NywzMyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIo
UHJpbnRTdHJlYW0mCiAgICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0K
LSAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBQcmUvUG9zdCBOdW1iZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJlTnVtYmVyKGJs
b2NrKSwgIi8iLCBtX3ByZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2spLCAiXG4iKTsK
LSAgICBpZiAobV9uYXR1cmFsTG9vcHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5hdHVyYWxMb29w
KiBsb29wID0gbV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgeworCisgICAgYXV0byBw
cmludE5hdHVyYWxMb29wcyA9IFsmXSAoYXV0byYgbmF0dXJhbExvb3BzKSB7CisgICAgICAgIGlm
IChjb25zdCBhdXRvKiBsb29wID0gbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKICAg
ICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsK
ICAgICAgICAgICAgIFZlY3RvcjxCbG9ja0luZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAg
ICAgICAgICAgICAgIHNvcnRlZEJsb2NrTGlzdC5hcHBlbmQodW5ib3hMb29wTm9kZShsb29wLT5h
dChpKSktPmluZGV4KTsKICAgICAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9ja0xpc3QuYmVn
aW4oKSwgc29ydGVkQmxvY2tMaXN0LmVuZCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzb3J0ZWRCbG9ja0xpc3Quc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAg
b3V0LnByaW50KCIgIyIsIHNvcnRlZEJsb2NrTGlzdFtpXSk7CiAgICAgICAgICAgICBvdXQucHJp
bnQoIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1
cmFsTG9vcCo+IGNvbnRhaW5pbmdMb29wcyA9Ci0gICAgICAgICAgICBtX25hdHVyYWxMb29wcy0+
bG9vcHNPZihibG9jayk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0xvb3BzID0gbmF0dXJhbExv
b3BzLT5sb29wc09mKGJsb2NrKTsKICAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3Ag
aGVhZGVyczoiKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWlu
aW5nTG9vcHMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNv
bnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludCgi
ICIsICp1bmJveExvb3BOb2RlKGNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpKTsKICAgICAg
ICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgfQotICAgIH0KKyAgICB9OworCisgICAg
aWYgKG1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29wcyhtX3NzYU5h
dHVyYWxMb29wcyk7CisgICAgZWxzZSBpZiAobV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIHBy
aW50TmF0dXJhbExvb3BzKG1fY3BzTmF0dXJhbExvb3BzKTsKKwogICAgIGlmICghYmxvY2stPnBo
aXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFBoaSBOb2Rlczoi
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsr
aSkgewpAQCAtNTAyLDggKzUxNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQsIER1bXBDCiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50
U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5p
ZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJc
biIpOwogICAgIGlmIChtX2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1l
bnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBl
bHNlCi0gICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1l
bnRzKSwgIlxuIik7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogbV9lbnRy
eXBvaW50VG9Bcmd1bWVudHMpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZv
ciBibG9jayMiLCBwYWlyLmtleS0+aW5kZXgsICI6ICIsIGxpc3REdW1wKHBhaXIudmFsdWUpLCAi
XG4iKTsKKyAgICB9CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIAogICAgIE5vZGUqIGxhc3RO
b2RlID0gbnVsbHB0cjsKQEAgLTY0MCw4ICs2NTcsMTAgQEAgdm9pZCBHcmFwaDo6aGFuZGxlU3Vj
Y2Vzc29yKFZlY3RvcjxCYXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkK
IHsKICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5h
cHBlbmQoYmxvY2soMCkpOwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykgeworICAgICAgICBl
bnRyeXBvaW50LT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0LmFwcGVuZChl
bnRyeXBvaW50KTsKKyAgICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtNzk4LDkg
KzgxNywxMCBAQCB2b2lkIEdyYXBoOjpraWxsVW5yZWFjaGFibGVCbG9ja3MoKQogCiB2b2lkIEdy
YXBoOjppbnZhbGlkYXRlQ0ZHKCkKIHsKLSAgICBtX2RvbWluYXRvcnMgPSBudWxscHRyOwotICAg
IG1fbmF0dXJhbExvb3BzID0gbnVsbHB0cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBudWxs
cHRyOworICAgIG1fY3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FEb21pbmF0b3Jz
ID0gbnVsbHB0cjsKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FO
YXR1cmFsTG9vcHMgPSBudWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMg
PSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CiAgICAgbV9i
YWNrd2FyZHNDRkcgPSBudWxscHRyOwpAQCAtODUwLDEyICs4NzAsMzcgQEAgQmxvY2tMaXN0IEdy
YXBoOjpibG9ja3NJblByZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIEJs
b2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29y
a2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3
b3JrbGlzdC5wb3AoKSkgewogICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKICAgICAgICAg
ICAgIHdvcmtsaXN0LnB1c2goYmxvY2stPnN1Y2Nlc3NvcihpKSk7CiAgICAgfQorCisgICAgaWYg
KHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgLy8gV2hlbiBpdGVyYXRpbmcgb3ZlciBw
cmUgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5hdG9ycworICAgICAgICAvLyBiZWZvcmUgdGhp
bmdzIHRoZXkgZG9taW5hdGUuCisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChh
dXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
cmVzdWx0LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJl
c3VsdFtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQu
c2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3Vs
dFtqXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9y
cy5kb21pbmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpIDwgaik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAg
ICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7
CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTg2Myw3ICs5MDgsOCBAQCBCbG9j
a0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0
OwogICAgIFBvc3RPcmRlckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVz
aChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBv
aW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxv
Y2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRl
bS5vcmRlcikgewogICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTg3Niw2ICs5MjIs
MzEgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7
CisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7
CisgICAgICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBvdmVyIHJldmVyc2UgcG9zdCBvcmRlciwg
d2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgICAgICAvLyBiZWZvcmUgdGhpbmdzIHRo
ZXkgZG9taW5hdGUuCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJlc3VsdFtp
XTsKKyAgICAgICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuc2l6ZSgp
OyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3VsdFtqXTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ycy5kb21p
bmF0ZXMoYSwgYikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpID4g
aik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAg
ICAgIGlmIChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAgICAgICAg
ICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7CisgICAg
fQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTU0Myw0NCBAQCB2b2lk
IEdyYXBoOjpsb2dBc3NlcnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlvbkZhaWx1cmUo
KnRoaXMsIHRvQ1N0cmluZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRlckR1bXAoYmxv
Y2spLCAiXG5cbiIpLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsKIH0KIAotRG9t
aW5hdG9ycyYgR3JhcGg6OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9ycyYgR3JhcGg6
OmVuc3VyZUNQU0RvbWluYXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBT
U0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21pbmF0b3JzKQor
ICAgICAgICBtX2Nwc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0RvbWluYXRvcnM+
KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NBRG9taW5hdG9y
cyYgR3JhcGg6OmVuc3VyZVNTQURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9kb21pbmF0b3Jz
KQotICAgICAgICBtX2RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0
aGlzKTsKLSAgICByZXR1cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zv
cm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9zc2FEb21pbmF0
b3JzKQorICAgICAgICBtX3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWlu
YXRvcnM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0KIAotUHJlUG9z
dE51bWJlcmluZyYgR3JhcGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BTTmF0dXJhbExv
b3BzJiBHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAoIW1fcHJlUG9z
dE51bWJlcmluZykKLSAgICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjptYWtlX3VuaXF1
ZTxQcmVQb3N0TnVtYmVyaW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBvc3ROdW1iZXJp
bmc7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVy
c2lvbik7CisgICAgZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9jcHNOYXR1cmFs
TG9vcHMpCisgICAgICAgIG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExvb3BzOwogfQog
Ci1OYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NBTmF0dXJhbExv
b3BzJiBHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1cmVEb21pbmF0
b3JzKCk7Ci0gICAgaWYgKCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1cmFsTG9vcHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9u
YXR1cmFsTG9vcHM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CisgICAgZW5z
dXJlU1NBRG9taW5hdG9ycygpOworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAg
IG1fc3NhTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0
aGlzKTsKKyAgICByZXR1cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcm
IEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoKQogeworICAgIC8vIFdlIGNvdWxkIGVhc2lseSBy
ZWxheCB0aGlzIGluIHRoZSBmdXR1cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdz
IG9ubHkgdXNlZCBpbiBTU0EuCisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAog
ICAgIGlmICghbV9iYWNrd2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjpt
YWtlX3VuaXF1ZTxCYWNrd2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRz
Q0ZHOwpAQCAtMTUwMyw2ICsxNTg4LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFj
a3dhcmRzQ0ZHKAogCiBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRz
RG9taW5hdG9ycygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAg
aWYgKCFtX2JhY2t3YXJkc0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9y
cyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJl
dHVybiAqbV9iYWNrd2FyZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTk2LDcgQEAgQmFja3dh
cmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcyYgR3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2
YWxlbmNlQW5hbHlzaXMpCiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAg
cmV0dXJuICptX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3ICsxNjE0LDcg
QEAgTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAg
ICAgICAgICBpZiAoIW5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVu
dCA9IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2Rl
KiBhcmd1bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxv
Y2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1l
bnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpAQCAtMTY5OCw2ICsxNzg1LDEzIEBAIGJvb2wgR3Jh
cGg6OmNhbkRvRmFzdFNwcmVhZChOb2RlKiBub2RlLCAKICAgICByZXR1cm4gYWxsR29vZDsKIH0K
IAordm9pZCBHcmFwaDo6Y2xlYXJDUFNDRkdEYXRhKCkKK3sKKyAgICBtX2Nwc05hdHVyYWxMb29w
cyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc0NG
RyA9IG51bGxwdHI7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAko
cmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwxNyBAQCBjbGFzcyBCYWNr
d2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZHOwogY2xhc3Mg
Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0dXJhbExvb3Bz
OwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZHOwordXNpbmcgU1NBQ0ZH
ID0gQ0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OwordXNp
bmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxM
b29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0dXJhbExvb3BzID0gTmF0
dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGbG93TWFwOwog
CkBAIC05MDEsOSArOTEyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRGVidWdnZXJFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAotICAgIERvbWlu
YXRvcnMmIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5nJiBlbnN1cmVQ
cmVQb3N0TnVtYmVyaW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1cmFsTG9vcHMo
KTsKKyAgICBDUFNEb21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgU1NBRG9t
aW5hdG9ycyYgZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05hdHVyYWxMb29wcyYgZW5z
dXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3BzJiBlbnN1cmVTU0FOYXR1
cmFsTG9vcHMoKTsKICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NGRygpOwogICAg
IEJhY2t3YXJkc0RvbWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKTsKICAgICBD
b250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMoKTsKQEAgLTkxNiwxMiArOTI4LDE1IEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzU2NvcGVS
ZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJs
b2NrLT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZvaWQgY2xlYXJDUFNDRkdE
YXRhKCk7CisKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CiAgICAgQ29kZUJsb2Nr
KiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAg
ICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxS
ZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwg
MT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47
CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1Zh
bHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAt
OTU2LDExICs5NzEsMTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBB
cml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0
IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJn
dW1lbnRzOworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50
cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5n
bGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3Zl
IGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwot
ICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFy
aWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4
PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9uPiBtX3RyYW5zaXRpb25z
OwpAQCAtOTgyLDEwICs5OTcsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpT
T2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9w
ZXJ0eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwog
ICAgIFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJl
UG9zdE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxO
YXR1cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1f
Y2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2Jh
Y2t3YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9i
YWNrd2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVu
Y2VBbmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAy
Niw4IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBi
b29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVy
cyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2Fj
aGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5Q
bGFjZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTMsNTQgKzkzLDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVB
YnMKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFz
aWNCbG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2
aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3Qt
PmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJl
clN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0
dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsg
KytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwot
Ci0gICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3Jt
ID09IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNb
aV07Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9h
cmd1bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9y
bWF0ID0gRmx1c2hlZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9y
bWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgZm9y
IChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBv
aW50LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5k
Q29uc3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2Ji
ZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50
LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsK
KworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5udW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZh
bHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1h
dCBmb3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBlbnRyeXBvaW50
cyBpbiB0aGUgRlRMLCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgIC8vIHdoYXQg
d2UgZG8gaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5
NgorICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOwor
ICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0g
Rmx1c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAg
ICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAg
ICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUo
U3BlY0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1
ZToKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSku
bWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFk
IGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQp
IHsKLSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJv
b3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBy
b290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRh
aWwubG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkg
ewotICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7
Ci0gICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50
cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0
dXJhbE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlu
cyhibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFi
b3ZlLgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQo
YmxvY2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBm
YWxzZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw3ICsz
NzEsNyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5i
bG9jayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAgICAgICAgCisKICAgICBj
YXNlIFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9u
IDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgp
CiAgICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsK
ICAgICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtU
b0ZpdCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5p
ZmllZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJp
bmtUb0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJl
dmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBv
c3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0
T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50
RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlw
b2ludERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNo
RW50cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0
IENhdGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRl
eDsgfSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQor
ICAgIHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hF
bnRyeXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0
IENhdGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNv
ZGVJbmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3Ig
KGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRz
KSB7CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRl
Y29kZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0
ZWNvZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRD
YXRjaEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNv
ZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgewor
ICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0
ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9
KTsKKyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0
JiBleGl0KQogICAgIHsKQEAgLTEzMiwxMCArMTU4LDEzIEBAIHByaXZhdGU6CiBwdWJsaWM6CiAg
ICAgQ29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JF
bnRyeTsKKyAgICBWZWN0b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRyeXBvaW50czsK
ICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3Rv
cjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZH
OjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07CiAgICAgREZHOjpNaW5p
ZmllZEdyYXBoIG1pbmlmaWVkREZHOworICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50cnlC
dWZmZXI7CisKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICB1aW50OF90IG5ldmVyRXhlY3V0ZWRF
bnRyeSB7IDEgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDggQEAg
c3RhdGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBp
bGVyOjpjb21waWxlKCkKIHsKKyAgICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAg
c2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQy
OCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlRnVuY3Rpb24oKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAg
ICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1
NSwyMyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5k
aWYKIAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2sm
IGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxp
bmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAg
UkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFT
RV9BU1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBl
bnRyeXBvaW50IGlzIGJ5IGRlZmluaXRpb24gcmVhY2hhYmxlLgorICAgIG1faml0Q29kZS0+YXBw
ZW5kQ2F0Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5v
ZmZzZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lk
IEpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRD
b21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAg
IFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8v
IE9TUiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUg
YnkgY29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rp
b25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JF
bnRyeURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9j
ay5ieXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAor
CiAgICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9m
UGFzdFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1
ZXM6IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3Rl
ZApAQCAtNjcwLDYgKzY4MywxMiBAQCB2b2lkIEpJVENvbXBpbGVyOjpzZXRFbmRPZkNvZGUoKQog
ICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWxJZ25vcmluZ1dhdGNocG9pbnRz
KCkpOwogfQogCit2b2lkIEpJVENvbXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpCit7
CisgICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KQorICAgICAgICBt
X2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSB2bSgpLT5zY3JhdGNoQnVmZmVyRm9yU2l6
ZShzaXplb2YoSlNWYWx1ZSkgKiAoKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5
KSk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpM
YWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlw
b2ludChCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZl
ciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJl
ZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAgCkBAIC0y
ODQsNiArMjg1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5kRXhjZXB0aW9uSGFuZGxp
bmdPU1JFeGl0KEV4aXRLaW5kLCB1bnNpZ25lZCBldmVudFN0cmVhbUluZGV4LCBDb2RlT3JpZ2lu
LCBIYW5kbGVySW5mbyogZXhjZXB0aW9uSGFuZGxlciwgQ2FsbFNpdGVJbmRleCwgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IGp1bXBzVG9GYWlsID0gTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0KCkp
OwogCisgICAgdm9pZCBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAgLy8gVGhlIGRh
dGFmbG93IGdyYXBoIGN1cnJlbnRseSBiZWluZyBnZW5lcmF0ZWQuCiAgICAgR3JhcGgmIG1fZ3Jh
cGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gU1NB
TmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQogICAgICAg
ICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNT
QSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAg
ICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVT
U0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7
CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKIAog
ICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9kYXRh
LnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAgICAgICAgbV9k
YXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFjaCBsb29wIHdy
aXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBiZWxvbmcgdG8g
aW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3Aq
IGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwor
ICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJh
bExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFsb29wKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBt
X2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRzIHByZS1oZWFk
ZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93IHdoYXQgaXQg
Y2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25h
dHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcElu
ZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0
IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bG9vcChsb29w
SW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5pbmRleCgp
XTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJN
b3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBv
dXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3Ao
bG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAgICAgICAgICAgIG91dGVy
TG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqb3V0ZXJM
b29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExv
b3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAgICAgICAgbV9k
YXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRlcyk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3AuaGVhZGVyKCk7
CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJlZGVjZXNz
b3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5h
dGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1f
c3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHByZUhlYWRlciA9IHByZWRl
Y2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPGNvbnN0
IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsK
ICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRl
cigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9u
YXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBjb25zdCBO
YXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExv
b3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBjdXJyZW50ID0g
bG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAgICAgICAgIGN1cnJlbnQg
PSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQor
ICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5l
ck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAgIGxvb3BTdGFjay5hcHBl
bmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJlbWVtYmVyOiB0aGUg
bG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBzbyBpZiB3ZSB3
YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVjYXVzZSBtb3N0
IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBsb29wcy4KICAg
ICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJvZHlJbmRleC0t
OykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5hdChib2R5SW5k
ZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1
cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1
YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1fZGF0YVtzdWJM
b29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRG
R0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRl
ICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRG
R1BoYXNlLmgiCkBAIC00NiwyMiArNDcsNzAgQEAgcHVibGljOgogCiAgICAgYm9vbCBydW4oKQog
ICAgIHsKLSAgICAgICAgaWYgKCFtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxw
dHIsIG1fZ3JhcGgubV9mb3JtID09IExvYWRTdG9yZSk7CiAKLSAgICAgICAgbV9jdXJyZW50Qmxv
Y2tMaXZlbmVzcy5yZXNpemUobV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRUYWlsLm51bWJl
ck9mTG9jYWxzKCkpOworICAgICAgICBpZiAoIW1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVy
cykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5z
ZXJ0aW9uU2V0KG1fZ3JhcGgpOwotICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9n
cmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7Ci0gICAgICAgICAgICBoYW5kbGVCbG9jayhi
bG9jaywgaW5zZXJ0aW9uU2V0KTsKLSAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJs
b2NrKTsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycykgeworICAg
ICAgICAgICAgbV9jdXJyZW50QmxvY2tMaXZlbmVzcy5yZXNpemUobV9ncmFwaC5ibG9jaygwKS0+
dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOworCisgICAgICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAg
ICAgICAgICAgICAgaGFuZGxlQmxvY2tGb3JUcnlDYXRjaChibG9jaywgaW5zZXJ0aW9uU2V0KTsK
KyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBib29s
IGlzVmFsaWRGbHVzaExvY2F0aW9uKEJhc2ljQmxvY2sqIHN0YXJ0aW5nQmxvY2ssIHVuc2lnbmVk
IGluZGV4LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICB7CisgICAgICAgIFZlY3RvcjxC
YXNpY0Jsb2NrKiwgND4gd29ya2xpc3Q7CisgICAgICAgIEJsb2NrU2V0IHNlZW47CisKKyAgICAg
ICAgYXV0byBhZGRQcmVkZWNlc3NvcnMgPSBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSB7CisgICAg
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogYmxvY2stPnByZWRlY2Vzc29ycykgewor
ICAgICAgICAgICAgICAgIGJvb2wgaXNOZXdFbnRyeSA9IHNlZW4uYWRkKGJsb2NrKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICAgICAgd29ya2xpc3Qu
YXBwZW5kKGJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBhdXRv
IGZsdXNoSXNEZWZpbml0ZWx5SW52YWxpZCA9IFsmXSAoQmFzaWNCbG9jayogYmxvY2ssIHVuc2ln
bmVkIGluZGV4KSB7CisgICAgICAgICAgICBib29sIGFsbEdvb2QgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGluZGV4OyBpLS07ICkgeworICAgICAgICAgICAgICAgIGlm
IChibG9jay0+YXQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkgJiYgYmxvY2stPmF0KGkpLT5s
b2NhbCgpID09IG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxsR29vZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGFsbEdvb2QpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgICAgICBpZiAoYmxvY2stPnByZWRlY2Vzc29ycy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcm9vdCBibG9jay4gV2UgcHJvdmVkIHdl
IHJlYWNoZWQgaGVyZSwgdGhlcmVmb3JlIHdlIGNhbid0IEZsdXNoLCBhcworICAgICAgICAgICAg
ICAgIC8vIGl0J2xsIG1ha2UgdGhpcyBsb2NhbCBsaXZlIGF0IHRoZSBzdGFydCBvZiBhIHJvb3Qg
YmxvY2ssIHdoaWNoIGlzIGludmFsaWQgSVIuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkZFByZWRlY2Vzc29ycyhibG9jayk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKGZsdXNo
SXNEZWZpbml0ZWx5SW52YWxpZChzdGFydGluZ0Jsb2NrLCBpbmRleCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKKyAgICAg
ICAgICAgIGlmIChmbHVzaElzRGVmaW5pdGVseUludmFsaWQoYmxvY2ssIGJsb2NrLT5zaXplKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKICAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlvbihDb2RlT3JpZ2lu
IG9yaWdpbikKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXhUb0NoZWNrID0g
b3JpZ2luLmJ5dGVjb2RlSW5kZXg7CkBAIC04NiwxMiArMTM1LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgfQogICAgIH0KIAotICAgIHZvaWQgaGFuZGxlQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIElu
c2VydGlvblNldCYgaW5zZXJ0aW9uU2V0KQorICAgIHZvaWQgaGFuZGxlQmxvY2tGb3JUcnlDYXRj
aChCYXNpY0Jsb2NrKiBibG9jaywgSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQpCiAgICAgewog
ICAgICAgICAvLyBCZWNhdXNlIHByZWNpc2UganVtcCB0YXJnZXRzIGVuc3VyZXMgdGhhdCB0aGUg
c3RhcnQgb2YgYSAidHJ5IiBibG9jayBpcyBpdHMKICAgICAgICAgLy8gb3duIGJhc2ljIGJsb2Nr
LCB3ZSB3aWxsIG5ldmVyIGhhdmUgdHdvICJ0cnkiIHN0YXRlbWVudHMgaW4gdGhlIHNhbWUgREZH
Ci0gICAgICAgIC8vIGJhc2ljIGJsb2NrLiBUaGVyZWZvcmUsIGNoZWNraW5nIHRoZSBmaXJzdCBu
b2RlIGluIHRoZSBibG9jayBpcyBzdWZmaWNpZW50IAotICAgICAgICAvLyB0byBjaGVja2luZyBp
ZiB3ZSdyZSBpbiBhIHRyeSBibG9jay4KKyAgICAgICAgLy8gYmFzaWMgYmxvY2sgYWZ0ZXIgYnl0
ZWNvZGUgcGFyc2luZy4gVGhlcmVmb3JlLCBjaGVja2luZyB0aGUgZmlyc3Qgbm9kZSBpbgorICAg
ICAgICAvLyB0aGUgYmxvY2sgaXMgc3VmZmljaWVudCB0byBjaGVja2luZyBpZiB3ZSdyZSBpbiBh
IHRyeSBibG9jay4KICAgICAgICAgaWYgKCF3aWxsQ2F0Y2hFeGNlcHRpb24oYmxvY2stPmF0KDAp
LT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDEsMjQgKzE1
MCwzMCBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJn
dW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1
bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJn
dW1lbnQoKV07CisKICAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgICAgICAgICAgc2VlbklubGlu
ZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAh
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CisgICAgICAgICAgICAgICAgLy9ib29sIGlzUHJp
bW9yZGlhbFNldCA9IChub2RlLT5vcCgpID09IFNldExvY2FsKQorICAgICAgICAgICAgICAgIC8v
ICAgICYmICFjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQobm9kZS0+bG9jYWwoKSkKKyAg
ICAgICAgICAgICAgICAvLyAgICAmJiAhbV9oYXNSZWFjaGluZ0RlZkF0SGVhZFtibG9ja10ub3Bl
cmFuZChub2RlLT5sb2NhbCgpKTsKKworICAgICAgICAgICAgICAgIGlmICgobm9kZS0+b3AoKSA9
PSBTZXRMb2NhbCB8fCBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KSkgewogICAgICAgICAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CiAKLSAgICAg
ICAgICAgICAgICAgICAgaW50IHN0YWNrT2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1lID8gaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDA7CisgICAgICAgICAgICAgICAgICAgIC8vaW50IHN0
YWNrT2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCA6IDA7CiAgICAgICAgICAgICAgICAgICAgIGlmICgob3BlcmFuZC5pc0xvY2FsKCkgJiYgbV9j
dXJyZW50QmxvY2tMaXZlbmVzc1tvcGVyYW5kLnRvTG9jYWwoKV0pCi0gICAgICAgICAgICAgICAg
ICAgICAgICB8fCAob3BlcmFuZC5vZmZzZXQoKSA9PSBzdGFja09mZnNldCArIENhbGxGcmFtZTo6
dGhpc0FyZ3VtZW50T2Zmc2V0KCkpKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG9wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJs
ZUFjY2Vzc0RhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NE
YXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQpOwotCi0gICAgICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpLCBTcGVjTm9uZSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRmx1c2gsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlQWNj
ZXNzRGF0YSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfHwgb3BlcmFuZC5pc0FyZ3VtZW50
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vfHwgKG9wZXJhbmQub2Zmc2V0KCkgPT0g
c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRGbHVzaExvY2F0aW9uKGJsb2NrLCBpLCBvcGVy
YW5kKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGVBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRh
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBu
ZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShpLCBTcGVjTm9uZSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZsdXNoLCBub2RlLT5vcmlnaW4sIE9wSW5mbyh2YXJpYWJsZUFj
Y2Vzc0RhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KIApAQCAtMTM0LDE0ICsxODksMTYgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIGlmICgob3BlcmFuZC5pc0xvY2FsKCkgJiYgbV9jdXJyZW50QmxvY2tM
aXZlbmVzc1tvcGVyYW5kLnRvTG9jYWwoKV0pIAogICAgICAgICAgICAgICAgICAgICB8fCBvcGVy
YW5kLmlzQXJndW1lbnQoKQogICAgICAgICAgICAgICAgICAgICB8fCBhbHdheXNJbnNlcnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBhY2Nlc3NEYXRhID0gY3Vy
cmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIWFjY2Vzc0RhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NEYXRhID0g
bmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQpOworICAgICAgICAgICAgICAgICAgICBpZiAo
aXNWYWxpZEZsdXNoTG9jYXRpb24oYmxvY2ssIGJsb2NrLT5maW5kVGVybWluYWwoKS5pbmRleCwg
b3BlcmFuZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
YWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghYWNjZXNzRGF0YSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQpOwog
Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVy
YW5kKSA9IGFjY2Vzc0RhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmxvY2tB
Y2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCkgPSBhY2Nlc3NEYXRhOwogCi0gICAgICAgICAgICAg
ICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKGJsb2NrLT5zaXplKCksIFNwZWNOb25lLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoLCBvcmlnaW4sIE9wSW5mbyhhY2Nlc3NEYXRh
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShibG9j
ay0+c2l6ZSgpLCBTcGVjTm9uZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gs
IG9yaWdpbiwgT3BJbmZvKGFjY2Vzc0RhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGxvY2FsID0gMDsgbG9jYWwgPCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxz
KCk7IGxvY2FsKyspCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVI
ZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwODYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdy
YXBoLCBCbG9ja0luc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBibG9jaykK
IHsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5z
KGJsb2NrKSwgIkFuIGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AiKTsKKwogICAg
IC8vIEZJWE1FOiBJZiB3ZSBydW4gdGhpcyB1dGlsaXR5IG9uIFNTQSBJUiwgdGhlbiB3ZSBtYXkg
ZW5kIHVwIHdpdGggYSBiaXphcnJlIGFycmFuZ2VtZW50IG9mCiAgICAgLy8gVXBzaWxvbnMgYW5k
IFBoaXMsIGxpa2U6CiAgICAgLy8KQEAgLTY5LDcgKzcxLDggQEAgQmFzaWNCbG9jayogY3JlYXRl
UHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIC8vIEluc3RlYWQsIHdlIHVzZSB0aGUgbWF4IG9m
IHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgbG9vcCBib2R5J3Mgbm9uLWxvb3AgcHJlZGVjZXNzb3Jz
LgogICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5h
dG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIEFTU0VSVChncmFw
aC5tX2Zvcm0gIT0gU1NBKTsKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNlc3Nvci0+ZXhlY3V0aW9u
Q291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVI
ZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3Nvcklu
ZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBw
cmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBi
bG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICBpZiAoZ3JhcGgu
bV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYg
KGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNl
c3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7CiAgICAgICAgIGJsb2Nr
LT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsxMzMsMTYgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9t
aW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVD
UFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcElu
ZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7
Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFs
TG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5n
UHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBo
Lm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAg
ICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29w
cy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVI
ZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05ld1ByZUhlYWRlciA9IGZh
bHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gbG9vcC5o
ZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgewotICAg
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS0+cHJl
ZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHByZWRlY2Vzc29yKSkKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCku
bm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7CisgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLm5vZGUo
KS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCkubm9kZSgpLCBw
cmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAgZXhpc3Rp
bmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY4LDE0IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1bCBpZiBpdCdzIHBvc3Np
YmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAgICAgICAgICAvLyBpZiB0
aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9lc24ndCBhbGxvdyBmb3Ig
ZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2luIG9mIHRoZSBsb29wIGhl
YWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJlLWhlYWRlci4KLSAgICAg
ICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS0+YXQoMCktPm9y
aWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5o
ZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAgICAgICAgICAgICAgJiYg
IWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhpdE9LKQogICAgICAgICAg
ICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0
aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlcihtX2dy
YXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw4ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpbnNlcnRpb25TZXQu
ZXhlY3V0ZShibG9jayk7CiAgICAgICAgIH0KIAotICAgICAgICB0cmVhdFJvb3RCbG9jayhtX2dy
YXBoLmJsb2NrKDApLCBpbnNlcnRpb25TZXQpOwotICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0
ZShtX2dyYXBoLmJsb2NrKDApKTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50
IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICB0cmVhdFJvb3RCbG9jayhl
bnRyeXBvaW50LCBpbnNlcnRpb25TZXQpOworICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoZW50cnlwb2ludCk7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC02Nyw3ICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmlt
b3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxv
Y2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5s
b2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxT
ZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChi
bG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRp
YWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3Vt
ZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5v
cCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFu
ZChvcGVyYW5kKTsKQEAgLTEyOCwxMiArMTM2LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fs
cygpOyBpKyspIHsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaSk7Ci0gICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGFj
Y2Vzc0RhdGE7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGluaXRp
YWxBY2Nlc3NOb2Rlcy5vcGVyYW5kKG9wZXJhbmQpLT5vcCgpID09IEZsdXNoKTsgLy8gV2Ugc2hv
dWxkIGhhdmUgaW5zZXJ0ZWQgYSBGbHVzaCBiZWZvcmUgYW55IFNldExvY2FsL1NldEFyZ3VtZW50
IGZvciB0aGUgbG9jYWwgdGhhdCB3ZSBhcmUgYW5hbHl6aW5nIG5vdy4KLSAgICAgICAgICAgIGFj
Y2Vzc0RhdGEgPSBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBhY2Nlc3NEYXRhID0gaW5pdGlhbEFjY2Vzc0RhdGEub3Bl
cmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwg
YWNjZXNzRGF0YSk7CiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgwLCBTcGVj
Tm9uZSwgCiAgICAgICAgICAgICAgICAgU2V0TG9jYWwsIG9yaWdpbiwgT3BJbmZvKGFjY2Vzc0Rh
dGEpLCBFZGdlKHVuZGVmaW5lZCkpOworICAgICAgICAgICAgYWNjZXNzRGF0YS0+bWVyZ2VTaG91
bGROZXZlclVuYm94KHRydWUpOyAvLyBXZSBkb24ndCBrbm93IGlmIHdlIGNhbiBleGl0IGhlcmUu
CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBFeGl0TW9k
ZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBJbnQ1MlJlcDoKICAg
ICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3Rp
ZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdHlw
ZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Ci0KLWNsYXNzIE5hdHVyYWxM
b29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3Bz
PENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9vcHMpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxMb29wcyhHcmFw
aCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3JhcGgubV9jZmcs
IGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAg
OiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpLCBl
bnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlvbkVuYWJsZWQo
KSkKICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVy
YWxMb29wPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8
Q1BTQ0ZHPjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24g
MjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkg
PT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlz
U3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAg
ICB9CkBAIC0xMzcyLDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCiAgICAg
ICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlz
SnVtcCgpKQpAQCAtMTU0MSw2ICsxNTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG9w
KCkgPT0gSWRlbnRpdHlXaXRoUHJvZmlsZSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxT
cGVjdWxhdGVkVHlwZT4oKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5k
ZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9j
YWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQorCisg
ICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hMb2NhbFByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcElu
Zm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigpOworICAgIH0KICAgICAKICAgICBib29sIGhhc0NlbGxP
cGVyYW5kKCkKICAgICB7CkBAIC0xOTM2LDcgKzE5NDksNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KLSAgICAKKwog
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50
byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAg
LyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJh
Y3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hM
b2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20g
dGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR05v
ZGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCkBAIC0zMzYs
NiArMzM3LDY5IEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAg
ICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0
YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkK
K3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJU
KGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRD
b2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVu
dHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhp
cyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBp
cyB0aGF0IHdlIGRpZG4ndAorICAgICAgICAvLyBjb21waWxlIHRoaXMgb3BfY2F0Y2ggYXMgYW4g
ZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQgd2hlbiBzdGFydGluZworICAg
ICAgICAvLyB0aGUgY29tcGlsYXRpb24uCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVu
IHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFy
Z3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRz
LnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5j
aGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsK
KyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3Vt
ZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYg
KCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46Cisg
ICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1
c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUu
IFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFu
IGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBq
aXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgp
OworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVn
aXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNl
dCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5
dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRl
Y29kZU9mZnNldCgpICsgMV0udS5wb2ludGVyKTsKKyAgICBKU1ZhbHVlKiBkYXRhQnVmZmVyID0g
cmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+
ZGF0YUJ1ZmZlcigpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JF
YWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAo
IVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBkYXRhQnVmZmVyW2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIo
cHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsK
KworICAgIHJldHVybiBqaXRDb2RlLT5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KGNhdGNoRW50
cnlwb2ludC0+bV9tYWNoaW5lQ29kZU9mZnNldCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKKyNpbmNs
dWRlICJERkdGbHVzaEZvcm1hdC5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSA8
d3RmL0JpdFZlY3Rvci5oPgogCkBAIC02OSw5ICs3MCwyMCBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0
T1NSRW50cnlEYXRhQnl0ZWNvZGVJCiAgICAgcmV0dXJuIG9zckVudHJ5RGF0YS0+bV9ieXRlY29k
ZUluZGV4OwogfQogCitzdHJ1Y3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSB7CisgICAgdW5zaWduZWQg
bV9ieXRlY29kZUluZGV4OworICAgIHVuc2lnbmVkIG1fbWFjaGluZUNvZGVPZmZzZXQ7CisgICAg
Ly8gV2UgdXNlIHRoaXMgd2hlbiBkb2luZyBPU1IgZW50cnkgYXQgY2F0Y2guIFdlIHByb3ZlIHRo
ZSBhcmd1bWVudHMKKyAgICAvLyBhcmUgb2YgdGhlIGV4cGVjdGVkIHR5cGUgYmVmb3JlIGVudGVy
aW5nIGF0IGEgY2F0Y2ggYmxvY2suCisgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50
Rm9ybWF0czsKK307CisKIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgZGF0YSBidWZmZXIgdGhh
dCB0aGUgT1NSIGVudHJ5IHRodW5rIHdpbGwgcmVjb2duaXplIGFuZAogLy8gcGFyc2UuIElmIHRo
aXMgcmV0dXJucyBudWxsLCBpdCBtZWFucyAKIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3Rh
dGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKworLy8gSWYgbnVsbCBp
cyByZXR1cm5lZCwgd2UgY2FuJ3QgT1NSIGVudGVyLiBJZiBpdCdzIG5vdCBudWxsLCBpdCdzIHRo
ZSBQQyB0byBqdW1wIHRvLgordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiwg
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZWxzZQogaW5saW5lIHZvaWQq
IHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNpZ25lZCkgeyByZXR1
cm4gMDsgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIw
ODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHQmxvY2tJbnNlcnRpb25TZXQu
aCIKKyNpbmNsdWRlICJERkdDRkcuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUg
IkRGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIK
QEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChieXRlY29k
ZUluZGV4ICE9IFVJTlRfTUFYKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5lZWRlZCBieSBjcmVh
dGVQcmVIZWFkZXIoKS4KLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAg
ICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZSA9IG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrOwogICAgICAgICAKQEAg
LTExMiwxNiArMTEzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gdHlwZSBjaGVja3MgdG8gaGVy
ZS4KICAgICAgICAgb3JpZ2luID0gdGFyZ2V0LT5hdCgwKS0+b3JpZ2luOwogICAgICAgICAKKyAg
ICAgICAgVmVjdG9yPE5vZGUqLCA4PiBuZXdBcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3Ig
KGludCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsg
Kythcmd1bWVudCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFi
bGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkg
ewogICAgICAgICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRB
cmd1bWVudCBldmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2Rl
ID0gbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9k
ZSA9IG5ld0FyZ3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBO
b2RlKiBub2RlID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBo
LCBTcGVjTm9uZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8o
b2xkTm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9h
cmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIG5ld0FyZ3VtZW50c1thcmd1
bWVudF0gPSBub2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBs
b2NhbCA8IGJhc2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDgg
KzE0MSwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIGluc2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50
cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0g
PSBuZXdSb290OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFy
KCk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3Qs
IG5ld0FyZ3VtZW50cyk7CisKKyAgICAgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFrZV91
bmlxdWU8Q1BTQ0ZHPihtX2dyYXBoKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVhY2hhYmls
aXR5KCk7CiAgICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI3LDcgKzcy
Nyw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMo
KTsKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dy
YXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0
b3JzKCk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAg
ICBwZXJmb3JtT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29t
YmluZWRMaXZlbmVzcyA9IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICsz
NjYsOCBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8g
SWYgd2UncmUgZG9pbmcgdmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2
ZSB0aGVtIGFuIG9wcG9ydHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFz
IGdvb2QgYSB0aW1lIGFzIGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxl
ZCgpKSB7Ci0gICAgICAgIGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1
cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsK
KyAgICAgICAgZGZnLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQ
U05hdHVyYWxMb29wcygpOwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShy
ZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3RO
dW1iZXJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQot
Ci0jaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tXb3Jr
bGlzdC5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKLQotUHJlUG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3Jh
cGgpCi17Ci0gICAgbV9tYXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAg
ICBQb3N0T3JkZXJCbG9ja1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goZ3Jh
cGguYmxvY2soMCkpOwotICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAgIHVuc2ln
bmVkIG5leHRQb3N0TnVtYmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9
IHdvcmtsaXN0LnBvcCgpKSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAg
ICBjYXNlIFZpc2l0T3JkZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9w
cmVOdW1iZXIgPSBuZXh0UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9z
dChpdGVtLm5vZGUpOwotICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBp
dGVtLm5vZGUtPnN1Y2Nlc3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHN1
Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQ
b3N0OgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9z
dE51bWJlcisrOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVBy
ZVBvc3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRG
RzsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQp
Ci17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAgICAgICAg
b3V0LnByaW50KCJGb3J3YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcm9z
c0VkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIEJhY2tFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
LQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVy
aW5nLmgJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlUG9zdE51bWJlcmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5j
bHVkZSAiREZHQmxvY2tNYXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
Ci0KLWVudW0gRWRnZUtpbmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRnZSwKLSAg
ICBCYWNrRWRnZQotfTsKLQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUHJlUG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0
TnVtYmVyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayogYmxvY2sp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVuc2lnbmVk
IHBvc3ROdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2Nr
XS5tX3Bvc3ROdW1iZXI7IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9y
IG9mIHRvPwotICAgIGJvb2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJh
c2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJlcihmcm9t
KSA8IHByZU51bWJlcih0bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0
TnVtYmVyKHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9j
ayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJv
bSA9PSB0byB8fCBpc1N0cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAgICAKLSAg
ICBib29sIGlzU3RyaWN0RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sq
IHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JPZih0bywg
ZnJvbSk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNCbG9jayog
ZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBbmNl
c3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBi
b2d1cyBhbnN3ZXIgaWYgdGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2Fu
dCB0byBkZXRlcm1pbmUKLSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2
ZSB0byBkbyBpdCB5b3Vyc2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBm
cm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmljdERl
c2NlbmRhbnRPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0g
ICAgICAgIAotICAgICAgICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAg
IHJldHVybiBCYWNrRWRnZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0g
ICAgfQotICAgIAotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAgICAgdW5z
aWduZWQgbV9wcmVOdW1iZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsKLSAgICB9
OwotCi0gICAgQmxvY2tNYXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYsIEpTQzo6REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0j
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Jbmpl
Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxNiBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmls
ZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXZSBvbmx5
IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1l
bnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBi
ZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25zLgorICAgICAgICAgICAgYXV0byYg
YXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGgu
YmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJn
IDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKyth
cmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBwcm9maWxlZEJs
b2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7CiAgICAgICAgICAgICAgICAgaWYg
KCFwcm9maWxlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJnXS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCktPnByZWRpY3QoCisKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUtPmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MjUsNiArNzI1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAg
ICAgICAgICAgIHNldFByZWRpY3Rpb24obV9jdXJyZW50Tm9kZS0+Y2F0Y2hMb2NhbFByZWRpY3Rp
b24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgUmVz
b2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbDoKICAgICAgICAgY2FzZSBHZXREeW5h
bWljVmFyOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lu
a2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcg
Kzc2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAgICAgIH0K
IAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBTU0FDYWxjdWxhdG9yIHNz
YUNhbGN1bGF0b3IobV9ncmFwaCk7CiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQo
bV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2Fs
Y3VsYXRvci5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEyICs5NSwxMiBA
QCBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5ld0RlCiAKIFNTQUNhbGN1bGF0
b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZihCYXNpY0Jsb2NrKiBi
bG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFp
bChtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKKyAgICByZXR1
cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2sp
LCB2YXJpYWJsZSk7CiB9CiAKIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6cmVh
Y2hpbmdEZWZBdFRhaWwoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsK
LSAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxv
Y2spKSB7CisgICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9zc2FEb21pbmF0b3Jz
LT5pZG9tKGJsb2NrKSkgewogICAgICAgICBpZiAoRGVmKiBkZWYgPSBtX2RhdGFbYmxvY2tdLm1f
ZGVmcy5nZXQodmFyaWFibGUpKQogICAgICAgICAgICAgcmV0dXJuIGRlZjsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkocmV2aXNp
b24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBQaGlJbnNlcnRpb25GdW5jdG9yPgogICAgIHZvaWQgY29tcHV0ZVBoaXMo
Y29uc3QgUGhpSW5zZXJ0aW9uRnVuY3RvciYgZnVuY3RvcikKICAgICB7Ci0gICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2RvbWluYXRvcnMpOworICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAoVmFyaWFibGUmIHZhcmlhYmxlIDogbV92YXJpYWJsZXMpIHsK
LSAgICAgICAgICAgIG1fZ3JhcGgubV9kb21pbmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0
ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKKyAgICAgICAgICAgIG1fZ3JhcGgubV9zc2FEb21p
bmF0b3JzLT5mb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigK
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS5tX2Jsb2Nrc1dpdGhEZWZzLAogICAgICAgICAgICAg
ICAgIFsmXSAoQmFzaWNCbG9jayogYmxvY2spIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAg
ICBOb2RlKiBwaGlOb2RlID0gZnVuY3RvcigmdmFyaWFibGUsIGJsb2NrKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29u
dmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVkQ1BTKTsK
ICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGguY2xlYXJSZXBsYWNlbWVudHMoKTsKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguY2xlYXJDUFNDRkdE
YXRhKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAK
ICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2coIkdyYXBoIGJlZm9y
ZSBTU0EgdHJhbnNmb3JtYXRpb246XG4iKTsKQEAgLTExMCw3ICsxMTEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIERlY2lkZSB3aGVyZSBQaGlzIGFyZSB0byBi
ZSBpbnNlcnRlZC4gVGhpcyBjcmVhdGVzIHRoZSBQaGkncyBidXQgZG9lc24ndCBpbnNlcnQgdGhl
bQotICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgdGhl
bSBiZWNhdXNlIFNTQUNhbGN1bGF0b3IgaXMgc3VjaCBhIGJyby4KKyAgICAgICAgLy8geWV0LiBX
ZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IGJhc2VkIG9uIHdoZXJlIFNTQUNhbGN1
bGF0b3IgdGVsbHMgdXMgdG8uCiAgICAgICAgIG1fY2FsY3VsYXRvci5jb21wdXRlUGhpcygKICAg
ICAgICAgICAgIFsmXSAoU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqIHNzYVZhcmlhYmxlLCBCYXNp
Y0Jsb2NrKiBibG9jaykgLT4gTm9kZSogewogICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBtX3ZhcmlhYmxlRm9yU1NBSW5kZXhbc3NhVmFyaWFibGUtPmluZGV4
KCldOwpAQCAtMzgxLDE4ICszODIsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgYmxvY2stPnZh
bHVlc0F0SGVhZC5jbGVhcigpOwogICAgICAgICAgICAgYmxvY2stPnNzYSA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFzaWNCbG9jazo6U1NBRGF0YT4oYmxvY2spOwogICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShtX2dyYXBoLm1fYXJndW1l
bnRzLnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVu
dHMuc2l6ZSgpOyBpLS07KSB7CisKKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgbXVsdGlwbGUg
ZW50cnlwb2ludHMgaW4gREZHIFNTQToKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBo
Lm1fZW50cnlwb2ludHMuc2l6ZSgpID09IDEpOworICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBt
X2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZh
bHVlOworICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzLnJlc2l6ZShhcmd1bWVudHMu
c2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYXJndW1lbnRzLnNpemUoKTsgaS0t
OykgewogICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CiAK
LSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5t
X2FyZ3VtZW50c1tpXSk7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBp
bmcuZ2V0KGFyZ3VtZW50c1tpXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG5vZGUpOwogICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+c3RhY2tBY2Nlc3NEYXRh
KCktPmZvcm1hdDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50
Rm9ybWF0c1tpXSA9IGZvcm1hdDsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0g
PSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0
aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KKyAgICAgICAgICAgIGFyZ3VtZW50c1tpXSA9
IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRo
ZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBtX2dyYXBoLm1fZm9ybSA9IFNTQTsKQEAgLTQxNiw3ICs0MjEsMTIgQEAgcHJpdmF0ZToKIAog
Ym9vbCBwZXJmb3JtU1NBQ29udmVyc2lvbihHcmFwaCYgZ3JhcGgpCiB7Ci0gICAgcmV0dXJuIHJ1
blBoYXNlPFNTQUNvbnZlcnNpb25QaGFzZT4oZ3JhcGgpOworICAgIFJFTEVBU0VfQVNTRVJUKCFn
cmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9u
ID0gdHJ1ZTsKKyAgICBib29sIHJlc3VsdCA9IHJ1blBoYXNlPFNTQUNvbnZlcnNpb25QaGFzZT4o
Z3JhcGgpOworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOwor
ICAgIGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24gPSBmYWxzZTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyNSw2ICszMjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAg
Y2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgog
ICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJu
OgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYzNyw2ICs1NjM3LDIzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgdW5yZWFjaGFibGUobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRhZyh0
aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHBheWxvYWQodGhpcyk7CisKKyAgICAgICAgR1BS
UmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBHUFJSZWcgdGFnR1BSID0gdGFnLmdw
cigpOworICAgICAgICBHUFJSZWcgcGF5bG9hZEdQUiA9IHBheWxvYWQuZ3ByKCk7CisKKyAgICAg
ICAgSlNWYWx1ZSogcHRyID0gJnJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KG1faml0LmppdENv
ZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKVtub2RlLT5jYXRjaE9TUkVu
dHJ5SW5kZXgoKV07CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHRlbXBHUFIsIFRhZ09mZnNldCksIHRhZ0dQUik7CisgICAgICAgIG1faml0LmxvYWQz
MihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiwgUGF5bG9hZE9mZnNldCksIHBheWxvYWRH
UFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHRhZ0dQUiwgcGF5bG9hZEdQUiwgbm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2Ug
UGhpOgogICAgIGNhc2UgVXBzaWxvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTk5Nyw2ICs1OTk3LDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNoZWNrU3ViQ2xhc3Mobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICBKU1ZhbHVl
KiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRj
aE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25vZGUtPmNhdGNoT1NSRW50cnlJbmRleCgp
XTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlJlZyB0ZW1w
R1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQ2NChDQ2FsbEhlbHBl
cnM6OkFkZHJlc3ModGVtcEdQUiksIHRlbXBHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHRl
bXBHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICNpZiBFTkFCTEUoRlRMX0pJ
VCkgICAgICAgIAogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6IHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgY2FsbFRpZXJVcCA9IG1faml0LmJyYW5jaEFkZDMyKApAQCAtNjA4NSw2
ICs2MDk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAjZWxzZSAvLyBFTkFCTEUoRlRMX0pJ
VCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJl
dHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5NCw2ICsxNjk0LDEz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2sKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAg
ICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgo
KS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAg
ICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CisgICAgICAgIG1faml0LmVtaXRNYXRl
cmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisgICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxG
cmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsK
KyAgICB9CisKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0
KCkpOwogICAgIAogICAgIG1faml0LmppdEFzc2VydEhhc1ZhbGlkQ2FsbEZyYW1lKCk7CkBAIC0x
Nzg4LDggKzE3OTUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMo
CiAgICAgQVNTRVJUKCFtX2N1cnJlbnROb2RlKTsKICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CiAKKyAgICBhdXRvJiBhcmd1bWVu
dHMgPSBtX2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9qaXQuZ3Jh
cGgoKS5ibG9jaygwKSktPnZhbHVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9qaXQuY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgKytpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBt
X2ppdC5ncmFwaCgpLm1fYXJndW1lbnRzW2ldOworICAgICAgICBOb2RlKiBub2RlID0gYXJndW1l
bnRzW2ldOwogICAgICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVu
dCBpcyBkZWFkLiBXZSBkb24ndCBkbyBhbnkgY2hlY2tzIGZvciBzdWNoIGFyZ3VtZW50cy4KICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTg3MywxMiArMTg4MSwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKCkKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBt
X2ppdC5ncmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICAvLyBDdXJyZW50bHkgd2UgZG9u
J3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCi0gICAgICAg
IC8vIGhlcmUgaWYgbmVlZCBiZS4KLSAgICAgICAgbV9vc3JFbnRyeUhlYWRzLmFwcGVuZChtX2pp
dC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICBpZiAoYmxvY2stPmlzT1NSVGFy
Z2V0IHx8IGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgLy8gQ3VycmVu
dGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhl
bQorICAgICAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgorICAgICAgICAgICAgbV9vc3JFbnRy
eUhlYWRzLmFwcGVuZChtX2ppdC5ibG9ja0hlYWRzKClbYmxvY2tJbmRleF0pOworICAgICAgICB9
CiAgICAgfQogfQogCkBAIC0xODg5LDEwICsxODk2LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmxpbmtPU1JFbnRyaWVzKExpbmsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2ppdC5n
cmFwaCgpLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0KQorICAgICAgICBp
ZiAoIWJsb2NrLT5pc09TUlRhcmdldCAmJiAhYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywg
bV9vc3JFbnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICBp
ZiAoYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSBt
X2ppdC5ncmFwaCgpLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAg
ICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gaXRlci0+dmFsdWU7CisgICAgICAgICAgICBW
ZWN0b3I8Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50
Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOwor
ICAgICAgICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3Rvcikgewor
ICAgICAgICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBG
bHVzaEZvcm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9ybWF0
ID09IEZsdXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZv
cm1hdCA9PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1
c2hGb3JtYXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBh
cmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29zckVu
dHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVudEZv
cm1hdHMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNP
U1JUYXJnZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29z
ckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0KICAg
ICB9CisKKyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygp
OworCiAgICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7
CiAgICAgCiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0
aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAg
ICAKICAgICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBiYXNl
ZCBvbiBsb29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1f
Z3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1f
bmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5leGVj
dXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERlcHRo
KGJsb2NrKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJyYW5j
aCB3ZWlnaHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUgY29y
cmVjdC4gSXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFw
cGx5Q291bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
OCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0dXJu
IGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9vcDsK
KwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJs
aWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04MSw4
ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvRlRM
KCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29wcyYg
bmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3JhcGgu
ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0dXJh
bExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8Y29u
c3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVpbGRO
YXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNoTWFw
PHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4Miw3
ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBI
YXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xv
b3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRN
YXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAgICBI
YXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9vcEhp
bnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlz
VmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBm
b3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNo
b3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBhbiBl
bnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9p
bnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBv
cmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdl
dExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4MywxMyBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIE5CLiBUaGlzIGNvZGUgaXMgbm90IHdyaXR0ZW4gZm9yIHBlcmZvcm1hbmNl
LCBzaW5jZSBpdCBpcyBub3QgaW50ZW5kZWQgdG8gcnVuCiAgICAgICAgIC8vIGluIHJlbGVhc2Ug
YnVpbGRzLgogCi0gICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxlcyBh
dCB0aGUgaGVhZCBvZiB0aGUgcm9vdCBibG9jayBhcmUgZGVhZC4KLSAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByb290LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAg
ICAgICAgVl9FUVVBTCgodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIHJvb3QpLCBzdGF0aWNf
Y2FzdDxOb2RlKj4oMCksIHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChpKSk7CisgICAgICAg
IFZBTElEQVRFKChtX2dyYXBoLmJsb2NrKDApKSwgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRh
aW5zKG1fZ3JhcGguYmxvY2soMCkpKTsKKworICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBs
b2NhbCB2YXJpYWJsZXMgYXQgdGhlIGhlYWQgb2YgYWxsIGVudHJ5cG9pbnRzIGFyZSBkZWFkLgor
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dHMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQorICAgICAgICAgICAgICAgIFZf
RVFVQUwoKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCBlbnRyeXBvaW50KSwgc3RhdGljX2Nh
c3Q8Tm9kZSo+KG51bGxwdHIpLCBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkp
OworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBWYWxpZGF0ZSByZWYgY291bnRzIGFu
ZCB1c2VzLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQs
OCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdp
blN0YWNrKCksCiAgICAgICAgICAgICB0b0NTdHJpbmcoIkdlbmVyYXRlZCBGVEwgSklUIGNvZGUg
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSwg
IiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25D
b3VudCgpLCAiOlxuIikpOwogICAgICAgICAKLSAgICAgICAgZ3JhcGguZW5zdXJlRG9taW5hdG9y
cygpOwotICAgICAgICBncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgZ3JhcGgu
ZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9v
cHMoKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZSA9ICJqc0JvZHkiOwogICAgICAg
ICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGgu
ZW5zdXJlU1NBRG9taW5hdG9ycygpOwogCiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25F
bmFibGVkKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJGdW5jdGlvbiByZWFkeSwgYmVnaW5uaW5n
IGxvd2VyaW5nLlxuIik7CkBAIC0yNjYsOCArMjY2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CiAgICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1l
bnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2so
MCkpLT52YWx1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBh
cmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9h
cmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAg
ICAgICAgICAgbV9vdXQuc2V0T3JpZ2luKG5vZGUpOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAg
IApAQCAtNDQzLDcgKzQ0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBERkc6OkJhc2ljQmxv
Y2sqIHRhcmdldCA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAo
IXRhcmdldCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9j
aywgdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFi
bGVkKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkJsb2NrICIsICp0YXJnZXQsICIg
d2lsbCBiYWlsIGFsc28uXG4iKTsKICAgICAgICAgICAgICAgICB0YXJnZXQtPmNmYUhhc1Zpc2l0
ZWQgPSBmYWxzZTsKQEAgLTE0NDI3LDcgKzE0NDI4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICgh
bV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hpZ2hCbG9j
aykpCisgICAgICAgIGlmICghbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyh2YWx1
ZS5ibG9jaygpLCBtX2hpZ2hCbG9jaykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2
aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzk2LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBp
bnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVp
bnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJ
VE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklE
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJh
dGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA4NjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDYgKzQ2
MywxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0
dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpj
YWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEp
Cit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7
CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKK30KKwogI2lmIFVTRShKU1ZBTFVFNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIGludDMyX3QgYXJnMiwgaW50MzJfdCBhcmczKQogewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24g
MjIwODYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NTYsNiArODU2LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXIKIAogICAgIHVuc2lnbmVkIHRocm93blZhbHVlID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJl
Z1QxLCByZWdUMCk7CisKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNhY2hpbmcgdGhl
IHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKKyAgICAvLyBhcmd1bWVudCB0
eXBlIHByb29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZlciwgZXRjCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTU5OAorCisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQ
Uik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVH
UFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIGlmIChzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0
cnVjdGlvblszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBy
ZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjIwODYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTU0LDYgKzU1NCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVj
dGlvbiogY3VyCiAKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMCwgRXhjZXB0aW9uOjp2YWx1ZU9m
ZnNldCgpKSwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNh
Y2hpbmcgdGhlIHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKKyAgICAvLyBh
cmd1bWVudCB0eXBlIHByb29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZlciwgZXRjCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTU5OAorCisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVP
ZmZzZXQpOworICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1
cm5WYWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0
dXJuVmFsdWVHUFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIGlmIChzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyByZWdzKHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvZmlsZS5tX29wZXJhbmQsIHJlZ3MpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyMjA4NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTE1LDYgKzE1MTUsMTkgQEAgU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwogICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CiB9CisKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgYnl0ZWNvZGVJbmRleCkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKworICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+cmVwbGFjZW1lbnQoKTsKKyAgICBpZiAob3B0aW1pemVkUmVwbGFj
ZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpERkdKSVQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihERkc6OnByZXBhcmVDYXRjaE9T
UkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KSk7Cit9CisK
ICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcnJheVZhbHVlLCBpbnQzMl90IGluZGV4
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICsz
MTcsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0eXBlZGVm
IGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGlu
dDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVy
YXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciog
KEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91YmxlLCBp
bnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VV
aSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKEpJ
VF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5r
SW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRPcGVyYXRp
b25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcqIChKSVRf
T1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKQEAg
LTM5Nyw2ICszOTgsNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShERkdfSklUKQogU2xvd1BhdGhSZXR1cm5UeXBlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lO
VEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2go
RXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGlu
dDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRH
ZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJf
dCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDg2MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MzgsNiArMTYzOCwxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbM10udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHBy
b2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNo
ZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgIH0pOworCisgICAgTExJ
TlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93
X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUp
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjA4
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaGEKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0
X2Zyb21fc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRf
dG9fc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19p
Zl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CitMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNr
ZW5fdGFpbCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFj
a19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTk3LDcgKzE5OTcsMTAgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCiAKICAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMg
dG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0
MyBhYm92ZS4KLSAgICBkaXNwYXRjaCgzKQorCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKKworICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9j
YXRjaF9sZW5ndGgpCiAKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc0LDYg
KzE5NzQsOSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0K
IAogICAgIHRyYWNlRXhlY3V0aW9uKCkKKworICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCisKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2F0
Y2hfbGVuZ3RoKQogCiAKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjIwODYyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBC
MUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBF
Q0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xl
Um9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RH
cmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBE
QURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAv
KiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYg
LyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5
NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgx
NkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2
RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0
MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNB
MkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQg
LyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNl
Y29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA4
NjIpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3
dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2Fy
ZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIg
dG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0
aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFz
cyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUg
bm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2Rl
KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAg
ICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9u
b2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9u
b2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVy
Lm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5v
ZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3Qo
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAg
IH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4g
bV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBt
X25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBj
bGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3Nl
dC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29u
c3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwot
ICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hh
c1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0
LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9Owot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoK
LSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVt
cGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
Y2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAg
ICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAt
IDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5k
ZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFw
Kj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29u
c3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21h
cFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltd
KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAo
KmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
IHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7
Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9v
dEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdy
YXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1h
cDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJh
Y2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAg
ICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5h
bWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsK
ICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Rv
bWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJl
dmlzaW9uIDIyMDg2MikKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExp
c3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBo
LCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAg
ICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4
ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4o
bV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBt
X2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAg
ICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJv
dGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBk
byBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJz
IHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0
MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRp
ZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9m
KGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAg
ICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAg
ICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBm
b3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAg
ICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2
Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAg
dHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlw
ZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBp
dGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7
CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9j
a3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAg
cHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQg
Zm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBj
b25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJv
bTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xp
c3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9
IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5j
ZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1Npbmds
ZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgor
ICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBo
YXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4g
IiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5v
ZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUp
CisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQor
ICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVS
b290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUg
PT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9v
dDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9k
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0
aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1l
IEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9v
dCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVu
YW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7
CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgor
ICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChj
b25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0
dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29u
c3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1
cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlu
cyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnBy
aW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7Cisg
ICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAg
IGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNp
bmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3Jh
cGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQor
ICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikK
KyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3Qo
V1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkK
KyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAg
ICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7
IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYg
KCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21h
cFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGlu
ZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290
TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5v
ZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAg
fQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25v
ZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRl
IE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdy
YXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
aW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5n
IFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3Qg
PSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQor
ICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdy
YXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NF
UlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAg
ICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jv
b3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
bV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNv
bnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBM
aXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFz
c2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0Owor
ICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3Nv
cnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBO
b2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisK
KyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07
CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAg
IH0KKworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6
Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5v
ZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAg
ICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRl
eCAtIDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJp
bmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVh
bSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+
Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJp
bnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmlu
dChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJp
bmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsK
KyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAo
IW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQo
ZHVtcChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIp
OworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2Rl
IHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJc
biIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAg
Y29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3Ig
OiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVt
cChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0
ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBl
eHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBh
bGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3Ry
dWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMo
KQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwg
Y3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1
Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3Qg
OiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vz
c29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0
LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNz
b3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jv
b3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOwor
ICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1f
cm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6
OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318665</attachid>
            <date>2017-08-21 13:15:10 -0700</date>
            <delta_ts>2017-08-21 23:45:07 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>196135</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jb25zdC1ub3Qtc3RyaWN0LW1vZGUuanMJKHJldmlz
aW9uIDIyMDk3MCkKKysrIEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAgZnVuY3Rpb24gdHJ1dGgoKSB7CiB9CiBub0lu
bGluZSh0cnV0aCk7CiAKLWZ1bmN0aW9uIGFzc2VydChjb25kKSB7CitmdW5jdGlvbiBhc3NlcnQo
Y29uZCwgbT0iIikgewogICAgIGlmICghY29uZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
cm9rZSBhc3NlcnRpb24iKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJicm9rZSBhc3NlcnRp
b246ICIgKyBtKTsKIH0KIG5vSW5saW5lKGFzc2VydCk7CiAKQEAgLTEzMiw3ICsxMzIsOCBAQCBm
dW5jdGlvbiBiYXooKSB7CiAgICAgICAgIGFzc2VydCh5ID09PSA2MCk7CiAgICAgICAgIGlmICh0
cnV0aCgpKSB7CiAgICAgICAgICAgICBjb25zdCB5ID0gNTAsIHogPSA3MCwgeCA9IDQwOwotICAg
ICAgICAgICAgYXNzZXJ0KGV2YWwoZXZhbFN0cmluZykgPT09IDQwKTsKKyAgICAgICAgICAgIGxl
dCByID0gZXZhbChldmFsU3RyaW5nKTsKKyAgICAgICAgICAgIGFzc2VydChyID09PSA0MCwgcik7
CiAgICAgICAgICAgICBhc3NlcnQoeSA9PT0gNTAgJiYgeiA9PT0gNzApOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIw
OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0zOTEsNyArMzkxLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBk
ZmcvREZHUGhhc2UuY3BwCiAgICAgZGZnL0RGR1BoaUNoaWxkcmVuLmNwcAogICAgIGRmZy9ERkdQ
bGFuLmNwcAotICAgIGRmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAogICAgIGRmZy9ERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAogICAgIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzk0LDggKzM5NCw2IEBACiAJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFB
NiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzQkQxQjYxQjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNl
dC5jcHAgKi87IH07CiAJCTBGM0MxRjFBMUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjNDMUYxODFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICov
OyB9OwogCQkwRjNDMUYxQjFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0MxRjE5
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovOyB9OwotCQkwRjNF
MDFBQTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNFMDFBODE5RDM1M0E1MDBG
NjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgKi87IH07Ci0JCTBGM0UwMUFCMTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZH
UHJlUG9zdE51bWJlcmluZy5oICovOyB9OwogCQkwRjQwRTRBNzFDNDk3Rjc0MDBBNTc3RkEgLyog
QWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjYxODMzMjFDNDVGMzVDMDA3MjQ1MEIgLyogQWlyT3Bjb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3
N0ZBIC8qIEFpck9wY29kZUdlbmVyYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzQxQzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZUdl
bmVyYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVVdGlscy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzUxQzQ1RjNCNjAw
NzI0NTBCIC8qIEFpck9wY29kZVV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5OTEsOCArMjk4OSw2IEBACiAJCTBGM0JEMUI2MUI4OTZB
MDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHSW5zZXJ0aW9uU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRp
b25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNDMUYxODFCODY4RTc5
MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYz
QzFGMTkxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHBhdGggPSBk
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUHJlUG9zdE51bWJlcmluZy5jcHA7
IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5n
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcu
aDsgcGF0aCA9IGRmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxS
ZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMx
RjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0
YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzUwMSw4ICs3NDk3LDYg
QEAKIAkJCQkwRkJFMEY2RTE2QzFEQjAxMDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlv
blBoYXNlLmggKi8sCiAJCQkJMEZGRkM5NTExNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRkZGQzk1MjE0RUY5MDk1MDBDNzI1MzIg
LyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCAqLywKLQkJCQkwRjNFMDFBODE5RDM1
M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgKi8sCi0JCQkJMEYzRTAxQTkx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCAqLywKIAkJCQkwRjJCOUNF
MDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwICovLAogCQkJ
CTBGMkI5Q0UxMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oICov
LAogCQkJCTBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAq
LywKQEAgLTg3MTEsNyArODcwNSw2IEBACiAJCQkJREMwMDAzOTMxOUQ4QkU2RjAwMDIzRUIwIC8q
IERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkUwRjc1
MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzRTAxQUIxOUQzNTNBNTAwRjYx
QjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VE
MTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZGQzkyMTYxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDUwMiw3ICsxMDQ5NSw2IEBACiAJCQkJQTc4QTk3
N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZC
RTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEYzRTAxQUExOUQz
NTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYyMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzQTFCRjkxQTlFQ0I3RDAwMERFMDFBIC8q
IERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCShyZXZp
c2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVE
dW1wZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTM4LDggKzE1MzgsOSBAQCB2b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgY2FzZSBvcF9jYXRjaDogewogICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIHZvaWQqIHBvaW50ZXIgPSBnZXRQb2ludGVyKCooKytpdCkp
OwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYXRjaCIp
OwotICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVw
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBwb2lu
dGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGhyb3c6IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24J
KHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50IiwgImxl
bmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcGFyZW50X3Njb3Bl
IiwgImxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJs
ZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rocm93IiwgImxlbmd0aCIgOiAy
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90aHJvd19zdGF0aWNfZXJyb3IiLCAibGVu
Z3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIg
OiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksOCBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGluc3RydWN0aW9uc1ti
eXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAgIH07CiAKKyAgICBW
ZWN0b3I8dW5zaWduZWQsIDQ+IGNhdGNoSW5kaWNlczsKKwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5r
ZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTgwNSwx
MCArODA3LDE2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAg
ICAgICAgICAgIG1fbnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBudW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBj
YXNlIG9wX2NhdGNoOiB7CisgICAgICAgICAgICBjYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAg
ICAgICAgICAgYnJlYWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAK
QEAgLTgzMCwxMCArODM4LDQzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFMKIAogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAg
ICAgIGR1bXBCeXRlY29kZSgpOworCisgICAgaWYgKGNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAg
ICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5l
c3NBbmFseXNpcygpOworICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXI+PiBjYXRjaFByb2ZpbGVzOworICAgICAgICBmb3IgKHVuc2lnbmVk
IGNhdGNoSW5kZXggOiBjYXRjaEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3Ig
bGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldChjYXRjaEluZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxp
dmVPcGVyYW5kczsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGxpdmVMb2NhbHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVh
Y2hTZXRCaXQoWyZdICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZl
T3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIFdlIGp1c3QgYXNzdW1lIHRoZXNlIGFyZSBs
aXZlLiBXZSBjb3VsZCBhbHNvIGp1c3QgY29tcHV0ZSB0aGUgbGl2ZS1vdXQKKyAgICAgICAgICAg
IC8vIGluc3RlYWQgb2YgbGl2ZS1pbiBvZiB0aGUgb3BfY2F0Y2guIE9PUFMgbWF5YmUgZG8gdGhp
cz8KKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQoVmlydHVhbFJlZ2lzdGVyKG1faW5z
dHJ1Y3Rpb25zW2NhdGNoSW5kZXggKyAxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGxpdmVP
cGVyYW5kcy5hcHBlbmQoVmlydHVhbFJlZ2lzdGVyKG1faW5zdHJ1Y3Rpb25zW2NhdGNoSW5kZXgg
KyAyXS51Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Q
YXJhbWV0ZXJzKCk7ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9w
ZXJhbmRzLnNpemUoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9z
aXplID09IGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxl
cy0+bV9idWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgp
OworICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbY2F0Y2hJbmRleCArIDNdLnUucG9pbnRlciA9
IHByb2ZpbGVzLmdldCgpOworICAgICAgICAgICAgY2F0Y2hQcm9maWxlcy5hcHBlbmQoV1RGTW92
ZShwcm9maWxlcykpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVz
ID0gV1RGTW92ZShjYXRjaFByb2ZpbGVzKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBo
ZWFwKCktPm1fY29kZUJsb2Nrcy0+YWRkKHRoaXMpOwogICAgIGhlYXAoKS0+cmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQobV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9u
KSk7Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQ4Niw5ICsyNTI3LDEwIEBA
IGNvbnN0IElkZW50aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2Nr
Ojp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9m
TGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IAorCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgorCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsraSkgewogICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSBnZXRGcm9tQWxsVmFsdWVQcm9maWxlcyhpKTsKICAgICAgICAgdW5z
aWduZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CkBAIC0y
NTAzLDYgKzI1NDUsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5k
QwogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAg
ICAgICAgIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgIH0K
KworICAgIGZvciAoYXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAg
ICAgICBwcm9maWxlQnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYg
cHJvZmlsZSkgeworICAgICAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIH0pOworICAgIH0KICAgICAKICNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlcy5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb25zKGxvY2tlcik7CkBAIC0yNzQzLDcgKzI3OTEsMjAgQEAgVmFsdWVQcm9maWxlKiBD
b2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvcgogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XSk7CiAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKLSAgICByZXR1cm4g
aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2ZpbGU7Cisg
ICAgVmFsdWVQcm9maWxlKiByZXN1bHQgPSBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCAr
IGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVl
UHJvZmlsZXMoKTsgKytpKSB7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHZhbHVl
UHJvZmlsZShpKTsKKyAgICAgICAgaWYgKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gYnl0
ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9maWxlID09IHJlc3VsdCk7Cisg
ICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBBU1NFUlQoZm91bmQpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAwMiw2
ICsxMDAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVBy
b2ZpbGU+IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1
ZVByb2ZpbGU+IG1fdmFsdWVQcm9maWxlczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI+PiBtX2NhdGNoUHJvZmlsZXM7CiAgICAgU2VnbWVu
dGVkVmVjdG9yPFJhcmVDYXNlUHJvZmlsZSwgOD4gbV9yYXJlQ2FzZVByb2ZpbGVzOwogICAgIFJl
ZkNvdW50ZWRBcnJheTxBcnJheUFsbG9jYXRpb25Qcm9maWxlPiBtX2FycmF5QWxsb2NhdGlvblBy
b2ZpbGVzOwogICAgIEFycmF5UHJvZmlsZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lv
biAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQsOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxl
V2l0aExvZ051bWJlck9mQnVja2V0CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlIDogcHVibGlj
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4gewotICAgIFZhbHVlUHJvZmls
ZSgpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFs
dWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJP
ZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQorICAgIFZhbHVlUHJvZmlsZSgpIDogVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPigpIHsgfQorICAgIFZhbHVlUHJvZmls
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0
czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
MjAyLDQgKzIwMiwzOCBAQCBpbmxpbmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zm
CiAgICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAorc3Ry
dWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgeworICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7
CisgICAgaW50IG1fb3BlcmFuZDsKK307CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
QnVmZmVyIHsKKyAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKHVuc2lnbmVkIHNpemUp
CisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVmFsdWVQ
cm9maWxlIGhhcyBtb3JlIHN0dWZmIHRoYW4gd2UgbmVlZC4gV2UgY291bGQgb3B0aW1pemUgdGhl
c2UgdmFsdWUgcHJvZmlsZXMKKyAgICAgICAgLy8gdG8gYmUgbW9yZSBzcGFjZSBlZmZpY2llbnQu
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0
MTMKKyAgICAgICAgbV9idWZmZXIgPSBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD46
Om1hbGxvYyhtX3NpemUgKiBzaXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBuZXcg
KCZtX2J1ZmZlci5nZXQoKVtpXSkgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKwor
ICAgIH5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG1fYnVmZmVyLmdl
dCgpW2ldLn5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0aW9uPgorICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikK
KyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAg
ICAgICAgICAgIGZ1bmN0aW9uKG1fYnVmZmVyLmdldCgpW2ldKTsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBtX3NpemU7CisgICAgTWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+IG1fYnVm
ZmVyOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2
aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsMTkgQEAgUGFy
c2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKAogICAgICAgICBlbWl0VW5yZWFj
aGFibGUoKTsKICAgICB9CiAKKyAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jYXRjaGVzVG9FbWl0
KSB7CisgICAgICAgIFJlZjxMYWJlbD4gbGFiZWwgPSBuZXdFbWl0dGVkTGFiZWwoKTsKKyAgICAg
ICAgZW1pdE9wY29kZShvcF9jYXRjaCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChz
dGQ6OmdldDwxPih0dXBsZSkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3RkOjpn
ZXQ8Mj4odHVwbGUpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworCisgICAg
ICAgIFRyeURhdGEqIGRhdGEgPSBzdGQ6OmdldDwwPih0dXBsZSk7CisgICAgICAgIGVtaXRKdW1w
KGRhdGEtPnRhcmdldC5nZXQoKSk7CisKKyAgICAgICAgZGF0YS0+dGFyZ2V0ID0gV1RGTW92ZShs
YWJlbCk7CisgICAgfQorCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmtpbGwoKTsKIAog
ICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX3RyeVJhbmdlcykgewpAQCAtNzEwLDcgKzcyMyw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogdW51c2VkID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGVtaXRDYXRjaCh1bnVz
ZWQsIHRocm93blZhbHVlLmdldCgpKTsKKyAgICAgICAgZW1pdENhdGNoKHVudXNlZCwgdGhyb3du
VmFsdWUuZ2V0KCksIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhKTsKIAogICAgICAgICAvLyByZXR1
cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCh0aHJvd25WYWx1ZSkKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBwcm9taXNl
Q2FwYWJpbGl0eVJlZ2lzdGVyKCksIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnJlamVjdFByaXZhdGVOYW1lKCkpOwpAQCAtMzk2MywxMSArMzk3NiwxNSBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpwb3BUcnkoVHJ5RGF0YSogCiAgICAgbV90cnlDb250ZXh0U3RhY2sucmVt
b3ZlTGFzdCgpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0
ZXJJRCogZXhjZXB0aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0ZXIp
Cit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2goUmVnaXN0ZXJJRCogZXhjZXB0aW9u
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0ZXIsIFRyeURhdGEqIGRhdGEp
CiB7Ci0gICAgZW1pdE9wY29kZShvcF9jYXRjaCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGV4Y2VwdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
dGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgLy8gT09QUy4gbWFrZSB0aGlzIGhh
cHBlbiBhdCB0aGUgZW5kIG9mIHRoZSBlbnRpcmUgcHJvZ3JhbS4KKyAgICBtX2NhdGNoZXNUb0Vt
aXQuYXBwZW5kKHsgZGF0YSwgZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCksIHRocm93blZhbHVl
UmVnaXN0ZXItPmluZGV4KCkgfSk7CisgICAgLy9lbWl0T3Bjb2RlKG9wX2NhdGNoKTsKKyAgICAv
L1ZlY3RvcjxzdGQ6OnR1cGxlPFRyeURhdGEqLCBpbnQsIGludD4+IG1fY2F0Y2hlc1RvRW1pdDsK
KyAgICAvL2luc3RydWN0aW9ucygpLmFwcGVuZChleGNlcHRpb25SZWdpc3Rlci0+aW5kZXgoKSk7
CisgICAgLy9pbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhyb3duVmFsdWVSZWdpc3Rlci0+aW5kZXgo
KSk7CisgICAgLy9pbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKQEAg
LTQyOTksNyArNDMxNiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlv
bigKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0
ZXIgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5l
d1RlbXBvcmFyeSgpOwogCi0gICAgICAgICAgICBlbWl0Q2F0Y2goY29tcGxldGlvblZhbHVlUmVn
aXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgICAgIGVtaXRDYXRjaChjb21wbGV0aW9uVmFsdWVS
ZWdpc3RlcigpLCB1bnVzZWQsIHRyeURhdGEpOwogICAgICAgICAgICAgZW1pdFNldENvbXBsZXRp
b25UeXBlKENvbXBsZXRpb25UeXBlOjpUaHJvdyk7CiAgICAgICAgICAgICBlbWl0TW92ZShmaW5h
bGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOwog
ICAgICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CkBAIC00MzM5LDcg
KzQzNTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oCiAgICAg
ICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwogICAgICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOwog
ICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgpOwotICAg
ICAgICAgICAgICAgIGVtaXRDYXRjaChleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdW51c2VkKTsK
KyAgICAgICAgICAgICAgICBlbWl0Q2F0Y2goZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIHVudXNl
ZCwgcmV0dXJuQ2FsbFRyeURhdGEpOwogICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMg
YSBzeW50aGVzaXplZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBu
ZWVkCiAgICAgICAgICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBz
Y29wZSwgd2UgY2FuIHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQogICAgICAgICAgICAgICAgIC8v
IHJlZ2lzdGVyIGhlcmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc4Niw3ICs3ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
VHJ5RGF0YSogcHVzaFRyeShMYWJlbCYgc3RhcnQsIExhYmVsJiBoYW5kbGVyTGFiZWwsIEhhbmRs
ZXJUeXBlKTsKICAgICAgICAgLy8gRW5kIGEgdHJ5IGJsb2NrLiAnZW5kJyBtdXN0IGhhdmUgYmVl
biBlbWl0dGVkLgogICAgICAgICB2b2lkIHBvcFRyeShUcnlEYXRhKiwgTGFiZWwmIGVuZCk7Ci0g
ICAgICAgIHZvaWQgZW1pdENhdGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lzdGVyLCBSZWdp
c3RlcklEKiB0aHJvd25WYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0Q2F0Y2goUmVn
aXN0ZXJJRCogZXhjZXB0aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0
ZXIsIFRyeURhdGEqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
Q3VycmVudExleGljYWxTY29wZUluZGV4ID0gLTI7CkBAIC0xMTg5LDYgKzExODksOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKICAg
ICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAg
RGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lIH07CisKKyAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VHJ5RGF0YSosIGludCwg
aW50Pj4gbV9jYXRjaGVzVG9FbWl0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAzLDYgKzM0MDMs
OSBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAgICAgTGFiZWwm
IHRyeUhhbmRsZXJMYWJlbCA9IG1fY2F0Y2hCbG9jayA/ICpjYXRjaExhYmVsIDogKmZpbmFsbHlW
aWFUaHJvd0xhYmVsOwogICAgIEhhbmRsZXJUeXBlIHRyeUhhbmRsZXJUeXBlID0gbV9jYXRjaEJs
b2NrID8gSGFuZGxlclR5cGU6OkNhdGNoIDogSGFuZGxlclR5cGU6OkZpbmFsbHk7CiAgICAgVHJ5
RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIHRy
eUhhbmRsZXJMYWJlbCwgdHJ5SGFuZGxlclR5cGUpOworICAgIFRyeURhdGEqIGZpbmFsbHlUcnlE
YXRhID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fY2F0Y2hCbG9jayAmJiBtX2ZpbmFsbHlCbG9jaykK
KyAgICAgICAgZmluYWxseVRyeURhdGEgPSB0cnlEYXRhOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGRzdCwgbV90cnlCbG9jayk7CiAKQEAgLTM0MTksMTQgKzM0MjIsMTMgQEAgdm9pZCBUcnlO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICBnZW5lcmF0b3IuZW1pdExh
YmVsKCpjYXRjaExhYmVsKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVl
UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IHVudXNlZCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYXRjaCh1bnVzZWQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdENhdGNoKHVudXNlZCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgdHJ5RGF0
YSk7CiAgICAgICAgIGdlbmVyYXRvci5yZXN0b3JlU2NvcGVSZWdpc3RlcigpOwogCi0gICAgICAg
IFRyeURhdGEqIHRyeURhdGEgPSBudWxscHRyOwogICAgICAgICBpZiAobV9maW5hbGx5QmxvY2sp
IHsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYXRjaCBibG9jayB0aHJvd3MgYW4gZXhjZXB0aW9u
IGFuZCB3ZSBoYXZlIGEgZmluYWxseSBibG9jaywgdGhlbiB0aGUgZmluYWxseQogICAgICAgICAg
ICAgLy8gYmxvY2sgc2hvdWxkICJjYXRjaCIgdGhhdCBleGNlcHRpb24uCi0gICAgICAgICAgICB0
cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoKmNhdGNoTGFiZWwsICpmaW5hbGx5VmlhVGhyb3dM
YWJlbCwgSGFuZGxlclR5cGU6OkZpbmFsbHkpOworICAgICAgICAgICAgZmluYWxseVRyeURhdGEg
PSBnZW5lcmF0b3IucHVzaFRyeSgqY2F0Y2hMYWJlbCwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsLCBI
YW5kbGVyVHlwZTo6RmluYWxseSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jYXRjaFBh
dHRlcm4pIHsKQEAgLTM0NDcsNyArMzQ0OSw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXIKICAgICAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBlOjpOb3JtYWwp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKCpmaW5hbGx5TGFiZWwpOwotICAgICAg
ICAgICAgZ2VuZXJhdG9yLnBvcFRyeSh0cnlEYXRhLCAqZmluYWxseVZpYVRocm93TGFiZWwpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeShmaW5hbGx5VHJ5RGF0YSwgKmZpbmFsbHlWaWFU
aHJvd0xhYmVsKTsKICAgICAgICAgfQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoKmNh
dGNoRW5kTGFiZWwpOwpAQCAtMzQ2MCw3ICszNDYyLDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9j
ayBmb3IgQ29tcGxldGlvblR5cGU6OlRocm93LgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KCpmaW5hbGx5VmlhVGhyb3dMYWJlbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5l
cmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYXRjaChnZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2Vk
LCBmaW5hbGx5VHJ5RGF0YSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0Q29tcGxldGlvblR5
cGUoQ29tcGxldGlvblR5cGU6OlRocm93KTsKIAogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmlu
YWxseSBibG9jayBmb3IgQ29tcGxldGlvblR5cGVzIG90aGVyIHRoYW4gVGhyb3cuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIwOCw2ICsyMDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hM
b2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOSw3ICsxODQw
LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAv
LyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgICAgICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0JhY2t3YXJkc0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNs
YXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxDRkc+IHsKK2NsYXNzIEJh
Y2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShCYWNrd2FyZHNDRkcpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIEJhY2t3YXJkc0NGRyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogQmFj
a3dhcmRzR3JhcGg8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogQmFja3dhcmRzR3JhcGg8
U1NBQ0ZHPihzZWxlY3RDRkc8U1NBQ0ZHPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9u
IDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygK
ICAgICA6IGJ5dGVjb2RlQmVnaW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2sp
CiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBvaW50KGZhbHNl
KQogICAgICwgY2ZhSGFzVmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFs
c2UpCiAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIs
MTcgKzgyLDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAg
ICAgICBzaXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
Ci0gICAgICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAg
ICAgICAgIGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAg
ICBjYXNlIFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAg
ICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAg
IGlmIChub2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJ
bmRleChub2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAg
ICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtl
LiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUg
dGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNr
ZWQgY2hpbGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVj
YXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206
CkBAIC0xODUsNiArMTc3LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2lj
QmxvYwogICAgIEJsb2NrSW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsK
KyAgICBib29sIGlzQ2F0Y2hFbnRyeXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAg
ICBib29sIGNmYVNob3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAi
REZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUg
IkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCkBAIC0xMTMxLDcgKzExMzIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBQb3RlbnRpYWwgYmxvY2sgbGlua2luZyB0YXJnZXRzLiBNdXN0IGJlIHNvcnRl
ZCBieSBieXRlY29kZUJlZ2luLCBhbmQKICAgICAgICAgLy8gY2Fubm90IGhhdmUgdHdvIGJsb2Nr
cyB0aGF0IGhhdmUgdGhlIHNhbWUgYnl0ZWNvZGVCZWdpbi4KICAgICAgICAgVmVjdG9yPEJhc2lj
QmxvY2sqPiBtX2Jsb2NrTGlua2luZ1RhcmdldHM7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIElm
IHRoZSBjYWxsc2l0ZSdzIGJhc2ljIGJsb2NrIHdhcyBzcGxpdCBpbnRvIHR3bywgdGhlbiB0aGlz
IHdpbGwgYmUKICAgICAgICAgLy8gdGhlIGhlYWQgb2YgdGhlIGNhbGxzaXRlIGJsb2NrLiBJdCBu
ZWVkcyBpdHMgc3VjY2Vzc29ycyBsaW5rZWQgdG8gdGhlCiAgICAgICAgIC8vIG1fdW5saW5rZWRC
bG9ja3MsIGJ1dCBub3QgdGhlIG90aGVyIHdheSBhcm91bmQ6IHRoZXJlJ3Mgbm8gd2F5IGZvcgpA
QCAtNDA3NSw3ICs0MDc2LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAvLyB1cyB0byB0cmFjayBpZiBhIHVzZSBvZiBhbiBhcmd1bWVudCBtYXkgdXNl
IHRoZSBhY3R1YWwgYXJndW1lbnQgcGFzc2VkLCBhcwogICAgIC8vIG9wcG9zZWQgdG8gdXNpbmcg
YSB2YWx1ZSB3ZSBzZXQgZXhwbGljaXRseS4KICAgICBpZiAobV9jdXJyZW50QmxvY2sgPT0gbV9n
cmFwaC5ibG9jaygwKSAmJiAhaW5saW5lQ2FsbEZyYW1lKCkpIHsKLSAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBW
ZWN0b3I8Tm9kZSosIDg+KCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7CisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMg
PSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRz
LnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisKICAgICAgICAgLy8gV2Ugd2lsbCBlbWl0IFNldEFy
Z3VtZW50IG5vZGVzLiBUaGV5IGRvbid0IGV4aXQsIGJ1dCB3ZSdyZSBhdCB0aGUgdG9wIG9mIGFu
IG9wX2VudGVyIHNvCiAgICAgICAgIC8vIGV4aXRPSyA9IHRydWUuCiAgICAgICAgIG1fZXhpdE9L
ID0gdHJ1ZTsKQEAgLTQwODgsNyArNDA5Myw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUpKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNl
dEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1
bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBlbnRyeXBvaW50QXJn
dW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJn
dW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE1OCwxMCArNTE2MywxMTcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYWRkVG9HcmFw
aChVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90aHJvd19zdGF0aWNf
ZXJyb3IpOwogCi0gICAgICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgICAgIGNhc2Ugb3BfY2F0Y2g6
IHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRydWU7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7Ci0gICAgICAgICAgICAKKworICAgICAg
ICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9u
J3QgZG8gYW55dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIGRvbid0IHRyZWF0IHRo
aXMgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRj
aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxh
bi5tb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRo
ZSBGVEwuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJs
b2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVy
KiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVj
dWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAg
ICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAg
ICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAg
Ym9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZm
ZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5k
KTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2Zp
bGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAg
ICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05v
bmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkg
PCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVu
QXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rp
b247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyAr
K2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFy
Z3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rp
b25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNh
dGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMg
YW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Un
cmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisg
ICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPSB0cnVlOworICAg
ICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisK
KyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVyLCBOb2RlKj4+IGxv
Y2Fsc1RvU2V0OworICAgICAgICAgICAgbG9jYWxzVG9TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCByZXNlcnZlIG1vcmUgdGhhbiB0
aGUgbnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUgYnVmZmVyIGluY2x1
ZGVzIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gV2UncmUg
bm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxkIG5vdCBrbm93IGhvdyB0byBk
byB2YWx1ZSByZWNvdmVyeS4KKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzID0g
MDsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChw
cm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVu
dCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJU
KG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRv
R3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhs
b2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAgICAgICAgICsrbnVt
YmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8o
cHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgbG9jYWxzVG9TZXQu
dW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVlKSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hP
U1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JF
bnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRy
eSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkpOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbm93IGV4aXQgYmVjYXVzZSB3ZSd2
ZSBzZXQgdXAgb3VyIE9TUiBleGl0IHN0YXRlIHRvIHJlY292ZXIgYW55IGxpdmUgbG9jYWxzLgor
ICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhp
dE9LKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNldCB1cCBvdXIgYXJn
dW1lbnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LiBUaGlzIGhhcHBlbnMgaGVyZSBiZWNh
dXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcyB1cAorICAgICAgICAgICAgICAgIC8vIHRvIHRo
aXMgcG9pbnQgaW4gdGhlIHByb2dyYW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0byBleGl0LgorICAg
ICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAgICAg
ICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXpl
KG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50
ID0gMDsgYXJndW1lbnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKythcmd1bWVudCkg
eworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3
VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7
CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50UHJlZGljdGlv
bnNbYXJndW1lbnRdKTsKKworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1
Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFk
Q2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhv
aXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBl
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBo
KFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVu
dCwgc2V0QXJndW1lbnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRz
W2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbG9jYWxzVG9TZXQpCisg
ICAgICAgICAgICAgICAgc2V0TG9jYWwoY3VycmVudENvZGVPcmlnaW4oKSwgcGFpci5maXJzdCwg
cGFpci5zZWNvbmQsIEltbWVkaWF0ZU5ha2VkU2V0KTsKKworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfY2F0Y2gpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAg
ICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1
bGFyKTsKICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rp
b24gPT0gY3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5s
aW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CkBAIC02MTU2
LDggKzYyNjgsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAg
ICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVu
ZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwog
ICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBP
U1IgdGFyZ2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkp
CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOwor
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5k
QmxvY2soV1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJz
ZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjIxNCwxMCArNjMyOCwxMiBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2so
KTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBp
bmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRl
dGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tz
KCk7CisKKyAgICBtX2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1f
Z3JhcGgpOwogICAgIAogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5u
dW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CkBAIC02MjI4LDcgKzYzNDQsNyBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRU
YWlsLm51bWJlck9mTG9jYWxzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCkpOwogICAgICAgICBBU1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFp
bC5udW1iZXJPZkFyZ3VtZW50cygpID09IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVh
ZC5udW1iZXJPZkFyZ3VtZW50cygpKTsKICAgICB9Ci0gICAgCisKICAgICBtX2dyYXBoLm1fbG9j
YWxWYXJzID0gbV9udW1Mb2NhbHM7CiAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9w
YXJhbWV0ZXJTbG90czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2Nr
LT5ieXRlY29kZUJlZ2luICE9IG1fZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAg
ICAgICAgICAgICBpZiAobV92ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIg
ICBGb3VuZCBtdXN0LWhhbmRsZSBibG9jazogIiwgKmJsb2NrLCAiXG4iKTsKICAgICAgICAgICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkocmV2aXNpb24gMjIwOTcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgogI2luY2x1
ZGUgIkRGR0Jsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlIDx3dGYv
U2luZ2xlUm9vdEdyYXBoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApA
QCAtNDgsNyArNDksMTkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBOb2RlIHJvb3Qo
KSB7IHJldHVybiBtX2dyYXBoLmJsb2NrKDApOyB9CisgICAgTm9kZSByb290KCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EgfHwgbV9ncmFwaC5tX2lzSW5TU0FD
b252ZXJzaW9uKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7CisgICAgfQorCisg
ICAgTGlzdCByb290cygpCisgICAgeworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9y
IChCYXNpY0Jsb2NrKiByb290IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChyb290KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBCbG9j
a01hcDxUPihtX2dyYXBoKTsgfQpAQCAtNzEsNiArODQsMzEgQEAgcHJpdmF0ZToKICAgICBHcmFw
aCYgbV9ncmFwaDsKIH07CiAKK2NsYXNzIENQU0NGRyA6IHB1YmxpYyBTaW5nbGVSb290R3JhcGg8
Q0ZHPiB7CitwdWJsaWM6CisgICAgQ1BTQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBTaW5n
bGVSb290R3JhcGg8Q0ZHPigqZ3JhcGgubV9zc2FDRkcpCisgICAgeworICAgICAgICBBU1NFUlQo
Z3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkpOworICAgIH0KK307CisKK3VzaW5nIFNTQUNGRyA9
IENGRzsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0NGRyYg
c2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX2Nw
c0NGRyk7CisgICAgcmV0dXJuICpncmFwaC5tX2Nwc0NGRzsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQs
IFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQUNGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX3NzYUNGRyk7CisgICAgcmV0dXJuICpncmFw
aC5tX3NzYUNGRzsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQnV0IHRob3Nl
IFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGlu
ZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUg
aW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3Vt
ZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRo
ZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspCi0gICAg
ICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJz
dFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAgQmFz
aWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVjdG9y
PE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50c1tp
XSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3Bl
cmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OCw3ICs1OTgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKICAgICAgICAgbV9n
cmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAg
IAogICAgICAgICBtX3ByZU9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CiAgICAg
ICAgIApAQCAtNjkwLDcgKzY5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAg
ICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5v
d25lciwgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9y
cy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAg
ICAgbV9ub2RlLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzc5LDcgKzc3OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUgc3RyaWN0IGRvbWluYXRpb24gYmVj
YXVzZSB0aGlzIHdvdWxkIG9ubHkgc2VlIHRoaW5ncyBpbiBvdXIgb3duIGJsb2NrIGlmCiAgICAg
ICAgICAgICAvLyB0aGV5IGNhbWUgKmFmdGVyKiBvdXIgcG9zaXRpb24gaW4gdGhlIGJsb2NrLiBD
bGVhcmx5LCB3aGlsZSBvdXIgYmxvY2sgZG9taW5hdGVzCiAgICAgICAgICAgICAvLyBpdHNlbGYs
IHRoZSB0aGluZ3MgaW4gdGhlIGJsb2NrIGFmdGVyIHVzIGRvbid0IGRvbWluYXRlIHVzLgotICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9j
aywgbV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0
bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBt
X25vZGUsIGRhdGEuZGlkVmlzaXQpOwpAQCAtODU2LDcgKzg1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21p
bmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNh
bmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtPnJl
cGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gu
c2V0Tm9kZShjYW5kaWRhdGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAgdm9p
ZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBBU1NFUlQoIW5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICByZWFkKEFic3Ry
YWN0SGVhcChTdGFjaywgZ3JhcGgubV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSkpOwogICAg
IH0KLSAgICAgICAgCiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgY2FzZSBK
U0NvbnN0YW50OgpAQCAtMTQxLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBj
YXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhn
cmFwaC5lbnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3Jh
cGguZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21p
bmF0b3JzOworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNE
b21pbmF0b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2Nr
KTsKICAgICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMp
OworICAgICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1
bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNr
IGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUsOCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1i
CiAgICAgZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91
dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OwotICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVD
UFNEb21pbmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAg
ICAKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlz
YXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDcgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21K
U01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJl
YWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9T
UkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWlu
YXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWlu
YXRvcnMuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTYgKzM1LDMyIEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6
IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2lu
ZD4KK2NsYXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAg
ICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpE
b21pbmF0b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAg
IH0KIH07CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2lu
ZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwg
Q1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0Zv
ckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRv
cnMoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURv
bWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJl
dHVybiBncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMDk3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2sp
CiAgICAgICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5t
X2Zvcm0gPT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBF
ZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0
b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9v
bCByZXN1bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgp
LT5vd25lciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICpl
ZGdlLm5vZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTksNiArMTk5OSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJl
YWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2Fz
ZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkBAIC0zMTk0LDYgKzMxOTUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJl
c3VsdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9N
QVgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmlzTnVtYmVyQ29uc3RhbnQo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hl
Y2tzLCBTcGVjQnl0ZWNvZGVEb3VibGUsIERvdWJsZUNvbnN0YW50LCBvcmlnaW5Gb3JDaGVja3Ms
CkBAIC0zMjI0LDYgKzMyMjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRl
eEZvckNoZWNrcyAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRn
ZS0+aXNBbnlJbnRDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNBbnlJbnQsIEludDUyQ29uc3RhbnQsIG9yaWdp
bkZvckNoZWNrcywKQEAgLTMyNTAsNiArMzI1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJbnQ1
MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlO
VF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3Vs
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JD
aGVja3MsIFNwZWNCeXRlY29kZURvdWJsZSwgVmFsdWVSZXAsIG9yaWdpbkZvckNoZWNrcywKQEAg
LTMyOTEsNiArMzI5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChpbmRleEZvckNoZWNrcyAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjTm9uZSwgQ2hlY2ssIG9yaWdpbkZvckNoZWNrcywg
ZWRnZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0
LmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1
c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3JtYXQgeworZW51bSBGbHVzaEZv
cm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCiAgICAg
Rmx1c2hlZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiREZHSklUQ29k
ZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdOYXR1cmFsTG9vcHMu
aCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFi
bGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCiAj
aW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAtNzMsNyArNzIsNyBAQCBHcmFw
aDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBt
X2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9jZmcoc3RkOjptYWtlX3VuaXF1ZTxDRkc+
KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8U1NBQ0ZHPigqdGhpcykp
CiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZv
cmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0
YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTQwOSw5ICs0MDgsMTMgQEAgYm9vbCBHcmFwaDo6dGVybWlu
YWxzQXJlVmFsaWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgQmFzaWNCbG9jayog
dW5ib3hMb29wTm9kZShjb25zdCBDUFNDRkc6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9k
ZSgpOyB9CitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9kZShCYXNpY0Jsb2NrKiBibG9j
aykgeyByZXR1cm4gYmxvY2s7IH0KKwogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5v
ZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAg
IG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9j
ay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNo
YWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFy
Z2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9j
aywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0
KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIs
IGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRj
aEVudHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYg
KGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAg
IG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlv
bkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7
CkBAIC00MjIsMTggKzQyNSwyNiBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRT
dHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNC
bG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0
LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVy
aW5nKQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmct
PmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNl
CiAgICAgICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsK
LSAgICBpZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWlu
YXRvcnNPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21p
bmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsK
LSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2Rv
bWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWlu
YXRvcnMtPml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwg
IlxuIik7CisKKyAgICBhdXRvIHByaW50RG9taW5hdG9ycyA9IFsmXSAoYXV0byYgZG9taW5hdG9y
cykgeworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIGRvbWlu
YXRvcnMuZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIERvbWluYXRlczogIiwgZG9taW5hdG9ycy5ibG9ja3NEb21pbmF0ZWRCeShibG9jayks
ICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6
ICIsIGRvbWluYXRvcnMuZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOworICAgICAg
ICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsCisg
ICAgICAgICAgICBkb21pbmF0b3JzLml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZih0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZG9taW5hdG9ycyk+Ojp0eXBlOjpMaXN0
IHsgYmxvY2sgfSksICJcbiIpOworICAgIH07CisKKyAgICBpZiAodGVybWluYWxzQXJlVmFsaWQo
KSkgeworICAgICAgICBpZiAobV9zc2FEb21pbmF0b3JzKQorICAgICAgICAgICAgcHJpbnREb21p
bmF0b3JzKCptX3NzYURvbWluYXRvcnMpOworICAgICAgICBlbHNlIGlmIChtX2Nwc0RvbWluYXRv
cnMpCisgICAgICAgICAgICBwcmludERvbWluYXRvcnMoKm1fY3BzRG9taW5hdG9ycyk7CiAgICAg
fQorCiAgICAgaWYgKG1fYmFja3dhcmRzRG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgp
KSB7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBkb21pbmF0ZXMgYnk6
ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CiAg
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBkb21pbmF0ZXM6ICIsIG1fYmFj
a3dhcmRzRG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKQEAgLTQ0
NiwyOSArNDU3LDMzIEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYK
ICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgfQotICAgIGlmIChtX3By
ZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZS9Qb3N0IE51
bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1iZXIoYmxvY2spLCAiLyIsIG1f
cHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJcbiIpOwotICAgIGlmIChtX25h
dHVyYWxMb29wcykgewotICAgICAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25h
dHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisKKyAgICBhdXRvIHByaW50TmF0dXJhbExv
b3BzID0gWyZdIChhdXRvJiBuYXR1cmFsTG9vcHMpIHsKKyAgICAgICAgaWYgKGNvbnN0IGF1dG8q
IGxvb3AgPSBuYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgewogICAgICAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5zOiIpOwogICAgICAgICAgICAg
VmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBzb3J0
ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7CisgICAgICAgICAgICAgICAg
c29ydGVkQmxvY2tMaXN0LmFwcGVuZCh1bmJveExvb3BOb2RlKGxvb3AtPmF0KGkpKS0+aW5kZXgp
OwogICAgICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlzdC5iZWdpbigpLCBzb3J0ZWRC
bG9ja0xpc3QuZW5kKCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNv
cnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAj
Iiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gY29u
dGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2Nr
KTsKKyAgICAgICAgYXV0byBjb250YWluaW5nTG9vcHMgPSBuYXR1cmFsTG9vcHMtPmxvb3BzT2Yo
YmxvY2spOwogICAgICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOwog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRhaW5pbmdMb29wcy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqY29udGFpbmluZ0xvb3Bz
W2ldLT5oZWFkZXIoKSk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnVuYm94TG9v
cE5vZGUoY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSkpOwogICAgICAgICAgICAgb3V0LnBy
aW50KCJcbiIpOwogICAgICAgICB9Ci0gICAgfQorICAgIH07CisKKyAgICBpZiAobV9zc2FOYXR1
cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1fc3NhTmF0dXJhbExvb3BzKTsK
KyAgICBlbHNlIGlmIChtX2Nwc05hdHVyYWxMb29wcykKKyAgICAgICAgcHJpbnROYXR1cmFsTG9v
cHMobV9jcHNOYXR1cmFsTG9vcHMpOworCiAgICAgaWYgKCFibG9jay0+cGhpcy5pc0VtcHR5KCkp
IHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5vZGVzOiIpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKSB7CkBAIC01MDIs
OCArNTE3LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAg
ICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsgRm9y
bTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlmaWNhdGlvblN0YXRl
LCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxuIik7CiAgICAgaWYg
KG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudCBmb3JtYXRzOiAi
LCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVsc2UKLSAgICAgICAg
b3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVudHMpLCAiXG4iKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5cG9pbnRUb0FyZ3Vt
ZW50cykKKyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIsIHBh
aXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJcbiIpOworICAgIH0K
ICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRy
OwpAQCAtNjQwLDggKzY1NywxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9y
PEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQogewogICAgIFZlY3Rv
cjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFwcGVuZChibG9jaygw
KSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxv
Y2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmlz
UmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQpOwor
ICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBCYXNpY0Js
b2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03OTgsOSArODE3LDEwIEBAIHZv
aWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZvaWQgR3JhcGg6OmludmFsaWRh
dGVDRkcoKQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7Ci0gICAgbV9uYXR1cmFsTG9v
cHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9IG51bGxwdHI7CisgICAgbV9j
cHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWluYXRvcnMgPSBudWxscHRyOwor
ICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBtX3NzYU5hdHVyYWxMb29wcyA9
IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG51bGxwdHI7CiAg
ICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAgICBtX2JhY2t3YXJkc0NGRyA9
IG51bGxwdHI7CkBAIC04NTAsMTIgKzg3MCwzNyBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0lu
UHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxvY2tXb3JrbGlzdCB3
b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxv
Y2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVu
dHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgp
KSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAgICAgICAgICAgd29ya2xpc3Qu
cHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVu
YWJsZWQoKSkgeworICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBvdmVyIHByZSBvcmRlciwgd2Ug
c2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAgICAgIC8vIGJlZm9yZSB0aGluZ3MgdGhleSBkb21p
bmF0ZS4KKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRv
cnMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAg
ICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikg
eworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhh
LCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBqKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYg
KG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlk
YXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsKKyAgICB9CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODYzLDcgKzkwOCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6
YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9y
ZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAg
ICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBp
dGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAg
ICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtODc2LDYgKzkyMiwzMSBAQCBCbG9ja0xp
c3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgYXV0
byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAg
IC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcmV2ZXJzZSBwb3N0IG9yZGVyLCB3ZSBzaG91bGQgc2Vl
IGRvbWluYXRvcnMKKyAgICAgICAgICAgIC8vIGJlZm9yZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4K
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAg
ICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAg
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPiBqKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9y
bSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVz
dWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2
YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsKKyAgICB9CisKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMwICsxNTQzLDQ0IEBAIHZvaWQgR3JhcGg6OmxvZ0Fz
c2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFpbHVyZSgqdGhpcywgdG9DU3Ry
aW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVtcChibG9jayksICJcblxuIiks
IGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQogCi1Eb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9t
aW5hdG9ycygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0lu
U1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgIG1fY3Bz
RG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAg
IHJldHVybiAqbV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5z
dXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAgICAgIG1f
ZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwotICAgIHJl
dHVybiAqbV9kb21pbmF0b3JzOworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EgfHwg
bV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCisgICAgICAg
IG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMp
OworICAgIHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1QcmVQb3N0TnVtYmVyaW5nJiBH
cmFwaDo6ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjpl
bnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQot
ICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1i
ZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBl
bnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX2Nwc05hdHVyYWxMb29wcykKKyAgICAg
ICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4o
KnRoaXMpOworICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKLU5hdHVyYWxMb29w
cyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCitTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjpl
bnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewotICAgIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBp
ZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91
bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX25hdHVyYWxMb29wczsK
KyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKKyAgICBlbnN1cmVTU0FEb21pbmF0
b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykKKyAgICAgICAgbV9zc2FOYXR1cmFs
TG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJl
dHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3Vy
ZUJhY2t3YXJkc0NGRygpCiB7CisgICAgLy8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4g
dGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIgQ1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGlu
IFNTQS4KKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2Jh
Y2t3YXJkc0NGRykKICAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJh
Y2t3YXJkc0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CkBAIC0xNTAz
LDYgKzE1ODgsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAK
IEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkK
IHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dh
cmRzRG9taW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtl
X3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3
YXJkc0RvbWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1OTYsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3Jz
JiBHcmFwaDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFw
aDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cykKICAgICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE2MTQsNyBAQCBNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9j
YWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9k
ZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJn
dW1lbnROb2RlID0gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jaygwKSktPnZhbHVl
W2FyZ3VtZW50XTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudE5vZGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpICE9IGFyZ3VtZW50Tm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCkpCkBAIC0xNjk4LDYgKzE3ODUsMTMgQEAgYm9vbCBHcmFwaDo6Y2FuRG9GYXN0
U3ByZWFkKE5vZGUqIG5vZGUsIAogICAgIHJldHVybiBhbGxHb29kOwogfQogCit2b2lkIEdyYXBo
OjpjbGVhckNQU0NGR0RhdGEoKQoreworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsK
KyAgICBtX2Nwc0RvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzQ0ZHID0gbnVsbHB0cjsK
K30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAyMjA5
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgU2luZ2xlUm9vdEdyYXBoOworfQorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgQ29kZUJsb2NrOwpAQCAtNTYsMTAgKzYwLDE3IEBAIGNsYXNzIEJhY2t3YXJkc0NGRzsKIGNs
YXNzIEJhY2t3YXJkc0RvbWluYXRvcnM7CiBjbGFzcyBDRkc7CiBjbGFzcyBDb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKLWNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Y2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBOYXR1cmFsTG9v
cHM7CiBjbGFzcyBGbG93SW5kZXhpbmc7Ci1jbGFzcyBOYXR1cmFsTG9vcHM7Ci1jbGFzcyBQcmVQ
b3N0TnVtYmVyaW5nOworCitjbGFzcyBDUFNDRkc7Cit1c2luZyBTU0FDRkcgPSBDRkc7CisKK3Vz
aW5nIENQU0RvbWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47Cit1c2luZyBTU0FEb21pbmF0
b3JzID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcgQ1BTTmF0dXJhbExvb3BzID0gTmF0dXJh
bExvb3BzPENQU0NGRz47Cit1c2luZyBTU0FOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8U1NB
Q0ZHPjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZsb3dNYXA7CiAKQEAgLTkwMSwyNyAr
OTEyLDM3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRGVidWdnZXJFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KIAotICAgIERvbWluYXRvcnMmIGVuc3Vy
ZURvbWluYXRvcnMoKTsKLSAgICBQcmVQb3N0TnVtYmVyaW5nJiBlbnN1cmVQcmVQb3N0TnVtYmVy
aW5nKCk7Ci0gICAgTmF0dXJhbExvb3BzJiBlbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBDUFNE
b21pbmF0b3JzJiBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgU1NBRG9taW5hdG9ycyYgZW5z
dXJlU1NBRG9taW5hdG9ycygpOworICAgIENQU05hdHVyYWxMb29wcyYgZW5zdXJlQ1BTTmF0dXJh
bExvb3BzKCk7CisgICAgU1NBTmF0dXJhbExvb3BzJiBlbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsK
ICAgICBCYWNrd2FyZHNDRkcmIGVuc3VyZUJhY2t3YXJkc0NGRygpOwogICAgIEJhY2t3YXJkc0Rv
bWluYXRvcnMmIGVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKTsKICAgICBDb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyYgZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKIAotICAg
IC8vIFRoaXMgZnVuY3Rpb24gb25seSBtYWtlcyBzZW5zZSB0byBjYWxsIGFmdGVyIGJ5dGVjb2Rl
IHBhcnNpbmcKKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgb25seSBtYWtlcyBzZW5zZSB0byBjYWxs
IGFmdGVyIGJ5dGVjb2RlIHBhcnNpbmcKICAgICAvLyBiZWNhdXNlIGl0IHF1ZXJpZXMgdGhlIG1f
aGFzRXhjZXB0aW9uSGFuZGxlcnMgYm9vbGVhbiB3aG9zZSB2YWx1ZQogICAgIC8vIGlzIG9ubHkg
ZnVsbHkgZGV0ZXJtaW5lZCBhZnRlciBieXRjb2RlIHBhcnNpbmcuCisgICAgYm9vbCB3aWxsQ2F0
Y2hFeGNlcHRpb25Jbk1hY2hpbmVGcmFtZShDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgewor
ICAgICAgICBDb2RlT3JpZ2luIGlnbm9yZWQ7CisgICAgICAgIEhhbmRsZXJJbmZvKiBpZ25vcmVk
MjsKKyAgICAgICAgcmV0dXJuIHdpbGxDYXRjaEV4Y2VwdGlvbkluTWFjaGluZUZyYW1lKGNvZGVP
cmlnaW4sIGlnbm9yZWQsIGlnbm9yZWQyKTsKKyAgICB9CiAgICAgYm9vbCB3aWxsQ2F0Y2hFeGNl
cHRpb25Jbk1hY2hpbmVGcmFtZShDb2RlT3JpZ2luLCBDb2RlT3JpZ2luJiBvcENhdGNoT3JpZ2lu
T3V0LCBIYW5kbGVySW5mbyomIGNhdGNoSGFuZGxlck91dCk7CiAgICAgCiAgICAgYm9vbCBuZWVk
c1Njb3BlUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0RlYnVnZ2VyRW5hYmxlZCB8fCBt
X2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQogICAgIGJvb2wgbmVlZHNGbHVzaGVkVGhpcygpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOyB9CiAKKyAgICB2b2lkIGNsZWFy
Q1BTQ0ZHRGF0YSgpOworCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwogICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CiAg
ICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Jsb2NrczsKKyAgICBW
ZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBWZWN0b3I8QmFzaWNC
bG9jayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2PiBtX3ZhckFyZ0No
aWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVuVmFsdWUqLCBFbmNv
ZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9mcm96ZW5WYWx1ZU1h
cDsKQEAgLTk1NiwxMSArOTc3LDExIEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIElmIHdlIERD
RSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9uIHgsIHRoZW4gdGhp
cyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVjdG9yPE5vZGUqLCA4
PiBtX2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBWZWN0b3I8Tm9kZSosIDg+
PiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50czsKICAgICAKICAgICAvLyBJbiBDUFMsIHRoaXMgaXMg
bWVhbmluZ2xlc3MuIEluIFNTQSwgdGhpcyBpcyB0aGUgYXJndW1lbnQgc3BlY3VsYXRpb24gdGhh
dCB3ZSd2ZSBsb2NrZWQgaW4uCiAgICAgVmVjdG9yPEZsdXNoRm9ybWF0PiBtX2FyZ3VtZW50Rm9y
bWF0czsKLSAgICAKKwogICAgIFNlZ21lbnRlZFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2
PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3Np
dGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFu
c2l0aW9uczsKQEAgLTk4MiwxMCArMTAwMywxMiBAQCBwdWJsaWM6CiAgICAgSGFzaFNldDxzdGQ6
OnBhaXI8SlNPYmplY3QqLCBQcm9wZXJ0eU9mZnNldD4+IG1fc2FmZVRvTG9hZDsKICAgICBIYXNo
TWFwPFByb3BlcnR5VHlwZUtleSwgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yPiBtX2luZmVycmVk
VHlwZXM7CiAgICAgVmVjdG9yPFJlZjxTbmlwcGV0Pj4gbV9kb21KSVRTbmlwcGV0czsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8RG9taW5hdG9ycz4gbV9kb21pbmF0b3JzOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxQcmVQb3N0TnVtYmVyaW5nPiBtX3ByZVBvc3ROdW1iZXJpbmc7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPE5hdHVyYWxMb29wcz4gbV9uYXR1cmFsTG9vcHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PENGRz4gbV9jZmc7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0RvbWluYXRvcnM+IG1fY3BzRG9t
aW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBRG9taW5hdG9ycz4gbV9zc2FEb21pbmF0
b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNOYXR1cmFsTG9vcHM+IG1fY3BzTmF0dXJhbExv
b3BzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FOYXR1cmFsTG9vcHM+IG1fc3NhTmF0dXJhbExv
b3BzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FDRkc+IG1fc3NhQ0ZHOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDUFNDRkc+IG1fY3BzQ0ZHOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHND
Rkc+IG1fYmFja3dhcmRzQ0ZHOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrd2FyZHNEb21pbmF0
b3JzPiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzPiBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTAw
OSw2ICsxMDMyLDggQEAgcHVibGljOgogICAgIFJlZkNvdW50U3RhdGUgbV9yZWZDb3VudFN0YXRl
OwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiAgICAgYm9vbCBtX2hhc0V4Y2VwdGlv
bkhhbmRsZXJzIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJblNTQUNvbnZlcnNpb24geyBmYWxz
ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IG1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JF
bnRyeTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RW
YWx1ZXNDYWNoZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNl
QWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw1NCArOTMsNjEgQEAgc3RhdGljIHZvaWQgc2V0TGl2ZVZhbHVlcyhWZWN0
b3I8Tm9kZUFicwogCiB2b2lkIEluUGxhY2VBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKCkKIHsK
LSAgICBCYXNpY0Jsb2NrKiByb290ID0gbV9ncmFwaC5ibG9jaygwKTsKLSAgICByb290LT5jZmFT
aG91bGRSZXZpc2l0ID0gdHJ1ZTsKLSAgICByb290LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7Ci0g
ICAgcm9vdC0+Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKLSAgICByb290LT5jZmFTdHJ1Y3R1
cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAgICByb290LT5j
ZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3Vt
ZW50cygpOyArK2kpIHsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNs
ZWFyKCk7Ci0KLSAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAobV9ncmFw
aC5tX2Zvcm0gPT0gU1NBKQotICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50
Rm9ybWF0c1tpXTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9n
cmFwaC5tX2FyZ3VtZW50c1tpXTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKLSAgICAgICAgICAg
ICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3JtYXQoKTsK
KyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMp
IHsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7CisgICAgICAg
IGVudHJ5cG9pbnQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+
Y2ZhRm91bmRDb25zdGFudHMgPSBmYWxzZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0
dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7CisgICAgICAgIGVu
dHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVX
YXRjaGVkOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlw
b2ludC0+dmFsdWVzQXRUYWlsLmFyZ3VtZW50KGkpLmNsZWFyKCk7CisKKyAgICAgICAgICAgIEZs
dXNoRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0Ep
IHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiBzdXBwb3J0aW5nIG11bHRpcGxlIGVu
dHJ5cG9pbnRzIGluIHRoZSBGVEwsIHdlIG5lZWQgdG8gY2hhbmdlCisgICAgICAgICAgICAgICAg
Ly8gd2hhdCB3ZSBkbyBoZXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1Mzk2CisgICAgICAgICAgICAgICAgZm9ybWF0ID0gbV9ncmFwaC5tX2FyZ3VtZW50Rm9y
bWF0c1tpXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChlbnRyeXBvaW50KS0+dmFs
dWVbaV07CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBm
b3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAg
ICAgICAgICAgICBmb3JtYXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3Jt
YXQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRJbnQz
MjoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSku
c2V0VHlwZShTcGVjSW50MzJPbmx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAg
ICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBT
cGVjQ2VsbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNo
ZWRKU1ZhbHVlOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxw
dHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2gg
KGZvcm1hdCkgewotICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46Ci0gICAgICAgICAgICBy
b290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKLSAgICAgICAgICAgIHJv
b3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBERkdfQ1JB
U0gobV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJvb3QtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKLSAgICAg
ICAgcm9vdC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgICAgIHJvb3QtPnZh
bHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOwotICAgIH0KLSAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IDEgOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9j
a0luZGV4KSB7Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9jayhibG9j
a0luZGV4KTsKLSAgICAgICAgaWYgKCFibG9jaykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Cisg
ICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKKyAg
ICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5sb2NhbChpKS5jbGVhcigpOworICAg
ICAgICB9CisgICAgfQorCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxv
Y2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICBpZiAobV9ncmFwaC5tX2VudHJ5cG9pbnRz
LmNvbnRhaW5zKGJsb2NrKSkgeworICAgICAgICAgICAgLy8gV2UgaGFuZGxlZCB0aGUgZW50cnlw
b2ludHMgYWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAg
IEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hvdWxkUmV2
aXNpdCA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwpAQCAt
MzY0LDcgKzM3MSw3IEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVQK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZGF0YS0+Y2FzZXNbaV0u
dGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQotICAgICAgICAK
KwogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBEaXJlY3RU
YWlsQ2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAko
cmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIEpJVENvZGU6OnNocmlu
a1RvRml0KCkKICAgICBjb21tb24uc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFbnRyeS5zaHJpbmtU
b0ZpdCgpOwogICAgIG9zckV4aXQuc2hyaW5rVG9GaXQoKTsKKyAgICBjYXRjaEVudHJ5cG9pbnRz
LnNocmlua1RvRml0KCk7CiAgICAgc3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0ZpdCgpOwog
ICAgIG1pbmlmaWVkREZHLnByZXBhcmVBbmRTaHJpbmsoKTsKICAgICB2YXJpYWJsZUV2ZW50U3Ry
ZWFtLnNocmlua1RvRml0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDMyIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCiAgICAgICAg
ICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAgICBDYXRjaEVu
dHJ5cG9pbnREYXRhKiBjYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8Q2F0
Y2hFbnRyeXBvaW50RGF0YSwgdW5zaWduZWQ+KAorICAgICAgICAgICAgY2F0Y2hFbnRyeXBvaW50
cywgY2F0Y2hFbnRyeXBvaW50cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCisgICAgICAgICAgICBb
XSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSogaXRlbSkgeyByZXR1cm4gaXRlbS0+bV9ieXRl
Y29kZUluZGV4OyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBv
aW50cygpCisgICAgeworICAgICAgICBzdGQ6OnNvcnQoY2F0Y2hFbnRyeXBvaW50cy5iZWdpbigp
LCBjYXRjaEVudHJ5cG9pbnRzLmVuZCgpLCBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYg
YSwgY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYikgeworICAgICAgICAgICAgcmV0dXJuIGEu
bV9ieXRlY29kZUluZGV4IDwgYi5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0pOworI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICAgICAgdW5zaWduZWQgcHJldmlvdXNJbmRleCA9IDA7CisgICAg
ICAgIGZvciAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgZW50cnlwb2ludCA6IGNhdGNoRW50
cnlwb2ludHMpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c0luZGV4IDwgZW50cnlwb2lu
dC5tX2J5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGVudHJ5cG9p
bnQubV9ieXRlY29kZUluZGV4OworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZENhdGNoRW50cnlwb2ludCh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNpZ25lZCBt
YWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykK
KyAgICB7CisgICAgICAgIGNhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlwb2ludERh
dGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwgV1RGTW92ZShhcmd1bWVudEZv
cm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0KGNvbnN0
IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDEwICsxNTgsMTMgQEAgcHJpdmF0ZToKIHB1
YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURh
dGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVudHJ5cG9pbnREYXRhPiBjYXRjaEVudHJ5
cG9pbnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4aXQ7CiAg
ICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNvdmVyeTsK
ICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsKICAgICBE
Rkc6Ok1pbmlmaWVkR3JhcGggbWluaWZpZWRERkc7CisgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hP
U1JFbnRyeUJ1ZmZlcjsKKwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHVpbnQ4X3QgbmV2ZXJF
eGVjdXRlZEVudHJ5IHsgMSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw2ICsz
NjcsOCBAQCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGUoKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7
CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAgIG1fc3Bl
Y3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7CkBAIC00
MjYsNiArNDI4LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgbWFrZUNhdGNoT1NSRW50cnlCdWZmZXIo
KTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAKQEAgLTU1
MSwxNCArNTU1LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVDb25zdGEK
IH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFz
aWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1
ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cykK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCk7
IC8vIEFuIGVudHJ5cG9pbnQgaXMgYnkgZGVmaW5pdGlvbiByZWFjaGFibGUuCisgICAgbV9qaXRD
b2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5r
QnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSk7Cit9
CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJhc2ljQmxv
Y2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIp
CiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOwor
CiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1lZCB1bnJl
YWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNpY0Jsb2NrLmlu
dGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwog
ICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5RGF0YShi
YXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tIZWFkKSk7
Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxvY2suaW50ZXJz
ZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBGaXggdGhlIGV4cGVj
dGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2lsbCBoYXZlIGFu
IGV4cGVjdGVkCkBAIC02NzAsNiArNjgzLDEyIEBAIHZvaWQgSklUQ29tcGlsZXI6OnNldEVuZE9m
Q29kZSgpCiAgICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbElnbm9yaW5nV2F0
Y2hwb2ludHMoKSk7CiB9CiAKK3ZvaWQgSklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVudHJ5QnVm
ZmVyKCkKK3sKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpCisg
ICAgICAgIG1faml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlciA9IHZtKCktPnNjcmF0Y2hCdWZm
ZXJGb3JTaXplKHNpemVvZihKU1ZhbHVlKSAqICgqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkpKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29t
cGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0
Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBM
aW5rQnVmZmVyJiwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAg
CiAgICAgUmVmUHRyPEpJVENvZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAg
ICAKQEAgLTI4NCw2ICsyODUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRFeGNlcHRp
b25IYW5kbGluZ09TUkV4aXQoRXhpdEtpbmQsIHVuc2lnbmVkIGV2ZW50U3RyZWFtSW5kZXgsIENv
ZGVPcmlnaW4sIEhhbmRsZXJJbmZvKiBleGNlcHRpb25IYW5kbGVyLCBDYWxsU2l0ZUluZGV4LCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QganVtcHNUb0ZhaWwgPSBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QoKSk7CiAKKyAgICB2b2lkIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAgICAv
LyBUaGUgZGF0YWZsb3cgZ3JhcGggY3VycmVudGx5IGJlaW5nIGdlbmVyYXRlZC4KICAgICBHcmFw
aCYgbV9ncmFwaDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBo
YXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMSUNNUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogbmFtZXNwYWNlIHsKIAordXNpbmcgTmF0dXJhbExv
b3AgPSBTU0FOYXR1cmFsTG9vcDsKKwogc3RydWN0IExvb3BEYXRhIHsKICAgICBMb29wRGF0YSgp
CiAgICAgICAgIDogcHJlSGVhZGVyKG51bGxwdHIpCkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zv
cm0gPT0gU1NBKTsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FOYXR1cmFs
TG9vcHMoKTsKICAgICAgICAgbV9ncmFwaC5lbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cygpOwogCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CkBAIC04Myw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOworICAg
ICAgICBtX2RhdGEucmVzaXplKG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkp
OwogICAgICAgICAKICAgICAgICAgLy8gRmlndXJlIG91dCB0aGUgc2V0IG9mIHRoaW5ncyBlYWNo
IGxvb3Agd3JpdGVzIHRvLCBub3QgaW5jbHVkaW5nIGJsb2NrcyB0aGF0CiAgICAgICAgIC8vIGJl
bG9uZyB0byBpbm5lciBsb29wcy4gV2UgZml4IHRoaXMgbGF0ZXIuCkBAIC05OCw3ICsxMDAsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrLT5jZmFIYXNWaXNpdGVkKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zdCBOYXR1
cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihi
bG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAo
IWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBMb29wRGF0YSYg
ZGF0YSA9IG1fZGF0YVtsb29wLT5pbmRleCgpXTsKQEAgLTExNiwxNCArMTE4LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gRm9yIGVhY2ggbG9vcDoKICAgICAgICAgLy8gLSBJZGVudGlmeSBpdHMg
cHJlLWhlYWRlci4KICAgICAgICAgLy8gLSBNYWtlIHN1cmUgaXRzIG91dGVyIGxvb3BzIGtub3cg
d2hhdCBpdCBjbG9iYmVycy4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dy
YXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAg
ICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9v
cChsb29wSW5kZXgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgu
bV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAg
ICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5s
b29wKGxvb3BJbmRleCk7CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29w
LmluZGV4KCldOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKAotICAgICAgICAgICAg
ICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3Bz
LT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7CisgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91
dGVyTG9vcChsb29wKTsKICAgICAgICAgICAgICAgICBvdXRlckxvb3A7Ci0gICAgICAgICAgICAg
ICAgb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29w
KCpvdXRlckxvb3ApKQorICAgICAgICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FO
YXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKICAgICAgICAgICAg
ICAgICBtX2RhdGFbb3V0ZXJMb29wLT5pbmRleCgpXS53cml0ZXMuYWRkQWxsKGRhdGEud3JpdGVz
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQmFzaWNCbG9jayogaGVhZGVyID0gbG9vcC5o
ZWFkZXIoKTsKQEAgLTEzNyw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGhlYWRlci0+cHJlZGVjZXNzb3JzLnNpemUoKTsgaS0t
OykgewogICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gaGVhZGVyLT5w
cmVkZWNlc3NvcnNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3Jz
LT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCisgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgcHJlSGVhZGVy
ID0gcHJlZGVjZXNzb3I7CkBAIC0xOTEsNyArMTkzLDcgQEAgcHVibGljOgogICAgICAgICBWZWN0
b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBsb29wU3RhY2s7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9
IGZhbHNlOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
blByZU9yZGVyKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAg
IGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5u
ZXJNb3N0TG9vcE9mKGJsb2NrKTsKICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIApAQCAtMTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGZvciAoCiAgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGN1
cnJlbnQgPSBsb29wOwogICAgICAgICAgICAgICAgIGN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAg
Y3VycmVudCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3Vy
cmVudCkpCisgICAgICAgICAgICAgICAgY3VycmVudCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9v
cHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkpCiAgICAgICAgICAgICAgICAgbG9vcFN0
YWNrLmFwcGVuZChjdXJyZW50KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVtZW1i
ZXI6IHRoZSBsb29wIHN0YWNrIGhhcyB0aGUgaW5uZXItbW9zdCBsb29wIGF0IGluZGV4IDAsIHNv
IGlmIHdlIHdhbnQKQEAgLTMxOCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBiZWNh
dXNlIG1vc3QgbG9vcHMgYXJlIHNtYWxsIGFuZCBtb3N0IGJsb2NrcyBiZWxvbmcgdG8gZmV3IGxv
b3BzLgogICAgICAgICBmb3IgKHVuc2lnbmVkIGJvZHlJbmRleCA9IGxvb3AtPnNpemUoKTsgYm9k
eUluZGV4LS07KSB7CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBzdWJCbG9jayA9IGxvb3AtPmF0
KGJvZHlJbmRleCk7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKKyAgICAgICAgICAgIGNv
bnN0IE5hdHVyYWxMb29wKiBzdWJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aGVh
ZGVyT2Yoc3ViQmxvY2spOwogICAgICAgICAgICAgaWYgKCFzdWJMb29wKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViUHJlSGVhZGVyID0gbV9k
YXRhW3N1Ykxvb3AtPmluZGV4KCldLnByZUhlYWRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVBy
ZXNlcnZhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5j
bHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJERkdCbG9ja1NldC5oIgog
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5j
bHVkZSAiREZHUGhhc2UuaCIKQEAgLTQ2LDEwOSArNDcsMTg0IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgcnVuKCkKICAgICB7Ci0gICAgICAgIGlmICghbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUpOwogCi0gICAgICAgIG1f
Y3VycmVudEJsb2NrTGl2ZW5lc3MucmVzaXplKG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0
VGFpbC5udW1iZXJPZkxvY2FscygpKTsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1faGFzRXhjZXB0
aW9uSGFuZGxlcnMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgSW5zZXJ0
aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsKLSAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewotICAgICAgICAgICAgaGFu
ZGxlQmxvY2soYmxvY2ssIGluc2VydGlvblNldCk7Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQu
ZXhlY3V0ZShibG9jayk7CisgICAgICAgIGlmIChtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxl
cnMpIHsKKyAgICAgICAgICAgIG1fbGl2ZUF0Q2F0Y2hIZWFkLnJlc2l6ZShtX2dyYXBoLmJsb2Nr
KDApLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisKKyAgICAgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsK
KyAgICAgICAgICAgICAgICBoYW5kbGVCbG9ja0ZvclRyeUNhdGNoKGJsb2NrLCBpbnNlcnRpb25T
ZXQpOworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uKENvZGVPcmlnaW4gb3JpZ2luKQorICAgIGJvb2wgaXNW
YWxpZEZsdXNoTG9jYXRpb24oQmFzaWNCbG9jayogc3RhcnRpbmdCbG9jaywgdW5zaWduZWQgaW5k
ZXgsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQorICAgIHsKKyAgICAgICAgVmVjdG9yPEJhc2lj
QmxvY2sqLCA0PiB3b3JrbGlzdDsKKyAgICAgICAgQmxvY2tTZXQgc2VlbjsKKworICAgICAgICBh
dXRvIGFkZFByZWRlY2Vzc29ycyA9IFsmXSAoQmFzaWNCbG9jayogYmxvY2spIHsKKyAgICAgICAg
ICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBibG9jay0+cHJlZGVjZXNzb3JzKSB7CisgICAg
ICAgICAgICAgICAgYm9vbCBpc05ld0VudHJ5ID0gc2Vlbi5hZGQoYmxvY2spOworICAgICAgICAg
ICAgICAgIGlmIChpc05ld0VudHJ5KQorICAgICAgICAgICAgICAgICAgICB3b3JrbGlzdC5hcHBl
bmQoYmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGF1dG8gZmx1
c2hJc0RlZmluaXRlbHlJbnZhbGlkID0gWyZdIChCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQg
aW5kZXgpIHsKKyAgICAgICAgICAgIGJvb2wgYWxsR29vZCA9IGZhbHNlOworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gaW5kZXg7IGktLTsgKSB7CisgICAgICAgICAgICAgICAgaWYgKGJs
b2NrLT5hdChpKS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSAmJiBibG9jay0+YXQoaSktPmxvY2Fs
KCkgPT0gb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAoYWxsR29vZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIGlmIChibG9jay0+cHJlZGVjZXNzb3JzLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByb290IGJsb2NrLiBXZSBwcm92ZWQgd2UgcmVh
Y2hlZCBoZXJlLCB0aGVyZWZvcmUgd2UgY2FuJ3QgRmx1c2gsIGFzCisgICAgICAgICAgICAgICAg
Ly8gaXQnbGwgbWFrZSB0aGlzIGxvY2FsIGxpdmUgYXQgdGhlIHN0YXJ0IG9mIGEgcm9vdCBibG9j
aywgd2hpY2ggaXMgaW52YWxpZCBJUi4KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYWRkUHJlZGVjZXNzb3JzKGJsb2NrKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAoZmx1c2hJc0Rl
ZmluaXRlbHlJbnZhbGlkKHN0YXJ0aW5nQmxvY2ssIGluZGV4KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOworICAgICAgICAg
ICAgaWYgKGZsdXNoSXNEZWZpbml0ZWx5SW52YWxpZChibG9jaywgYmxvY2stPnNpemUoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHN0ZDo6cGFpcjxIYW5kbGVySW5mbyosIEZhc3RCaXRWZWN0b3I+
IGNhdGNoSGFuZGxlcihDb2RlT3JpZ2luIG9yaWdpbikKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXhUb0NoZWNrID0gb3JpZ2luLmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrTGl2ZW5lc3MuY2xlYXJBbGwoKTsKIAogICAgICAgICB3aGlsZSAoMSkgewog
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBvcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lOwogICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBpZiAo
SGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZUluZGV4VG9DaGVjaykpIHsKKyAgICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9y
IGxpdmVuZXNzOworICAgICAgICAgICAgICAgIGxpdmVuZXNzLnJlc2l6ZShtX2dyYXBoLmJsb2Nr
KDApLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisKICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjYXRjaEJ5dGVjb2RlSW5kZXggPSBoYW5kbGVyLT50YXJnZXQ7CiAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5mb3JBbGxMb2NhbHNMaXZlSW5CeXRlY29kZShDb2RlT3JpZ2luKGNh
dGNoQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lKSwgWyZdIChWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzW29w
ZXJhbmQudG9Mb2NhbCgpXSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGxpdmVuZXNzW29w
ZXJhbmQudG9Mb2NhbCgpXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICByZXR1cm4geyBoYW5kbGVyLCBs
aXZlbmVzcyB9OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxG
cmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHsgbnVsbHB0ciwgRmFzdEJpdFZlY3RvcigpIH07CiAKICAgICAgICAgICAgIGJ5dGVjb2Rl
SW5kZXhUb0NoZWNrID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRl
eDsKICAgICAgICAgICAgIG9yaWdpbiA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBoYW5kbGVCbG9jayhCYXNpY0Jsb2NrKiBibG9j
aywgSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQpCisgICAgdm9pZCBoYW5kbGVCbG9ja0ZvclRy
eUNhdGNoKEJhc2ljQmxvY2sqIGJsb2NrLCBJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCkKICAg
ICB7Ci0gICAgICAgIC8vIEJlY2F1c2UgcHJlY2lzZSBqdW1wIHRhcmdldHMgZW5zdXJlcyB0aGF0
IHRoZSBzdGFydCBvZiBhICJ0cnkiIGJsb2NrIGlzIGl0cwotICAgICAgICAvLyBvd24gYmFzaWMg
YmxvY2ssIHdlIHdpbGwgbmV2ZXIgaGF2ZSB0d28gInRyeSIgc3RhdGVtZW50cyBpbiB0aGUgc2Ft
ZSBERkcKLSAgICAgICAgLy8gYmFzaWMgYmxvY2suIFRoZXJlZm9yZSwgY2hlY2tpbmcgdGhlIGZp
cnN0IG5vZGUgaW4gdGhlIGJsb2NrIGlzIHN1ZmZpY2llbnQgCi0gICAgICAgIC8vIHRvIGNoZWNr
aW5nIGlmIHdlJ3JlIGluIGEgdHJ5IGJsb2NrLgotICAgICAgICBpZiAoIXdpbGxDYXRjaEV4Y2Vw
dGlvbihibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYykpCi0gICAgICAgICAgICByZXR1cm47
Ci0KICAgICAgICAgT3BlcmFuZHM8VmFyaWFibGVBY2Nlc3NEYXRhKj4gY3VycmVudEJsb2NrQWNj
ZXNzRGF0YShibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCksIGJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSwgbnVsbHB0cik7CiAgICAgICAgIEhh
c2hTZXQ8SW5saW5lQ2FsbEZyYW1lKj4gc2VlbklubGluZUNhbGxGcmFtZXM7CiAKLSAgICAgICAg
ewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkr
KykgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7Ci0gICAgICAg
ICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUtPm9wKCkgPT0gU2V0
QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9kZSA9PSBtX2dyYXBo
Lm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKLSAgICAgICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSkK
LSAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuYWRkKGlubGluZUNhbGxG
cmFtZSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAo
bm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9j
YWwoKTsKKyAgICAgICAgbV9jdXJyZW50RXhjZXB0aW9uSGFuZGxlciA9IG51bGxwdHI7CiAKLSAg
ICAgICAgICAgICAgICAgICAgaW50IHN0YWNrT2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1lID8gaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgo
b3BlcmFuZC5pc0xvY2FsKCkgJiYgbV9jdXJyZW50QmxvY2tMaXZlbmVzc1tvcGVyYW5kLnRvTG9j
YWwoKV0pCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAob3BlcmFuZC5vZmZzZXQoKSA9PSBz
dGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpKSB7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRh
ID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJh
bmQpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShp
LCBTcGVjTm9uZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gsIG5vZGUtPm9y
aWdpbiwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSkpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2Vz
U3RhY2sobV9ncmFwaCkpCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0Rh
dGEub3BlcmFuZChub2RlLT5sb2NhbCgpKSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSW5zZXJ0IEZsdXNoIGZvciBl
dmVyeXRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLgotICAgICAgICB7Ci0gICAgICAgICAg
ICBOb2RlT3JpZ2luIG9yaWdpbiA9IGJsb2NrLT5hdChibG9jay0+c2l6ZSgpIC0gMSktPm9yaWdp
bjsKKyAgICAgICAgYXV0byBmbHVzaEV2ZXJ5dGhpbmcgPSBbJl0gKE5vZGVPcmlnaW4gb3JpZ2lu
LCB1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jdXJyZW50
RXhjZXB0aW9uSGFuZGxlcik7CiAgICAgICAgICAgICBhdXRvIHByZXNlcnZlTGl2ZW5lc3NBdEVu
ZE9mQmxvY2sgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBib29sIGFsd2F5c0luc2Vy
dCkgewotICAgICAgICAgICAgICAgIGlmICgob3BlcmFuZC5pc0xvY2FsKCkgJiYgbV9jdXJyZW50
QmxvY2tMaXZlbmVzc1tvcGVyYW5kLnRvTG9jYWwoKV0pIAorICAgICAgICAgICAgICAgIGlmICgo
b3BlcmFuZC5pc0xvY2FsKCkgJiYgbV9saXZlQXRDYXRjaEhlYWRbb3BlcmFuZC50b0xvY2FsKCld
KSAKICAgICAgICAgICAgICAgICAgICAgfHwgb3BlcmFuZC5pc0FyZ3VtZW50KCkKICAgICAgICAg
ICAgICAgICAgICAgfHwgYWx3YXlzSW5zZXJ0KSB7CisKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFpc1ZhbGlkRmx1c2hMb2NhdGlvbihibG9jaywgaW5kZXgsIG9wZXJhbmQpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIk5vdCB2YWxpZCBmbHVzaCBsb2NhdGlvbiBibG9j
ayMiLCBibG9jay0+aW5kZXgsICIgaW5kZXg6ICIsIGluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZHVtcCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ1JBU0goKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogYWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVy
YW5kKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhY2Nlc3NEYXRhKQogICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKTsK
IAogICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3Bl
cmFuZCkgPSBhY2Nlc3NEYXRhOwogCi0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5p
bnNlcnROb2RlKGJsb2NrLT5zaXplKCksIFNwZWNOb25lLCAKKyAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXgsIFNwZWNOb25lLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIEZsdXNoLCBvcmlnaW4sIE9wSW5mbyhhY2Nlc3NEYXRhKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfTsKKwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBsb2Nh
bCA9IDA7IGxvY2FsIDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyBs
b2NhbCsrKQogICAgICAgICAgICAgICAgIHByZXNlcnZlTGl2ZW5lc3NBdEVuZE9mQmxvY2sodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLCBmYWxzZSk7CiAgICAgICAgICAgICBmb3IgKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogc2VlbklubGluZUNhbGxGcmFtZXMpCiAg
ICAgICAgICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayhWaXJ0dWFsUmVnaXN0
ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50
T2Zmc2V0KCkpLCB0cnVlKTsKICAgICAgICAgICAgIHByZXNlcnZlTGl2ZW5lc3NBdEVuZE9mQmxv
Y2soVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpLCB0cnVl
KTsKKworICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuY2xlYXIoKTsKKyAgICAgICAg
fTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsr
KSB7CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOworCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgc3RkOjpwYWlyPEhhbmRsZXJJbmZvKiwgRmFzdEJpdFZlY3Rv
cj4gZGF0YSA9IGNhdGNoSGFuZGxlcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAg
ICAgICAgIEhhbmRsZXJJbmZvKiBuZXdIYW5kbGVyID0gZGF0YS5maXJzdDsKKyAgICAgICAgICAg
ICAgICBpZiAobmV3SGFuZGxlciAhPSBtX2N1cnJlbnRFeGNlcHRpb25IYW5kbGVyICYmIG1fY3Vy
cmVudEV4Y2VwdGlvbkhhbmRsZXIpCisgICAgICAgICAgICAgICAgICAgIGZsdXNoRXZlcnl0aGlu
Zyhub2RlLT5vcmlnaW4sIGkpOworICAgICAgICAgICAgICAgIG1fY3VycmVudEV4Y2VwdGlvbkhh
bmRsZXIgPSBuZXdIYW5kbGVyOworICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRFeGNlcHRp
b25IYW5kbGVyKQorICAgICAgICAgICAgICAgICAgICBtX2xpdmVBdENhdGNoSGVhZCA9IGRhdGEu
c2Vjb25kOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9jdXJyZW50RXhjZXB0
aW9uSGFuZGxlciAmJiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCBub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50KSkgeworICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAg
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAgICAgICBzZWVuSW5s
aW5lQ2FsbEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CisKKyAgICAgICAgICAgICAgICBp
bnQgc3RhY2tPZmZzZXQgPSBpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0IDogMDsKKyAgICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYmIG1f
bGl2ZUF0Q2F0Y2hIZWFkW29wZXJhbmQudG9Mb2NhbCgpXSkKKyAgICAgICAgICAgICAgICAgICAg
fHwgb3BlcmFuZC5pc0FyZ3VtZW50KCkKKyAgICAgICAgICAgICAgICAgICAgfHwgKG9wZXJhbmQu
b2Zmc2V0KCkgPT0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgp
KSkgeworCisgICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZEZsdXNoTG9jYXRpb24oYmxv
Y2ssIGksIG9wZXJhbmQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIk5v
dCB2YWxpZCBmbHVzaCBsb2NhdGlvbiBAIiwgbm9kZS0+aW5kZXgoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENSQVNI
KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEu
b3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vz
c0RhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdW
YXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCk7CisKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoaSwgU3BlY05vbmUsIAorICAgICAgICAgICAgICAgICAgICAgICAg
Rmx1c2gsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vz
c2VzU3RhY2sobV9ncmFwaCkpCisgICAgICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0
YS5vcGVyYW5kKG5vZGUtPmxvY2FsKCkpID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBJbnNlcnQgRmx1c2ggZm9yIGV2ZXJ5dGhpbmcgYXQgdGhl
IGVuZCBvZiB0aGUgYmxvY2suCisgICAgICAgIGlmIChtX2N1cnJlbnRFeGNlcHRpb25IYW5kbGVy
KSB7CisgICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IGJsb2NrLT5hdChibG9jay0+c2l6
ZSgpIC0gMSktPm9yaWdpbjsKKyAgICAgICAgICAgIGZsdXNoRXZlcnl0aGluZyhvcmlnaW4sIGJs
b2NrLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNjAsNyArMjM2LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gJm1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEubGFzdCgp
OwogICAgIH0KIAotICAgIEZhc3RCaXRWZWN0b3IgbV9jdXJyZW50QmxvY2tMaXZlbmVzczsKKyAg
ICBGYXN0Qml0VmVjdG9yIG1fbGl2ZUF0Q2F0Y2hIZWFkOworICAgIEhhbmRsZXJJbmZvKiBtX2N1
cnJlbnRFeGNlcHRpb25IYW5kbGVyIHsgbnVsbHB0ciB9OwogfTsKIAogYm9vbCBwZXJmb3JtTGl2
ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBCYXNp
Y0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0luc2VydGlvblNldCYg
aW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKKyAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSwgIkFuIGVudHJ5cG9pbnQg
c2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AiKTsKKwogICAgIC8vIEZJWE1FOiBJZiB3ZSBydW4gdGhp
cyB1dGlsaXR5IG9uIFNTQSBJUiwgdGhlbiB3ZSBtYXkgZW5kIHVwIHdpdGggYSBiaXphcnJlIGFy
cmFuZ2VtZW50IG9mCiAgICAgLy8gVXBzaWxvbnMgYW5kIFBoaXMsIGxpa2U6CiAgICAgLy8KQEAg
LTY5LDcgKzcxLDggQEAgQmFzaWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAog
ICAgIC8vIEluc3RlYWQsIHdlIHVzZSB0aGUgbWF4IG9mIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUg
bG9vcCBib2R5J3Mgbm9uLWxvb3AgcHJlZGVjZXNzb3JzLgogICAgIGZsb2F0IGZyZXF1ZW5jeSA9
IDA7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3Nv
cnMpIHsKLSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBw
cmVkZWNlc3NvcikpCisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0gIT0gU1NBKTsKKyAgICAg
ICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3Nv
cikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgo
ZnJlcXVlbmN5LCBwcmVkZWNlc3Nvci0+ZXhlY3V0aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3
ICsxMDYsNyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRl
eCA8IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAg
ICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRl
Y2Vzc29ySW5kZXhdOwotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMo
YmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+
ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnBy
ZWRlY2Vzc29ycy5sYXN0KCk7CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFz
dCgpOwpAQCAtMTMwLDE2ICsxMzMsMTYgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkK
ICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dy
YXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAg
ICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxM
b29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1
cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsK
LSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1M
b29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29w
JiBsb29wID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAg
ICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSBudWxscHRyOwogICAgICAg
ICAgICAgYm9vbCBuZWVkc05ld1ByZUhlYWRlciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNp
emUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykgewotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5k
ZXhdOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVz
KGxvb3AuaGVhZGVyKCksIHByZWRlY2Vzc29yKSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
cHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6
ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vz
c29ySW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+
ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCkubm9kZSgpLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFk
ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3Nv
cjsKQEAgLTE2NSwxNCArMTY4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhl
YWRlciBpcyBtb3N0IHVzZWZ1bCBpZiBpdCdzIHBvc3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVy
bWluYWwuIEhlbmNlCiAgICAgICAgICAgICAvLyBpZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0
aW5nIHByZS1oZWFkZXIgZG9lc24ndCBhbGxvdyBmb3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAg
ICAgICAgICAgLy8gb3JpZ2luIG9mIHRoZSBsb29wIGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3Vs
ZCBjcmVhdGUgYSBuZXcgcHJlLWhlYWRlci4KLSAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVI
ZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAg
IGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5v
cmlnaW4uZXhpdE9LCiAgICAgICAgICAgICAgICAgJiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJt
aW5hbCgpLT5vcmlnaW4uZXhpdE9LKQogICAgICAgICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVy
ID0gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRl
cikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
Y3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsK
KyAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9v
cC5oZWFkZXIoKS5ub2RlKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4g
bV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1MywxMCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgICAg
IH0KIAotICAgICAgICB0cmVhdFJvb3RCbG9jayhtX2dyYXBoLmJsb2NrKDApLCBpbnNlcnRpb25T
ZXQpOwotICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShtX2dyYXBoLmJsb2NrKDApKTsKKyAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRz
KSB7CisgICAgICAgICAgICB0cmVhdFJvb3RCbG9jayhlbnRyeXBvaW50LCBpbnNlcnRpb25TZXQp
OworICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoZW50cnlwb2ludCk7CisgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02Nyw3ICs2OSwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9j
ay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2Rl
LT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5v
ZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07Cisg
ICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2Fs
KCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0g
aXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAg
IH0KKwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2Rl
LT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgp
OwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0
YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKQEAgLTEyOCwxMiAr
MTM2LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyBpKyspIHsKICAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7Ci0g
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGFjY2Vzc0RhdGE7CiAgICAgICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIGluaXRpYWxBY2Nlc3NOb2Rlcy5vcGVyYW5kKG9w
ZXJhbmQpLT5vcCgpID09IEZsdXNoKTsgLy8gV2Ugc2hvdWxkIGhhdmUgaW5zZXJ0ZWQgYSBGbHVz
aCBiZWZvcmUgYW55IFNldExvY2FsL1NldEFyZ3VtZW50IGZvciB0aGUgbG9jYWwgdGhhdCB3ZSBh
cmUgYW5hbHl6aW5nIG5vdy4KLSAgICAgICAgICAgIGFjY2Vzc0RhdGEgPSBpbml0aWFsQWNjZXNz
RGF0YS5vcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBh
Y2Nlc3NEYXRhID0gaW5pdGlhbEFjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgYWNjZXNzRGF0YSk7CiAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgwLCBTcGVjTm9uZSwgCiAgICAgICAgICAgICAgICAg
U2V0TG9jYWwsIG9yaWdpbiwgT3BJbmZvKGFjY2Vzc0RhdGEpLCBFZGdlKHVuZGVmaW5lZCkpOwor
ICAgICAgICAgICAgYWNjZXNzRGF0YS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUpOyAvLyBX
ZSBkb24ndCBrbm93IGlmIHdlIGNhbiBleGl0IGhlcmUuCiAgICAgICAgIH0KICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIw
OTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3Jh
cGgsIE5vZGUqCiAgICAgY2FzZSBJbnQ1MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNh
c2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAg
ICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0
cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3Bz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9v
cHMuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
YXR1cmFsTG9vcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTggKzM0LDIwIEBACiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENG
Rz4gTmF0dXJhbExvb3A7Ci0KLWNsYXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVy
YWxMb29wczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJh
bExvb3BzIDogcHVibGljIFdURjo6TmF0dXJhbExvb3BzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShOYXR1cmFsTG9vcHMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgogICAgIE5hdHVyYWxMb29wcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RG
OjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3JhcGgubV9jZmcsIGdyYXBoLmVuc3VyZURvbWluYXRvcnMo
KSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkdL
aW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpLCBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENG
R0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKICAgICB7CiAgICAgfQogfTsKIAor
dXNpbmcgU1NBTmF0dXJhbExvb3AgPSBXVEY6Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2luZyBD
UFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8Q1BTQ0ZHPjsKKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNzcsNyArMTI3Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAK
LSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBib29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBvcCgpID09IFN3aXRjaDsKICAgICB9CkBAIC0xMzcyLDYgKzEzNzIsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRh
KCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxs
VGhyb3VnaC5ibG9jazsKICAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAg
ICAgICAgY2FzZSAwOgogICAgICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAtMTU0MSw2ICsxNTQy
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG9wKCkgPT0gSWRlbnRpdHlXaXRoUHJvZmls
ZSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxTcGVjdWxhdGVkVHlwZT4oKTsKICAgICB9
CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hM
b2NhbFByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENh
dGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigp
OworICAgIH0KICAgICAKICAgICBib29sIGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CkBAIC0xOTM2
LDcgKzE5NDksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVn
aXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KLSAgICAKKwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMDk3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtOTIsNiArOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
LyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhh
dCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2Ny
YXRjaCBidWZmZXIuICovXAogICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVz
dWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wK
ICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMDk3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCkBAIC0zMzYsNiArMzM3LDcxIEBAIHZvaWQqIHByZXBh
cmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAor
dm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVz
ZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09
IEpJVENvZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2Nr
LT5qaXRDb2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAg
REZHOjpDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRj
aE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFj
YXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21l
IGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndAorICAgICAg
ICAvLyBjb21waWxlIHRoaXMgb3BfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQg
bmV2ZXIgZXhlY3V0ZWQgd2hlbiBzdGFydGluZworICAgICAgICAvLyB0aGUgY29tcGlsYXRpb24u
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxs
b3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1
bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBj
YXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgewor
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVu
dHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERG
Rzo6Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlz
Qm9vbGVhbigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlz
IG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2Vk
IHRvIGJlIGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpG
bHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBh
IEpTVmFsdWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisg
ICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRS
ZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0u
ZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2Rl
KSA9PSBvcF9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgMV0udS5wb2lu
dGVyKTsKKyAgICBKU1ZhbHVlKiBkYXRhQnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVl
Kj4oaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKKyAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxl
Lm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkYXRh
QnVmZmVyW2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFs
dWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIGppdENvZGUtPmNhdGNoT1NS
RW50cnlCdWZmZXItPnNldEFjdGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisK
KyAgICByZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5
cG9pbnQtPm1fbWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVk
ZSAiREZHRmx1c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0
Zi9CaXRWZWN0b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9T
UkVudHJ5RGF0YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJ
bmRleDsKIH0KIAorc3RydWN0IENhdGNoRW50cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1f
Ynl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8v
IFdlIHVzZSB0aGlzIHdoZW4gZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUg
YXJndW1lbnRzCisgICAgLy8gYXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmlu
ZyBhdCBhIGNhdGNoIGJsb2NrLgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZv
cm1hdHM7Cit9OworCiAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQg
dGhlIE9TUiBlbnRyeSB0aHVuayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlz
IHJldHVybnMgbnVsbCwgaXQgbWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRl
KiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMg
cmV0dXJuZWQsIHdlIGNhbid0IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUg
UEMgdG8ganVtcCB0by4KK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBw
cmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJu
IDA7IH0KICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDk3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9u
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJE
RkdCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrSW5zZXJ0aW9uU2V0Lmgi
CisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBA
IC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVJ
bmRleCAhPSBVSU5UX01BWCk7CiAgICAgICAgIAogICAgICAgICAvLyBOZWVkZWQgYnkgY3JlYXRl
UHJlSGVhZGVyKCkuCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVC
bG9jayogYmFzZWxpbmUgPSBtX2dyYXBoLm1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgCkBAIC0x
MTIsMTYgKzExMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhlcmUu
CiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisgICAg
ICAgIFZlY3RvcjxOb2RlKiwgOD4gbmV3QXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yIChp
bnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsr
YXJndW1lbnQpIHsKICAgICAgICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxl
c0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsK
ICAgICAgICAgICAgICAgICAvLyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJn
dW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9
IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgIG9sZE5vZGUg
PSBuZXdBcmd1bWVudHNbYXJndW1lbnRdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwg
U3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9s
ZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CisgICAgICAgICAgICBuZXdBcmd1bWVudHNbYXJndW1l
bnRdID0gbm9kZTsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9j
YWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKQEAgLTEzOSw4ICsx
NDEsMTcgQEAgcHVibGljOgogICAgICAgICAgICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dy
YXBoLCBpbnNlcnRpb25TZXQsIHRhcmdldCkpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlv
blNldC5leGVjdXRlKCk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5
cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0g
bmV3Um9vdDsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigp
OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBu
ZXdBcmd1bWVudHMpOworCisgICAgICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5p
cXVlPENQU0NGRz4obV9ncmFwaCk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0
eSgpOwogICAgICAgICBtX2dyYXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw3ICs3Mjcs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9ncmFwaC5jb21wdXRlUmVmQ291bnRzKCk7
CiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFw
aC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9y
cygpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAg
cGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBtX2NvbWJp
bmVkTGl2ZW5lc3MgPSBDb21iaW5lZExpdmVuZXNzKG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsOSArMzY2
LDggQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIC8vIElm
IHdlJ3JlIGRvaW5nIHZhbGlkYXRpb24sIHRoZW4gcnVuIHNvbWUgYW5hbHlzZXMsIHRvIGdpdmUg
dGhlbSBhbiBvcHBvcnR1bml0eQogICAgIC8vIHRvIHNlbGYtdmFsaWRhdGUuIE5vdyBpcyBhcyBn
b29kIGEgdGltZSBhcyBhbnkgdG8gZG8gdGhpcy4KICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkgewotICAgICAgICBkZmcuZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBkZmcuZW5zdXJl
TmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7Cisg
ICAgICAgIGRmZy5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNO
YXR1cmFsTG9vcHMoKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKG1vZGUpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2
aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVt
YmVyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQot
I2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrV29ya2xp
c3QuaCIKLSNpbmNsdWRlICJERkdHcmFwaC5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7Ci0KLVByZVBvc3ROdW1iZXJpbmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBo
KQotewotICAgIG1fbWFwID0gQmxvY2tNYXA8TnVtYmVyaW5nPihncmFwaCk7Ci0gICAgCi0gICAg
UG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGdyYXBo
LmJsb2NrKDApKTsKLSAgICB1bnNpZ25lZCBuZXh0UHJlTnVtYmVyID0gMDsKLSAgICB1bnNpZ25l
ZCBuZXh0UG9zdE51bWJlciA9IDA7Ci0gICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3
b3JrbGlzdC5wb3AoKSkgewotICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAg
Y2FzZSBWaXNpdE9yZGVyOjpQcmU6Ci0gICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcHJl
TnVtYmVyID0gbmV4dFByZU51bWJlcisrOwotICAgICAgICAgICAgd29ya2xpc3QucHVzaFBvc3Qo
aXRlbS5ub2RlKTsKLSAgICAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogaXRl
bS5ub2RlLT5zdWNjZXNzb3JzKCkpCi0gICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzdWNj
ZXNzb3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UG9z
dDoKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wb3N0TnVtYmVyID0gbmV4dFBvc3RO
dW1iZXIrKzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1QcmVQ
b3N0TnVtYmVyaW5nOjp+UHJlUG9zdE51bWJlcmluZygpIHsgfQotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7
Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBFZGdlS2luZCBraW5kKQot
ewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgRm9yd2FyZEVkZ2U6Ci0gICAgICAgIG91
dC5wcmludCgiRm9yd2FyZEVkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3Jvc3NF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkNyb3NzRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBCYWNrRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJCYWNrRWRnZSIpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgotI2luY2x1
ZGUgIkRGR0Jsb2NrTWFwLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewot
Ci1lbnVtIEVkZ2VLaW5kIHsKLSAgICBGb3J3YXJkRWRnZSwKLSAgICBDcm9zc0VkZ2UsCi0gICAg
QmFja0VkZ2UKLX07Ci0KLWNsYXNzIFByZVBvc3ROdW1iZXJpbmcgewotICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFByZVBvc3ROdW1iZXJpbmcpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIFByZVBvc3ROdW1iZXJpbmcoR3JhcGgmKTsKLSAgICB+UHJlUG9zdE51
bWJlcmluZygpOwotCi0gICAgdW5zaWduZWQgcHJlTnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBj
b25zdCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wcmVOdW1iZXI7IH0KLSAgICB1bnNpZ25lZCBw
b3N0TnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9ja10u
bV9wb3N0TnVtYmVyOyB9Ci0gICAgCi0gICAgLy8gSXMgZnJvbSBhIHN0cmljdCBhbmNlc3RvciBv
ZiB0bz8KLSAgICBib29sIGlzU3RyaWN0QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNp
Y0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcmVOdW1iZXIoZnJvbSkg
PCBwcmVOdW1iZXIodG8pCi0gICAgICAgICAgICAmJiBwb3N0TnVtYmVyKGZyb20pID4gcG9zdE51
bWJlcih0byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNBbmNlc3Rvck9mKEJhc2ljQmxvY2sq
IGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyb20g
PT0gdG8gfHwgaXNTdHJpY3RBbmNlc3Rvck9mKGZyb20sIHRvKTsKLSAgICB9Ci0gICAgCi0gICAg
Ym9vbCBpc1N0cmljdERlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0
bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc1N0cmljdEFuY2VzdG9yT2YodG8sIGZy
b20pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzRGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZy
b20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQW5jZXN0
b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAgIC8vIFRoaXMgd2lsbCBnaXZlIGEgYm9n
dXMgYW5zd2VyIGlmIHRoZXJlIGlzIGFjdHVhbGx5IG5vIHN1Y2ggZWRnZS4gSWYgeW91IHdhbnQg
dG8gZGV0ZXJtaW5lCi0gICAgLy8gaWYgdGhlcmUgaXMgYW55IHN1Y2ggZWRnZSwgeW91IGhhdmUg
dG8gZG8gaXQgeW91cnNlbGYuCi0gICAgRWRnZUtpbmQgZWRnZUtpbmQoQmFzaWNCbG9jayogZnJv
bSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpY3REZXNj
ZW5kYW50T2YodG8sIGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEZvcndhcmRFZGdlOwotICAg
ICAgICAKLSAgICAgICAgaWYgKGlzQW5jZXN0b3JPZih0bywgZnJvbSkpCi0gICAgICAgICAgICBy
ZXR1cm4gQmFja0VkZ2U7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gQ3Jvc3NFZGdlOwotICAg
IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgc3RydWN0IE51bWJlcmluZyB7Ci0gICAgICAgIHVuc2ln
bmVkIG1fcHJlTnVtYmVyOwotICAgICAgICB1bnNpZ25lZCBtX3Bvc3ROdW1iZXI7Ci0gICAgfTsK
LQotICAgIEJsb2NrTWFwPE51bWJlcmluZz4gbV9tYXA7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OkRGRzo6RWRnZUtpbmQpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsMTYgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVk
QmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gV2Ugb25seSBk
byB0aGlzIGZvciB0aGUgYXJndW1lbnRzIGF0IHRoZSBmaXJzdCBibG9jay4gVGhlIGFyZ3VtZW50
cyBmcm9tCisgICAgICAgICAgICAvLyBvdGhlciBlbnRyeXBvaW50cyBoYXZlIGFscmVhZHkgYmVl
biBwb3B1bGF0ZWQgd2l0aCB0aGVpciBwcmVkaWN0aW9ucy4KKyAgICAgICAgICAgIGF1dG8mIGFy
Z3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJs
b2NrKDApKS0+dmFsdWU7CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGFyZyA9IDA7IGFyZyA8
IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKSk7ICsrYXJn
KSB7CiAgICAgICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gcHJvZmlsZWRCbG9j
aygpLT52YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChhcmcpOwogICAgICAgICAgICAgICAgIGlmICgh
cHJvZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5wcmVkaWN0KAorCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2FyZ10tPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0KAogICAgICAgICAgICAgICAgICAgICBwcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzI1LDYgKzcyNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAg
ICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmNhdGNoTG9jYWxQcmVkaWN0aW9u
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIFJlc29s
dmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWw6CiAgICAgICAgIGNhc2UgR2V0RHluYW1p
Y1ZhcjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVUb3ApOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRTdGFja1Npbmtp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcCgpOwogICAgICAgICB9CiAK
LSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5z
dXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAgICAgICAgU1NBQ2FsY3VsYXRvciBzc2FD
YWxjdWxhdG9yKG1fZ3JhcGgpOwogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1f
Z3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1
bGF0b3IuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNhbGN1bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxMiArOTUsMTIgQEAg
U1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpuZXdEZQogCiBTU0FDYWxjdWxhdG9y
OjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5vbkxvY2FsUmVhY2hpbmdEZWYoQmFzaWNCbG9jayogYmxv
Y2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwo
bV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2spLCB2YXJpYWJsZSk7CisgICAgcmV0dXJu
IHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwg
dmFyaWFibGUpOwogfQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6OnJlYWNo
aW5nRGVmQXRUYWlsKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0g
ICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2Nr
KSkgeworICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+
aWRvbShibG9jaykpIHsKICAgICAgICAgaWYgKERlZiogZGVmID0gbV9kYXRhW2Jsb2NrXS5tX2Rl
ZnMuZ2V0KHZhcmlhYmxlKSkKICAgICAgICAgICAgIHJldHVybiBkZWY7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmgJKHJldmlzaW9u
IDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgUGhpSW5zZXJ0aW9uRnVuY3Rvcj4KICAgICB2b2lkIGNvbXB1dGVQaGlzKGNv
bnN0IFBoaUluc2VydGlvbkZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewotICAgICAgICBERkdfQVNT
RVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9kb21pbmF0b3JzKTsKKyAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycyk7CiAgICAg
ICAgIAogICAgICAgICBmb3IgKFZhcmlhYmxlJiB2YXJpYWJsZSA6IG1fdmFyaWFibGVzKSB7Ci0g
ICAgICAgICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVy
YXRlZERvbWluYW5jZUZyb250aWVyT2YoCisgICAgICAgICAgICBtX2dyYXBoLm1fc3NhRG9taW5h
dG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCiAg
ICAgICAgICAgICAgICAgdmFyaWFibGUubV9ibG9ja3NXaXRoRGVmcywKICAgICAgICAgICAgICAg
ICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBib29sIHsKICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogcGhpTm9kZSA9IGZ1bmN0b3IoJnZhcmlhYmxlLCBibG9jayk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDggQEAgcHVibGljOgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CiAg
ICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFyUmVwbGFjZW1lbnRzKCk7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmNsZWFyQ1BTQ0ZHRGF0
YSgpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUg
U1NBIHRyYW5zZm9ybWF0aW9uOlxuIik7CkBAIC0xMTAsNyArMTExLDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBEZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUg
aW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0K
LSAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0g
YmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ug
d2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxh
dG9yIHRlbGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAg
ICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNC
bG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgp
XTsKQEAgLTM4MSwxOCArMzgyLDIyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1
ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRz
LnNpemUoKTsgaS0tOykgeworCisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVu
dHJ5cG9pbnRzIGluIERGRyBTU0E6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5t
X2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1
ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNp
emUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0g
ICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9h
cmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5n
LmdldChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChub2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgp
LT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZv
cm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0g
bm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhl
IGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBu
b2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUg
YmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
bV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkBAIC00MTYsNyArNDIxLDEyIEBAIHByaXZhdGU6CiAKIGJv
b2wgcGVyZm9ybVNTQUNvbnZlcnNpb24oR3JhcGgmIGdyYXBoKQogewotICAgIHJldHVybiBydW5Q
aGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3Jh
cGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9
IHRydWU7CisgICAgYm9vbCByZXN1bHQgPSBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdy
YXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAg
ICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uID0gZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjUsNiArMzI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dAogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNh
c2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAg
ICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoK
ICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2MzcsNiArNTYzNywyMyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIHVucmVhY2hhYmxlKG5vZGUp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0YWcodGhp
cyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBwYXlsb2FkKHRoaXMpOworCisgICAgICAgIEdQUlJl
ZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHRhZ0dQUiA9IHRhZy5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRHUFIgPSBwYXlsb2FkLmdwcigpOworCisgICAgICAg
IEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5qaXRDb2Rl
KCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hPU1JFbnRy
eUluZGV4KCldOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRk
cmVzcyh0ZW1wR1BSLCBUYWdPZmZzZXQpLCB0YWdHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIsIFBheWxvYWRPZmZzZXQpLCBwYXlsb2FkR1BS
KTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0YWdHUFIsIHBheWxvYWRHUFIsIG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBo
aToKICAgICBjYXNlIFVwc2lsb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5OTcsNiArNTk5NywxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDaGVja1N1YkNsYXNzKG5vZGUpOwogICAgICAgICBi
cmVhazsKIAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgSlNWYWx1ZSog
cHRyID0gJnJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KG1faml0LmppdENvZGUoKS0+Y2F0Y2hP
U1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKVtub2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07
CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQ
UiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1w
R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAjaWYgRU5BQkxFKEZUTF9KSVQp
ICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOiB7CiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGNhbGxUaWVyVXAgPSBtX2ppdC5icmFuY2hBZGQzMigKQEAgLTYwODUsNiAr
NjA5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKwogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQp
CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1
cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MDYsNiArMTcwNiwxMyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAg
ICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCku
c3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAg
ICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJp
YWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJh
bWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Cisg
ICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgp
KTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTgw
MCw4ICsxODA3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAog
ICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENv
ZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUpOwogCisgICAgYXV0byYgYXJndW1lbnRz
ID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBo
KCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faml0LmNvZGVC
bG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewotICAgICAgICBOb2RlKiBub2RlID0gbV9q
aXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50
c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQg
aXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAg
ICAgICAgICBjb250aW51ZTsKQEAgLTE4ODUsMTIgKzE4OTMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9q
aXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0
IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBjb3VsZCBhZGQgdGhlbQotICAgICAgICAv
LyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQu
YmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc09TUlRhcmdl
dCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRs
eSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0K
KyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4KKyAgICAgICAgICAgIG1fb3NyRW50cnlI
ZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgfQog
ICAgIH0KIH0KIApAQCAtMTkwMSwxMCArMTkwOCwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjps
aW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3Jh
cGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5pc09TUlRhcmdldCkKKyAgICAgICAgaWYg
KCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1f
b3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYg
KGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAgICAgICAgYXV0byBpdGVyID0gbV9q
aXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAg
ICAgIGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA9IGl0ZXItPnZhbHVlOworICAgICAgICAgICAgVmVj
dG9yPEZsdXNoRm9ybWF0PiBhcmd1bWVudEZvcm1hdHM7CisgICAgICAgICAgICBhcmd1bWVudEZv
cm1hdHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1bWVudHNWZWN0b3Iuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIGZvciAoTm9kZSogc2V0QXJndW1lbnQgOiBhcmd1bWVudHNWZWN0b3IpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2V0QXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgRmx1
c2hGb3JtYXQgZmx1c2hGb3JtYXQgPSBzZXRBcmd1bWVudC0+dmFyaWFibGVBY2Nlc3NEYXRhKCkt
PmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChmbHVzaEZvcm1hdCA9
PSBGbHVzaGVkSW50MzIgfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZENlbGwgfHwgZmx1c2hGb3Jt
YXQgPT0gRmx1c2hlZEJvb2xlYW4gfHwgZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEpTVmFsdWUpOwor
ICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKGZsdXNo
Rm9ybWF0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJn
dW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChEZWFkRmx1c2gpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbV9qaXQubm90aWNlQ2F0Y2hFbnRyeXBvaW50KCpibG9jaywgbV9vc3JFbnRy
eUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIsIFdURk1vdmUoYXJndW1lbnRGb3Jt
YXRzKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2stPmlzT1NS
VGFyZ2V0KTsKKyAgICAgICAgICAgIG1faml0Lm5vdGljZU9TUkVudHJ5KCpibG9jaywgbV9vc3JF
bnRyeUhlYWRzW29zckVudHJ5SW5kZXgrK10sIGxpbmtCdWZmZXIpOworICAgICAgICB9CiAgICAg
fQorCisgICAgbV9qaXQuaml0Q29kZSgpLT5maW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKTsK
KwogICAgIEFTU0VSVChvc3JFbnRyeUluZGV4ID09IG1fb3NyRW50cnlIZWFkcy5zaXplKCkpOwog
ICAgIAogICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGlj
RXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9v
cHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEVzdGltYXRlIGJhc2ljIGJsb2NrIGV4ZWN1dGlvbiBjb3VudHMgYmFzZWQg
b24gbG9vcCBkZXB0aC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dy
YXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX25h
dHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7CisgICAgICAgICAgICBibG9jay0+ZXhlY3V0
aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChi
bG9jaykpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBicmFuY2gg
d2VpZ2h0cyBiYXNlZCBvbiBleGVjdXRpb24gY291bnRzLiBUaGlzIGlzbid0IHF1aXRlIGNvcnJl
Y3QuIEl0J2xsCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBhcHBs
eUNvdW50cyhkYXRhLT5mYWxsVGhyb3VnaCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OCwxOCArMjY4LDI3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBGbHVzaDogewogICAgICAgICAgICAg
QVNTRVJUKG1fZ3JhcGgubV9mb3JtICE9IFNTQSk7CisKKyAgICAgICAgICAgIGlmIChtX2dyYXBo
LndpbGxDYXRjaEV4Y2VwdGlvbkluTWFjaGluZUZyYW1lKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byByZWxh
eCB0aGlzOgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTA4MjQKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0TG9jYWwgPSBudWxscHRyOwogICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsID0gbV9ub2RlLT5sb2NhbCgpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX25vZGVJbmRleDsgaS0tOykg
ewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2Jsb2NrLT5hdChpKTsKKwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsICYmIG5vZGUtPmxvY2FsKCkgPT0g
bG9jYWwpIHsKICAgICAgICAgICAgICAgICAgICAgc2V0TG9jYWwgPSBub2RlOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBp
ZiAoYWNjZXNzZXNPdmVybGFwKG1fZ3JhcGgsIG5vZGUsIEFic3RyYWN0SGVhcChTdGFjaywgbG9j
YWwpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKCFzZXRMb2NhbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNl
LmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
OCBAQCBzdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUCiAgICAgcmV0dXJu
IGZ0bFdoaXRlbGlzdDsKIH0KIAordXNpbmcgTmF0dXJhbExvb3AgPSBDUFNOYXR1cmFsTG9vcDsK
KwogY2xhc3MgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJs
aWM6CiAgICAgVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC04MSw4
ICs4Myw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvRlRM
KCkpCiAgICAgICAgICAgICBsZXZlbCA9IEZUTDo6Q2FuQ29tcGlsZTsKICAgICAgICAgCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIE5hdHVyYWxMb29wcyYg
bmF0dXJhbExvb3BzID0gKm1fZ3JhcGgubV9uYXR1cmFsTG9vcHM7CisgICAgICAgIG1fZ3JhcGgu
ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CisgICAgICAgIENQU05hdHVyYWxMb29wcyYgbmF0dXJh
bExvb3BzID0gKm1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHM7CiAgICAgICAgIEhhc2hNYXA8Y29u
c3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BUb0xvb3BIaW50ID0gYnVpbGRO
YXR1cmFsTG9vcFRvTG9vcEhpbnRNYXAobmF0dXJhbExvb3BzKTsKIAogICAgICAgICBIYXNoTWFw
PHVuc2lnbmVkLCBMb29wSGludERlc2NyaXB0b3I+IHRpZXJVcEhpZXJhcmNoeTsKQEAgLTE4Miw3
ICsxODQsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBI
YXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xv
b3BIaW50TWFwKGNvbnN0IE5hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQorICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRN
YXAoY29uc3QgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCiAgICAgewogICAgICAgICBI
YXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wc1RvTG9vcEhp
bnQ7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM0LDEwICsxMzQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWl0ZXItPnZhbHVlLm1fc3RydWN0dXJlICYmICFpdGVyLT52YWx1ZS5tX2FycmF5TW9kZUlz
VmFsaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAg
ICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBm
b3IgU2V0QXJndW1lbnRzIGF0IHRoZSBwcm9sb2d1ZS4KLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFibG9ja0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNo
b3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCBhbiBl
bnRyeXBvaW50LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9p
bnRzLmNvbnRhaW5zKGJsb2NrKSk7CiAKICAgICAgICAgICAgICAgICAgICAgTm9kZU9yaWdpbiBv
cmlnaW4gPSBub2RlLT5vcmlnaW47CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9yaWdpbi5leGl0T0spOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgTm9kZSogZ2V0TG9jYWwgPSBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIHZhcmlhYmxlLT5wcmVkaWN0aW9uKCksIEdl
dExvY2FsLCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlk
YXRlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4MywxMyBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIE5CLiBUaGlzIGNvZGUgaXMgbm90IHdyaXR0ZW4gZm9yIHBlcmZvcm1hbmNl
LCBzaW5jZSBpdCBpcyBub3QgaW50ZW5kZWQgdG8gcnVuCiAgICAgICAgIC8vIGluIHJlbGVhc2Ug
YnVpbGRzLgogCi0gICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgYWxsIGxvY2FsIHZhcmlhYmxlcyBh
dCB0aGUgaGVhZCBvZiB0aGUgcm9vdCBibG9jayBhcmUgZGVhZC4KLSAgICAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByb290LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQotICAgICAg
ICAgICAgVl9FUVVBTCgodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSksIHJvb3QpLCBzdGF0aWNf
Y2FzdDxOb2RlKj4oMCksIHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5sb2NhbChpKSk7CisgICAgICAg
IFZBTElEQVRFKChtX2dyYXBoLmJsb2NrKDApKSwgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmNvbnRh
aW5zKG1fZ3JhcGguYmxvY2soMCkpKTsKKworICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBs
b2NhbCB2YXJpYWJsZXMgYXQgdGhlIGhlYWQgb2YgYWxsIGVudHJ5cG9pbnRzIGFyZSBkZWFkLgor
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dHMpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52
YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKQorICAgICAgICAgICAgICAgIFZf
RVFVQUwoKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCBlbnRyeXBvaW50KSwgc3RhdGljX2Nh
c3Q8Tm9kZSo+KG51bGxwdHIpLCBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkp
OworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBWYWxpZGF0ZSByZWYgY291bnRzIGFu
ZCB1c2VzLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQs
OCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdp
blN0YWNrKCksCiAgICAgICAgICAgICB0b0NTdHJpbmcoIkdlbmVyYXRlZCBGVEwgSklUIGNvZGUg
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSwg
IiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25D
b3VudCgpLCAiOlxuIikpOwogICAgICAgICAKLSAgICAgICAgZ3JhcGguZW5zdXJlRG9taW5hdG9y
cygpOwotICAgICAgICBncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgZ3JhcGgu
ZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9v
cHMoKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbmFtZSA9ICJqc0JvZHkiOwogICAgICAg
ICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGgu
ZW5zdXJlU1NBRG9taW5hdG9ycygpOwogCiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25F
bmFibGVkKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJGdW5jdGlvbiByZWFkeSwgYmVnaW5uaW5n
IGxvd2VyaW5nLlxuIik7CkBAIC0yNjYsOCArMjY2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CiAgICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1l
bnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2so
MCkpLT52YWx1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBh
cmFtZXRlcnMoKTsgaS0tOykgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9h
cmd1bWVudHNbaV07CisgICAgICAgICAgICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAg
ICAgICAgICAgbV9vdXQuc2V0T3JpZ2luKG5vZGUpOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAg
IApAQCAtNDQzLDcgKzQ0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBERkc6OkJhc2ljQmxv
Y2sqIHRhcmdldCA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAo
IXRhcmdldCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CisgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9j
aywgdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFi
bGVkKCkpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkJsb2NrICIsICp0YXJnZXQsICIg
d2lsbCBiYWlsIGFsc28uXG4iKTsKICAgICAgICAgICAgICAgICB0YXJnZXQtPmNmYUhhc1Zpc2l0
ZWQgPSBmYWxzZTsKQEAgLTE0NDMzLDcgKzE0NDM0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICgh
bV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hpZ2hCbG9j
aykpCisgICAgICAgIGlmICghbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyh2YWx1
ZS5ibG9jaygpLCBtX2hpZ2hCbG9jaykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2
aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzk2LDYgKzc5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBp
bnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVp
bnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJ
VE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklE
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJh
dGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDYgKzQ2
MywxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0
dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpj
YWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEp
Cit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7
CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7CisgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0
aW9uKTsKK30KKwogI2lmIFVTRShKU1ZBTFVFNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIGludDMyX3QgYXJnMiwgaW50MzJfdCBhcmczKQogewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24g
MjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NTYsNiArODU2LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKEluc3RydWN0aW9uKiBjdXIKIAogICAgIHVuc2lnbmVkIHRocm93blZhbHVlID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJl
Z1QxLCByZWdUMCk7CisKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNhY2hpbmcgdGhl
IHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKKyAgICAvLyBhcmd1bWVudCB0
eXBlIHByb29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZlciwgZXRjCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTU5OAorCisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQ
Uik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVH
UFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIGlmIChzaG91bGRFbWl0UHJv
ZmlsaW5nKCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVy
ID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0
cnVjdGlvblszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyBy
ZWdzKHJlZ1QxLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUoJnByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjIwOTcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTU0LDYgKzU1NCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVj
dGlvbiogY3VyCiAKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMCwgRXhjZXB0aW9uOjp2YWx1ZU9m
ZnNldCgpKSwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNh
Y2hpbmcgdGhlIHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKKyAgICAvLyBh
cmd1bWVudCB0eXBlIHByb29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZlciwgZXRjCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTU5OAorCisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVP
ZmZzZXQpOworICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1
cm5WYWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0
dXJuVmFsdWVHUFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIGlmIChzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyByZWdzKHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvZmlsZS5tX29wZXJhbmQsIHJlZ3MpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZSgmcHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQg
SklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTE1LDYgKzE1MTUsMTkgQEAgU2xvd1BhdGhSZXR1cm5UeXBl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aQogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwogICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CiB9CisKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSogZXhlYywgdWludDMyX3QgYnl0ZWNvZGVJbmRleCkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKKworICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+cmVwbGFjZW1lbnQoKTsKKyAgICBpZiAob3B0aW1pemVkUmVwbGFj
ZW1lbnQtPmppdFR5cGUoKSAhPSBKSVRDb2RlOjpERkdKSVQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihERkc6OnByZXBhcmVDYXRjaE9T
UkVudHJ5KGV4ZWMsIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KSk7Cit9CisK
ICNlbmRpZgogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcnJheVZhbHVlLCBpbnQzMl90IGluZGV4
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOCw2ICsz
MTgsNyBAQCB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhCiB0eXBlZGVm
IGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGlu
dDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVy
YXRpb25fRVFaKShFeGVjU3RhdGUqLCBpbnQ2NF90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciog
KEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VEWikoRXhlY1N0YXRlKiwgZG91YmxlLCBp
bnQzMl90KTsKK3R5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VV
aSkoRXhlY1N0YXRlKiwgdWludDMyX3QpOwogdHlwZWRlZiBTbG93UGF0aFJldHVyblR5cGUgKEpJ
VF9PUEVSQVRJT04gKlNwcnRfSklUT3BlcmF0aW9uX0VDbGkpKEV4ZWNTdGF0ZSosIENhbGxMaW5r
SW5mbyopOwogdHlwZWRlZiBTdHJpbmdJbXBsKiAoSklUX09QRVJBVElPTiAqVF9KSVRPcGVyYXRp
b25fRUpzcykoRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIHR5cGVkZWYgSlNTdHJpbmcqIChKSVRf
T1BFUkFUSU9OICpKc3NfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKQEAg
LTM5OCw2ICszOTksNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGhyb3coRXhlY1N0
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhlY1N0YXRlKiwgaW50MzJfdCkg
V1RGX0lOVEVSTkFMOwogI2lmIEVOQUJMRShERkdfSklUKQogU2xvd1BhdGhSZXR1cm5UeXBlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoRXhlY1N0YXRlKiwgaW50MzJfdCkgV1RGX0lO
VEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2go
RXhlY1N0YXRlKiwgdWludDMyX3QpIFdURl9JTlRFUk5BTDsKICNlbmRpZgogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGlu
dDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRH
ZXR0ZXJCeUlkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJf
dCBvcHRpb25zLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MzgsNiArMTYzOCwxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbG9nX3NoYWRvCiAgICAgTExJTlRfRU5EKCk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4ocGNbM10udS5wb2ludGVyKTsKKyAgICBidWZmZXItPmZv
ckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgIHBy
b2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNo
ZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgIH0pOworCisgICAgTExJ
TlRfRU5EKCk7Cit9CisKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93
X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvRnJhbWUp
CiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdm0tPnRvcENhbGxGcmFtZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAyMjA5
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfaGEKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0
X2Zyb21fc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRf
dG9fc2NvcGUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jaGVja19p
Zl9leGNlcHRpb25faXNfdW5jYXRjaGFibGVfYW5kX25vdGlmeV9wcm9maWxlcik7CitMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWUp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9sb2dfc2hhZG93X2NoaWNr
ZW5fdGFpbCk7CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFj
a19vdmVyZmxvd19lcnJvcihWTSosIFByb3RvQ2FsbEZyYW1lKikgV1RGX0lOVEVSTkFMOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTk3LDcgKzE5OTcsMTAgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCiAKICAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMg
dG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0
MyBhYm92ZS4KLSAgICBkaXNwYXRjaCgzKQorCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKKworICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9j
YXRjaF9sZW5ndGgpCiAKIF9sbGludF9vcF9lbmQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xOTc0LDYg
KzE5NzQsOSBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgc3RvcmVxIHQzLCBbY2ZyLCB0MiwgOF0K
IAogICAgIHRyYWNlRXhlY3V0aW9uKCkKKworICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCisKICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2F0
Y2hfbGVuZ3RoKQogCiAKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBC
MUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBF
Q0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xl
Um9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RH
cmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBE
QURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAv
KiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYg
LyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5
NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgx
NkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2
RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0
MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNB
MkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQg
LyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNl
Y29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjA5
NzApCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3
dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2Fy
ZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIg
dG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0
aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFz
cyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUg
bm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2Rl
KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAg
ICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9u
b2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9u
b2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVy
Lm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5v
ZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3Qo
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAg
IH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4g
bV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBt
X25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBj
bGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3Nl
dC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29u
c3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwot
ICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hh
c1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0
LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9Owot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoK
LSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVt
cGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
Y2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAg
ICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAt
IDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5k
ZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFw
Kj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29u
c3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21h
cFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltd
KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAo
KmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
IHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7
Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9v
dEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdy
YXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1h
cDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJh
Y2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAg
ICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5h
bWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsK
ICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0Rv
bWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJl
dmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExp
c3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBo
LCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAg
ICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4
ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4o
bV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBt
X2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAg
ICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJv
dGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBk
byBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJz
IHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0
MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRp
ZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9m
KGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAg
ICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAg
ICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBm
b3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAg
ICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2
Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAg
dHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlw
ZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBp
dGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7
CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9j
a3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAg
cHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQg
Zm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBj
b25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3Rvcikg
Y29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJv
bTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xp
c3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9
IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5j
ZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1Npbmds
ZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgor
ICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBo
YXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4g
IiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5v
ZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUp
CisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQor
ICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVS
b290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUg
PT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9v
dDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9k
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0
aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1l
IEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9v
dCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVu
YW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7
CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgor
ICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChj
b25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAg
ICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0
dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29u
c3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1
cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5z
KGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAg
ICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlu
cyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnBy
aW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7Cisg
ICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAg
IGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNp
bmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3Jh
cGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQor
ICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikK
KyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3Qo
V1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkK
KyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAg
ICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7
IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYg
KCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21h
cFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGlu
ZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290
TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5v
ZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAg
fQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25v
ZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRl
IE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdy
YXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
aW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5n
IFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3Qg
PSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQor
ICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdy
YXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NF
UlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAg
ICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jv
b3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
bV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNv
bnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBM
aXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFz
c2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0Owor
ICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3Nv
cnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBO
b2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisK
KyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07
CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkp
IHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAg
IH0KKworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6
Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5v
ZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAg
ICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRl
eCAtIDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJp
bmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVh
bSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+
Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJp
bnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmlu
dChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJp
bmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAg
ICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsK
KyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAo
IW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQo
ZHVtcChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIp
OworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2Rl
IHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5w
cmludChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJc
biIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAg
Y29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3Ig
OiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVt
cChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0
ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBl
eHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBh
bGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3Ry
dWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMo
KQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwg
Y3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1
Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3Qg
OiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vz
c29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0
LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNz
b3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jv
b3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOwor
ICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1f
cm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6
OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318741</attachid>
            <date>2017-08-21 23:45:07 -0700</date>
            <delta_ts>2017-08-22 15:21:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>200111</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9jb25zdC1ub3Qtc3RyaWN0LW1vZGUuanMJKHJldmlz
aW9uIDIyMDk3MCkKKysrIEpTVGVzdHMvc3RyZXNzL2NvbnN0LW5vdC1zdHJpY3QtbW9kZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAgZnVuY3Rpb24gdHJ1dGgoKSB7CiB9CiBub0lu
bGluZSh0cnV0aCk7CiAKLWZ1bmN0aW9uIGFzc2VydChjb25kKSB7CitmdW5jdGlvbiBhc3NlcnQo
Y29uZCwgbT0iIikgewogICAgIGlmICghY29uZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
cm9rZSBhc3NlcnRpb24iKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJicm9rZSBhc3NlcnRp
b246ICIgKyBtKTsKIH0KIG5vSW5saW5lKGFzc2VydCk7CiAKQEAgLTEzMiw3ICsxMzIsOCBAQCBm
dW5jdGlvbiBiYXooKSB7CiAgICAgICAgIGFzc2VydCh5ID09PSA2MCk7CiAgICAgICAgIGlmICh0
cnV0aCgpKSB7CiAgICAgICAgICAgICBjb25zdCB5ID0gNTAsIHogPSA3MCwgeCA9IDQwOwotICAg
ICAgICAgICAgYXNzZXJ0KGV2YWwoZXZhbFN0cmluZykgPT09IDQwKTsKKyAgICAgICAgICAgIGxl
dCByID0gZXZhbChldmFsU3RyaW5nKTsKKyAgICAgICAgICAgIGFzc2VydChyID09PSA0MCwgcik7
CiAgICAgICAgICAgICBhc3NlcnQoeSA9PT0gNTAgJiYgeiA9PT0gNzApOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogSlNUZXN0cy9zdHJlc3Mvb3NyLWVudGVyLXRvLWNhdGNoLXdpdGgtc2V0LWxv
Y2FsLXR5cGUtY2hlY2stZmFpbHVyZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9v
c3ItZW50ZXItdG8tY2F0Y2gtd2l0aC1zZXQtbG9jYWwtdHlwZS1jaGVjay1mYWlsdXJlLmpzCShu
b25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL29zci1lbnRlci10by1jYXRjaC13aXRoLXNl
dC1sb2NhbC10eXBlLWNoZWNrLWZhaWx1cmUuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
OCBAQAorbGV0IGZsYWcgPSB0cnVlOworZnVuY3Rpb24gZm9vKCkgeworICAgIGlmIChmbGFnKQor
ICAgICAgICByZXR1cm4gMjA7CisgICAgcmV0dXJuIHt9OworfQorbm9JbmxpbmUoZm9vKTsKKwor
bGV0IHN0YXRlID0gMDsKK2Z1bmN0aW9uIGUoKSB7CisgICAgaWYgKCgrK3N0YXRlKSAlIDI1ID09
PSAwKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KK25vSW5saW5lKGUpOworCitmdW5j
dGlvbiBiYXooKSB7IH0KK25vSW5saW5lKGJheik7CisKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICBs
ZXQgeCA9IGZvbygpOworICAgIHRyeSB7CisgICAgICAgIGUoKTsKKyAgICAgICAgYmF6KCsreCk7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGJheigrK3gpOworICAgIH0gZmluYWxseSB7Cisg
ICAgICAgIGJheih4KTsKKyAgICB9Cit9Citub0lubGluZShiYXIpOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDIwMDA7ICsraSkgeworICAgIGJhcigpOworfQorCitmbGFnID0gZmFsc2U7Citmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICBiYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzkxLDcgKzM5MSw2IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgZGZnL0RGR1BoYXNlLmNwcAogICAgIGRm
Zy9ERkdQaGlDaGlsZHJlbi5jcHAKICAgICBkZmcvREZHUGxhbi5jcHAKLSAgICBkZmcvREZHUHJl
UG9zdE51bWJlcmluZy5jcHAKICAgICBkZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNw
cAogICAgIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZH
UHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw4ICsz
OTQsNiBAQAogCQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0JEMUI2
MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwICovOyB9OwogCQkwRjNDMUYx
QTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQzFGMTgxQjg2OEU3OTAwQUJC
MDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCAqLzsgfTsKIAkJMEYzQzFGMUIxQjg2OEU3
OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxOTFCODY4RTc5MDBBQkIwOEIgLyogREZH
Q2xvYmJlcnNFeGl0U3RhdGUuaCAqLzsgfTsKLQkJMEYzRTAxQUExOUQzNTNBNTAwRjYxQjdGIC8q
IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwICovOyB9OwotCQkwRjNFMDFBQjE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9z
dE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCAqLzsg
fTsKIAkJMEY0MEU0QTcxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzIxQzQ1RjM1QzAwNzI0
NTBCIC8qIEFpck9wY29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNDBFNEE4MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGVHZW5lcmF0
ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4
MzM0MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVHZW5lcmF0ZWQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQwRTRBOTFDNDk3Rjc0MDBB
NTc3RkEgLyogQWlyT3Bjb2RlVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNjE4MzM1MUM0NUYzQjYwMDcyNDUwQiAvKiBBaXJPcGNvZGVVdGls
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
OTkxLDggKzI5ODksNiBAQAogCQkwRjNCRDFCNjFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0
aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0luc2Vy
dGlvblNldC5jcHA7IHBhdGggPSBkZmcvREZHSW5zZXJ0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTgxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE5MUI4NjhFNzkwMEFCQjA4QiAv
KiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0UwMUE4MTlEMzUzQTUwMEY2MUI3
RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwOyBwYXRoID0gZGZnL0RGR1ByZVBvc3RO
dW1iZXJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNFMDFBOTE5RDM1
M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmg7IHBhdGggPSBkZmcvREZHUHJlUG9z
dE51bWJlcmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NTE0NjBD
QkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFGb3JtYXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MDEsOCArNzQ5Nyw2IEBACiAJCQkJMEZCRTBGNkUxNkMxREIw
MTAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oICovLAogCQkJCTBGRkZD
OTUxMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
Ki8sCiAJCQkJMEZGRkM5NTIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmggKi8sCi0JCQkJMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuY3BwICovLAotCQkJCTBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQ
cmVQb3N0TnVtYmVyaW5nLmggKi8sCiAJCQkJMEYyQjlDRTAxOUQwQkE3RDAwQjFEMUI1IC8qIERG
R1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCAqLywKIAkJCQkwRjJCOUNFMTE5RDBCQTdEMDBCMUQx
QjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCAqLywKIAkJCQkwRkZDOTIxNTFCOTRGQjNF
MDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggKi8sCkBAIC04NzExLDcgKzg3MDUsNiBA
QAogCQkJCURDMDAwMzkzMTlEOEJFNkYwMDAyM0VCMCAvKiBERkdQcmVjaXNlTG9jYWxDbG9iYmVy
aXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJFMEY3NTE2QzFEQjBCMDA4MkM1RTggLyogREZH
UHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZGQzk1RTE0
RUY5MEI3MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVy
aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNFRDE5RDBCQTdEMDBCMUQxQjUgLyogREZH
UHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkM5MjE2MUI5NEZC
M0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMTA1MDIsNyArMTA0OTUsNiBAQAogCQkJCUE3OEE5NzdBMTc5NzM4QjgwMDlERjc0NCAvKiBE
RkdQbGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjc0MTZDMURCMDkwMDgyQzVFOCAv
KiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZG
RkM5NUQxNEVGOTBCMzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCTBGM0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQ
b3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI5Q0VDMTlEMEJBN0QwMEIx
RDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkIxNzY2MjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGM0ExQkY5MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFz
ZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUzOCw4ICsxNTM4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIGNhc2Ugb3BfY2F0Y2g6IHsKICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICB2
b2lkKiBwb2ludGVyID0gZ2V0UG9pbnRlcigqKCsraXQpKTsKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2F0Y2giKTsKLSAgICAgICAgb3V0LnByaW50Zigi
JXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgp
KTsKKyAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcG9pbnRlcik7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIG9wX3Rocm93OiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMjA5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHVz
aF93aXRoX3Njb3BlIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZ2V0X3BhcmVudF9zY29wZSIsICJsZW5ndGgiIDogMyB9LAotICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2NhdGNoIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF90aHJvdyIsICJsZW5ndGgiIDogMiB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfdGhyb3dfc3RhdGljX2Vycm9yIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9kZWJ1ZyIsICJsZW5ndGgiIDogMyB9LApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIy
MDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxh
dGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIEluc3RydWN0aW9u
Pgogdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9w
Y29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCiB7Ci0gICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVCbG9jay0+
d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdp
c3RlcigpLmlzVmFsaWQoKSkKKyAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgKGNvZGVC
bG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpIHx8IGNvZGVCbG9jay0+dXNl
c0V2YWwoKSkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksOCBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNl
dCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOwogICAgIH07CiAKKyAgICBWZWN0b3I8dW5zaWdu
ZWQsIDQ+IGNhdGNoSW5kaWNlczsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVj
dGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
biogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTgwNSwxMCArODA3LDE2IEBA
IGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgICAgIG1f
bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAgPSBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjYXNlIG9wX2NhdGNo
OiB7CisgICAgICAgICAgICBjYXRjaEluZGljZXMuYXBwZW5kKGkpOworICAgICAgICAgICAgYnJl
YWs7IAorICAgICAgICB9CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKQEAgLTgzMCwxMCAr
ODM4LDQzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFMKIAogICAg
IGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRl
Y29kZSgpOworCisgICAgaWYgKGNhdGNoSW5kaWNlcy5zaXplKCkpIHsKKyAgICAgICAgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzJiBieXRlY29kZUxpdmVuZXNzID0gbGl2ZW5lc3NBbmFseXNpcygp
OworICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXI+PiBjYXRjaFByb2ZpbGVzOworICAgICAgICBmb3IgKHVuc2lnbmVkIGNhdGNoSW5kZXgg
OiBjYXRjaEluZGljZXMpIHsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9
IGJ5dGVjb2RlTGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChjYXRjaElu
ZGV4KTsKKyAgICAgICAgICAgIFZlY3RvcjxWaXJ0dWFsUmVnaXN0ZXI+IGxpdmVPcGVyYW5kczsK
KyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpdmVMb2Nh
bHMuYml0Q291bnQoKSk7CisgICAgICAgICAgICBsaXZlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZd
ICh1bnNpZ25lZCBsaXZlTG9jYWwpIHsKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBw
ZW5kKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxpdmVMb2NhbCkpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIC8vIFdlIGp1c3QgYXNzdW1lIHRoZXNlIGFyZSBsaXZlLiBXZSBjb3Vs
ZCBhbHNvIGp1c3QgY29tcHV0ZSB0aGUgbGl2ZS1vdXQKKyAgICAgICAgICAgIC8vIGluc3RlYWQg
b2YgbGl2ZS1pbiBvZiB0aGUgb3BfY2F0Y2guIE9PUFMgbWF5YmUgZG8gdGhpcz8KKyAgICAgICAg
ICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQoVmlydHVhbFJlZ2lzdGVyKG1faW5zdHJ1Y3Rpb25zW2Nh
dGNoSW5kZXggKyAxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBl
bmQoVmlydHVhbFJlZ2lzdGVyKG1faW5zdHJ1Y3Rpb25zW2NhdGNoSW5kZXggKyAyXS51Lm9wZXJh
bmQpKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzKCk7
ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNpemUo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxpdmVP
cGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBy
b2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZmZXIu
Z2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAgICAg
ICAgbV9pbnN0cnVjdGlvbnNbY2F0Y2hJbmRleCArIDNdLnUucG9pbnRlciA9IHByb2ZpbGVzLmdl
dCgpOworICAgICAgICAgICAgY2F0Y2hQcm9maWxlcy5hcHBlbmQoV1RGTW92ZShwcm9maWxlcykp
OworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzID0gV1RGTW92ZShj
YXRjaFByb2ZpbGVzKTsKKyAgICAgICAgfQorICAgIH0KICAgICAKICAgICBoZWFwKCktPm1fY29k
ZUJsb2Nrcy0+YWRkKHRoaXMpOwogICAgIGhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0
ZWQobV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSk7Ci0gICAgCisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjQ4Niw5ICsyNTI3LDEwIEBAIGNvbnN0IElkZW50
aWZpZXImIENvZGVCbG9jazo6aWRlbnRpZmllcigKIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQ
cmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMpCiB7
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIAorCiAgICAgbnVt
YmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBs
ZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVt
YmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHBy
b2ZpbGVzIGFyZSBmdWxsLgorCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVt
YmVyT2ZWYWx1ZVByb2ZpbGVzKCk7ICsraSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSBnZXRGcm9tQWxsVmFsdWVQcm9maWxlcyhpKTsKICAgICAgICAgdW5zaWduZWQgbnVtU2Ft
cGxlcyA9IHByb2ZpbGUtPnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CkBAIC0yNTAzLDYgKzI1NDUs
MTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQwogICAgICAgICAg
ICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgICAgIHByb2Zp
bGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgIH0KKworICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxl
QnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxv
Y2tlcik7CisgICAgICAgIH0pOworICAgIH0KICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxlcy5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGxv
Y2tlcik7CkBAIC0yNzcwLDYgKzI4MTgsMjQgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkK
ICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAgIH0KICAgICB9CisK
KyAgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faW5zdHJ1Y3Rpb25zLnNpemUo
KTsgKSB7CisgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChtX2luc3RydWN0aW9uc1tpXSk7CisgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUo
KS0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGkpKSB7CisgICAgICAgICAgICBpZiAob3Bjb2Rl
ID09IG9wX2NhdGNoIHx8IG9wY29kZSA9PSBvcF9lbnRlcikgeworICAgICAgICAgICAgICAgIC8v
IG9wX2NhdGNoL29wX2VudGVyIGxvZ2ljYWxseSByZXByZXNlbnQgYW4gZW50cnlwb2ludC4gRW50
cnlwb2ludHMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlCisgICAgICAgICAgICAgICAgLy8gaW5zaWRl
IG9mIGEgdHJ5IGJsb2NrIGJlY2F1c2UgdGhleSBhcmUgcmVzcG9uc2libGUgZm9yIGJvb3RzdHJh
cHBpbmcgc3RhdGUuIEFuZCB0aGV5CisgICAgICAgICAgICAgICAgLy8gYXJlIG5ldmVyIGFsbG93
ZWQgdGhyb3cgYW4gZXhjZXB0aW9uIGJlY2F1c2Ugb2YgdGhpcy4gV2UgcmVseSBvbiB0aGlzIHdo
ZW4gY29tcGlsaW5nCisgICAgICAgICAgICAgICAgLy8gaW4gdGhlIERGRy4gQmVjYXVzZSBhbiBl
bnRyeXBvaW50IG5ldmVyIHRocm93cywgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB3aWxsIG5ldmVy
CisgICAgICAgICAgICAgICAgLy8gYWxsb3cgb25jZSBpbnNpZGUgYSB0cnkgYmxvY2suCisgICAg
ICAgICAgICAgICAgYmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgICAgIGRh
dGFMb2coIiAgICBlbnRyeXBvaW50IG5vdCBhbGxvd2VkIGluc2lkZSBhIHRyeSBibG9jay4iKTsK
KyAgICAgICAgICAgICAgICBlbmRWYWxpZGF0aW9uRGlkRmFpbCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGkgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZSk7CisgICAgfQogfQog
CiB2b2lkIENvZGVCbG9jazo6YmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjA5NzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMDIsNiArMTAwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZDb3VudGVk
QXJyYXk8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlczsKICAgICBSZWZDb3Vu
dGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVz
OwogICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9m
aWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZT4gbV9hcnJh
eUFsbG9jYXRpb25Qcm9maWxlczsKICAgICBBcnJheVByb2ZpbGVWZWN0b3IgbV9hcnJheVByb2Zp
bGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2Zp
bGUuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsOCArMTc0LDggQEAgc3RydWN0
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldAogfTsKIAogc3RydWN0IFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKLSAg
ICBWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPigp
IHsgfQotICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVX
aXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KKyAgICBWYWx1ZVBy
b2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAg
ICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KQEAgLTIwMiw0ICsyMDIsMzggQEAgaW5saW5lIGludCBnZXRSYXJlQ2FzZVByb2Zp
bGVCeXRlY29kZU9mZgogICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQ7CiB9CiAKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kIHsKKyAgICBWYWx1ZVByb2Zp
bGUgbV9wcm9maWxlOworICAgIGludCBtX29wZXJhbmQ7Cit9OworCitzdHJ1Y3QgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlciB7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcih1
bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IFZhbHVlUHJvZmlsZSBoYXMgbW9yZSBzdHVmZiB0aGFuIHdlIG5lZWQuIFdlIGNvdWxk
IG9wdGltaXplIHRoZXNlIHZhbHVlIHByb2ZpbGVzCisgICAgICAgIC8vIHRvIGJlIG1vcmUgc3Bh
Y2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0gTWFsbG9jUHRyPFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9mKFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAg
ICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgICB2b2lkIGZvckVhY2goRnVuY3Rp
b24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1ZmZlci5nZXQoKVtpXSk7CisgICAg
fQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiAr
MTUzLDE5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgKICAgICAg
ICAgZW1pdFVucmVhY2hhYmxlKCk7CiAgICAgfQogCisgICAgZm9yIChhdXRvJiB0dXBsZSA6IG1f
Y2F0Y2hlc1RvRW1pdCkgeworICAgICAgICBSZWY8TGFiZWw+IHJlYWxDYXRjaFRhcmdldCA9IG5l
d0VtaXR0ZWRMYWJlbCgpOworICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHN0ZDo6Z2V0PDE+KHR1cGxlKSk7CisgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzdGQ6OmdldDwyPih0dXBsZSkpOworICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CisKKyAgICAgICAgVHJ5RGF0YSogZGF0YSA9IHN0ZDo6Z2V0PDA+KHR1
cGxlKTsKKyAgICAgICAgZW1pdEp1bXAoZGF0YS0+dGFyZ2V0LmdldCgpKTsKKworICAgICAgICBk
YXRhLT50YXJnZXQgPSBXVEZNb3ZlKHJlYWxDYXRjaFRhcmdldCk7CisgICAgfQorCiAgICAgbV9z
dGF0aWNQcm9wZXJ0eUFuYWx5emVyLmtpbGwoKTsKIAogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBt
X3RyeVJhbmdlcykgewpAQCAtNzEwLDcgKzcyMyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFs
dWUgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogdW51c2VkID0gbmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgIGVtaXRDYXRjaCh1bnVzZWQsIHRocm93blZhbHVlLmdldCgpKTsK
KyAgICAgICAgZW1pdENhdGNoKHVudXNlZCwgdGhyb3duVmFsdWUuZ2V0KCksIHRyeUZvcm1hbFBh
cmFtZXRlcnNEYXRhKTsKIAogICAgICAgICAvLyByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJl
amVjdCh0aHJvd25WYWx1ZSkKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdCA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBwcm9taXNlQ2FwYWJpbGl0eVJlZ2lzdGVyKCksIG1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOwpA
QCAtMzk2MywxMSArMzk3Niw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeShUcnlE
YXRhKiAKICAgICBtX3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLXZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdpc3RlcklEKiBleGNlcHRpb25SZWdpc3Rlciwg
UmVnaXN0ZXJJRCogdGhyb3duVmFsdWVSZWdpc3RlcikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDYXRjaChSZWdpc3RlcklEKiBleGNlcHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhy
b3duVmFsdWVSZWdpc3RlciwgVHJ5RGF0YSogZGF0YSkKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2Nh
dGNoKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRl
eCgpKTsKKyAgICBtX2NhdGNoZXNUb0VtaXQuYXBwZW5kKHsgZGF0YSwgZXhjZXB0aW9uUmVnaXN0
ZXItPmluZGV4KCksIHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkgfSk7CiB9CiAKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJ
bmRleCkKQEAgLTQyOTksNyArNDMxMCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRF
bnVtZXJhdGlvbigKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0
aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVu
dXNlZCA9IG5ld1RlbXBvcmFyeSgpOwogCi0gICAgICAgICAgICBlbWl0Q2F0Y2goY29tcGxldGlv
blZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgICAgIGVtaXRDYXRjaChjb21wbGV0
aW9uVmFsdWVSZWdpc3RlcigpLCB1bnVzZWQsIHRyeURhdGEpOwogICAgICAgICAgICAgZW1pdFNl
dENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBlOjpUaHJvdyk7CiAgICAgICAgICAgICBlbWl0
TW92ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGNvbXBsZXRpb25WYWx1ZVJlZ2lz
dGVyKCkpOwogICAgICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CkBA
IC00MzM5LDcgKzQzNTAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRp
b24oCiAgICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBv
cmFyeSgpOwogICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFy
eSgpOwotICAgICAgICAgICAgICAgIGVtaXRDYXRjaChleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwg
dW51c2VkKTsKKyAgICAgICAgICAgICAgICBlbWl0Q2F0Y2goZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0
KCksIHVudXNlZCwgcmV0dXJuQ2FsbFRyeURhdGEpOwogICAgICAgICAgICAgICAgIC8vIFNpbmNl
IHRoaXMgaXMgYSBzeW50aGVzaXplZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0
byBuZXZlciBuZWVkCiAgICAgICAgICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBm
cm9tIHRoZSBzY29wZSwgd2UgY2FuIHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQogICAgICAgICAg
ICAgICAgIC8vIHJlZ2lzdGVyIGhlcmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMjA5
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4Niw3ICs3ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgVHJ5RGF0YSogcHVzaFRyeShMYWJlbCYgc3RhcnQsIExhYmVsJiBoYW5kbGVyTGFi
ZWwsIEhhbmRsZXJUeXBlKTsKICAgICAgICAgLy8gRW5kIGEgdHJ5IGJsb2NrLiAnZW5kJyBtdXN0
IGhhdmUgYmVlbiBlbWl0dGVkLgogICAgICAgICB2b2lkIHBvcFRyeShUcnlEYXRhKiwgTGFiZWwm
IGVuZCk7Ci0gICAgICAgIHZvaWQgZW1pdENhdGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lz
dGVyLCBSZWdpc3RlcklEKiB0aHJvd25WYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0
Q2F0Y2goUmVnaXN0ZXJJRCogZXhjZXB0aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZh
bHVlUmVnaXN0ZXIsIFRyeURhdGEqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgQ3VycmVudExleGljYWxTY29wZUluZGV4ID0gLTI7CkBAIC0xMTg5LDYgKzExODks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsK
ICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lIH07CisKKyAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VHJ5RGF0
YSosIGludCwgaW50Pj4gbV9jYXRjaGVzVG9FbWl0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAz
LDYgKzM0MDMsOSBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAg
ICAgTGFiZWwmIHRyeUhhbmRsZXJMYWJlbCA9IG1fY2F0Y2hCbG9jayA/ICpjYXRjaExhYmVsIDog
KmZpbmFsbHlWaWFUaHJvd0xhYmVsOwogICAgIEhhbmRsZXJUeXBlIHRyeUhhbmRsZXJUeXBlID0g
bV9jYXRjaEJsb2NrID8gSGFuZGxlclR5cGU6OkNhdGNoIDogSGFuZGxlclR5cGU6OkZpbmFsbHk7
CiAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwu
Z2V0KCksIHRyeUhhbmRsZXJMYWJlbCwgdHJ5SGFuZGxlclR5cGUpOworICAgIFRyeURhdGEqIGZp
bmFsbHlUcnlEYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fY2F0Y2hCbG9jayAmJiBtX2ZpbmFs
bHlCbG9jaykKKyAgICAgICAgZmluYWxseVRyeURhdGEgPSB0cnlEYXRhOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgbV90cnlCbG9jayk7CiAKQEAgLTM0MTksMTQgKzM0MjIsMTMgQEAg
dm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKCpjYXRjaExhYmVsKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRo
cm93blZhbHVlUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIHVudXNlZCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYXRjaCh1bnVzZWQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhdGNoKHVudXNlZCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQo
KSwgdHJ5RGF0YSk7CiAgICAgICAgIGdlbmVyYXRvci5yZXN0b3JlU2NvcGVSZWdpc3RlcigpOwog
Ci0gICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBudWxscHRyOwogICAgICAgICBpZiAobV9maW5h
bGx5QmxvY2spIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYXRjaCBibG9jayB0aHJvd3MgYW4g
ZXhjZXB0aW9uIGFuZCB3ZSBoYXZlIGEgZmluYWxseSBibG9jaywgdGhlbiB0aGUgZmluYWxseQog
ICAgICAgICAgICAgLy8gYmxvY2sgc2hvdWxkICJjYXRjaCIgdGhhdCBleGNlcHRpb24uCi0gICAg
ICAgICAgICB0cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoKmNhdGNoTGFiZWwsICpmaW5hbGx5
VmlhVGhyb3dMYWJlbCwgSGFuZGxlclR5cGU6OkZpbmFsbHkpOworICAgICAgICAgICAgZmluYWxs
eVRyeURhdGEgPSBnZW5lcmF0b3IucHVzaFRyeSgqY2F0Y2hMYWJlbCwgKmZpbmFsbHlWaWFUaHJv
d0xhYmVsLCBIYW5kbGVyVHlwZTo6RmluYWxseSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9jYXRjaFBhdHRlcm4pIHsKQEAgLTM0NDcsNyArMzQ0OSw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXIKICAgICAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBl
OjpOb3JtYWwpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKCpmaW5hbGx5TGFiZWwp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeSh0cnlEYXRhLCAqZmluYWxseVZpYVRocm93
TGFiZWwpOworICAgICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeShmaW5hbGx5VHJ5RGF0YSwgKmZp
bmFsbHlWaWFUaHJvd0xhYmVsKTsKICAgICAgICAgfQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoKmNhdGNoRW5kTGFiZWwpOwpAQCAtMzQ2MCw3ICszNDYyLDcgQEAgdm9pZCBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmlu
YWxseSBibG9jayBmb3IgQ29tcGxldGlvblR5cGU6OlRocm93LgogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKCpmaW5hbGx5VmlhVGhyb3dMYWJlbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVu
dXNlZCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YXRjaChnZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIo
KSwgdW51c2VkLCBmaW5hbGx5VHJ5RGF0YSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0Q29t
cGxldGlvblR5cGUoQ29tcGxldGlvblR5cGU6OlRocm93KTsKIAogICAgICAgICAvLyBFbnRyeSB0
byB0aGUgZmluYWxseSBibG9jayBmb3IgQ29tcGxldGlvblR5cGVzIG90aGVyIHRoYW4gVGhyb3cu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOCw2ICsyMDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgz
OSw3ICsxODQwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgICAgICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICAgICAg
bV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc0NGRy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHJldmlzaW9uIDIyMDk3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKLWNsYXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxDRkc+IHsK
K2NsYXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNDRkcpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhY2t3YXJkc0NGRyhHcmFwaCYgZ3JhcGgpCi0gICAg
ICAgIDogQmFja3dhcmRzR3JhcGg8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogQmFja3dh
cmRzR3JhcGg8U1NBQ0ZHPihzZWxlY3RDRkc8U1NBQ0ZHPihncmFwaCkpCiAgICAgewogICAgIH0K
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJ
KHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFz
aWNCbG9jaygKICAgICA6IGJ5dGVjb2RlQmVnaW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4
KE5vQmxvY2spCiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBv
aW50KGZhbHNlKQogICAgICwgY2ZhSGFzVmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJl
dmlzaXQoZmFsc2UpCiAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjA5NzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtODIsMTcgKzgyLDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2lj
QmxvYwogICAgICAgICBzaXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewog
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5j
aDoKLSAgICAgICAgICAgIGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0g
ICAgICAgICAgICBjYXNlIFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2Fs
bDoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAg
ICAgICAgICAgIGlmIChub2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IE5vZGVBbmRJbmRleChub2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5k
IHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBh
ZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUg
YW55IGNoZWNrZWQgY2hpbGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlz
IGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNl
IFBoYW50b206CkBAIC0xODUsNiArMTc3LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3Vu
dGVkPEJhc2ljQmxvYwogICAgIEJsb2NrSW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09T
UlRhcmdldDsKKyAgICBib29sIGlzQ2F0Y2hFbnRyeXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlz
aXRlZDsKICAgICBib29sIGNmYVNob3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0
YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RI
ZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAj
aW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgog
I2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCkBAIC00MDEsMTQgKzQwMiwxNCBAQCBw
cml2YXRlOgogICAgICAgICAvLyBXZSBjYW4ndCBleGl0IGFueW1vcmUgYmVjYXVzZSBvdXIgT1NS
IGV4aXQgc3RhdGUgaGFzIGNoYW5nZWQuCiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7CiAKLSAg
ICAgICAgRGVsYXllZFNldExvY2FsIGRlbGF5ZWQoY3VycmVudENvZGVPcmlnaW4oKSwgb3BlcmFu
ZCwgdmFsdWUpOworICAgICAgICBEZWxheWVkU2V0TG9jYWwgZGVsYXllZChjdXJyZW50Q29kZU9y
aWdpbigpLCBvcGVyYW5kLCB2YWx1ZSwgc2V0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBpZiAo
c2V0TW9kZSA9PSBOb3JtYWxTZXQpIHsKICAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBl
bmQoZGVsYXllZCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICByZXR1cm4gZGVsYXllZC5leGVj
dXRlKHRoaXMsIHNldE1vZGUpOworICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMp
OwogICAgIH0KICAgICAKICAgICB2b2lkIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCkKQEAgLTY0Miw2
ICs2NDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tF
bnRyeS0+cmVtYXBPcGVyYW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkp
OwogICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lICYmIG1f
Z3JhcGgubmVlZHNGbHVzaGVkVGhpcygpKQogICAgICAgICAgICAgZmx1c2hEaXJlY3QodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMCkpOworCiAgICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2Nv
cGVSZWdpc3RlcigpKQogICAgICAgICAgICAgZmx1c2hEaXJlY3QobV9jb2RlQmxvY2stPnNjb3Bl
UmVnaXN0ZXIoKSk7CiAgICAgfQpAQCAtMTEzMSw3ICsxMTMzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkg
Ynl0ZWNvZGVCZWdpbiwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhh
dCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUg
Y2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxs
IGJlCiAgICAgICAgIC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMg
aXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tz
LCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTEy
MDAsMjEgKzEyMDIsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsK
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fb3BlcmFuZDsKICAgICAgICAgTm9kZSogbV92YWx1
ZTsKKyAgICAgICAgU2V0TW9kZSBtX3NldE1vZGU7CiAgICAgICAgIAogICAgICAgICBEZWxheWVk
U2V0TG9jYWwoKSB7IH0KLSAgICAgICAgRGVsYXllZFNldExvY2FsKGNvbnN0IENvZGVPcmlnaW4m
IG9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlKQorICAgICAgICBE
ZWxheWVkU2V0TG9jYWwoY29uc3QgQ29kZU9yaWdpbiYgb3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSkKICAgICAgICAgICAgIDogbV9v
cmlnaW4ob3JpZ2luKQogICAgICAgICAgICAgLCBtX29wZXJhbmQob3BlcmFuZCkKICAgICAgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTm9kZSogZXhlY3V0ZShCeXRlQ29kZVBhcnNl
ciogcGFyc2VyLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCisgICAgICAgIE5vZGUqIGV4
ZWN1dGUoQnl0ZUNvZGVQYXJzZXIqIHBhcnNlcikKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG1fb3BlcmFuZC5pc0FyZ3VtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+
c2V0QXJndW1lbnQobV9vcmlnaW4sIG1fb3BlcmFuZCwgbV92YWx1ZSwgc2V0TW9kZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gcGFyc2VyLT5zZXRMb2NhbChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3Zh
bHVlLCBzZXRNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VyLT5zZXRBcmd1bWVu
dChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3ZhbHVlLCBtX3NldE1vZGUpOworICAgICAgICAgICAg
cmV0dXJuIHBhcnNlci0+c2V0TG9jYWwobV9vcmlnaW4sIG1fb3BlcmFuZCwgbV92YWx1ZSwgbV9z
ZXRNb2RlKTsKICAgICAgICAgfQogICAgIH07CiAgICAgCkBAIC00MDc1LDcgKzQwNzksMTEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRy
YWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBw
YXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNp
dGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxp
bmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251
bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVj
dG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRz
KTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9u
J3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAg
Ly8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4OCw3ICs0
MDk2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJp
YWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRB
cmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0
QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNl
dEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC01MTU4LDEwICs1MTY2LDEyMyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBhZGRUb0dyYXBoKFVucmVhY2hhYmxlKTsKICAgICAg
ICAgICAgIExBU1RfT1BDT0RFKG9wX3Rocm93X3N0YXRpY19lcnJvcik7CiAKLSAgICAgICAgY2Fz
ZSBvcF9jYXRjaDoKKyAgICAgICAgY2FzZSBvcF9jYXRjaDogewogICAgICAgICAgICAgbV9ncmFw
aC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcg
aGVyZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIGRvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlw
b2ludC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5
NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwor
CisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9u
WzNdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJn
dW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3Bl
Y3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2ln
bmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0
aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQ
cmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQu
aXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0
YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRp
Y3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVu
YWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChv
cGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFBy
ZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2
YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
YXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlu
cyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChh
bGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBs
b2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhp
cyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mg
bm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4K
KyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRl
ZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPSB0cnVlOworICAgICAgICAgICAgbV9ncmFw
aC5tX2VudHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVyLCBOb2RlKj4+IGxvY2Fsc1RvU2V0OworICAg
ICAgICAgICAgbG9jYWxzVG9TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6
ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCByZXNlcnZlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxv
Y2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUgYnVmZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4K
KworICAgICAgICAgICAgLy8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdl
IHdvdWxkIG5vdCBwcm9wZXJseSByZWNvdmVyIHZhbHVlcy4KKyAgICAgICAgICAgIC8vIFdlIGZp
cnN0IG5lZWQgdG8gYm9vdHN0cmFwIHRoZSBjYXRjaCBlbnRyeXBvaW50IHN0YXRlLgorICAgICAg
ICAgICAgbV9leGl0T0sgPSBmYWxzZTsgCisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
TG9jYWxzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQu
aXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2Fscyks
IE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAgICAg
ICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50
LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgbG9j
YWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVlKSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0
Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICAvLyBXZSBjYW4gbm93IGV4aXQgYmVj
YXVzZSB3ZSd2ZSBzZXQgdXAgb3VyIE9TUiBleGl0IHN0YXRlIHRvIHJlY292ZXIgYW55IGxpdmUg
bG9jYWxzLgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoRXhpdE9LKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNldCB1
cCBvdXIgYXJndW1lbnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LiBUaGlzIGhhcHBlbnMg
aGVyZSBiZWNhdXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcyB1cAorICAgICAgICAgICAgICAg
IC8vIHRvIHRoaXMgcG9pbnQgaW4gdGhlIHByb2dyYW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0byBl
eGl0LgorICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7Cisg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAg
ICAgICAgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVu
dHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKyth
cmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFy
Z3VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50
UHJlZGljdGlvbnNbYXJndW1lbnRdKTsKKworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+
bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hl
Y2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5k
ZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBh
ZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gT09QUzogdGhpcyBpcyBzdXBlciB1Z2x5IQorICAgICAgICAgICAgICAgICAgICBz
ZXRBcmd1bWVudC0+b3JpZ2luLmZvckV4aXQuYnl0ZWNvZGVJbmRleCArPSBPUENPREVfTEVOR1RI
KG9wX2NhdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwgc2V0QXJndW1lbnQpOworICAg
ICAgICAgICAgICAgICAgICBlbnRyeXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3Vt
ZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9y
IChjb25zdCBzdGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVyLCBOb2RlKj4mIHBhaXIgOiBsb2NhbHNU
b1NldCkgeworICAgICAgICAgICAgICAgIERlbGF5ZWRTZXRMb2NhbCBkZWxheWVkIHsgY3VycmVu
dENvZGVPcmlnaW4oKSwgcGFpci5maXJzdCwgcGFpci5zZWNvbmQsIEltbWVkaWF0ZU5ha2VkU2V0
IH07CisgICAgICAgICAgICAgICAgbV9zZXRMb2NhbFF1ZXVlLmFwcGVuZChkZWxheWVkKTsKKyAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOwotICAgICAg
ICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgICAgICBo
YW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ2FsbCwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwog
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2N1cnJlbnRJbnN0cnVjdGlvbiA9PSBj
dXJyZW50SW5zdHJ1Y3Rpb24sICJoYW5kbGVDYWxsLCB3aGljaCBtYXkgaGF2ZSBpbmxpbmVkIHRo
ZSBjYWxsZWUsIHRyYXNoZWQgbV9jdXJyZW50SW5zdHJ1Y3Rpb24iKTsKQEAgLTYxNTYsOCArNjI3
NywxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5saW5rZWRCbG9ja3MuYXBwZW5kKFVubGlu
a2VkQmxvY2soYmxvY2sucHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9ibG9ja0xpbmtpbmdUYXJnZXRzLmFwcGVuZChibG9jay5wdHIoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJn
ZXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm51bUJsb2NrcygpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVuZChibG9jay5wdHIoKSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmRCbG9jayhX
VEZNb3ZlKGJsb2NrKSk7CiAgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUb1BhcnNlQmxvY2so
KTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjE0LDEwICs2MzM3LDEyIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwg
SW5saW5lQ2FsbEZyYW1lOjpDYWxsKTsKICAgICAKICAgICBwYXJzZUNvZGVCbG9jaygpOwotCiAg
ICAgbGlua0Jsb2NrcyhpbmxpbmVTdGFja0VudHJ5Lm1fdW5saW5rZWRCbG9ja3MsIGlubGluZVN0
YWNrRW50cnkubV9ibG9ja0xpbmtpbmdUYXJnZXRzKTsKKwogICAgIG1fZ3JhcGguZGV0ZXJtaW5l
UmVhY2hhYmlsaXR5KCk7CiAgICAgbV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKKwor
ICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4obV9ncmFwaCk7
CiAgICAgCiAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2Nr
cygpOyBibG9ja0luZGV4LS07KSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5ibG9jayhibG9ja0luZGV4KTsKQEAgLTYyMjgsNyArNjM1Myw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlKCkKICAgICAgICAgQVNTRVJUKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVt
YmVyT2ZMb2NhbHMoKSA9PSBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQubnVtYmVy
T2ZMb2NhbHMoKSk7CiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJl
ck9mQXJndW1lbnRzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mQXJndW1lbnRzKCkpOwogICAgIH0KLSAgICAKKwogICAgIG1fZ3JhcGgubV9sb2NhbFZhcnMg
PSBtX251bUxvY2FsczsKICAgICBtX2dyYXBoLm1fcGFyYW1ldGVyU2xvdHMgPSBtX3BhcmFtZXRl
clNsb3RzOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGQVBoYXNlLmNw
cAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmJ5dGVj
b2RlQmVnaW4gIT0gbV9ncmFwaC5tX3BsYW4ub3NyRW50cnlCeXRlY29kZUluZGV4KQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
ICAgIGlmIChtX3ZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgIEZvdW5k
IG11c3QtaGFuZGxlIGJsb2NrOiAiLCAqYmxvY2ssICJcbiIpOwogICAgICAgICAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZH
QmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVS
b290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00OCw3
ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsgcmV0
dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNvbnZlcnNp
b24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsKKyAgICB9CisKKyAgICBMaXN0
IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpCisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEJsb2NrTWFwPFQ+
KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBwcml2YXRlOgogICAgIEdyYXBoJiBtX2dy
YXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGljIFNpbmdsZVJvb3RHcmFwaDxDRkc+IHsK
K3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFNpbmdsZVJvb3RH
cmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5t
X2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsKKwordXNpbmcgU1NBQ0ZHID0gQ0ZHOwor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxlY3RD
RkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fY3BzQ0ZHKTsK
KyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZH
Pjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAg
IFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fc3Nh
Q0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
UFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0QXJn
dW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENvZGVC
bG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0ZWFk
IHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRzCiAg
ICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90aGVy
IHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAg
IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShp
LCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBt
X2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8Tm9kZSos
IDg+JiBhcmd1bWVudHMgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYXJndW1lbnRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52
YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgYXJndW1lbnRzW2ldKTsKKyAg
ICAgICAgfQogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTxPcGVyYW5kS2luZCBvcGVyYW5kS2lu
ZD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNT
RVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmlu
aXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
OworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAg
ICAgIG1fcHJlT3JkZXIgPSBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKTsKICAgICAgICAgCkBA
IC02OTAsNyArNjkwLDcgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAg
IE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWVbaV07Ci0gICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBt
X2Jsb2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21p
bmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBtX25v
ZGUtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC03NzksNyArNzc5LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBzdHJpY3QgZG9taW5hdGlvbiBiZWNhdXNlIHRo
aXMgd291bGQgb25seSBzZWUgdGhpbmdzIGluIG91ciBvd24gYmxvY2sgaWYKICAgICAgICAgICAg
IC8vIHRoZXkgY2FtZSAqYWZ0ZXIqIG91ciBwb3NpdGlvbiBpbiB0aGUgYmxvY2suIENsZWFybHks
IHdoaWxlIG91ciBibG9jayBkb21pbmF0ZXMKICAgICAgICAgICAgIC8vIGl0c2VsZiwgdGhlIHRo
aW5ncyBpbiB0aGUgYmxvY2sgYWZ0ZXIgdXMgZG9uJ3QgZG9taW5hdGUgdXMuCi0gICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPnN0cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Js
b2NrKSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5zdHJpY3Rs
eURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICBJdCBzdHJpY3RseSBkb21p
bmF0ZXMuXG4iKTsKICAgICAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
ZGF0YS5kaWRWaXNpdCk7CkBAIC04NTYsNyArODU2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIGNhbmRpZGF0ZSA9IHJlc3VsdC5pdGVyYXRvci0+dmFs
dWVbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMt
PmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRl
LT5vd25lciwgbV9ibG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cmVwbGFjZVdp
dGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC5zZXROb2Rl
KGNhbmRpZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNiBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIEFTU0VSVCghbm9kZS0+b3Jp
Z2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgIHJlYWQoQWJzdHJhY3RIZWFw
KFN0YWNrLCBncmFwaC5tX2NvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKSk7CiAgICAgfQotICAg
ICAgICAKICAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3Rh
bnQ6CkBAIC0xNDEsNiArMTQwLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZQogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgRXh0
cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNp
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXMuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb250cm9sRXF1aXZhbGVu
Y2VBbmFseXNpcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVu
c3VyZURvbWluYXRvcnMoKSkKKyAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGguZW5zdXJlU1NB
RG9taW5hdG9ycygpKQogICAgICAgICAsIG1fYmFja3dhcmRzRG9taW5hdG9ycyhncmFwaC5lbnN1
cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkpCiAgICAgewogICAgIH0KQEAgLTc1LDcgKzc1LDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7
CisgICAgU1NBRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOwogICAgIEJhY2t3YXJkc0RvbWluYXRv
cnMmIG1fYmFja3dhcmRzRG9taW5hdG9yczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyAr
NTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBo
LmJsb2Nrc0luUHJlT3JkZXIoKSkKICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2spOwogICAg
ICAgICAKLSAgICAgICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CisgICAg
ICAgIGZvciAoYXV0byYgYXJndW1lbnRzVmVjdG9yIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy52YWx1ZXMoKSkKKyAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKGFyZ3VtZW50c1Zl
Y3Rvcik7CiAKICAgICAgICAgLy8gSnVzdCBkbyBhIGJhc2ljIFBoYW50b20vQ2hlY2sgY2xlYW4t
dXAuCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9j
a3MoKTsgYmxvY2tJbmRleC0tOykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4
ICs5NSw4IEBAIFZlY3RvcjxEaXNhc3NlbWJsZXI6OkR1bXBlZE9wPiBEaXNhc3NlbWIKICAgICBk
dW1wSGVhZGVyKG91dCwgbGlua0J1ZmZlcik7CiAgICAgYXBwZW5kKHJlc3VsdCwgb3V0LCBwcmV2
aW91c09yaWdpbik7CiAgICAgCi0gICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAg
bV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWlu
YXRvcnMoKTsKKyAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgIAogICAg
IGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICBjb25zdCBjaGFyKiBkaXNhc3NlbWJs
eVByZWZpeCA9ICIgICAgICAgICI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBMb2FkRnJvbUpTTWFwQnVj
a2V0OgogICAgIGNhc2UgSXNOb25FbXB0eU1hcEJ1Y2tldDoKICAgICBjYXNlIFVucmVhY2hhYmxl
OgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBB
dFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9taW5hdG9ycy5o
CShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWlu
YXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwxNiArMzUsMzIgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1jbGFzcyBEb21pbmF0b3JzIDogcHVibGlj
IFdURjo6RG9taW5hdG9yczxDRkc+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgorY2xh
c3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZHS2luZD4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERvbWluYXRvcnMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdU
Rjo6RG9taW5hdG9yczxDRkc+KCpncmFwaC5tX2NmZykKKyAgICAgICAgOiBXVEY6OkRvbWluYXRv
cnM8Q0ZHS2luZD4oc2VsZWN0Q0ZHPENGR0tpbmQ+KGdyYXBoKSkKICAgICB7CiAgICAgfQogfTsK
IAordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU0Rv
bWluYXRvcnMgPSBEb21pbmF0b3JzPENQU0NGRz47CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBDUFNDRkc+
Ojp2YWx1ZT46OnR5cGU+CitDUFNEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdy
YXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gZ3JhcGguZW5zdXJlQ1BTRG9taW5hdG9ycygpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBRG9taW5hdG9y
cyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdy
YXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDExICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICAg
ICAgLCBtX3Jlc3VsdCh0cnVlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9ybSA9
PSBTU0EpOwogICAgIH0KICAgICAKICAgICB2b2lkIG9wZXJhdG9yKCkoTm9kZSosIEVkZ2UgZWRn
ZSkKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9ncmFwaC5tX2RvbWluYXRvcnMtPmRv
bWluYXRlcyhlZGdlLm5vZGUoKS0+b3duZXIsIG1fYmxvY2spOworICAgICAgICBib29sIHJlc3Vs
dCA9IG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVy
LCBtX2Jsb2NrKTsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgIGRhdGFMb2co
CiAgICAgICAgICAgICAgICAgIkNoZWNraW5nIGlmICIsIGVkZ2UsICIgaW4gIiwgKmVkZ2Uubm9k
ZSgpLT5vd25lciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5OSw2ICsxOTk5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBDaGVja1RyYXBzOgogICAgICAgICBjYXNlIFVucmVhY2hhYmxl
OgogICAgICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgogICAgICAgICBjYXNlIE1vdkhp
bnQ6CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKQEAgLTMxOTQsNiArMzE5NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEZvckNoZWNrcyAhPSBVSU5UX01BWCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aXNOdW1iZXJDb25zdGFudCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNw
ZWNCeXRlY29kZURvdWJsZSwgRG91YmxlQ29uc3RhbnQsIG9yaWdpbkZvckNoZWNrcywKQEAgLTMy
MjQsNiArMzIyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRn
ZS0+aGFzSW50NTJSZXN1bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4Rm9yQ2hl
Y2tzICE9IFVJTlRfTUFYKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5pc0Fu
eUludENvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEZvckNoZWNrcywgU3BlY0FueUludCwgSW50NTJDb25zdGFudCwgb3JpZ2luRm9yQ2hl
Y2tzLApAQCAtMzI1MCw2ICszMjUzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkgJiYgIWVkZ2UtPmhhc0ludDUyUmVzdWx0
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEZvckNoZWNrcyAhPSBVSU5UX01BWCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aGFzRG91YmxlUmVzdWx0KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNrcywg
U3BlY0J5dGVjb2RlRG91YmxlLCBWYWx1ZVJlcCwgb3JpZ2luRm9yQ2hlY2tzLApAQCAtMzI5MSw2
ICszMjk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGluZGV4Rm9yQ2hlY2tzICE9IFVJTlRfTUFYKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kZXhGb3JDaGVja3MsIFNwZWNOb25lLCBDaGVjaywgb3JpZ2luRm9yQ2hlY2tzLCBlZGdlKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkocmV2
aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1h
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAotZW51bSBGbHVzaEZvcm1hdCB7CitlbnVtIEZsdXNoRm9ybWF0IDog
dWludDhfdCB7CiAgICAgRGVhZEZsdXNoLAogICAgIEZsdXNoZWRJbnQzMiwKICAgICBGbHVzaGVk
SW50NTIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNp
b24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAj
aW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2luY2x1ZGUgIkRGR05hdHVyYWxMb29wcy5oIgotI2lu
Y2x1ZGUgIkRGR1ByZVBvc3ROdW1iZXJpbmcuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vz
c0RhdGFEdW1wLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkV4ZWN1dGFibGVEdW1wLmgiCkBAIC03Myw3ICs3Miw3IEBAIEdyYXBoOjpHcmFw
aChWTSYgdm0sIFBsYW4mIHBsYW4pCiAgICAgLCBtX3BsYW4ocGxhbikKICAgICAsIG1fY29kZUJs
b2NrKG1fcGxhbi5jb2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2sobV9jb2RlQmxvY2st
PmFsdGVybmF0aXZlKCkpCi0gICAgLCBtX2NmZyhzdGQ6Om1ha2VfdW5pcXVlPENGRz4oKnRoaXMp
KQorICAgICwgbV9zc2FDRkcoc3RkOjptYWtlX3VuaXF1ZTxTU0FDRkc+KCp0aGlzKSkKICAgICAs
IG1fbmV4dE1hY2hpbmVMb2NhbCgwKQogICAgICwgbV9maXhwb2ludFN0YXRlKEJlZm9yZUZpeHBv
aW50KQogICAgICwgbV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZShIYXZlTm90U3RhcnRlZFJl
Z2lzdGVyaW5nKQpAQCAtNDA5LDkgKzQwOCwxMyBAQCBib29sIEdyYXBoOjp0ZXJtaW5hbHNBcmVW
YWxpZCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBCYXNpY0Jsb2NrKiB1bmJveExv
b3BOb2RlKGNvbnN0IENQU0NGRzo6Tm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5ub2RlKCk7IH0K
K3N0YXRpYyBCYXNpY0Jsb2NrKiB1bmJveExvb3BOb2RlKEJhc2ljQmxvY2sqIGJsb2NrKSB7IHJl
dHVybiBibG9jazsgfQorCiB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgY2hhciogcHJlZml4LCBCYXNpY0Jsb2NrKiBibG9jaywgUGhpTm9kZUR1bXBN
b2RlIHBoaU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgb3V0LnBy
aW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5hdCgw
KS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwgYmxvY2stPmlzUmVhY2hhYmxlID8g
IiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6
ICIiLCAiXG4iKTsKKyAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgi
LCBpbkNvbnRleHQoYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToi
LAorICAgICAgICBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2st
PmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDogIiIsIGJsb2NrLT5pc0NhdGNoRW50cnlw
b2ludCA/ICIgKENhdGNoIEVudHJ5cG9pbnQpIiA6ICIiLCAiXG4iKTsKICAgICBpZiAoYmxvY2st
PmV4ZWN1dGlvbkNvdW50ID09IGJsb2NrLT5leGVjdXRpb25Db3VudCkKICAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgRXhlY3V0aW9uIGNvdW50OiAiLCBibG9jay0+ZXhlY3V0aW9uQ291bnQs
ICJcbiIpOwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoiKTsKQEAgLTQy
MiwxOCArNDI1LDI2IEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYK
ICAgICBpZiAoYmxvY2stPnRlcm1pbmFsKCkpIHsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQo
IiAiLCAqc3VjY2Vzc29yKTsKLSAgICAgICAgICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0g
ICAgICAgICAgICAgICAgb3V0LnByaW50KCIgKCIsIG1fcHJlUG9zdE51bWJlcmluZy0+ZWRnZUtp
bmQoYmxvY2ssIHN1Y2Nlc3NvciksICIpIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAg
ICAgb3V0LnByaW50KCIgPGludmFsaWQ+Iik7CiAgICAgb3V0LnByaW50KCJcbiIpOwotICAgIGlm
IChtX2RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewotICAgICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIG1fZG9taW5hdG9ycy0+ZG9taW5hdG9yc09m
KGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczog
IiwgbV9kb21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwotICAgICAg
ICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9y
cy0+ZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQo
cHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIG1fZG9taW5hdG9ycy0+
aXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKEJsb2NrTGlzdCgxLCBibG9jaykpLCAiXG4iKTsK
KworICAgIGF1dG8gcHJpbnREb21pbmF0b3JzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7Cisg
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgZG9taW5hdG9ycy5k
b21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAg
RG9taW5hdGVzOiAiLCBkb21pbmF0b3JzLmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7
CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjogIiwgZG9t
aW5hdG9ycy5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7CisgICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwKKyAgICAgICAg
ICAgIGRvbWluYXRvcnMuaXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKHR5cGVuYW1lIHN0ZDo6
cmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShkb21pbmF0b3JzKT46OnR5cGU6Okxpc3QgeyBibG9j
ayB9KSwgIlxuIik7CisgICAgfTsKKworICAgIGlmICh0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7Cisg
ICAgICAgIGlmIChtX3NzYURvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWluYXRvcnMo
Km1fc3NhRG9taW5hdG9ycyk7CisgICAgICAgIGVsc2UgaWYgKG1fY3BzRG9taW5hdG9ycykKKyAg
ICAgICAgICAgIHByaW50RG9taW5hdG9ycygqbV9jcHNEb21pbmF0b3JzKTsKICAgICB9CisKICAg
ICBpZiAobV9iYWNrd2FyZHNEb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlcyBieTogIiwgbV9i
YWNrd2FyZHNEb21pbmF0b3JzLT5kb21pbmF0b3JzT2YoYmxvY2spLCAiXG4iKTsKICAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgQmFja3dhcmRzIGRvbWluYXRlczogIiwgbV9iYWNrd2FyZHNE
b21pbmF0b3JzLT5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOwpAQCAtNDQ2LDI5ICs0
NTcsMzMgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJgogICAgICAg
ICB9CiAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICB9Ci0gICAgaWYgKG1fcHJlUG9zdE51
bWJlcmluZykKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlL1Bvc3QgTnVtYmVyaW5n
OiAiLCBtX3ByZVBvc3ROdW1iZXJpbmctPnByZU51bWJlcihibG9jayksICIvIiwgbV9wcmVQb3N0
TnVtYmVyaW5nLT5wb3N0TnVtYmVyKGJsb2NrKSwgIlxuIik7Ci0gICAgaWYgKG1fbmF0dXJhbExv
b3BzKSB7Ci0gICAgICAgIGlmIChjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fbmF0dXJhbExv
b3BzLT5oZWFkZXJPZihibG9jaykpIHsKKworICAgIGF1dG8gcHJpbnROYXR1cmFsTG9vcHMgPSBb
Jl0gKGF1dG8mIG5hdHVyYWxMb29wcykgeworICAgICAgICBpZiAoY29uc3QgYXV0byogbG9vcCA9
IG5hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQo
cHJlZml4LCAiICBMb29wIGhlYWRlciwgY29udGFpbnM6Iik7CiAgICAgICAgICAgICBWZWN0b3I8
QmxvY2tJbmRleD4gc29ydGVkQmxvY2tMaXN0OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxvb3AtPnNpemUoKTsgKytpKQotICAgICAgICAgICAgICAgIHNvcnRlZEJsb2Nr
TGlzdC5hcHBlbmQobG9vcC0+YXQoaSktPmluZGV4KTsKKyAgICAgICAgICAgICAgICBzb3J0ZWRC
bG9ja0xpc3QuYXBwZW5kKHVuYm94TG9vcE5vZGUobG9vcC0+YXQoaSkpLT5pbmRleCk7CiAgICAg
ICAgICAgICBzdGQ6OnNvcnQoc29ydGVkQmxvY2tMaXN0LmJlZ2luKCksIHNvcnRlZEJsb2NrTGlz
dC5lbmQoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc29ydGVkQmxv
Y2tMaXN0LnNpemUoKTsgKytpKQogICAgICAgICAgICAgICAgIG91dC5wcmludCgiICMiLCBzb3J0
ZWRCbG9ja0xpc3RbaV0pOwogICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3AqPiBjb250YWluaW5n
TG9vcHMgPQotICAgICAgICAgICAgbV9uYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOworICAg
ICAgICBhdXRvIGNvbnRhaW5pbmdMb29wcyA9IG5hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7
CiAgICAgICAgIGlmICghY29udGFpbmluZ0xvb3BzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgQ29udGFpbmluZyBsb29wIGhlYWRlcnM6Iik7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29udGFpbmluZ0xvb3BzLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIsICpjb250YWluaW5nTG9vcHNbaV0tPmhl
YWRlcigpKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqdW5ib3hMb29wTm9kZShj
b250YWluaW5nTG9vcHNbaV0tPmhlYWRlcigpKSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxu
Iik7CiAgICAgICAgIH0KLSAgICB9CisgICAgfTsKKworICAgIGlmIChtX3NzYU5hdHVyYWxMb29w
cykKKyAgICAgICAgcHJpbnROYXR1cmFsTG9vcHMobV9zc2FOYXR1cmFsTG9vcHMpOworICAgIGVs
c2UgaWYgKG1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29wcyhtX2Nw
c05hdHVyYWxMb29wcyk7CisKICAgICBpZiAoIWJsb2NrLT5waGlzLmlzRW1wdHkoKSkgewogICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQaGkgTm9kZXM6Iik7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYmxvY2stPnBoaXMuc2l6ZSgpOyArK2kpIHsKQEAgLTUwMiw4ICs1MTcs
MTAgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBEdW1wQwogICAgIG91dC5w
cmludCgiICBGaXhwb2ludCBzdGF0ZTogIiwgbV9maXhwb2ludFN0YXRlLCAiOyBGb3JtOiAiLCBt
X2Zvcm0sICI7IFVuaWZpY2F0aW9uIHN0YXRlOiAiLCBtX3VuaWZpY2F0aW9uU3RhdGUsICI7IFJl
ZiBjb3VudCBzdGF0ZTogIiwgbV9yZWZDb3VudFN0YXRlLCAiXG4iKTsKICAgICBpZiAobV9mb3Jt
ID09IFNTQSkKICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50IGZvcm1hdHM6ICIsIGxpc3RE
dW1wKG1fYXJndW1lbnRGb3JtYXRzKSwgIlxuIik7Ci0gICAgZWxzZQotICAgICAgICBvdXQucHJp
bnQoIiAgQXJndW1lbnRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50cyksICJcbiIpOworICAgIGVs
c2UgeworICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1fZW50cnlwb2ludFRvQXJndW1lbnRzKQor
ICAgICAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50cyBmb3IgYmxvY2sjIiwgcGFpci5rZXkt
PmluZGV4LCAiOiAiLCBsaXN0RHVtcChwYWlyLnZhbHVlKSwgIlxuIik7CisgICAgfQogICAgIG91
dC5wcmludCgiXG4iKTsKICAgICAKICAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CkBAIC02
NDAsOCArNjU3LDEwIEBAIHZvaWQgR3JhcGg6OmhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWMK
IHZvaWQgR3JhcGg6OmRldGVybWluZVJlYWNoYWJpbGl0eSgpCiB7CiAgICAgVmVjdG9yPEJhc2lj
QmxvY2sqLCAxNj4gd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKDApKTsKLSAg
ICBibG9jaygwKS0+aXNSZWFjaGFibGUgPSB0cnVlOworICAgIGZvciAoQmFzaWNCbG9jayogZW50
cnlwb2ludCA6IG1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgZW50cnlwb2ludC0+aXNSZWFjaGFi
bGUgPSB0cnVlOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQoZW50cnlwb2ludCk7CisgICAgfQog
ICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJs
b2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxv
Y2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKQEAgLTc5OCw5ICs4MTcsMTAgQEAgdm9pZCBHcmFw
aDo6a2lsbFVucmVhY2hhYmxlQmxvY2tzKCkKIAogdm9pZCBHcmFwaDo6aW52YWxpZGF0ZUNGRygp
CiB7Ci0gICAgbV9kb21pbmF0b3JzID0gbnVsbHB0cjsKLSAgICBtX25hdHVyYWxMb29wcyA9IG51
bGxwdHI7Ci0gICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gbnVsbHB0cjsKKyAgICBtX2Nwc0RvbWlu
YXRvcnMgPSBudWxscHRyOworICAgIG1fc3NhRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9j
cHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fc3NhTmF0dXJhbExvb3BzID0gbnVsbHB0
cjsKICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gbnVsbHB0cjsKICAgICBtX2Jh
Y2t3YXJkc0RvbWluYXRvcnMgPSBudWxscHRyOwogICAgIG1fYmFja3dhcmRzQ0ZHID0gbnVsbHB0
cjsKQEAgLTg1MCwxMiArODcwLDM3IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5QcmVPcmRl
cigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBCbG9ja1dvcmtsaXN0IHdvcmtsaXN0
OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50
cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmtsaXN0LnB1c2goZW50cnlwb2lu
dCk7CiAgICAgd2hpbGUgKEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QucG9wKCkpIHsKICAg
ICAgICAgcmVzdWx0LmFwcGVuZChibG9jayk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJs
b2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCiAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKGJs
b2NrLT5zdWNjZXNzb3IoaSkpOwogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgp
KSB7CisgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcHJlIG9yZGVyLCB3ZSBzaG91bGQg
c2VlIGRvbWluYXRvcnMKKyAgICAgICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgor
ICAgICAgICBhdXRvIHZhbGlkYXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAg
ICAgICAgaWYgKCFhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAg
ICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAg
ICAgICAgIGlmICghYiB8fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA8IGopOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3Jt
ID09IFNTQSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1
bHRzKGVuc3VyZVNTQURvbWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZh
bGlkYXRlUmVzdWx0cyhlbnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC04NjMsNyArOTA4LDggQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJ
blBvc3RPcmRlcigpCiB7CiAgICAgQmxvY2tMaXN0IHJlc3VsdDsKICAgICBQb3N0T3JkZXJCbG9j
a1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goYmxvY2soMCkpOworICAgIGZv
ciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZW50cnlwb2ludHMpCisgICAgICAgIHdvcmts
aXN0LnB1c2goZW50cnlwb2ludCk7CiAgICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3
b3JrbGlzdC5wb3AoKSkgewogICAgICAgICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKICAgICAgICAg
Y2FzZSBWaXNpdE9yZGVyOjpQcmU6CkBAIC04NzYsNiArOTIyLDMxIEBAIEJsb2NrTGlzdCBHcmFw
aDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICBhdXRvIHZhbGlk
YXRlUmVzdWx0cyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICAgICAgLy8gV2hl
biBpdGVyYXRpbmcgb3ZlciByZXZlcnNlIHBvc3Qgb3JkZXIsIHdlIHNob3VsZCBzZWUgZG9taW5h
dG9ycworICAgICAgICAgICAgLy8gYmVmb3JlIHRoaW5ncyB0aGV5IGRvbWluYXRlLgorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGEgPSByZXN1bHRbaV07CisgICAgICAgICAgICAgICAg
aWYgKCFhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LnNpemUoKTsgKytqKSB7CisgICAgICAgICAg
ICAgICAgICAgIEJhc2ljQmxvY2sqIGIgPSByZXN1bHRbal07CisgICAgICAgICAgICAgICAgICAg
IGlmICghYiB8fCBhID09IGIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRvcnMuZG9taW5hdGVzKGEsIGIpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaSA+IGopOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpZiAobV9mb3JtID09IFNT
QSB8fCBtX2lzSW5TU0FDb252ZXJzaW9uKQorICAgICAgICAgICAgdmFsaWRhdGVSZXN1bHRzKGVu
c3VyZVNTQURvbWluYXRvcnMoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbGlkYXRl
UmVzdWx0cyhlbnN1cmVDUFNEb21pbmF0b3JzKCkpOworICAgIH0KKwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTE0NzIsMzAgKzE1NDMsNDQgQEAgdm9pZCBHcmFwaDo6bG9nQXNzZXJ0aW9u
RmFpbHVyZSgKICAgICBsb2dERkdBc3NlcnRpb25GYWlsdXJlKCp0aGlzLCB0b0NTdHJpbmcoIldo
aWxlIGhhbmRsaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuXG4iKSwgZmlsZSwg
bGluZSwgZnVuY3Rpb24sIGFzc2VydGlvbik7CiB9CiAKLURvbWluYXRvcnMmIEdyYXBoOjplbnN1
cmVEb21pbmF0b3JzKCkKK0NQU0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVDUFNEb21pbmF0b3Jz
KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252
ZXJzaW9uKTsKKyAgICBpZiAoIW1fY3BzRG9taW5hdG9ycykKKyAgICAgICAgbV9jcHNEb21pbmF0
b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNEb21pbmF0b3JzPigqdGhpcyk7CisgICAgcmV0dXJu
ICptX2Nwc0RvbWluYXRvcnM7Cit9CisKK1NTQURvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVTU0FE
b21pbmF0b3JzKCkKIHsKLSAgICBpZiAoIW1fZG9taW5hdG9ycykKLSAgICAgICAgbV9kb21pbmF0
b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxEb21pbmF0b3JzPigqdGhpcyk7Ci0gICAgcmV0dXJuICpt
X2RvbWluYXRvcnM7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSB8fCBtX2lzSW5T
U0FDb252ZXJzaW9uKTsKKyAgICBpZiAoIW1fc3NhRG9taW5hdG9ycykKKyAgICAgICAgbV9zc2FE
b21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FEb21pbmF0b3JzPigqdGhpcyk7CisgICAg
cmV0dXJuICptX3NzYURvbWluYXRvcnM7CiB9CiAKLVByZVBvc3ROdW1iZXJpbmcmIEdyYXBoOjpl
bnN1cmVQcmVQb3N0TnVtYmVyaW5nKCkKK0NQU05hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZUNQ
U05hdHVyYWxMb29wcygpCiB7Ci0gICAgaWYgKCFtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAg
IG1fcHJlUG9zdE51bWJlcmluZyA9IHN0ZDo6bWFrZV91bmlxdWU8UHJlUG9zdE51bWJlcmluZz4o
KnRoaXMpOwotICAgIHJldHVybiAqbV9wcmVQb3N0TnVtYmVyaW5nOworICAgIFJFTEVBU0VfQVNT
RVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGVuc3VyZUNQ
U0RvbWluYXRvcnMoKTsKKyAgICBpZiAoIW1fY3BzTmF0dXJhbExvb3BzKQorICAgICAgICBtX2Nw
c05hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTTmF0dXJhbExvb3BzPigqdGhpcyk7
CisgICAgcmV0dXJuICptX2Nwc05hdHVyYWxMb29wczsKIH0KIAotTmF0dXJhbExvb3BzJiBHcmFw
aDo6ZW5zdXJlTmF0dXJhbExvb3BzKCkKK1NTQU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZVNT
QU5hdHVyYWxMb29wcygpCiB7Ci0gICAgZW5zdXJlRG9taW5hdG9ycygpOwotICAgIGlmICghbV9u
YXR1cmFsTG9vcHMpCi0gICAgICAgIG1fbmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxO
YXR1cmFsTG9vcHM+KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fbmF0dXJhbExvb3BzOworICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOworICAgIGVuc3VyZVNTQURvbWluYXRvcnMoKTsK
KyAgICBpZiAoIW1fc3NhTmF0dXJhbExvb3BzKQorICAgICAgICBtX3NzYU5hdHVyYWxMb29wcyA9
IHN0ZDo6bWFrZV91bmlxdWU8U1NBTmF0dXJhbExvb3BzPigqdGhpcyk7CisgICAgcmV0dXJuICpt
X3NzYU5hdHVyYWxMb29wczsKIH0KIAogQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dh
cmRzQ0ZHKCkKIHsKKyAgICAvLyBXZSBjb3VsZCBlYXNpbHkgcmVsYXggdGhpcyBpbiB0aGUgZnV0
dXJlIHRvIHdvcmsgb3ZlciBDUFMsIGJ1dCB0b2RheSwgaXQncyBvbmx5IHVzZWQgaW4gU1NBLgor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOyAKICAgICBpZiAoIW1fYmFja3dhcmRz
Q0ZHKQogICAgICAgICBtX2JhY2t3YXJkc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8QmFja3dhcmRz
Q0ZHPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0NGRzsKQEAgLTE1MDMsNiArMTU4
OCw3IEBAIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygKIAogQmFja3dh
cmRzRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKQogeworICAg
IFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9iYWNrd2FyZHNEb21p
bmF0b3JzKQogICAgICAgICBtX2JhY2t3YXJkc0RvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJhY2t3YXJkc0RvbWluYXRvcnM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzRG9t
aW5hdG9yczsKQEAgLTE1MTAsNiArMTU5Niw3IEBAIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBo
OjplbnN1cmVCYWNrd2EKIAogQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIEdyYXBoOjplbnN1
cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQobV9m
b3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKQogICAg
ICAgICBtX2NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9jb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpczsKQEAgLTE1MjcsNyArMTYxNCw3IEBAIE1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGUgR3JhcGg6Om1ldGgKICAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5s
b2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgICAgICAgICBpbnQgYXJndW1lbnQgPSBub2RlLT5sb2NhbCgpLnRv
QXJndW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogYXJndW1lbnROb2RlID0gbV9h
cmd1bWVudHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5v
ZGUgPSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJndW1l
bnRdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKQEAgLTE2OTgsNiArMTc4NSwxMyBAQCBib29sIEdyYXBoOjpjYW5Eb0Zhc3RTcHJlYWQo
Tm9kZSogbm9kZSwgCiAgICAgcmV0dXJuIGFsbEdvb2Q7CiB9CiAKK3ZvaWQgR3JhcGg6OmNsZWFy
Q1BTQ0ZHRGF0YSgpCit7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1f
Y3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNDRkcgPSBudWxscHRyOworfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMDk3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2Rl
QmxvY2s7CkBAIC01NiwxMCArNjAsMTcgQEAgY2xhc3MgQmFja3dhcmRzQ0ZHOwogY2xhc3MgQmFj
a3dhcmRzRG9taW5hdG9yczsKIGNsYXNzIENGRzsKIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzOwotY2xhc3MgRG9taW5hdG9yczsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBE
b21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE5hdHVyYWxMb29wczsKIGNs
YXNzIEZsb3dJbmRleGluZzsKLWNsYXNzIE5hdHVyYWxMb29wczsKLWNsYXNzIFByZVBvc3ROdW1i
ZXJpbmc7CisKK2NsYXNzIENQU0NGRzsKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordXNpbmcgQ1BT
RG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBE
b21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8
Q1BTQ0ZHPjsKK3VzaW5nIFNTQU5hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxTU0FDRkc+Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRmxvd01hcDsKIApAQCAtOTAxLDI3ICs5MTIsMzcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNEZWJ1Z2dlckVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsgfQogCi0gICAgRG9taW5hdG9ycyYgZW5zdXJlRG9taW5h
dG9ycygpOwotICAgIFByZVBvc3ROdW1iZXJpbmcmIGVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsK
LSAgICBOYXR1cmFsTG9vcHMmIGVuc3VyZU5hdHVyYWxMb29wcygpOworICAgIENQU0RvbWluYXRv
cnMmIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBTU0FEb21pbmF0b3JzJiBlbnN1cmVTU0FE
b21pbmF0b3JzKCk7CisgICAgQ1BTTmF0dXJhbExvb3BzJiBlbnN1cmVDUFNOYXR1cmFsTG9vcHMo
KTsKKyAgICBTU0FOYXR1cmFsTG9vcHMmIGVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgIEJh
Y2t3YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7CiAgICAgQmFja3dhcmRzRG9taW5hdG9y
cyYgZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwogICAgIENvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzJiBlbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCi0gICAgLy8gVGhp
cyBmdW5jdGlvbiBvbmx5IG1ha2VzIHNlbnNlIHRvIGNhbGwgYWZ0ZXIgYnl0ZWNvZGUgcGFyc2lu
ZworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBvbmx5IG1ha2VzIHNlbnNlIHRvIGNhbGwgYWZ0ZXIg
Ynl0ZWNvZGUgcGFyc2luZwogICAgIC8vIGJlY2F1c2UgaXQgcXVlcmllcyB0aGUgbV9oYXNFeGNl
cHRpb25IYW5kbGVycyBib29sZWFuIHdob3NlIHZhbHVlCiAgICAgLy8gaXMgb25seSBmdWxseSBk
ZXRlcm1pbmVkIGFmdGVyIGJ5dGNvZGUgcGFyc2luZy4KKyAgICBib29sIHdpbGxDYXRjaEV4Y2Vw
dGlvbkluTWFjaGluZUZyYW1lKENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICB7CisgICAgICAg
IENvZGVPcmlnaW4gaWdub3JlZDsKKyAgICAgICAgSGFuZGxlckluZm8qIGlnbm9yZWQyOworICAg
ICAgICByZXR1cm4gd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoY29kZU9yaWdpbiwg
aWdub3JlZCwgaWdub3JlZDIpOworICAgIH0KICAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlvbklu
TWFjaGluZUZyYW1lKENvZGVPcmlnaW4sIENvZGVPcmlnaW4mIG9wQ2F0Y2hPcmlnaW5PdXQsIEhh
bmRsZXJJbmZvKiYgY2F0Y2hIYW5kbGVyT3V0KTsKICAgICAKICAgICBib29sIG5lZWRzU2NvcGVS
ZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJs
b2NrLT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZvaWQgY2xlYXJDUFNDRkdE
YXRhKCk7CisKICAgICBWTSYgbV92bTsKICAgICBQbGFuJiBtX3BsYW47CiAgICAgQ29kZUJsb2Nr
KiBtX2NvZGVCbG9jazsKICAgICBDb2RlQmxvY2sqIG1fcHJvZmlsZWRCbG9jazsKICAgICAKLSAg
ICBWZWN0b3I8IFJlZlB0cjxCYXNpY0Jsb2NrPiAsIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxS
ZWZQdHI8QmFzaWNCbG9jaz4sIDg+IG1fYmxvY2tzOworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwg
MT4gbV9lbnRyeXBvaW50czsKICAgICBWZWN0b3I8RWRnZSwgMTY+IG1fdmFyQXJnQ2hpbGRyZW47
CiAKICAgICBIYXNoTWFwPEVuY29kZWRKU1ZhbHVlLCBGcm96ZW5WYWx1ZSosIEVuY29kZWRKU1Zh
bHVlSGFzaCwgRW5jb2RlZEpTVmFsdWVIYXNoVHJhaXRzPiBtX2Zyb3plblZhbHVlTWFwOwpAQCAt
OTU2LDExICs5NzcsMTEgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gSWYgd2UgRENFIHRoZSBB
cml0aEFkZCBhbmQgd2UgcmVtb3ZlIHRoZSBpbnQgY2hlY2sgb24geCwgdGhlbiB0aGlzIHdvbid0
IGRvIHRoZSBzaWRlCiAgICAgLy8gZWZmZWN0cy4KLSAgICBWZWN0b3I8Tm9kZSosIDg+IG1fYXJn
dW1lbnRzOworICAgIEhhc2hNYXA8QmFzaWNCbG9jayosIFZlY3RvcjxOb2RlKiwgOD4+IG1fZW50
cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQUywgdGhpcyBpcyBtZWFuaW5n
bGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVjdWxhdGlvbiB0aGF0IHdlJ3Zl
IGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOwot
ICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFy
aWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4
PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0aW9uPiBtX3RyYW5zaXRpb25z
OwpAQCAtOTgyLDEwICsxMDAzLDEyIEBAIHB1YmxpYzoKICAgICBIYXNoU2V0PHN0ZDo6cGFpcjxK
U09iamVjdCosIFByb3BlcnR5T2Zmc2V0Pj4gbV9zYWZlVG9Mb2FkOwogICAgIEhhc2hNYXA8UHJv
cGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3I+IG1faW5mZXJyZWRUeXBlczsK
ICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+PiBtX2RvbUpJVFNuaXBwZXRzOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxEb21pbmF0b3JzPiBtX2RvbWluYXRvcnM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBy
ZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9zdE51bWJlcmluZzsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmF0dXJhbExvb3BzPiBtX25hdHVyYWxMb29wczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBt
X2NmZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTRG9taW5hdG9ycz4gbV9jcHNEb21pbmF0b3Jz
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FEb21pbmF0b3JzPiBtX3NzYURvbWluYXRvcnM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPENQU05hdHVyYWxMb29wcz4gbV9jcHNOYXR1cmFsTG9vcHM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNTQU5hdHVyYWxMb29wcz4gbV9zc2FOYXR1cmFsTG9vcHM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNTQUNGRz4gbV9zc2FDRkc7CisgICAgc3RkOjp1bmlxdWVfcHRy
PENQU0NGRz4gbV9jcHNDRkc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0NGRz4gbV9i
YWNrd2FyZHNDRkc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3YXJkc0RvbWluYXRvcnM+IG1f
YmFja3dhcmRzRG9taW5hdG9yczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXM+IG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xMDA5LDYgKzEw
MzIsOCBAQCBwdWJsaWM6CiAgICAgUmVmQ291bnRTdGF0ZSBtX3JlZkNvdW50U3RhdGU7CiAgICAg
Ym9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1faGFzRXhjZXB0aW9uSGFuZGxl
cnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luU1NBQ29udmVyc2lvbiB7IGZhbHNlIH07Cisg
ICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1faW5kZXhpbmdDYWNoZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4gbV9hYnN0cmFjdFZhbHVlc0Nh
Y2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFj
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
UGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDU0ICs5Myw2MSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZlVmFsdWVzKFZlY3RvcjxOb2Rl
QWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogewotICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAgIHJvb3QtPmNmYVNob3VsZFJl
dmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKLSAgICByb290
LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2Ji
ZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIHJvb3QtPmNmYVN0cnVj
dHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJndW1lbnRzKCk7
ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsK
LQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAgIGlmIChtX2dyYXBoLm1fZm9y
bSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRz
W2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1f
YXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIGZv
cm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICAgICAgICAgIGZv
cm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgIGZv
ciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAg
ICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1ZTsKKyAgICAgICAgZW50cnlw
b2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFGb3Vu
ZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9i
YmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKyAgICAgICAgZW50cnlwb2lu
dC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7
CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52
YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKworICAgICAgICAgICAgRmx1c2hGb3Jt
YXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgeworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHN1cHBvcnRpbmcgbXVsdGlwbGUgZW50cnlwb2lu
dHMgaW4gdGhlIEZUTCwgd2UgbmVlZCB0byBjaGFuZ2UKKyAgICAgICAgICAgICAgICAvLyB3aGF0
IHdlIGRvIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUz
OTYKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ld
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGVudHJ5cG9pbnQpLT52YWx1ZVtpXTsK
KyAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9
IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CisgICAgICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBl
KFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAgICAgICAgICAgICAgIGVudHJ5
cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNDZWxs
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFs
dWU6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkp
Lm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbnVsbHB0ciwgIkJh
ZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoZm9ybWF0
KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgotICAgICAgICAgICAgcm9vdC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6Ci0gICAgICAgICAgICBy
b290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewotICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAgICAgcm9vdC0+dmFsdWVzQXRU
YWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgfQotICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0lu
ZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgp
IHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgp
OwotICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVu
dHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2FscygpOyArK2kpIHsKKyAgICAgICAg
ICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOworICAgICAgICAg
ICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5h
dHVyYWxPcmRlcigpKSB7CisgICAgICAgIGlmIChtX2dyYXBoLm1fZW50cnlwb2ludHMuY29udGFp
bnMoYmxvY2spKSB7CisgICAgICAgICAgICAvLyBXZSBoYW5kbGVkIHRoZSBlbnRyeXBvaW50cyBh
Ym92ZS4KICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgQVNTRVJU
KGJsb2NrLT5pc1JlYWNoYWJsZSk7CiAgICAgICAgIGJsb2NrLT5jZmFTaG91bGRSZXZpc2l0ID0g
ZmFsc2U7CiAgICAgICAgIGJsb2NrLT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0zNjQsNyAr
MzcxLDcgQEAgaW5saW5lIGJvb2wgSW5QbGFjZUFic3RyYWN0U3RhdGU6Om1lcmdlVAogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZShiYXNpY0Jsb2NrLCBkYXRhLT5jYXNlc1tpXS50YXJnZXQu
YmxvY2spOwogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICB9Ci0gICAgICAgIAorCiAgICAg
Y2FzZSBSZXR1cm46CiAgICAgY2FzZSBUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxs
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCShyZXZpc2lv
biAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9GaXQo
KQogICAgIGNvbW1vbi5zaHJpbmtUb0ZpdCgpOwogICAgIG9zckVudHJ5LnNocmlua1RvRml0KCk7
CiAgICAgb3NyRXhpdC5zaHJpbmtUb0ZpdCgpOworICAgIGNhdGNoRW50cnlwb2ludHMuc2hyaW5r
VG9GaXQoKTsKICAgICBzcGVjdWxhdGlvblJlY292ZXJ5LnNocmlua1RvRml0KCk7CiAgICAgbWlu
aWZpZWRERkcucHJlcGFyZUFuZFNocmluaygpOwogICAgIHZhcmlhYmxlRXZlbnRTdHJlYW0uc2hy
aW5rVG9GaXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCShy
ZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMzIgQEAgcHVibGljOgogICAgICAgICAgICAg
b3NyRW50cnksIG9zckVudHJ5LnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKICAgICAgICAgICAgIGdl
dE9TUkVudHJ5RGF0YUJ5dGVjb2RlSW5kZXgpOwogICAgIH0KKworICAgIENhdGNoRW50cnlwb2lu
dERhdGEqIGNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxDYXRjaEVudHJ5
cG9pbnREYXRhLCB1bnNpZ25lZD4oCisgICAgICAgICAgICBjYXRjaEVudHJ5cG9pbnRzLCBjYXRj
aEVudHJ5cG9pbnRzLnNpemUoKSwgYnl0ZWNvZGVJbmRleCwKKyAgICAgICAgICAgIFtdIChjb25z
dCBDYXRjaEVudHJ5cG9pbnREYXRhKiBpdGVtKSB7IHJldHVybiBpdGVtLT5tX2J5dGVjb2RlSW5k
ZXg7IH0pOworICAgIH0KKworICAgIHZvaWQgZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCkK
KyAgICB7CisgICAgICAgIHN0ZDo6c29ydChjYXRjaEVudHJ5cG9pbnRzLmJlZ2luKCksIGNhdGNo
RW50cnlwb2ludHMuZW5kKCksIFtdIChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBhLCBjb25z
dCBDYXRjaEVudHJ5cG9pbnREYXRhJiBiKSB7CisgICAgICAgICAgICByZXR1cm4gYS5tX2J5dGVj
b2RlSW5kZXggPCBiLm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfSk7CisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgICAgICB1bnNpZ25lZCBwcmV2aW91c0luZGV4ID0gMDsKKyAgICAgICAgZm9y
IChjb25zdCBDYXRjaEVudHJ5cG9pbnREYXRhJiBlbnRyeXBvaW50IDogY2F0Y2hFbnRyeXBvaW50
cykgeworICAgICAgICAgICAgQVNTRVJUKHByZXZpb3VzSW5kZXggPCBlbnRyeXBvaW50Lm1fYnl0
ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBwcmV2aW91c0luZGV4ID0gZW50cnlwb2ludC5tX2J5
dGVjb2RlSW5kZXg7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKworICAgIHZvaWQgYXBwZW5k
Q2F0Y2hFbnRyeXBvaW50KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIHVuc2lnbmVkIG1hY2hpbmVD
b2RlT2Zmc2V0LCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQorICAgIHsK
KyAgICAgICAgY2F0Y2hFbnRyeXBvaW50cy5hcHBlbmQoQ2F0Y2hFbnRyeXBvaW50RGF0YSB7IGJ5
dGVjb2RlSW5kZXgsIG1hY2hpbmVDb2RlT2Zmc2V0LCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykg
fSk7CisgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGFwcGVuZE9TUkV4aXQoY29uc3QgT1NSRXhp
dCYgZXhpdCkKICAgICB7CkBAIC0xMzIsMTAgKzE1OCwxMyBAQCBwcml2YXRlOgogcHVibGljOgog
ICAgIENvbW1vbkRhdGEgY29tbW9uOwogICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YT4gb3Ny
RW50cnk7CisgICAgVmVjdG9yPENhdGNoRW50cnlwb2ludERhdGE+IGNhdGNoRW50cnlwb2ludHM7
CiAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4gb3NyRXhpdDsKICAgICBWZWN0
b3I8REZHOjpTcGVjdWxhdGlvblJlY292ZXJ5PiBzcGVjdWxhdGlvblJlY292ZXJ5OwogICAgIERG
Rzo6VmFyaWFibGVFdmVudFN0cmVhbSB2YXJpYWJsZUV2ZW50U3RyZWFtOwogICAgIERGRzo6TWlu
aWZpZWRHcmFwaCBtaW5pZmllZERGRzsKKyAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5
QnVmZmVyOworCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgdWludDhfdCBuZXZlckV4ZWN1dGVk
RW50cnkgeyAxIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw4IEBA
IHN0YXRpYyB2b2lkIGVtaXRTdGFja092ZXJmbG93Q2hlY2soSklUQ28KIAogdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZSgpCiB7CisgICAgbWFrZUNhdGNoT1NSRW50cnlCdWZmZXIoKTsKKwogICAg
IHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAgICAgbV9zcGVjdWxhdGl2
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3BlY3VsYXRpdmVKSVQ+KCp0aGlzKTsKQEAgLTQyNiw2ICs0
MjgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIAogdm9pZCBKSVRDb21waWxlcjo6
Y29tcGlsZUZ1bmN0aW9uKCkKIHsKKyAgICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAg
ICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKIApAQCAtNTUxLDE0ICs1
NTUsMjMgQEAgdm9pZCogSklUQ29tcGlsZXI6OmFkZHJlc3NPZkRvdWJsZUNvbnN0YQogfQogI2Vu
ZGlmCiAKK3ZvaWQgSklUQ29tcGlsZXI6Om5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2Nr
JiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYgYXJndW1lbnRGb3JtYXRzKQoreworICAg
IFJFTEVBU0VfQVNTRVJUKGJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9pbnQpOworICAgIFJFTEVB
U0VfQVNTRVJUKGJhc2ljQmxvY2suaW50ZXJzZWN0aW9uT2ZDRkFIYXNWaXNpdGVkKTsgLy8gQW4g
ZW50cnlwb2ludCBpcyBieSBkZWZpbml0aW9uIHJlYWNoYWJsZS4KKyAgICBtX2ppdENvZGUtPmFw
cGVuZENhdGNoRW50cnlwb2ludChiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIu
b2Zmc2V0T2YoYmxvY2tIZWFkKSwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsKK30KKwogdm9p
ZCBKSVRDb21waWxlcjo6bm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklU
Q29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisKICAgICAv
LyBPU1IgZW50cnkgaXMgbm90IGFsbG93ZWQgaW50byBibG9ja3MgZGVlbWVkIHVucmVhY2hhYmxl
IGJ5IGNvbnRyb2wgZmxvdyBhbmFseXNpcy4KICAgICBpZiAoIWJhc2ljQmxvY2suaW50ZXJzZWN0
aW9uT2ZDRkFIYXNWaXNpdGVkKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorCiAgICAgT1NS
RW50cnlEYXRhKiBlbnRyeSA9IG1faml0Q29kZS0+YXBwZW5kT1NSRW50cnlEYXRhKGJhc2ljQmxv
Y2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpKTsKLSAgICAK
KwogICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzID0gYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25P
ZlBhc3RWYWx1ZXNBdEhlYWQ7CiAgICAgICAgIAogICAgIC8vIEZpeCB0aGUgZXhwZWN0ZWQgdmFs
dWVzOiBpbiBvdXIgcHJvdG9jb2wsIGEgZGVhZCB2YXJpYWJsZSB3aWxsIGhhdmUgYW4gZXhwZWN0
ZWQKQEAgLTY3MCw2ICs2ODMsMTQgQEAgdm9pZCBKSVRDb21waWxlcjo6c2V0RW5kT2ZDb2RlKCkK
ICAgICBtX2Rpc2Fzc2VtYmxlci0+c2V0RW5kT2ZDb2RlKGxhYmVsSWdub3JpbmdXYXRjaHBvaW50
cygpKTsKIH0KIAordm9pZCBKSVRDb21waWxlcjo6bWFrZUNhdGNoT1NSRW50cnlCdWZmZXIoKQor
eworICAgIGlmIChtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkgeworICAgICAg
ICB1aW50MzJfdCBudW1iZXJPZkxpdmVMb2NhbHMgPSBzdGQ6Om1heCgqbV9ncmFwaC5tX21heExv
Y2Fsc0ZvckNhdGNoT1NSRW50cnksIDF1KTsgLy8gTWFrZSBzdXJlIHdlIGFsd2F5cyBhbGxvY2F0
ZSBhIG5vbi1udWxsIGNhdGNoT1NSRW50cnlCdWZmZXIuCisgICAgICAgIG1faml0Q29kZS0+Y2F0
Y2hPU1JFbnRyeUJ1ZmZlciA9IHZtKCktPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihKU1Zh
bHVlKSAqIG51bWJlck9mTGl2ZUxvY2Fscyk7CisgICAgfQorfQorCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIG5vdGljZU9TUkVu
dHJ5KEJhc2ljQmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVy
Jik7CisgICAgdm9pZCBub3RpY2VDYXRjaEVudHJ5cG9pbnQoQmFzaWNCbG9jayYsIEpJVENvbXBp
bGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImLCBWZWN0b3I8Rmx1c2hGb3JtYXQ+JiYg
YXJndW1lbnRGb3JtYXRzKTsKICAgICAKICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZSgpIHsg
cmV0dXJuIG1faml0Q29kZTsgfQogICAgIApAQCAtMjg0LDYgKzI4NSw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGFwcGVuZEV4Y2VwdGlvbkhhbmRsaW5nT1NSRXhpdChFeGl0S2luZCwgdW5zaWdu
ZWQgZXZlbnRTdHJlYW1JbmRleCwgQ29kZU9yaWdpbiwgSGFuZGxlckluZm8qIGV4Y2VwdGlvbkhh
bmRsZXIsIENhbGxTaXRlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBqdW1wc1RvRmFp
bCA9IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCgpKTsKIAorICAgIHZvaWQgbWFrZUNhdGNoT1NS
RW50cnlCdWZmZXIoKTsKKwogICAgIC8vIFRoZSBkYXRhZmxvdyBncmFwaCBjdXJyZW50bHkgYmVp
bmcgZ2VuZXJhdGVkLgogICAgIEdyYXBoJiBtX2dyYXBoOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBuYW1lc3Bh
Y2UgewogCit1c2luZyBOYXR1cmFsTG9vcCA9IFNTQU5hdHVyYWxMb29wOworCiBzdHJ1Y3QgTG9v
cERhdGEgewogICAgIExvb3BEYXRhKCkKICAgICAgICAgOiBwcmVIZWFkZXIobnVsbHB0cikKQEAg
LTc0LDggKzc2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBudWxscHRyLCBtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKLSAgICAgICAgbV9n
cmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExv
b3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAgICAgICBt
X2dyYXBoLmVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgICAgICBtX2dyYXBoLmVuc3VyZUNv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKQEAg
LTgzLDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9ncmFwaC5kdW1wKCk7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX25hdHVyYWxM
b29wcy0+bnVtTG9vcHMoKSk7CisgICAgICAgIG1fZGF0YS5yZXNpemUobV9ncmFwaC5tX3NzYU5h
dHVyYWxMb29wcy0+bnVtTG9vcHMoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBGaWd1cmUgb3V0
IHRoZSBzZXQgb2YgdGhpbmdzIGVhY2ggbG9vcCB3cml0ZXMgdG8sIG5vdCBpbmNsdWRpbmcgYmxv
Y2tzIHRoYXQKICAgICAgICAgLy8gYmVsb25nIHRvIGlubmVyIGxvb3BzLiBXZSBmaXggdGhpcyBs
YXRlci4KQEAgLTk4LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlmICghYmxvY2st
PmNmYUhhc1Zpc2l0ZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxM
b29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJs
b2NrKTsKICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIExvb3BEYXRhJiBkYXRhID0gbV9kYXRhW2xvb3AtPmluZGV4KCldOwpAQCAt
MTE2LDE0ICsxMTgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBGb3IgZWFjaCBsb29wOgogICAg
ICAgICAvLyAtIElkZW50aWZ5IGl0cyBwcmUtaGVhZGVyLgogICAgICAgICAvLyAtIE1ha2Ugc3Vy
ZSBpdHMgb3V0ZXIgbG9vcHMga25vdyB3aGF0IGl0IGNsb2JiZXJzLgotICAgICAgICBmb3IgKHVu
c2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCk7IGxv
b3BJbmRleC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3AgPSBtX2dy
YXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9v
cEluZGV4LS07KSB7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3Jh
cGgubV9zc2FOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKICAgICAgICAgICAgIExvb3BE
YXRhJiBkYXRhID0gbV9kYXRhW2xvb3AuaW5kZXgoKV07CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGZvciAoCi0gICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9
IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5h
dHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOwogICAgICAgICAgICAgICAgIG91
dGVyTG9vcDsKLSAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExv
b3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCisgICAgICAgICAgICAgICAgb3V0
ZXJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpv
dXRlckxvb3ApKQogICAgICAgICAgICAgICAgIG1fZGF0YVtvdXRlckxvb3AtPmluZGV4KCldLndy
aXRlcy5hZGRBbGwoZGF0YS53cml0ZXMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBoZWFkZXIgPSBsb29wLmhlYWRlcigpOwpAQCAtMTM3LDcgKzEzOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaGVhZGVyLT5w
cmVkZWNlc3NvcnMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgPSBoZWFkZXItPnByZWRlY2Vzc29yc1tpXTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhoZWFkZXIsIHByZWRlY2Vzc29yKSkK
KyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyho
ZWFkZXIsIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgICAgICBwcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE5MSw3ICsxOTMsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGxvb3BTdGFjazsK
ICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkgewotICAgICAgICAgICAgY29uc3Qg
TmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29w
T2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAg
aWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCkBAIC0x
OTksNyArMjAxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yICgKICAgICAgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogY3VycmVudCA9IGxvb3A7CiAgICAgICAgICAgICAgICAgY3Vy
cmVudDsKLSAgICAgICAgICAgICAgICBjdXJyZW50ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0g
bV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpjdXJyZW50KSkK
ICAgICAgICAgICAgICAgICBsb29wU3RhY2suYXBwZW5kKGN1cnJlbnQpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAvLyBSZW1lbWJlcjogdGhlIGxvb3Agc3RhY2sgaGFzIHRoZSBpbm5lci1t
b3N0IGxvb3AgYXQgaW5kZXggMCwgc28gaWYgd2Ugd2FudApAQCAtMzE4LDcgKzMyMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIC8vIGJlY2F1c2UgbW9zdCBsb29wcyBhcmUgc21hbGwgYW5kIG1vc3Qg
YmxvY2tzIGJlbG9uZyB0byBmZXcgbG9vcHMuCiAgICAgICAgIGZvciAodW5zaWduZWQgYm9keUlu
ZGV4ID0gbG9vcC0+c2l6ZSgpOyBib2R5SW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIHN1YkJsb2NrID0gbG9vcC0+YXQoYm9keUluZGV4KTsKLSAgICAgICAgICAgIGNvbnN0IE5h
dHVyYWxMb29wKiBzdWJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3Vi
QmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBo
Lm1fc3NhTmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CiAgICAgICAgICAgICBpZiAo
IXN1Ykxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBzdWJQcmVIZWFkZXIgPSBtX2RhdGFbc3ViTG9vcC0+aW5kZXgoKV0ucHJlSGVhZGVyOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNl
cnZhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJl
c2VydmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYg
RU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkRGR0Jsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJE
RkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNDYsMTA5ICs0Nywx
NzYgQEAgcHVibGljOgogCiAgICAgYm9vbCBydW4oKQogICAgIHsKLSAgICAgICAgaWYgKCFtX2dy
YXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQog
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IExv
YWRTdG9yZSk7CiAKLSAgICAgICAgbV9jdXJyZW50QmxvY2tMaXZlbmVzcy5yZXNpemUobV9ncmFw
aC5ibG9jaygwKS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOworICAgICAgICBp
ZiAoIW1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycykKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwotICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRl
cigpKSB7Ci0gICAgICAgICAgICBoYW5kbGVCbG9jayhibG9jaywgaW5zZXJ0aW9uU2V0KTsKLSAg
ICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICAgICAgaWYgKG1fZ3Jh
cGgubV9oYXNFeGNlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgbV9saXZlQXRDYXRjaEhl
YWQucmVzaXplKG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fs
cygpKTsKKworICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxv
Y2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIGhhbmRsZUJsb2NrRm9yVHJ5
Q2F0Y2goYmxvY2ssIGluc2VydGlvblNldCk7CisgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
LmV4ZWN1dGUoYmxvY2spOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCi0gICAgYm9vbCB3aWxsQ2F0Y2hFeGNlcHRpb24oQ29kZU9yaWdp
biBvcmlnaW4pCisgICAgYm9vbCBpc1ZhbGlkRmx1c2hMb2NhdGlvbihCYXNpY0Jsb2NrKiBzdGFy
dGluZ0Jsb2NrLCB1bnNpZ25lZCBpbmRleCwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpCisgICAg
eworICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayosIDQ+IHdvcmtsaXN0OworICAgICAgICBCbG9j
a1NldCBzZWVuOworCisgICAgICAgIGF1dG8gYWRkUHJlZGVjZXNzb3JzID0gWyZdIChCYXNpY0Js
b2NrKiBibG9jaykgeworICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGJsb2Nr
LT5wcmVkZWNlc3NvcnMpIHsKKyAgICAgICAgICAgICAgICBib29sIGlzTmV3RW50cnkgPSBzZWVu
LmFkZChibG9jayk7CisgICAgICAgICAgICAgICAgaWYgKGlzTmV3RW50cnkpCisgICAgICAgICAg
ICAgICAgICAgIHdvcmtsaXN0LmFwcGVuZChibG9jayk7CisgICAgICAgICAgICB9CisgICAgICAg
IH07CisKKyAgICAgICAgYXV0byBmbHVzaElzRGVmaW5pdGVseUludmFsaWQgPSBbJl0gKEJhc2lj
QmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAgICAgYm9vbCBhbGxHb29k
ID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBpbmRleDsgaS0tOyApIHsK
KyAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmF0KGkpLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgp
ICYmIGJsb2NrLT5hdChpKS0+bG9jYWwoKSA9PSBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFsbEdvb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhbGxHb29kKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGJsb2NrLT5wcmVk
ZWNlc3NvcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJvb3Qg
YmxvY2suIFdlIHByb3ZlZCB3ZSByZWFjaGVkIGhlcmUsIHRoZXJlZm9yZSB3ZSBjYW4ndCBGbHVz
aCwgYXMKKyAgICAgICAgICAgICAgICAvLyBpdCdsbCBtYWtlIHRoaXMgbG9jYWwgbGl2ZSBhdCB0
aGUgc3RhcnQgb2YgYSByb290IGJsb2NrLCB3aGljaCBpcyBpbnZhbGlkIElSLgorICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRQcmVk
ZWNlc3NvcnMoYmxvY2spOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Owor
CisgICAgICAgIGlmIChmbHVzaElzRGVmaW5pdGVseUludmFsaWQoc3RhcnRpbmdCbG9jaywgaW5k
ZXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHdoaWxlICghd29ya2xp
c3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0
LnRha2VMYXN0KCk7CisgICAgICAgICAgICBpZiAoZmx1c2hJc0RlZmluaXRlbHlJbnZhbGlkKGJs
b2NrLCBibG9jay0+c2l6ZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RkOjpwYWlyPEhhbmRs
ZXJJbmZvKiwgRmFzdEJpdFZlY3Rvcj4gY2F0Y2hIYW5kbGVyKENvZGVPcmlnaW4gb3JpZ2luKQog
ICAgIHsKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleFRvQ2hlY2sgPSBvcmlnaW4uYnl0
ZWNvZGVJbmRleDsKLSAgICAgICAgbV9jdXJyZW50QmxvY2tMaXZlbmVzcy5jbGVhckFsbCgpOwog
CiAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSA9IG9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZy
YW1lKTsKICAgICAgICAgICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+
aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXhUb0NoZWNrKSkgeworICAgICAg
ICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7CisgICAgICAgICAgICAgICAgbGl2ZW5l
c3MucmVzaXplKG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fs
cygpKTsKKwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNhdGNoQnl0ZWNvZGVJbmRleCA9IGhh
bmRsZXItPnRhcmdldDsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmZvckFsbExvY2Fsc0xpdmVJ
bkJ5dGVjb2RlKENvZGVPcmlnaW4oY2F0Y2hCeXRlY29kZUluZGV4LCBpbmxpbmVDYWxsRnJhbWUp
LCBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1f
Y3VycmVudEJsb2NrTGl2ZW5lc3Nbb3BlcmFuZC50b0xvY2FsKCldID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgbGl2ZW5lc3Nbb3BlcmFuZC50b0xvY2FsKCldID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAg
ICAgIHJldHVybiB7IGhhbmRsZXIsIGxpdmVuZXNzIH07CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyBudWxscHRyLCBGYXN0Qml0VmVjdG9yKCkgfTsK
IAogICAgICAgICAgICAgYnl0ZWNvZGVJbmRleFRvQ2hlY2sgPSBpbmxpbmVDYWxsRnJhbWUtPmRp
cmVjdENhbGxlci5ieXRlY29kZUluZGV4OwogICAgICAgICAgICAgb3JpZ2luID0gaW5saW5lQ2Fs
bEZyYW1lLT5kaXJlY3RDYWxsZXI7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGhhbmRs
ZUJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrLCBJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCkKKyAg
ICB2b2lkIGhhbmRsZUJsb2NrRm9yVHJ5Q2F0Y2goQmFzaWNCbG9jayogYmxvY2ssIEluc2VydGlv
blNldCYgaW5zZXJ0aW9uU2V0KQogICAgIHsKLSAgICAgICAgLy8gQmVjYXVzZSBwcmVjaXNlIGp1
bXAgdGFyZ2V0cyBlbnN1cmVzIHRoYXQgdGhlIHN0YXJ0IG9mIGEgInRyeSIgYmxvY2sgaXMgaXRz
Ci0gICAgICAgIC8vIG93biBiYXNpYyBibG9jaywgd2Ugd2lsbCBuZXZlciBoYXZlIHR3byAidHJ5
IiBzdGF0ZW1lbnRzIGluIHRoZSBzYW1lIERGRwotICAgICAgICAvLyBiYXNpYyBibG9jay4gVGhl
cmVmb3JlLCBjaGVja2luZyB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgYmxvY2sgaXMgc3VmZmljaWVu
dCAKLSAgICAgICAgLy8gdG8gY2hlY2tpbmcgaWYgd2UncmUgaW4gYSB0cnkgYmxvY2suCi0gICAg
ICAgIGlmICghd2lsbENhdGNoRXhjZXB0aW9uKGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGlj
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAgICBPcGVyYW5kczxWYXJpYWJsZUFjY2Vz
c0RhdGEqPiBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVt
YmVyT2ZBcmd1bWVudHMoKSwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fscygp
LCBudWxscHRyKTsKICAgICAgICAgSGFzaFNldDxJbmxpbmVDYWxsRnJhbWUqPiBzZWVuSW5saW5l
Q2FsbEZyYW1lczsKIAotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYmxvY2stPnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGJsb2NrLT5hdChpKTsKLSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3Vt
ZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1l
bnQoKSAmJiBub2RlID09IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3Vt
ZW50KCldOwotICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2Fs
bEZyYW1lcy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKLQotICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOworICAgICAgICBtX2N1cnJlbnRFeGNlcHRpb25I
YW5kbGVyID0gbnVsbHB0cjsKIAotICAgICAgICAgICAgICAgICAgICBpbnQgc3RhY2tPZmZzZXQg
PSBpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMDsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwoKSAmJiBtX2N1cnJlbnRCbG9j
a0xpdmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8
IChvcGVyYW5kLm9mZnNldCgpID09IHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1l
bnRPZmZzZXQoKSkpIHsKLQotICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQo
b3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0
YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdW
YXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
c2VydGlvblNldC5pbnNlcnROb2RlKGksIFNwZWNOb25lLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGbHVzaCwgbm9kZS0+b3JpZ2luLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSkKLSAgICAgICAgICAgICAgICAg
ICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5vZGUtPmxvY2FsKCkpID0gbm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBJbnNlcnQgRmx1c2ggZm9yIGV2ZXJ5dGhpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2su
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gYmxvY2stPmF0KGJs
b2NrLT5zaXplKCkgLSAxKS0+b3JpZ2luOworICAgICAgICBhdXRvIGZsdXNoRXZlcnl0aGluZyA9
IFsmXSAoTm9kZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX2N1cnJlbnRFeGNlcHRpb25IYW5kbGVyKTsKICAgICAgICAgICAgIGF1
dG8gcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQsIGJvb2wgYWx3YXlzSW5zZXJ0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKChvcGVyYW5k
LmlzTG9jYWwoKSAmJiBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSkg
CisgICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwoKSAmJiBtX2xpdmVBdENhdGNo
SGVhZFtvcGVyYW5kLnRvTG9jYWwoKV0pIAogICAgICAgICAgICAgICAgICAgICB8fCBvcGVyYW5k
LmlzQXJndW1lbnQoKQogICAgICAgICAgICAgICAgICAgICB8fCBhbHdheXNJbnNlcnQpIHsKKwor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEZsdXNoTG9jYXRpb24oYmxvY2ssIGlu
ZGV4LCBvcGVyYW5kKSk7CisKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRh
KiBhY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAoIWFjY2Vzc0RhdGEpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQpOwogCiAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSA9
IGFjY2Vzc0RhdGE7CiAKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoYmxvY2stPnNpemUoKSwgU3BlY05vbmUsIAorICAgICAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuaW5zZXJ0Tm9kZShpbmRleCwgU3BlY05vbmUsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgRmx1c2gsIG9yaWdpbiwgT3BJbmZvKGFjY2Vzc0RhdGEpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9OworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGxvY2FsID0gMDsg
bG9jYWwgPCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IGxvY2FsKysp
CiAgICAgICAgICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayh2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChsb2NhbCksIGZhbHNlKTsKICAgICAgICAgICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiBzZWVuSW5saW5lQ2FsbEZyYW1lcykKICAgICAgICAg
ICAgICAgICBwcmVzZXJ2ZUxpdmVuZXNzQXRFbmRPZkJsb2NrKFZpcnR1YWxSZWdpc3Rlcihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KSksIHRydWUpOwogICAgICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayhWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSksIHRydWUpOworCisg
ICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5jbGVhcigpOworICAgICAgICB9OworCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7CisKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzdGQ6OnBhaXI8SGFuZGxlckluZm8qLCBGYXN0Qml0VmVjdG9yPiBkYXRh
ID0gY2F0Y2hIYW5kbGVyKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAgICAgICAg
SGFuZGxlckluZm8qIG5ld0hhbmRsZXIgPSBkYXRhLmZpcnN0OworICAgICAgICAgICAgICAgIGlm
IChuZXdIYW5kbGVyICE9IG1fY3VycmVudEV4Y2VwdGlvbkhhbmRsZXIgJiYgbV9jdXJyZW50RXhj
ZXB0aW9uSGFuZGxlcikKKyAgICAgICAgICAgICAgICAgICAgZmx1c2hFdmVyeXRoaW5nKG5vZGUt
Pm9yaWdpbiwgaSk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50RXhjZXB0aW9uSGFuZGxlciA9
IG5ld0hhbmRsZXI7CisgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudEV4Y2VwdGlvbkhhbmRs
ZXIpCisgICAgICAgICAgICAgICAgICAgIG1fbGl2ZUF0Q2F0Y2hIZWFkID0gZGF0YS5zZWNvbmQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnRFeGNlcHRpb25IYW5k
bGVyICYmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1l
bnQpKSB7CisgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUg
PSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxs
RnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKKworICAgICAgICAgICAgICAgIGludCBzdGFj
a09mZnNldCA9IGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQg
OiAwOworICAgICAgICAgICAgICAgIGlmICgob3BlcmFuZC5pc0xvY2FsKCkgJiYgbV9saXZlQXRD
YXRjaEhlYWRbb3BlcmFuZC50b0xvY2FsKCldKQorICAgICAgICAgICAgICAgICAgICB8fCBvcGVy
YW5kLmlzQXJndW1lbnQoKQorICAgICAgICAgICAgICAgICAgICB8fCAob3BlcmFuZC5vZmZzZXQo
KSA9PSBzdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpKSB7CisK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRGbHVzaExvY2F0aW9uKGJsb2NrLCBp
LCBvcGVyYW5kKSk7CisKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZUFjY2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFu
ZCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhKQorICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NE
YXRhKG9wZXJhbmQpOworCisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRO
b2RlKGksIFNwZWNOb25lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoLCBub2RlLT5v
cmlnaW4sIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1fZ3Jh
cGgpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChub2Rl
LT5sb2NhbCgpKSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gSW5zZXJ0IEZsdXNoIGZvciBldmVyeXRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJs
b2NrLgorICAgICAgICBpZiAobV9jdXJyZW50RXhjZXB0aW9uSGFuZGxlcikgeworICAgICAgICAg
ICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBibG9jay0+YXQoYmxvY2stPnNpemUoKSAtIDEpLT5vcmln
aW47CisgICAgICAgICAgICBmbHVzaEV2ZXJ5dGhpbmcob3JpZ2luLCBibG9jay0+c2l6ZSgpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTYwLDcgKzIyOCw4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICZtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLmxhc3QoKTsKICAgICB9CiAKLSAg
ICBGYXN0Qml0VmVjdG9yIG1fY3VycmVudEJsb2NrTGl2ZW5lc3M7CisgICAgRmFzdEJpdFZlY3Rv
ciBtX2xpdmVBdENhdGNoSGVhZDsKKyAgICBIYW5kbGVySW5mbyogbV9jdXJyZW50RXhjZXB0aW9u
SGFuZGxlciB7IG51bGxwdHIgfTsKIH07CiAKIGJvb2wgcGVyZm9ybUxpdmVDYXRjaFZhcmlhYmxl
UHJlc2VydmF0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogQmFzaWNCbG9jayogY3JlYXRl
UHJlSGVhZGVyKEdyYXBoJiBncmFwaCwgQmxvY2tJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwg
QmFzaWNCbG9jayogYmxvY2spCiB7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZ3JhcGgubV9l
bnRyeXBvaW50cy5jb250YWlucyhibG9jayksICJBbiBlbnRyeXBvaW50IHNob3VsZCBub3QgYmUg
aW4gYSBsb29wIik7CisKICAgICAvLyBGSVhNRTogSWYgd2UgcnVuIHRoaXMgdXRpbGl0eSBvbiBT
U0EgSVIsIHRoZW4gd2UgbWF5IGVuZCB1cCB3aXRoIGEgYml6YXJyZSBhcnJhbmdlbWVudCBvZgog
ICAgIC8vIFVwc2lsb25zIGFuZCBQaGlzLCBsaWtlOgogICAgIC8vCkBAIC02OSw3ICs3MSw4IEBA
IEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAvLyBJbnN0ZWFk
LCB3ZSB1c2UgdGhlIG1heCBvZiB0aGUgZnJlcXVlbmNpZXMgb2YgdGhlIGxvb3AgYm9keSdzIG5v
bi1sb29wIHByZWRlY2Vzc29ycy4KICAgICBmbG9hdCBmcmVxdWVuY3kgPSAwOwogICAgIGZvciAo
QmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKSB7Ci0gICAgICAg
IGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQor
ICAgICAgICBBU1NFUlQoZ3JhcGgubV9mb3JtICE9IFNTQSk7CisgICAgICAgIGlmIChncmFwaC5t
X2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9jaywgcHJlZGVjZXNzb3IpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGZyZXF1ZW5jeSA9IHN0ZDo6bWF4KGZyZXF1ZW5jeSwgcHJl
ZGVjZXNzb3ItPmV4ZWN1dGlvbkNvdW50KTsKICAgICB9CkBAIC0xMDMsNyArMTA2LDcgQEAgQmFz
aWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIAogICAgIGZvciAodW5z
aWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IDA7IHByZWRlY2Vzc29ySW5kZXggPCBibG9jay0+cHJl
ZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleCsrKSB7CiAgICAgICAgIEJhc2ljQmxv
Y2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsK
LSAgICAgICAgaWYgKGdyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNl
c3NvcikpCisgICAgICAgIGlmIChncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhibG9j
aywgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGJsb2NrLT5w
cmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRleC0tXSA9IGJsb2NrLT5wcmVkZWNlc3NvcnMubGFz
dCgpOwogICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzLnJlbW92ZUxhc3QoKTsKQEAgLTEzMCwx
NiArMTMzLDE2IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAg
ICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1
cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAg
ICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAotICAgICAgICBm
b3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3Bz
KCk7IGxvb3BJbmRleC0tOykgewotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AmIGxvb3Ag
PSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7Ci0gICAgICAgICAgICBC
YXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IDA7CisgICAgICAgIGZvciAodW5zaWduZWQg
bG9vcEluZGV4ID0gbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcElu
ZGV4LS07KSB7CisgICAgICAgICAgICBjb25zdCBDUFNOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3Jh
cGgubV9jcHNOYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgbmVl
ZHNOZXdQcmVIZWFkZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVj
ZXNzb3JJbmRleCA9IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vz
c29ySW5kZXgtLTspIHsKLSAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9
IGxvb3AuaGVhZGVyKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKLSAgICAgICAg
ICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29wLmhlYWRlcigp
LCBwcmVkZWNlc3NvcikpCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5k
ZXggPSBsb29wLmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNz
b3JJbmRleC0tOykgeworICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0g
bG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRlY2Vzc29yc1twcmVkZWNlc3NvckluZGV4XTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Nwc0RvbWluYXRvcnMtPmRvbWluYXRlcyhsb29w
LmhlYWRlcigpLm5vZGUoKSwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nUHJlSGVhZGVyKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGV4aXN0aW5nUHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0xNjUsMTQg
KzE2OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBBIHByZS1oZWFkZXIgaXMgbW9zdCB1
c2VmdWwgaWYgaXQncyBwb3NzaWJsZSB0byBleGl0IGZyb20gaXRzIHRlcm1pbmFsLiBIZW5jZQog
ICAgICAgICAgICAgLy8gaWYgdGhlIHRlcm1pbmFsIG9mIHRoZSBleGlzdGluZyBwcmUtaGVhZGVy
IGRvZXNuJ3QgYWxsb3cgZm9yIGV4aXQsIGJ1dCB0aGUgZmlyc3QKICAgICAgICAgICAgIC8vIG9y
aWdpbiBvZiB0aGUgbG9vcCBoZWFkZXIgZG9lcywgdGhlbiB3ZSBzaG91bGQgY3JlYXRlIGEgbmV3
IHByZS1oZWFkZXIuCi0gICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVyICYmIGxvb3Au
aGVhZGVyKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCisgICAgICAgICAgICBpZiAoIW5lZWRzTmV3
UHJlSGVhZGVyICYmIGxvb3AuaGVhZGVyKCkubm9kZSgpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSwog
ICAgICAgICAgICAgICAgICYmICFleGlzdGluZ1ByZUhlYWRlci0+dGVybWluYWwoKS0+b3JpZ2lu
LmV4aXRPSykKICAgICAgICAgICAgICAgICBuZWVkc05ld1ByZUhlYWRlciA9IHRydWU7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRl
cihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKSk7CisgICAgICAgICAgICBj
cmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkubm9k
ZSgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9uU2V0
LmV4ZWN1dGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOCArNTMsMTAgQEAgcHVibGljOgogICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwogICAgICAgICB9CiAKLSAgICAgICAg
dHJlYXRSb290QmxvY2sobV9ncmFwaC5ibG9jaygwKSwgaW5zZXJ0aW9uU2V0KTsKLSAgICAgICAg
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9ncmFwaC5ibG9jaygwKSk7CisgICAgICAgIGZvciAoQmFz
aWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9lbnRyeXBvaW50cykgeworICAgICAgICAg
ICAgdHJlYXRSb290QmxvY2soZW50cnlwb2ludCwgaW5zZXJ0aW9uU2V0KTsKKyAgICAgICAgICAg
IGluc2VydGlvblNldC5leGVjdXRlKGVudHJ5cG9pbnQpOworICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNjcsNyArNjksMTMgQEAgcHVibGljOgogICAgICAgICB7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNpemUoKTsgaSsr
KSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKLSAgICAgICAg
ICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09IG1fZ3JhcGgu
bV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAg
IGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGl0ZXIgPSBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLmZpbmQoYmxvY2spOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlciAh
PSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmVuZCgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlID09IGl0ZXItPnZhbHVlW25v
ZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+b3AoKSA9PSBTZXRB
cmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBmbHVzaEFjY2Vzc0RhdGEgPSBjdXJyZW50Qmxv
Y2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CkBAIC0xMjgsMTIgKzEzNiwxMiBAQCBwdWJs
aWM6CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT52YXJpYWJsZXNB
dFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgaSsrKSB7CiAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpOwotICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiBhY2Nlc3NEYXRhOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBudWxscHRyLCBpbml0aWFsQWNjZXNzTm9kZXMub3BlcmFuZChvcGVyYW5kKS0+b3AoKSA9
PSBGbHVzaCk7IC8vIFdlIHNob3VsZCBoYXZlIGluc2VydGVkIGEgRmx1c2ggYmVmb3JlIGFueSBT
ZXRMb2NhbC9TZXRBcmd1bWVudCBmb3IgdGhlIGxvY2FsIHRoYXQgd2UgYXJlIGFuYWx5emluZyBu
b3cuCi0gICAgICAgICAgICBhY2Nlc3NEYXRhID0gaW5pdGlhbEFjY2Vzc0RhdGEub3BlcmFuZChv
cGVyYW5kKTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogYWNjZXNzRGF0YSA9IGlu
aXRpYWxBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICBERkdfQVNTRVJU
KG1fZ3JhcGgsIG51bGxwdHIsIGFjY2Vzc0RhdGEpOwogICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoMCwgU3BlY05vbmUsIAogICAgICAgICAgICAgICAgIFNldExvY2FsLCBvcmln
aW4sIE9wSW5mbyhhY2Nlc3NEYXRhKSwgRWRnZSh1bmRlZmluZWQpKTsKKyAgICAgICAgICAgIGFj
Y2Vzc0RhdGEtPm1lcmdlU2hvdWxkTmV2ZXJVbmJveCh0cnVlKTsgLy8gV2UgZG9uJ3Qga25vdyBp
ZiB3ZSBjYW4gZXhpdCBoZXJlLgogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0
LDYgKzg0LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAg
IGNhc2UgSW50NTJSZXA6CiAgICAgY2FzZSBWYWx1ZVJlcDoKICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBMb2dpY2Fs
Tm90OgogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29wcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJKHJldmlzaW9u
IDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDE4ICszNCwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpOYXR1cmFsTG9vcDxDRkc+IE5hdHVyYWxMb29w
OwotCi1jbGFzcyBOYXR1cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPiB7
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIE5hdHVyYWxMb29wcyA6IHB1Ymxp
YyBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TmF0dXJhbExvb3BzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBOYXR1cmFsTG9vcHMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IFdURjo6TmF0dXJhbExvb3Bz
PENGRz4oKmdyYXBoLm1fY2ZnLCBncmFwaC5lbnN1cmVEb21pbmF0b3JzKCksIHZhbGlkYXRpb25F
bmFibGVkKCkpCisgICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4oc2VsZWN0Q0ZH
PENGR0tpbmQ+KGdyYXBoKSwgZW5zdXJlRG9taW5hdG9yc0ZvckNGRzxDRkdLaW5kPihncmFwaCks
IHZhbGlkYXRpb25FbmFibGVkKCkpCiAgICAgewogICAgIH0KIH07CiAKK3VzaW5nIFNTQU5hdHVy
YWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxTU0FDRkc+OwordXNpbmcgQ1BTTmF0dXJhbExvb3Ag
PSBXVEY6Ok5hdHVyYWxMb29wPENQU0NGRz47CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc3LDcgKzEyNzcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBvcCgpID09IEJyYW5jaDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc1N3
aXRjaCgpCisgICAgYm9vbCBpc1N3aXRjaCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
b3AoKSA9PSBTd2l0Y2g7CiAgICAgfQpAQCAtMTM3Miw2ICsxMzcyLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPT0gc3dpdGNoRGF0YSgpLT5jYXNlcy5zaXpl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN3aXRjaERhdGEoKS0+ZmFsbFRocm91Z2guYmxvY2s7
CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKGluZGV4KSB7CiAgICAgICAgIGNhc2UgMDoK
ICAgICAgICAgICAgIGlmIChpc0p1bXAoKSkKQEAgLTE1NDEsNiArMTU0MiwxOCBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChvcCgpID09IElkZW50aXR5V2l0aFByb2ZpbGUpOwogICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8U3BlY3VsYXRlZFR5cGU+KCk7CiAgICAgfQorCisgICAgdWludDMy
X3QgY2F0Y2hPU1JFbnRyeUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgp
ID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPHVpbnQz
Ml90PigpOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRUeXBlIGNhdGNoTG9jYWxQcmVkaWN0aW9u
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEV4dHJhY3RDYXRjaExvY2FsKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvMi5hczxTcGVjdWxhdGVkVHlwZT4oKTsKKyAgICB9CiAgICAg
CiAgICAgYm9vbCBoYXNDZWxsT3BlcmFuZCgpCiAgICAgewpAQCAtMTkzNiw3ICsxOTQ5LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQo
KTsKICAgICB9Ci0gICAgCisKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNSZXN1bHQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzky
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFNwZWNpYWwgbm9k
ZSBmb3IgT1NSIGVudHJ5IGludG8gdGhlIEZUTC4gSW5kaWNhdGVzIHRoYXQgd2UncmUgbG9hZGlu
ZyBhIGxvY2FsICovXAogICAgIC8qIHZhcmlhYmxlIGZyb20gdGhlIHNjcmF0Y2ggYnVmZmVyLiAq
L1wKICAgICBtYWNybyhFeHRyYWN0T1NSRW50cnlMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAg
bWFjcm8oRXh0cmFjdENhdGNoTG9jYWwsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBU
aWVyLXVwIGNoZWNrcyBmcm9tIHRoZSBERkcgdG8gdGhlIEZUTC4gKi9cCiAgICAgbWFjcm8oQ2hl
Y2tUaWVyVXBJbkxvb3AsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlZN
SW5saW5lcy5oIgpAQCAtMzM2LDYgKzMzNyw3MSBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhl
Y1N0YXRlKiBleGVjLCBDCiAgICAgcmV0dXJuIHNjcmF0Y2g7CiB9CiAKK3ZvaWQqIHByZXBhcmVD
YXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFbnRyeVRvREZH
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChjb2RlQmxvY2stPmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdK
SVQpOworICAgIERGRzo6SklUQ29kZSogaml0Q29kZSA9IGNvZGVCbG9jay0+aml0Q29kZSgpLT5k
ZmcoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChqaXRDb2RlKTsKKworICAgIERGRzo6Q2F0Y2hFbnRy
eXBvaW50RGF0YSogY2F0Y2hFbnRyeXBvaW50ID0gaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeURhdGFG
b3JCeXRlY29kZUluZGV4KGJ5dGVjb2RlSW5kZXgpOworICAgIGlmICghY2F0Y2hFbnRyeXBvaW50
KSB7CisgICAgICAgIC8vIFRoaXMgY2FuIGJlIG51bGwgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2Vz
LiBUaGUgbW9zdCBjb21tb24gaXMgdGhhdCB3ZSBkaWRuJ3QKKyAgICAgICAgLy8gY29tcGlsZSB0
aGlzIG9wX2NhdGNoIGFzIGFuIGVudHJ5cG9pbnQgc2luY2UgaXQgaGFkIG5ldmVyIGV4ZWN1dGVk
IHdoZW4gc3RhcnRpbmcKKyAgICAgICAgLy8gdGhlIGNvbXBpbGF0aW9uLgorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICAvLyBXZSdyZSBvbmx5IGFsbG93ZWQgdG8gT1NSIGVu
dGVyIGlmIHdlJ3ZlIHByb3ZlbiB3ZSBoYXZlIGNvbXBhdGlibGUgYXJndW1lbnQgdHlwZXMuCisg
ICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7IGFyZ3VtZW50IDwgY2F0Y2hFbnRyeXBvaW50
LT5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJn
dW1lbnQpKS5qc1ZhbHVlKCk7CisgICAgICAgIHN3aXRjaCAoY2F0Y2hFbnRyeXBvaW50LT5tX2Fy
Z3VtZW50Rm9ybWF0c1thcmd1bWVudF0pIHsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRJbnQz
MjoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVz
aGVkQ2VsbDoKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6
OkZsdXNoZWRCb29sZWFuOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0Jvb2xlYW4oKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIERGRzo6RGVhZEZsdXNoOgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgYXJn
dW1lbnQgaXMgbm90IGFsaXZlLiBUaGVyZWZvcmUsIGl0J3MgYWxsb3dlZCB0byBiZSBhbnkgdHlw
ZS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEpTVmFsdWU6
CisgICAgICAgICAgICAvLyBBbiBhcmd1bWVudCBpcyB0cml2aWFsbHkgYSBKU1ZhbHVlLgorICAg
ICAgICAgICAgYnJlYWs7IAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGZy
YW1lU2l6ZUZvckNoZWNrID0gaml0Q29kZS0+Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4ZWN1dGlvbkFuZEV4aXQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIXZtLmVuc3VyZVN0YWNrQ2Fw
YWNpdHlGb3IoJmV4ZWMtPnJlZ2lzdGVycygpW3ZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGZyYW1l
U2l6ZUZvckNoZWNrKS5vZmZzZXQoKV0pKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBBU1NFUlQoSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpXS51Lm9wY29kZSkgPT0gb3BfY2F0Y2gp
OworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKClbZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSArIDNdLnUucG9pbnRlcik7CisgICAgSlNW
YWx1ZSogZGF0YUJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+KGppdENvZGUtPmNh
dGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSk7CisgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2Zp
bGUpIHsKKyAgICAgICAgaWYgKCFWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQpLmlz
TG9jYWwoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGF0YUJ1ZmZlcltpbmRleF0g
PSBleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgICAg
ICsraW5kZXg7CisgICAgfSk7CisKKyAgICBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5z
ZXRBY3RpdmVMZW5ndGgoc2l6ZW9mKEpTVmFsdWUpICogaW5kZXgpOworCisgICAgcmV0dXJuIGpp
dENvZGUtPmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoY2F0Y2hFbnRyeXBvaW50LT5tX21hY2hp
bmVDb2RlT2Zmc2V0KTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
bnRyeS5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIkRGR0ZsdXNoRm9y
bWF0LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+
CiAKQEAgLTY5LDkgKzcwLDIwIEBAIGlubGluZSB1bnNpZ25lZCBnZXRPU1JFbnRyeURhdGFCeXRl
Y29kZUkKICAgICByZXR1cm4gb3NyRW50cnlEYXRhLT5tX2J5dGVjb2RlSW5kZXg7CiB9CiAKK3N0
cnVjdCBDYXRjaEVudHJ5cG9pbnREYXRhIHsKKyAgICB1bnNpZ25lZCBtX2J5dGVjb2RlSW5kZXg7
CisgICAgdW5zaWduZWQgbV9tYWNoaW5lQ29kZU9mZnNldDsKKyAgICAvLyBXZSB1c2UgdGhpcyB3
aGVuIGRvaW5nIE9TUiBlbnRyeSBhdCBjYXRjaC4gV2UgcHJvdmUgdGhlIGFyZ3VtZW50cworICAg
IC8vIGFyZSBvZiB0aGUgZXhwZWN0ZWQgdHlwZSBiZWZvcmUgZW50ZXJpbmcgYXQgYSBjYXRjaCBi
bG9jay4KKyAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1fYXJndW1lbnRGb3JtYXRzOworfTsKKwog
Ly8gUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkYXRhIGJ1ZmZlciB0aGF0IHRoZSBPU1IgZW50cnkg
dGh1bmsgd2lsbCByZWNvZ25pemUgYW5kCiAvLyBwYXJzZS4gSWYgdGhpcyByZXR1cm5zIG51bGws
IGl0IG1lYW5zIAogdm9pZCogcHJlcGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCisvLyBJZiBudWxsIGlzIHJldHVybmVkLCB3ZSBj
YW4ndCBPU1IgZW50ZXIuIElmIGl0J3Mgbm90IG51bGwsIGl0J3MgdGhlIFBDIHRvIGp1bXAgdG8u
Cit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKICNlbHNlCiBpbmxpbmUgdm9pZCogcHJlcGFyZU9TUkVudHJ5
KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkKSB7IHJldHVybiAwOyB9CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9u
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lu
bGluZXMuaCIKICNpbmNsdWRlICJERkdCbG9ja0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRG
R0NGRy5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHTG9vcFByZUhlYWRl
ckNyZWF0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgpAQCAtNTQsNyArNTUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlSW5kZXggIT0gVUlOVF9N
QVgpOwogICAgICAgICAKICAgICAgICAgLy8gTmVlZGVkIGJ5IGNyZWF0ZVByZUhlYWRlcigpLgot
ICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1
cmVDUFNEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
ID0gbV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIApAQCAtMTEyLDE2ICsxMTMsMTcg
QEAgcHVibGljOgogICAgICAgICAvLyB0eXBlIGNoZWNrcyB0byBoZXJlLgogICAgICAgICBvcmln
aW4gPSB0YXJnZXQtPmF0KDApLT5vcmlnaW47CiAgICAgICAgIAorICAgICAgICBWZWN0b3I8Tm9k
ZSosIDg+IG5ld0FyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmlu
ZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAoaW50IGFyZ3VtZW50ID0g
MDsgYXJndW1lbnQgPCBiYXNlbGluZS0+bnVtUGFyYW1ldGVycygpOyArK2FyZ3VtZW50KSB7CiAg
ICAgICAgICAgICBOb2RlKiBvbGROb2RlID0gdGFyZ2V0LT52YXJpYWJsZXNBdEhlYWQuYXJndW1l
bnQoYXJndW1lbnQpOwogICAgICAgICAgICAgaWYgKCFvbGROb2RlKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSnVzdCBmb3Igc2FuaXR5LCBhbHdheXMgaGF2ZSBhIFNldEFyZ3VtZW50IGV2ZW4gaWYg
aXQncyBub3QgbmVlZGVkLgotICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBtX2dyYXBoLm1fYXJn
dW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICBvbGROb2RlID0gbmV3QXJndW1lbnRz
W2FyZ3VtZW50XTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBuZXdS
b290LT5hcHBlbmROb2RlKAogICAgICAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBTZXRB
cmd1bWVudCwgb3JpZ2luLAogICAgICAgICAgICAgICAgIE9wSW5mbyhvbGROb2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVu
dF0gPSBub2RlOworICAgICAgICAgICAgbmV3QXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7CiAg
ICAgICAgIH0KIAogICAgICAgICBmb3IgKGludCBsb2NhbCA9IDA7IGxvY2FsIDwgYmFzZWxpbmUt
Pm1fbnVtQ2FsbGVlTG9jYWxzOyArK2xvY2FsKSB7CkBAIC0xMzksOCArMTQxLDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIE9wSW5mbyhjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgaW5zZXJ0aW9u
U2V0LCB0YXJnZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgp
OworCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkg
PT0gMSk7CisgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50c1swXSA9IG5ld1Jvb3Q7CisgICAg
ICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobmV3Um9vdCwgbmV3QXJndW1lbnRzKTsK
KworICAgICAgICBtX2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1f
Z3JhcGgpOworCiAgICAgICAgIG1fZ3JhcGgucmVzZXRSZWFjaGFiaWxpdHkoKTsKICAgICAgICAg
bV9ncmFwaC5raWxsVW5yZWFjaGFibGVCbG9ja3MoKTsKKwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxv
Y2F0aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsNyArNzI3LDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIG1fZ3JhcGguY29tcHV0ZVJlZkNvdW50cygpOwogICAgICAgICBtX2dy
YXBoLmluaXRpYWxpemVOb2RlT3duZXJzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5h
dG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAg
cGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIHBlcmZvcm1PU1JBdmFp
bGFiaWxpdHlBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAgbV9jb21iaW5lZExpdmVuZXNzID0g
Q29tYmluZWRMaXZlbmVzcyhtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDkgKzM2Niw4IEBAIFBsYW46OkNv
bXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAvLyBJZiB3ZSdyZSBkb2luZyB2
YWxpZGF0aW9uLCB0aGVuIHJ1biBzb21lIGFuYWx5c2VzLCB0byBnaXZlIHRoZW0gYW4gb3Bwb3J0
dW5pdHkKICAgICAvLyB0byBzZWxmLXZhbGlkYXRlLiBOb3cgaXMgYXMgZ29vZCBhIHRpbWUgYXMg
YW55IHRvIGRvIHRoaXMuCiAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKLSAgICAgICAg
ZGZnLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgZGZnLmVuc3VyZU5hdHVyYWxMb29wcygp
OwotICAgICAgICBkZmcuZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOworICAgICAgICBkZmcuZW5z
dXJlQ1BTRG9taW5hdG9ycygpOworICAgICAgICBkZmcuZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7
CiAgICAgfQogCiAgICAgc3dpdGNoIChtb2RlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHJldmlzaW9uIDIyMDk3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHUHJl
UG9zdE51bWJlcmluZy5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdC
bG9ja01hcElubGluZXMuaCIKLSNpbmNsdWRlICJERkdCbG9ja1dvcmtsaXN0LmgiCi0jaW5jbHVk
ZSAiREZHR3JhcGguaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1QcmVQ
b3N0TnVtYmVyaW5nOjpQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJiBncmFwaCkKLXsKLSAgICBtX21h
cCA9IEJsb2NrTWFwPE51bWJlcmluZz4oZ3JhcGgpOwotICAgIAotICAgIFBvc3RPcmRlckJsb2Nr
V29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChncmFwaC5ibG9jaygwKSk7Ci0g
ICAgdW5zaWduZWQgbmV4dFByZU51bWJlciA9IDA7Ci0gICAgdW5zaWduZWQgbmV4dFBvc3ROdW1i
ZXIgPSAwOwotICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkp
IHsKLSAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRl
cjo6UHJlOgotICAgICAgICAgICAgbV9tYXBbaXRlbS5ub2RlXS5tX3ByZU51bWJlciA9IG5leHRQ
cmVOdW1iZXIrKzsKLSAgICAgICAgICAgIHdvcmtsaXN0LnB1c2hQb3N0KGl0ZW0ubm9kZSk7Ci0g
ICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGl0ZW0ubm9kZS0+c3VjY2Vz
c29ycygpKQotICAgICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2goc3VjY2Vzc29yKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6OlBvc3Q6Ci0gICAgICAgICAg
ICBtX21hcFtpdGVtLm5vZGVdLm1fcG9zdE51bWJlciA9IG5leHRQb3N0TnVtYmVyKys7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotUHJlUG9zdE51bWJlcmluZzo6
flByZVBvc3ROdW1iZXJpbmcoKSB7IH0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzo6REZHOwotCi12b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgRWRnZUtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2gg
KGtpbmQpIHsKLSAgICBjYXNlIEZvcndhcmRFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkZvcndh
cmRFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyb3NzRWRnZToKLSAgICAgICAg
b3V0LnByaW50KCJDcm9zc0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQmFja0Vk
Z2U6Ci0gICAgICAgIG91dC5wcmludCgiQmFja0VkZ2UiKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICAKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkocmV2aXNpb24g
MjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJERkdCbG9ja01h
cC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotZW51bSBFZGdlS2lu
ZCB7Ci0gICAgRm9yd2FyZEVkZ2UsCi0gICAgQ3Jvc3NFZGdlLAotICAgIEJhY2tFZGdlCi19Owot
Ci1jbGFzcyBQcmVQb3N0TnVtYmVyaW5nIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQcmVQ
b3N0TnVtYmVyaW5nKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAg
ICBQcmVQb3N0TnVtYmVyaW5nKEdyYXBoJik7Ci0gICAgflByZVBvc3ROdW1iZXJpbmcoKTsKLQot
ICAgIHVuc2lnbmVkIHByZU51bWJlcihCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4g
bV9tYXBbYmxvY2tdLm1fcHJlTnVtYmVyOyB9Ci0gICAgdW5zaWduZWQgcG9zdE51bWJlcihCYXNp
Y0Jsb2NrKiBibG9jaykgY29uc3QgeyByZXR1cm4gbV9tYXBbYmxvY2tdLm1fcG9zdE51bWJlcjsg
fQotICAgIAotICAgIC8vIElzIGZyb20gYSBzdHJpY3QgYW5jZXN0b3Igb2YgdG8/Ci0gICAgYm9v
bCBpc1N0cmljdEFuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJlTnVtYmVyKGZyb20pIDwgcHJlTnVtYmVyKHRv
KQotICAgICAgICAgICAgJiYgcG9zdE51bWJlcihmcm9tKSA+IHBvc3ROdW1iZXIodG8pOwotICAg
IH0KLSAgICAKLSAgICBib29sIGlzQW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Js
b2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmcm9tID09IHRvIHx8IGlzU3Ry
aWN0QW5jZXN0b3JPZihmcm9tLCB0byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wgaXNTdHJpY3RE
ZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gaXNTdHJpY3RBbmNlc3Rvck9mKHRvLCBmcm9tKTsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCBpc0Rlc2NlbmRhbnRPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2Nr
KiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0FuY2VzdG9yT2YodG8sIGZyb20p
OwotICAgIH0KLSAgICAKLSAgICAvLyBUaGlzIHdpbGwgZ2l2ZSBhIGJvZ3VzIGFuc3dlciBpZiB0
aGVyZSBpcyBhY3R1YWxseSBubyBzdWNoIGVkZ2UuIElmIHlvdSB3YW50IHRvIGRldGVybWluZQot
ICAgIC8vIGlmIHRoZXJlIGlzIGFueSBzdWNoIGVkZ2UsIHlvdSBoYXZlIHRvIGRvIGl0IHlvdXJz
ZWxmLgotICAgIEVkZ2VLaW5kIGVkZ2VLaW5kKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sq
IHRvKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGlzU3RyaWN0RGVzY2VuZGFudE9mKHRvLCBm
cm9tKSkKLSAgICAgICAgICAgIHJldHVybiBGb3J3YXJkRWRnZTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChpc0FuY2VzdG9yT2YodG8sIGZyb20pKQotICAgICAgICAgICAgcmV0dXJuIEJhY2tFZGdl
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIENyb3NzRWRnZTsKLSAgICB9Ci0gICAgCi1wcml2
YXRlOgotICAgIHN0cnVjdCBOdW1iZXJpbmcgewotICAgICAgICB1bnNpZ25lZCBtX3ByZU51bWJl
cjsKLSAgICAgICAgdW5zaWduZWQgbV9wb3N0TnVtYmVyOwotICAgIH07Ci0KLSAgICBCbG9ja01h
cDxOdW1iZXJpbmc+IG1fbWFwOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi1u
YW1lc3BhY2UgV1RGIHsKLQotdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpE
Rkc6OkVkZ2VLaW5kKTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbklu
amVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgewogICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9j
ayk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhl
IGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAg
ICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdp
dGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVl
OworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9m
aWxlRm9yQXJndW1lbnQoYXJnKTsKICAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgK
KworICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
cHJlZGljdCgKICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAgICAgICAgICAgc2V0UHJl
ZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRjaExvY2FsUHJlZGljdGlvbigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lz
dGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAgICBjYXNlIEdldER5bmFtaWNWYXI6IHsKICAgICAg
ICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5dGVjb2RlVG9wKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fZ3Jh
cGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRv
cnMoKTsKICAgICAgICAgCiAgICAgICAgIFNTQUNhbGN1bGF0b3Igc3NhQ2FsY3VsYXRvcihtX2dy
YXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dyYXBoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkocmV2
aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTIgKzk1LDEyIEBAIFNTQUNhbGN1bGF0b3I6
OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUKIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxj
dWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVmKEJhc2ljQmxvY2sqIGJsb2NrLCBWYXJpYWJsZSog
dmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9kb21p
bmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOworICAgIHJldHVybiByZWFjaGluZ0RlZkF0
VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9jayksIHZhcmlhYmxlKTsKIH0K
IAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0VGFpbChC
YXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewotICAgIGZvciAoOyBibG9j
azsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKKyAgICBmb3Ig
KDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmlkb20oYmxvY2spKSB7
CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1fZGF0YVtibG9ja10ubV9kZWZzLmdldCh2YXJpYWJs
ZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVmOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBo
aUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9pZCBjb21wdXRlUGhpcyhjb25zdCBQaGlJbnNlcnRp
b25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBu
dWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9ycyk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMpOwogICAgICAgICAKICAgICAgICAg
Zm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBtX3ZhcmlhYmxlcykgewotICAgICAgICAgICAgbV9n
cmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VG
cm9udGllck9mKAorICAgICAgICAgICAgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmZvckFsbEJs
b2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAogICAgICAgICAgICAgICAg
IHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMsCiAgICAgICAgICAgICAgICAgWyZdIChCYXNpY0Js
b2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHBoaU5vZGUg
PSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw4IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpOwogICAgICAgICAKICAgICAg
ICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50cygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURv
bWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5jbGVhckNQU0NGR0RhdGEoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBpZiAodmVy
Ym9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1h
dGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJlIGluc2VydGVkLiBUaGlz
IGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVtCi0gICAgICAgIC8vIHll
dC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVtIGJlY2F1c2UgU1NBQ2Fs
Y3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25v
dyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0
by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAgICAgICAgICAgWyZdIChT
U0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAt
PiBOb2RlKiB7CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgoKV07CkBAIC0zODEsMTgg
KzM4MiwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+dmFsdWVzQXRIZWFkLmNsZWFy
KCk7CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2Nr
OjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTsp
IHsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiBE
RkcgU1NBOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5z
aXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBv
aW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CisgICAgICAgIG1f
Z3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5zaXplKCkpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAg
ICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAotICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsK
KyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQoYXJndW1lbnRz
W2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobm9kZSk7CiAg
ICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldID0gZm9y
bWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5vZGU7IC8vIFJlY29y
ZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4
aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3Jk
IHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhp
dCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgubV9mb3Jt
ID0gU1NBOwpAQCAtNDE2LDcgKzQyMSwxMiBAQCBwcml2YXRlOgogCiBib29sIHBlcmZvcm1TU0FD
b252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICByZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVy
c2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWdyYXBoLm1faXNJblNTQUNv
bnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24gPSB0cnVlOworICAgIGJv
b2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZ3JhcGgubV9pc0lu
U1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw3
IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIE5l
d1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NjM3LDYgKzU2MzcsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICB1bnJlYWNoYWJsZShub2RlKTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGFnKHRoaXMpOworICAgICAgICBH
UFJUZW1wb3JhcnkgcGF5bG9hZCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRl
bXAuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0YWdHUFIgPSB0YWcuZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyBwYXlsb2FkR1BSID0gcGF5bG9hZC5ncHIoKTsKKworICAgICAgICBKU1ZhbHVlKiBwdHIg
PSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4obV9qaXQuaml0Q29kZSgpLT5jYXRjaE9TUkVu
dHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25vZGUtPmNhdGNoT1NSRW50cnlJbmRleCgpXTsKKyAg
ICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQ
Uik7CisgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGVtcEdQUiwg
VGFnT2Zmc2V0KSwgdGFnR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6
QWRkcmVzcyh0ZW1wR1BSLCBQYXlsb2FkT2Zmc2V0KSwgcGF5bG9hZEdQUik7CisgICAgICAgIGpz
VmFsdWVSZXN1bHQodGFnR1BSLCBwYXlsb2FkR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBV
cHNpbG9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTk3LDYg
KzU5OTcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjb21waWxlQ2hlY2tTdWJDbGFzcyhub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBj
YXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZyZWludGVy
cHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXIt
PmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigp
OworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0
ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1w
R1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVtcEdQUiwgbm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVOQUJMRShGVExfSklUKSAgICAgICAgCiAgICAg
Y2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBj
YWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBAIC02MDg1LDYgKzYwOTUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0pOwogICAgICAg
ICBicmVhazsKICAgICB9CisKICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzA2LDYgKzE3MDYsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1cm47CiAgICAgfQogCisg
ICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgIG1faml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9m
ZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAg
Q0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1faml0LmVtaXRT
YXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tS
ZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0
LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgIH0KKwogICAgIG1f
c3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CiAgICAgCiAgICAg
bV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKQEAgLTE4MDAsOCArMTgwNyw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICBBU1NFUlQoIW1f
Y3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBD
b2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1faml0LmdyYXBo
KCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+
dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtUGFy
YW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1faml0LmdyYXBoKCkubV9h
cmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVudHNbaV07CiAgICAgICAg
IGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRv
bid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgogICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xODg1LDEyICsxODkzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNyZWF0ZU9T
UkVudHJpZXMoKQogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxv
Y2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRy
eSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KLSAgICAgICAgLy8gaGVyZSBpZiBuZWVk
IGJlLgotICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVti
bG9ja0luZGV4XSk7CisgICAgICAgIGlmIChibG9jay0+aXNPU1JUYXJnZXQgfHwgYmxvY2stPmlz
Q2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2
ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVtCisgICAgICAgICAgICAv
LyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1f
aml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAg
LTE5MDEsMTAgKzE5MDgsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMo
TGluawogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxv
Y2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCisgICAgICAgIGlmICghYmxvY2stPmlzT1NS
VGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNb
b3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIGlmIChibG9jay0+aXNDYXRj
aEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1faml0LmdyYXBoKCkubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICBhdXRvJiBhcmd1
bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZlY3RvcjxGbHVzaEZvcm1h
dD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3Ig
KE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7CisgICAgICAgICAgICAgICAg
aWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZsdXNo
Rm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgp
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmx1c2hGb3JtYXQgPT0gRmx1c2hlZEludDMy
IHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRDZWxsIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRC
b29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRKU1ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChmbHVzaEZvcm1hdCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51
bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1f
aml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRy
eUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc09TUlRhcmdldCk7CisgICAg
ICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JF
bnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIG1faml0
LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCk7CisKICAgICBBU1NFUlQo
b3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgpKTsKICAgICAKICAgICBpZiAo
dmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50
RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVu
KCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAg
IG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAogICAgICAgICAvLyBF
c3RpbWF0ZSBiYXNpYyBibG9jayBleGVjdXRpb24gY291bnRzIGJhc2VkIG9uIGxvb3AgZGVwdGgu
CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3Mo
KTsgYmxvY2tJbmRleC0tOykgewpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBi
bG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxv
b3BEZXB0aChibG9jaykpOworICAgICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93
KDEwLCBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYnJhbmNoIHdlaWdodHMgYmFzZWQg
b24gZXhlY3V0aW9uIGNvdW50cy4gVGhpcyBpc24ndCBxdWl0ZSBjb3JyZWN0LiBJdCdsbApAQCAt
ODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBwbHlDb3VudHMoZGF0YS0+
ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIAorCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjA5NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsMTggKzI2OCwyNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBo
Lm1fZm9ybSAhPSBTU0EpOworCisgICAgICAgICAgICBpZiAobV9ncmFwaC53aWxsQ2F0Y2hFeGNl
cHRpb25Jbk1hY2hpbmVGcmFtZShtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVsYXggdGhpczoKKyAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUw
ODI0CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIE5vZGUqIHNldExvY2FsID0gbnVsbHB0cjsKICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBsb2NhbCA9IG1fbm9kZS0+bG9jYWwoKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ub2RlSW5kZXg7IGktLTspIHsKICAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9ibG9jay0+YXQoaSk7CisKICAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5sb2NhbCgpID09IGxvY2FsKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHNldExvY2FsID0gbm9kZTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKGFjY2Vzc2VzT3Zl
cmxhcChtX2dyYXBoLCBub2RlLCBBYnN0cmFjdEhlYXAoU3RhY2ssIGxvY2FsKSkpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmICghc2V0TG9jYWwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgc3RhdGljIEZ1
bmN0aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxGVAogICAgIHJldHVybiBmdGxXaGl0ZWxpc3Q7
CiB9CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gQ1BTTmF0dXJhbExvb3A7CisKIGNsYXNzIFRpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVibGljOgogICAgIFRpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQpAQCAtODEsOCArODMsOCBAQCBwdWJs
aWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0ZUTCgpKQogICAgICAgICAg
ICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVu
c3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9
ICptX2dyYXBoLm1fbmF0dXJhbExvb3BzOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVy
YWxMb29wcygpOworICAgICAgICBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dy
YXBoLm1fY3BzTmF0dXJhbExvb3BzOwogICAgICAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29w
KiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wVG9Mb29wSGludCA9IGJ1aWxkTmF0dXJhbExvb3BUb0xv
b3BIaW50TWFwKG5hdHVyYWxMb29wcyk7CiAKICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgTG9v
cEhpbnREZXNjcmlwdG9yPiB0aWVyVXBIaWVyYXJjaHk7CkBAIC0xODIsNyArMTg0LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgSGFzaE1hcDxjb25zdCBO
YXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChjb25z
dCBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKKyAgICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxM
b29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKGNvbnN0IENQU05h
dHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQogICAgIHsKICAgICAgICAgSGFzaE1hcDxjb25zdCBO
YXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcHNUb0xvb3BIaW50OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwx
MCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1
ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVu
dGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50
cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRl
eCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBk
b2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgYW4gZW50cnlwb2ludC4KKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhi
bG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+
b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9L
KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExv
Y2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2lu
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MywxMCArODMsMTMgQEAgcHVibGljOgogICAgICAgICAvLyBO
Qi4gVGhpcyBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciBwZXJmb3JtYW5jZSwgc2luY2UgaXQgaXMg
bm90IGludGVuZGVkIHRvIHJ1bgogICAgICAgICAvLyBpbiByZWxlYXNlIGJ1aWxkcy4KIAotICAg
ICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2YXJpYWJsZXMgYXQgdGhlIGhlYWQgb2Yg
dGhlIHJvb3QgYmxvY2sgYXJlIGRlYWQuCi0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dy
YXBoLmJsb2NrKDApOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm9vdC0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgIFZfRVFVQUwo
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCByb290KSwgc3RhdGljX2Nhc3Q8Tm9kZSo+KDAp
LCByb290LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkpOworICAgICAgICBWQUxJREFURSgobV9n
cmFwaC5ibG9jaygwKSksIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhtX2dyYXBoLmJs
b2NrKDApKSk7CisKKyAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCBhbGwgbG9jYWwgdmFyaWFibGVz
IGF0IHRoZSBoZWFkIG9mIGFsbCBlbnRyeXBvaW50cyBhcmUgZGVhZC4KKyAgICAgICAgZm9yIChC
YXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFk
Lm51bWJlck9mTG9jYWxzKCk7ICsraSkKKyAgICAgICAgICAgICAgICBWX0VRVUFMKCh2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpKSwgZW50cnlwb2ludCksIHN0YXRpY19jYXN0PE5vZGUqPihudWxs
cHRyKSwgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGkpKTsKKyAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgLy8gVmFsaWRhdGUgcmVmIGNvdW50cyBhbmQgdXNlcy4KICAgICAg
ICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5u
dW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTGluay5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0LDggQEAgdm9pZCBsaW5r
KFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmlnaW5TdGFjaygpLAogICAg
ICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxv
Y2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCksICIsIGluc3RydWN0aW9u
IGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIp
KTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAg
Z3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgICAg
IAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNp
b24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAgICAgCi0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAg
ICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmluZyBsb3dlcmluZy5cbiIp
OwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBtX25vZGUg
PSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwg
Q29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFsdWU7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGkt
LTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwor
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgICAgIG1fb3V0
LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0g
dmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAgICAKQEAgLTQ0Myw3ICs0
NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Jsb2NrKiB0YXJnZXQgPSBt
X2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYgKCF0YXJnZXQpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaC5tX2RvbWluYXRv
cnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAgICAgICAgICAgaWYgKG1f
Z3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxvY2ssIHRhcmdldCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKQogICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAiIHdpbGwgYmFpbCBhbHNv
LlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBA
IC0xNDQzMyw3ICsxNDQzNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoIXZhbHVl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIW1fZ3JhcGgubV9kb21p
bmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQorICAgICAgICBp
ZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9o
aWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyMDk3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTc5
Niw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGludCwgaW50MzJfdCwgaW50MzJf
dCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpLCB1aW50MzJfdCk7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUND
LCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJRCk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRpb25fRUpJLCBHUFJS
ZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZXMuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0NjMsMTMgQEAgQUxXQVlT
X0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJldHVybiBjYWxsOwogfQog
CitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50MzJfdCBhcmcxKQoreworICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkpOworICAgIHVwZGF0ZVRv
cENhbGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Cit9CisKICNp
ZiBVU0UoSlNWQUxVRTY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OmNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBpbnQzMl90IGFyZzIsIGludDMyX3QgYXJnMykKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODU2LDYgKzg1NiwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlv
biogY3VyCiAKICAgICB1bnNpZ25lZCB0aHJvd25WYWx1ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCByZWdUMSwgcmVnVDApOwor
CisgICAgLy8gRklYTUU6IGNvbnNpZGVyIGlubGluZSBjYWNoaW5nIHRoZSBwcm9jZXNzIG9mIGRv
aW5nIE9TUiBlbnRyeSwgaW5jbHVkaW5nCisgICAgLy8gYXJndW1lbnQgdHlwZSBwcm9vZnMsIHN0
b3JpbmcgbG9jYWxzIHRvIHRoZSBidWZmZXIsIGV0YworICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTgKKworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBhdXRvIHNraXBP
U1JFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRS
ZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsKKyAgICBza2lw
T1NSRW50cnkubGluayh0aGlzKTsKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Cisg
ICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5w
b2ludGVyKTsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMSwgcmVn
VDApOworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFu
ZCwgcmVncyk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKCZwcm9maWxlLm1f
cHJvZmlsZSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1NCw2
ICs1NTQsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goSW5zdHJ1Y3Rpb24qIGN1cgogCiAg
ICAgbG9hZDY0KEFkZHJlc3MocmVnVDAsIEV4Y2VwdGlvbjo6dmFsdWVPZmZzZXQoKSksIHJlZ1Qw
KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpOworCisgICAgLy8gRklYTUU6IGNvbnNpZGVyIGlubGluZSBjYWNoaW5nIHRoZSBwcm9j
ZXNzIG9mIGRvaW5nIE9TUiBlbnRyeSwgaW5jbHVkaW5nCisgICAgLy8gYXJndW1lbnQgdHlwZSBw
cm9vZnMsIHN0b3JpbmcgbG9jYWxzIHRvIHRoZSBidWZmZXIsIGV0YworICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTgKKworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBh
dXRvIHNraXBPU1JFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOwor
ICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJldHVyblZhbHVlR1BSKTsK
KyAgICBza2lwT1NSRW50cnkubGluayh0aGlzKTsKKyAgICBpZiAoc2hvdWxkRW1pdFByb2ZpbGlu
ZygpKSB7CisgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0
YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5wb2ludGVyKTsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhy
ZWdUMCk7CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVy
YW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoJnByb2ZpbGUu
bV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9h
c3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjIwOTcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTUxNSw2ICsxNTE1LDE5IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1p
emVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDAp
OwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChF
eGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7
CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2Nr
KCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBl
KCkgIT0gSklUQ29kZTo6REZHSklUKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBv
cHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRleCkpOworfQorCiAjZW5kaWYKIAogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgJKHJldmlzaW9uIDIyMDk3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNiArMzE4LDcgQEAgdHlwZWRl
ZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09Q
RVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShFeGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90
KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhl
Y1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9O
ICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBl
ZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSos
IHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpT
cHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3RhdGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVk
ZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04gKlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNT
dGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTU3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNz
X0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CkBAIC0zOTgsNiArMzk5LDcg
QEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
ICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVp
bnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVk
SlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVj
U3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlND
ZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjM4
LDYgKzE2MzgsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwog
ICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJv
ZmlsZV9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworCisgICAgVmFsdWVQcm9maWxlQW5k
T3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFu
ZEJ1ZmZlcio+KHBjWzNdLnUucG9pbnRlcik7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICBwcm9maWxlLm1fcHJvZmls
ZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxl
Lm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsKKworICAgIExMSU5UX0VORCgpOworfQor
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90aHJvd19zdGFja19vdmVyZmxv
d19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyNCw2ICsxMjQsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hh
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X3RvX3Njb3BlKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lz
X3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIpOworTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX2NhdGNoKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwpOwogZXh0
ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJy
b3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCShyZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk5Nyw3ICsxOTk3
LDEwIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQogCiAgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCi0gICAg
ZGlzcGF0Y2goMykKKworICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3By
b2ZpbGVfY2F0Y2gpCisKKyAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfY2F0Y2hfbGVuZ3RoKQog
CiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShy
ZXZpc2lvbiAyMjA5NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTk3NCw2ICsxOTc0LDkgQEAgX2xs
aW50X29wX2NhdGNoOgogICAgIHN0b3JlcSB0MywgW2NmciwgdDIsIDhdCiAKICAgICB0cmFjZUV4
ZWN1dGlvbigpCisKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9m
aWxlX2NhdGNoKQorCiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAog
CkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDIyMDk3MCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsNyBAQAogCQk3MEVDQTYwQjFCMDI0MjY4MDA0NDk3
MzkgLyogU3ltYm9sSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1i
b2xJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwRUNBNjBDMUIwMjQyNjgw
MDQ0OTczOSAvKiBVbmlxdWVkU3RyaW5nSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmlxdWVkU3RyaW5nSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3OTM2RDZBOTFDOTlGOEFFMDAwRDFBRUQgLyogU21hbGxQdHJTZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU21hbGxQdHJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzk1MjEyMDIxRjQyNTg4ODAwQkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5nbGVSb290R3JhcGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRUM2QUUxRUIyMkFDNjAwREFERTM2IC8qIFVVSUQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVVJRC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyogVVVJRC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVVUlELmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MzRjcyMzkxRDc4ODExOTAwNjc0RTI2IC8qIEJyaWdhbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJpZ2FuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTM4LDYgKzkzOSw3IEBACiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAw
MjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICovLAogCQkJCTE0Njk0MTk4MTZFQUIwNDEwMDI0RTE0
NiAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJCQkJMTQ2OTQxOTUxNkVBQUZGODAwMjRFMTQ2
IC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLywKKwkJCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEg
LyogU2luZ2xlUm9vdEdyYXBoLmggKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3MjlCIC8q
IFNjb3BlLmggKi8sCiAJCQkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8qIFNjb3BlZExhbWJk
YS5oICovLAogCQkJCTBGNjZCMjg0MURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRzLmNwcCAqLywK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAkocmV2aXNpb24gMjIwOTcwKQorKysgU291cmNl
L1dURi93dGYvQmFja3dhcmRzR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdv
cmtsaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Np
bmdsZVJvb3RHcmFwaC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC0zOCwxMzMgKzM5LDkgQEAgY2xhc3MgQmFja3dhcmRzR3JhcGggewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJhY2t3YXJkc0dyYXBoKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICAvLyBXZSB1c2UgIiNlbmQiIHRvIHJlZmVyIHRvIHRo
ZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIq
IHJvb3ROYW1lKCkgeyByZXR1cm4gIiNlbmQiOyB9OwotCi0gICAgY2xhc3MgTm9kZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBOb2RlKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBlbmFt
ZSBHcmFwaDo6Tm9kZSgpKQotICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKLSAgICAgICAgewot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIE5vZGUgcm9vdCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIE5vZGUgcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0Lm1fbm9kZSA9IDA7Ci0gICAg
ICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlJiBvdGhl
cikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fbm9kZSA9PSBvdGhlci5t
X25vZGUKLSAgICAgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb2RlJiBvdGhlcikgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
ICp0aGlzICE9IE5vZGUoKTsgfQotCi0gICAgICAgIGJvb2wgaXNSb290KCkgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAg
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfQotCi0g
ICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUgbV9ub2RlOwotICAgICAg
ICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgY2xhc3MgU2V0IHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIFNldCgpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgYm9vbCBhZGQoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0
KG1faGFzUm9vdCwgdHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuYWRkKG5vZGUubm9k
ZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBjaGVja0FuZFNldChtX2hhc1Jvb3QsIGZhbHNlKTsKLSAgICAgICAgICAgIHJl
dHVybiBtX3NldC5yZW1vdmUobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBjb250YWlucyhjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9oYXNSb290OwotICAgICAg
ICAgICAgcmV0dXJuIG1fc2V0LmNvbnRhaW5zKG5vZGUubm9kZSgpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobV9oYXNSb290KQotICAgICAgICAgICAgICAgIG91dC5wcmludChyb290TmFt
ZSgpLCAiICIpOwotICAgICAgICAgICAgb3V0LnByaW50KG1fc2V0KTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0Owot
ICAgICAgICBib29sIG1faGFzUm9vdCB7IGZhbHNlIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgY2xhc3MgTWFwIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE1hcChH
cmFwaCYgZ3JhcGgpCi0gICAgICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxU
PigpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbV9tYXAuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fcm9vdCA9IFQo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuc2l6ZSgpICsgMTsgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWluZGV4KQotICAgICAgICAgICAgICAgIHJldHVy
biBtX3Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9tYXBbaW5kZXggLSAxXTsKLSAgICAgICAg
fQotCi0gICAgICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PE1hcCo+KHRoaXMpKVtpbmRl
eF07Ci0gICAgICAgIH0KLQotICAgICAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBtX3Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9tYXBbbm9kZS5ub2RlKCld
OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBu
b2RlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PE1h
cCo+KHRoaXMpKVtub2RlXTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICBwcml2YXRlOgotICAg
ICAgICB0eXBlbmFtZSBHcmFwaDo6dGVtcGxhdGUgTWFwPFQ+IG1fbWFwOwotICAgICAgICBUIG1f
cm9vdDsKLSAgICB9OwotCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3Jh
cGg+OworICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+Owog
ICAgIHR5cGVkZWYgVmVjdG9yPE5vZGUsIDQ+IExpc3Q7CiAKICAgICBCYWNrd2FyZHNHcmFwaChH
cmFwaCYgZ3JhcGgpCkBAIC0yNTUsNyArMTMyLDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgICAgICBvdXQucHJpbnQoIjxudWxsPiIpOwogICAgICAgICBlbHNlIGlmIChu
b2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCkpOworICAgICAg
ICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBvdXQucHJpbnQobV9ncmFwaC5kdW1wKG5vZGUubm9kZSgpKSk7CiAgICAgICAgIHJldHVy
biBvdXQudG9DU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCShyZXZpc2lvbiAyMjA5NzAp
CisrKyBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+
CiBjbGFzcyBEb21pbmF0b3JzIHsKIHB1YmxpYzoKKyAgICB1c2luZyBMaXN0ID0gdHlwZW5hbWUg
R3JhcGg6Okxpc3Q7CisKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCwgYm9vbCBzZWxmQ2hl
Y2sgPSBmYWxzZSkKICAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQogICAgICAgICAsIG1fZGF0YShn
cmFwaC50ZW1wbGF0ZSBuZXdNYXA8QmxvY2tEYXRhPigpKQpAQCAtNDcsOCArNDksNiBAQCBwdWJs
aWM6CiAgICAgICAgIExlbmdhdWVyVGFyamFuIGxlbmdhdWVyVGFyamFuKG1fZ3JhcGgpOwogICAg
ICAgICBsZW5nYXVlclRhcmphbi5jb21wdXRlKCk7CiAKLSAgICAgICAgbV9kYXRhID0gbV9ncmFw
aC50ZW1wbGF0ZSBuZXdNYXA8QmxvY2tEYXRhPigpOwotICAgIAogICAgICAgICAvLyBGcm9tIGhl
cmUgd2Ugd2FudCB0byBidWlsZCBhIHNwYW5uaW5nIHRyZWUgd2l0aCBib3RoIHVwd2FyZCBhbmQg
ZG93bndhcmQgbGlua3MgYW5kIHdlIHdhbnQKICAgICAgICAgLy8gdG8gZG8gYSBzZWFyY2ggb3Zl
ciB0aGlzIHRyZWUgdG8gY29tcHV0ZSBwcmUgYW5kIHBvc3QgbnVtYmVycyB0aGF0IGNhbiBiZSB1
c2VkIGZvciBkb21pbmFuY2UKICAgICAgICAgLy8gdGVzdHMuCkBAIC0yNDAsNyArMjQwLDcgQEAg
cHVibGljOgogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAg
IHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlw
ZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgdm9p
ZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCBMaXN0JiBm
cm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgZm9yQWxsQmxvY2tz
SW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCiAgICAgICAgICAgICBmcm9tLApA
QCAtMjU1LDcgKzI1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBVc2VmdWwgZm9yIGNvbXB1dGluZyBw
cnVuZWQgU1NBIGZvcm0uCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lk
IGZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAotICAgICAg
ICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAg
ICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgc2V0OwogICAgICAgICBmb3JBbGxCbG9j
a3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC0yNjcsNyArMjY3LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIAotICAgIHR5cGVuYW1lIEdyYXBo
OjpTZXQgaXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpM
aXN0JiBmcm9tKSBjb25zdAorICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgaXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKGNvbnN0IExpc3QmIGZyb20pIGNvbnN0CiAgICAgewogICAgICAgICB0eXBl
bmFtZSBHcmFwaDo6U2V0IHJlc3VsdDsKICAgICAgICAgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERv
bWluYW5jZUZyb250aWVyT2ZJbXBsKApAQCAtNzEyLDkgKzcxMiw5IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGZvckFsbEJsb2Nrc0lu
SXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKLSAgICAgICAgY29uc3QgdHlwZW5hbWUg
R3JhcGg6Okxpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CisgICAgICAg
IGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpIGNvbnN0CiAgICAgewot
ICAgICAgICB0eXBlbmFtZSBHcmFwaDo6TGlzdCB3b3JrbGlzdCA9IGZyb207CisgICAgICAgIExp
c3Qgd29ya2xpc3QgPSBmcm9tOwogICAgICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUgYmxvY2sgPSB3b3JrbGlzdC50YWtl
TGFzdCgpOwogICAgICAgICAgICAgZm9yQWxsQmxvY2tzSW5Eb21pbmFuY2VGcm9udGllck9mSW1w
bCgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XVEYvd3RmL1NpbmdsZVJvb3RHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisjZGVmaW5lIFdURl9TaW5nbGVSb290R3JhcGhfaAor
CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29y
a2xpc3QuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgR3Jh
cGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGhOb2RlIHsKK3B1YmxpYzoKKyAgICAvLyBXZSB1c2Ug
IiNyb290IiB0byByZWZlciB0byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgor
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjcm9vdCI7IH07CisK
KyAgICBTaW5nbGVSb290R3JhcGhOb2RlKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgPSB0eXBl
bmFtZSBHcmFwaDo6Tm9kZSgpKQorICAgICAgICA6IG1fbm9kZShub2RlKQorICAgIHsKKyAgICB9
CisKKyAgICBzdGF0aWMgU2luZ2xlUm9vdEdyYXBoTm9kZSByb290KCkKKyAgICB7CisgICAgICAg
IFNpbmdsZVJvb3RHcmFwaE5vZGUgcmVzdWx0OworICAgICAgICByZXN1bHQubV9ub2RlID0gMDsK
KyAgICAgICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9k
ZQorICAgICAgICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7CisgICAgfQorCisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBTaW5nbGVS
b290R3JhcGhOb2RlKCk7IH0KKworICAgIGJvb2wgaXNSb290KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2lzUm9vdDsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBu
b2RlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9pc1Jvb3QpOworICAgICAgICBy
ZXR1cm4gbV9ub2RlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6Tm9k
ZSBtX25vZGU7CisgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Cit9OworCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGhTZXQgeworICAgIHVzaW5nIE5v
ZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290
R3JhcGhTZXQoKSA9IGRlZmF1bHQ7CisgICAgCisgICAgYm9vbCBhZGQoY29uc3QgTm9kZSYgbm9k
ZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBtX3NldC5hZGQo
bm9kZS5ub2RlKCkpOworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlKGNvbnN0IE5vZGUmIG5vZGUp
CisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBj
aGVja0FuZFNldChtX2hhc1Jvb3QsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92
ZShub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCBjb250YWlucyhjb25zdCBOb2RlJiBu
b2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1
cm4gbV9oYXNSb290OworICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkp
OworICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKG1faGFzUm9vdCkKKyAgICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290
TmFtZSgpLCAiICIpOworICAgICAgICBvdXQucHJpbnQobV9zZXQpOworICAgIH0KKyAgICAKK3By
aXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3NldDsKKyAgICBib29sIG1faGFzUm9v
dCB7IGZhbHNlIH07Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBHcmFwaD4K
K2NsYXNzIFNpbmdsZVJvb3RNYXAgeworICAgIHVzaW5nIE5vZGUgPSBTaW5nbGVSb290R3JhcGhO
b2RlPEdyYXBoPjsKK3B1YmxpYzoKKyAgICBTaW5nbGVSb290TWFwKEdyYXBoJiBncmFwaCkKKyAg
ICAgICAgOiBtX21hcChncmFwaC50ZW1wbGF0ZSBuZXdNYXA8VD4oKSkKKyAgICB7CisgICAgfQor
CisgICAgU2luZ2xlUm9vdE1hcChTaW5nbGVSb290TWFwJiYgb3RoZXIpCisgICAgICAgIDogbV9t
YXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9yb290KFdURk1vdmUob3RoZXIu
bV9yb290KSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAg
ICBtX21hcC5jbGVhcigpOworICAgICAgICBtX3Jvb3QgPSBUKCk7CisgICAgfQorCisgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9CisKKyAgICBUJiBv
cGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmICghaW5kZXgpCisgICAg
ICAgICAgICByZXR1cm4gbV9yb290OworICAgICAgICByZXR1cm4gbV9tYXBbaW5kZXggLSAxXTsK
KyAgICB9CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtp
bmRleF07CisgICAgfQorCisgICAgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKQorICAg
IHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gbV9yb290
OworICAgICAgICByZXR1cm4gbV9tYXBbbm9kZS5ub2RlKCldOworICAgIH0KKworICAgIGNvbnN0
IFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAoKmNvbnN0X2Nhc3Q8U2luZ2xlUm9vdE1hcCo+KHRoaXMpKVtub2RlXTsKKyAgICB9Cisg
ICAgCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7
CisgICAgVCBtX3Jvb3Q7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNp
bmdsZVJvb3RHcmFwaCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2luZ2xlUm9vdEdyYXBo
KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKworICAgIHVzaW5nIE5v
ZGUgPSBTaW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVS
b290R3JhcGhTZXQ8R3JhcGg+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAg
PSBTaW5nbGVSb290TWFwPFQsIEdyYXBoPjsKKyAgICB1c2luZyBMaXN0ID0gVmVjdG9yPE5vZGUs
IDQ+OworCisgICAgU2luZ2xlUm9vdEdyYXBoKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dy
YXBoKGdyYXBoKQorICAgIHsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSByZWFs
Um9vdCA6IG1fZ3JhcGgucm9vdHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgucHJl
ZGVjZXNzb3JzKHJlYWxSb290KS5pc0VtcHR5KCkpOworICAgICAgICAgICAgbV9yb290U3VjY2Vz
c29yTGlzdC5hcHBlbmQocmVhbFJvb3QpOworICAgICAgICAgICAgbV9yb290U3VjY2Vzc29yU2V0
LmFkZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1fcm9vdFN1Y2Nlc3Nv
ckxpc3Quc2l6ZSgpKTsKKyAgICB9CisKKyAgICBOb2RlIHJvb3QoKSBjb25zdCB7IHJldHVybiBO
b2RlOjpyb290KCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgTWFwPFQ+IG5l
d01hcCgpIHsgcmV0dXJuIE1hcDxUPihtX2dyYXBoKTsgfQorCisgICAgTGlzdCBzdWNjZXNzb3Jz
KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBhc3NlcnRJc0NvbnNpc3Rl
bnQoKTsKKworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBt
X3Jvb3RTdWNjZXNzb3JMaXN0OworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0
eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5zdWNjZXNzb3JzKG5vZGUubm9kZSgp
KSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobm9kZSk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgTGlzdCBwcmVkZWNlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIExpc3QgeyB9OworCisgICAgICAgIGlm
IChtX3Jvb3RTdWNjZXNzb3JTZXQuY29udGFpbnMobm9kZS5ub2RlKCkpKSB7CisgICAgICAgICAg
ICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpLmlzRW1wdHkoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gTGlzdCB7IHJvb3QoKSB9OworICAgICAgICB9CisKKyAgICAgICAg
TGlzdCByZXN1bHQ7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1f
Z3JhcGgucHJlZGVjZXNzb3JzKG5vZGUubm9kZSgpKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQobm9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdW5zaWduZWQg
aW5kZXgoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlz
Um9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2dyYXBoLmlu
ZGV4KG5vZGUubm9kZSgpKSArIDE7CisgICAgfQorCisgICAgTm9kZSBub2RlKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVy
biByb290KCk7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm5vZGUoaW5kZXggLSAxKTsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBudW1Ob2RlcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9ncmFwaC5udW1Ob2RlcygpICsgMTsKKyAgICB9CisKKyAgICBDU3RyaW5nIGR1bXAoTm9kZSBu
b2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgICAg
ICBpZiAoIW5vZGUpCisgICAgICAgICAgICBvdXQucHJpbnQoIjxudWxsPiIpOworICAgICAgICBl
bHNlIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3RO
YW1lKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQucHJpbnQobV9ncmFwaC5kdW1w
KG5vZGUubm9kZSgpKSk7CisgICAgICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7CisgICAgfQor
CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtTm9kZXMoKTsgKytpKSB7CisgICAgICAgICAgICBO
b2RlIG5vZGUgPSB0aGlzLT5ub2RlKGkpOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgb3V0LnByaW50KGR1bXAobm9kZSksICI6
XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiICAgIFByZWRzOiAiKTsKKyAgICAgICAgICAg
IENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBwcmVkZWNlc3NvciA6
IHByZWRlY2Vzc29ycyhub2RlKSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGR1
bXAocHJlZGVjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAg
ICAgIG91dC5wcmludCgiICAgIFN1Y2NzOiAiKTsKKyAgICAgICAgICAgIGNvbW1hID0gQ29tbWFQ
cmludGVyKCk7CisgICAgICAgICAgICBmb3IgKE5vZGUgc3VjY2Vzc29yIDogc3VjY2Vzc29ycyhu
b2RlKSkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIGR1bXAoc3VjY2Vzc29yKSk7
CisgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGFzc2VydElzQ29uc2lzdGVudCgpIGNvbnN0Cisg
ICAgeworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSByb290
cygpIGZ1bmN0aW9uIHRvIGJlIGlkZW1wb3RlbnQgd2hpbGUgd2UncmUgYWxpdmUgc28gd2UgY2Fu
IGNhY2hlCisgICAgICAgIC8vIHRoZSByZXN1bHQgaW4gdGhlIGNvbnN0cnVjdG9yLiBJZiBhIHVz
ZXIgb2YgdGhpcyBjaGFuZ2VzIHRoZSByZXN1bHQgb2YgaXRzIHJvb3RzKCkKKyAgICAgICAgLy8g
ZnVuY3Rpb24sIGl0J3MgZXhwZWN0ZWQgdGhhdCB0aGUgdXNlciB3aWxsIGNyZWF0ZSBhIG5ldyBp
bnN0YW5jZSBvZiB0aGlzIGNsYXNzLgorICAgICAgICBMaXN0IHJvb3RTdWNjZXNzb3JMaXN0Owor
ICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290
cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3Qp
LmlzRW1wdHkoKSk7CisgICAgICAgICAgICByb290U3VjY2Vzc29yTGlzdC5hcHBlbmQocmVhbFJv
b3QpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdC5zaXplKCkp
OworICAgICAgICBBU1NFUlQocm9vdFN1Y2Nlc3Nvckxpc3QgPT0gbV9yb290U3VjY2Vzc29yTGlz
dCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBHcmFwaCYgbV9ncmFwaDsKKyAgICBMaXN0IG1fcm9v
dFN1Y2Nlc3Nvckxpc3Q7CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBtX3Jvb3RTdWNjZXNzb3JT
ZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTaW5nbGVSb290R3Jh
cGg7CisKKyNlbmRpZiAvLyBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318807</attachid>
            <date>2017-08-22 15:21:57 -0700</date>
            <delta_ts>2017-08-22 17:41:42 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>202185</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNoLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUt
dHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBDb3B5cmln
aHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
Q29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisvLyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8v
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLworLy8gWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl
IDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9tIHRoZSBT
bWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbworLy8gV29s
Y3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hlcmVhcwor
Ly8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1ha2UgaXQg
ZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19leGNlcHRp
b25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19leGNlcHRp
b25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25Db3VudGVy
OworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBEZWx0
YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJlZCBpbjoK
KyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENvbnN0cmFp
bnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24gYW5kIEpv
aG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSwK
KyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRSIDg5LTA4
LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBhIGdyb3Rl
c3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQgYnkgc2lk
ZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMgd2F5IHRv
IGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1wbGVtZW50
YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0tICovCisK
K09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNGcm9tIiwg
eworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJbmhlcml0
ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlwZTsKKyAg
ICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVyQ29uc3Ry
dWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVjdGlvbigp
IHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnBy
b3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVsbSk7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkgewor
ICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3RoOworfQor
CitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlvbiAoKSB7
CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3Rv
dHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNraXBwZWQg
PSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykgeworICAg
IHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7CisgICAg
ICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0gZWxzZSB7
CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNo
KGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7CisgICAg
dGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLworCisvKioK
KyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBvcnRhbmNl
IG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhl
IHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQgY29uc3Ry
YWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhpcyBjbGFz
cywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21wYXJpc29u
LgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7CisgIHRoaXMu
c3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9CisK
K1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3Ry
ZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlciA9IGZ1
bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5zdHJlbmd0
aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMyKSB7Cisg
IHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGguc3Ry
b25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdlcihzMSwg
czIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIgPSBmdW5j
dGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2FzZSAwOiBy
ZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0aC5XRUFL
X0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAgIGNhc2Ug
MzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0dXJuIFN0
cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFVSVJFRDsK
KyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJFRCAgICAg
ICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19QUkVGRVJS
RUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGguUFJFRkVS
UkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3RoLlNUUk9O
R19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3RyZW5ndGgu
Tk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVuZ3RoLldF
QUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0cmVuZ3Ro
LldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisvKiAtLS0g
KgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4gYWJzdHJh
Y3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlvbnNoaXAK
KyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBBIGNvbnN0
cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNvbmNyZXRl
IHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25zdHJhaW5l
ZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byByZXByZXNl
bnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3RoKSB7Cisg
IHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0aGlzIGNv
bnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWludC5wcm90
b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dyYXBoKCk7
CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0ZW1wdCB0
byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNzZnVsLAor
ICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJlbnQgZGF0
YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNvbnN0cmFp
bnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJlIGlzbid0
LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hvb3NlTWV0
aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0aGlzLnN0
cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5vdCBzYXRp
c2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAgfQorICB0
aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOworICB2YXIg
b3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9IG51bGwp
IG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkgPSB0aGlz
OworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFsZXJ0KCJD
eWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBvdmVycmlk
ZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9IGZ1bmN0
aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1lbnRhbFJl
bW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisvKioKKyAq
IE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4gaW5wdXQg
Y29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0ZSwgc3Vj
aCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBhcmJpdHJh
dHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3RvdHlwZS5p
c0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0tLSAqCisg
KiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUgcG9zc2li
bGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJhaW50KHYs
IHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBm
YWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5pbmhl
cml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFpbnQgdG8g
dGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRU
b0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFpbnQodGhp
cyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRlcyBpZiB0
aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0CisgKiBkZWNp
c2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1hcmsgIT0g
bWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlzLm15T3V0
cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8KK1VuYXJ5
Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVy
biB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5w
dXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisvKioKKyAq
IFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMubXlPdXRw
dXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBz
dGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3Vy
cmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWlu
dCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxh
dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0gdGhpcy5z
dHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOworICBpZiAo
dGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6YXRpb24K
K30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0aXNmaWVk
CisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1ZTsKK30K
KworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAo
KSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVtb3ZlQ29u
c3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBW
YXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNlLCBzdGF5
IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBpbnN0YW5j
ZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQgZHVyaW5n
IHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXphdGlvbiIu
CisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29uc3RyYWlu
dC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRzIGRvIG5v
dGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkgbiB0Cisg
KiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0byBtYXJr
IGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgorICovCitm
dW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQuc3VwZXJD
b25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50LmluaGVy
aXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRlIHRoYXQg
YSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAqLworRWRp
dENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0
cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAqCisgKiBC
IGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIgRGlyZWN0
aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVjdGlvbi5G
T1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBBYnN0cmFj
dCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91dHB1dAor
ICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEsIHZhcjIs
IHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRo
aXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIyOworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsK
K30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgor
ICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgd2hpY2gg
d2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5ndGggb2Yg
dGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9uLgorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlvbiAobWFy
aykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFyaykgewor
ICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0
cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGly
ZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmIChTdHJl
bmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkg
eworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwg
dGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAorICAgICAg
OiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9IFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQorICAgICAg
PyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAgfQorfQor
CisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAq
LworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0cmFpbnQo
dGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qKgorICog
QW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVu
dCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rpb24uTk9O
RTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBt
YXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rp
b24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioKKyAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMuZGlyZWN0
aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQorCisvKioK
KyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBhbmQs
IGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0IG9m
IHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVk
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQoKTsKKyAg
b3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3RoLCBpaG4u
d2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5zdGF5KSB0
aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBl
Lm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJl
Y3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRzS25vd24g
PSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0dXJuIGku
bWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOworfQorCitC
aW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlvbiAoKSB7
CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsK
KyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgorICogUyBj
IGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogUmVsYXRl
cyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6ICJ2MiA9
CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJlIGNoYW5n
ZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUgZmFjdG9y
IGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVuY3Rpb24g
U2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgpIHsKKyAg
dGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNjYWxlOwor
ICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29u
c3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3Vw
ZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0aGlzLnNj
YWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFpbnQodGhp
cyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBoID0gZnVu
Y3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
cmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51bGwpIHRo
aXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0ICE9IG51
bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3Ry
YWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNjYWxlQ29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwodGhpcywg
bWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJrOworfQor
CisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7CisgICAg
dGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsgdGhpcy5v
ZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlzLnYyLnZh
bHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQorfQorCisv
KioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFnLCBh
bmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0cHV0
IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNm
aWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2NhbGUuc3Rh
eSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOwor
fQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBoYXZlIHRo
ZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2Fs
bCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3RyYWludC5p
bmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNv
bnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxpdHlDb25z
dHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91dHB1dCgp
LnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBhIHIgaSBh
IGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxlLiBJbiBh
ZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJlIG9mIHRo
ZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5kCisgKiB2
YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNyZW1lbnRh
bAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShuYW1lLCBp
bml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOworICB0aGlz
LmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0ZXJtaW5l
ZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGggPSBTdHJl
bmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBuYW1lOwor
fQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9mIGFsbCBj
b25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5w
cm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWlu
dHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZyb20gdGhp
cyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYgKHRoaXMu
ZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKworLyogLS0t
ICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0YUJsdWUg
cGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRNYXJrID0g
MDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0cmFpbnQg
YW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93
IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBpcyBzdWNj
ZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24gaXRzIG91
dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICogY29uc3Ry
YWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVhdGVkCisg
KiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5vdCBwcmV2
aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJlYWNoZXMg
YSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1c2luZyBh
bnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRzIHRoYXQg
aGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1hcmsgdmFs
dWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisgKiB0aGUg
YWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2ZW4gaWYg
dGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4KKyAqLwor
UGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgeworICB2YXIg
bWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNmeShtYXJr
KTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0gb3ZlcnJp
ZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciByZXRyYWN0
aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBhbmQgaW5j
cmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczogUmV0cmFj
dGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkKKyAqIHVu
c2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4gV2UgdGhl
cmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFtIGNvbnN0
cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4uIFRoaXMg
bGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9uZ2VzdCBm
aXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5IGFkZGlu
ZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6IGMgaXMg
c2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92ZSA9IGZ1
bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNhdGlzZmll
ZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0aGlzLnJl
bW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGguUkVRVUlS
RUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNpemUoKTsg
aSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYgKHUuc3Ry
ZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7CisgICAg
fQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxlIChzdHJl
bmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBwcmV2aW91
c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdNYXJrID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisvKioKKyAq
IEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRoZSBnaXZl
biBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFp
bnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9uIGlzIGRl
c2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3aG9zZSBv
dXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQgZG8gbm8g
Y29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJlCisgKiBu
b3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBvZiBhIGNv
bnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxhbiB1bmRl
ciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAqIHRoZSBw
bGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlhYmxlIGlz
CisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5kaWNhdGlu
ZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFyaW5nIGVh
cmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAoaS5lLiBp
dCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykgdGhlIHZh
cmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhlIGxhc3Qg
cHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJsZXMsIHdo
aWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5CisgKiBh
bnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmllZC4KKyAq
LworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykgeworICB2
YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7CisgIHZh
ciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAgIHZhciBj
ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0gbWFyayAm
JiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQoYyk7Cisg
ICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJhaW50c0Nv
bnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4gcGxhbjsK
K30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0aW5nIGZy
b20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0
IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIgc291cmNl
cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbnN0
cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkg
eyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24o
KTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGluY2x1c2lv
bgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBsYW4oc291
cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGhzIGFu
ZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhlIGdpdmVu
IGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2YgYWxsIHZh
cmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICogZGV0ZWN0
ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxzZS4gT3Ro
ZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0ZWQgd2hl
biBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBvZiB0aGUg
Z2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZlIG1hcmtl
ZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBnaXZlbiBt
YXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9mCisgKiB0
aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJvbSB0aGUK
KyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8KK1BsYW5u
ZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7CisgIHZhciB0
b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3aGlsZSAo
dG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAg
aWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVudGFsUmVt
b3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3VsYXRlKCk7
CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRvZG8pOwor
ICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxrYWJvdXQg
c3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0g
b2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAqIHVuc2F0
aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0cmVuZ3Ro
LgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVuY3Rpb24g
KG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJlbmd0aCA9
IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0aXNmaWVk
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xs
ZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+IDApIHsK
KyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25zdHJhaW50
cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgICAg
aWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsKKyAgICB9
CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4dCA9IHYu
Y29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAmJiBuZXh0
LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAgICAgICB0
b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7Cit9CisK
K1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5jdGlvbiAo
diwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgdmFyIGNj
ID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7IGkrKykg
eworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgpKQorICAg
ICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAqIC0tLSAq
LworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWludHMgdG8g
YmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVudGx5IHNh
dGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9yZSBjaGFu
Z2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5ldyBPcmRl
cmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUuc2l6ZSA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4ucHJvdG90
eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhpcy52LmF0
KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgpIHsKKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMgPSB0aGlz
LmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgorICogLS0t
ICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNobWFyay4g
QSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1Y3RlZCB3
aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0cmFpbnQg
aXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcworICogbWVh
c3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQgZXh0cmFj
dGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBsYW4uIFRo
ZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJhaW50IGlz
IHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBtdXN0IHBy
b3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIEluIGNhc2Ug
MiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0
cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlzIGNhc2Ug
aXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGllIHNvbWV3
aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9uIGNoYWlu
VGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9IG51bGws
IGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2YgbiBlcXVh
bGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsKKyAgICB2
YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7CisgICAg
aWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJldiwgdiwg
U3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAgICBpZiAo
aSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0K
KyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBTdHJlbmd0
aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KGZpcnN0
LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rp
b24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBs
YW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDsgaSsr
KSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAgIGlmIChs
YXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7CisgICAg
dHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisgKiBUaGlz
IHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRvIGVhY2gK
KyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUgYW5kIG9m
ZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvbiBl
aXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2NhbGUgYW5k
IG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7CisgIHBs
YW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUoInNjYWxl
IiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAwKTsKKyAg
dmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9yZGVyZWRD
b2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgc3JjID0g
bmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxlKCJkc3Qi
ICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGguTk9STUFM
KTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0LCBTdHJl
bmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChkc3QudmFs
dWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdlKGRzdCwg
MTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBmYWlsZWQi
KTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0gMTsgaSsr
KSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAgICAgIGFs
ZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFyIGkgPSAw
OyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBpICogNSAr
IDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRyeSB7IGV4
Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5nZSh2LCBu
ZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJlbmd0aC5Q
UkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgZWRp
dHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9tQ29uc3Ry
YWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICB2LnZh
bHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5kZXN0cm95
Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVu
dCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJsdWUoKSB7
CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7CisgICAg
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyArK2kp
CisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVu
LWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Zh
a2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7CisgICAgY29u
c3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0OworICAg
ICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAgIGlmICh0
aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNwb3NlKEks
IGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3RydWN0b3Io
Li4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFyZ3MpOwor
ICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmKHRoaXMu
aXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVuTnVtYmVy
cyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlFdmVuKHBy
ZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBhc3NlcnQo
IXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCitsZXQgU3Ry
aW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5jdGlvbiB2
ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7Y3VyLnZh
bHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5jdGlvbigp
IHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051bWJlcnMs
IHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAgICBbRXZl
bk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citub0lubGlu
ZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQgW2l0ZXJh
dG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBpdGVyYXRv
cjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
Y3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYsIGN1cik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPT0gImRv
bmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiArIGUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldiA9
IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERhdGUubm93
KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1bkl0ZXJh
dG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAtIHN0YXJ0
KTsKK30KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlv
bi1mYWlsdXJlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNldC1hcmd1
bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3Ry
ZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTMgQEAKKyJ1c2Ugc3RyaWN0IjsKKworbGV0IGZsYWcgPSB0cnVlOwor
ZnVuY3Rpb24gbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAgcmV0dXJuIHt4OjIwfTsKKyAg
ICByZXR1cm4ge3k6MjAsIHg6MjB9OworfQorbm9JbmxpbmUobyk7CisKK2xldCBjb3VudGVyID0g
MDsKK2Z1bmN0aW9uIGUoKSB7CisgICAgaWYgKCgrK2NvdW50ZXIpICUgNTAgPT09IDApCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUpOworCitsZXQgY291bnRlcjIgPSAw
OworZnVuY3Rpb24gZTIoKSB7CisgICAgaWYgKCgrK2NvdW50ZXIyKSAlIDIgPT09IDApCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUyKTsKKworZnVuY3Rpb24gZXNjYXBl
KCl7IH0KK25vSW5saW5lKGVzY2FwZSk7CisKK2Z1bmN0aW9uIGJheihvKSB7CisgICAgdHJ5IHsK
KyAgICAgICAgZSgpOworICAgICAgICBlc2NhcGUoby54KTsKKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgZXNjYXBlKG8ueCk7CisgICAgICAgIGUyKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAg
ICAgby54OworICAgIH0KK30KK25vSW5saW5lKGJheik7CisKK3sKKyAgICBsZXQgbyA9IHt4OjIw
fTsKKyAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgKytpKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGJheihvKTsKKyAg
ICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgcnVuKCk7CisgICAg
byA9IHt5OjQwLCB4OjIwfTsKKyAgICBydW4oKTsKK30KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL29z
ci1lbnRlci10by1jYXRjaC13aXRoLXNldC1sb2NhbC10eXBlLWNoZWNrLWZhaWx1cmUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb3NyLWVudGVyLXRvLWNhdGNoLXdpdGgtc2V0LWxv
Y2FsLXR5cGUtY2hlY2stZmFpbHVyZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVz
cy9vc3ItZW50ZXItdG8tY2F0Y2gtd2l0aC1zZXQtbG9jYWwtdHlwZS1jaGVjay1mYWlsdXJlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKK2xldCBmbGFnID0gdHJ1ZTsKK2Z1bmN0
aW9uIGZvbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAgcmV0dXJuIDIwOworICAgIHJldHVy
biB7fTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBzdGF0ZSA9IDA7CitmdW5jdGlvbiBlKCkg
eworICAgIGlmICgoKytzdGF0ZSkgJSAyNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCk7Cit9Citub0lubGluZShlKTsKKworZnVuY3Rpb24gYmF6KCkgeyB9Citub0lubGluZShiYXop
OworCitmdW5jdGlvbiBiYXIoKSB7CisgICAgbGV0IHggPSBmb28oKTsKKyAgICB0cnkgeworICAg
ICAgICBlKCk7CisgICAgICAgIGJheigrK3gpOworICAgIH0gY2F0Y2goZSkgeworICAgICAgICBi
YXooKyt4KTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBiYXooeCk7CisgICAgfQorfQorbm9J
bmxpbmUoYmFyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwOyArK2kpIHsKKyAgICBiYXIo
KTsKK30KKworZmxhZyA9IGZhbHNlOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyArK2kpCisg
ICAgYmFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTM5MSw3ICszOTEsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGRmZy9ERkdQaGFzZS5jcHAKICAgICBkZmcvREZHUGhpQ2hpbGRyZW4uY3BwCiAgICAgZGZn
L0RGR1BsYW4uY3BwCi0gICAgZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCiAgICAgZGZnL0RG
R1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAKICAgICBkZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsOCArMzk0LDYgQEAKIAkJMEYzQkQxQjcxQjg5NkEwNzAw
NTk4QUE2IC8qIERGR0luc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCRDFCNjFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0
aW9uU2V0LmNwcCAqLzsgfTsKIAkJMEYzQzFGMUExQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGM0MxRjE4MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHAgKi87IH07CiAJCTBGM0MxRjFCMUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzFGMTkxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggKi87IH07Ci0J
CTBGM0UwMUFBMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0UwMUE4MTlEMzUz
QTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLzsgfTsKLQkJMEYzRTAxQUIx
OUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAv
KiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi87IH07CiAJCTBGNDBFNEE3MUM0OTdGNzQwMEE1NzdG
QSAvKiBBaXJPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNjE4MzMyMUM0NUYzNUMwMDcyNDUwQiAvKiBBaXJPcGNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQwRTRBODFDNDk3Rjc0
MDBBNTc3RkEgLyogQWlyT3Bjb2RlR2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMzNDFDNDVGM0I2MDA3MjQ1MEIgLyogQWlyT3Bj
b2RlR2VuZXJhdGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY0MEU0QTkxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZVV0aWxzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMzNTFDNDVG
M0I2MDA3MjQ1MEIgLyogQWlyT3Bjb2RlVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjk5MSw4ICsyOTg5LDYgQEAKIAkJMEYzQkQxQjYx
Qjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0lu
c2VydGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE4MUI4
NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7IHBhdGggPSBk
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjNDMUYxOTFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsgcGF0
aCA9IGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkwRjNFMDFBODE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5n
LmNwcDsgcGF0aCA9IGRmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1i
ZXJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJlUG9zdE51bWJl
cmluZy5oOyBwYXRoID0gZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3Zlcnku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmly
dHVhbFJlZ2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpcnR1YWxS
ZWdpc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0QTE0NjBDRDZC
MDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBEYXRhRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTAxLDggKzc0
OTcsNiBAQAogCQkJCTBGQkUwRjZFMTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5q
ZWN0aW9uUGhhc2UuaCAqLywKIAkJCQkwRkZGQzk1MTE0RUY5MDk1MDBDNzI1MzIgLyogREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwICovLAogCQkJCTBGRkZDOTUyMTRFRjkwOTUwMEM3
MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oICovLAotCQkJCTBGM0UwMUE4
MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLywKLQkJCQkwRjNF
MDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICovLAogCQkJCTBG
MkI5Q0UwMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgKi8s
CiAJCQkJMEYyQjlDRTExOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9u
LmggKi8sCiAJCQkJMEZGQzkyMTUxQjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtl
eS5oICovLApAQCAtODcxMSw3ICs4NzA1LDYgQEAKIAkJCQlEQzAwMDM5MzE5RDhCRTZGMDAwMjNF
QjAgLyogREZHUHJlY2lzZUxvY2FsQ2xvYmJlcml6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
RTBGNzUxNkMxREIwQjAwODJDNUU4IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGRkM5NUUxNEVGOTBCNzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRjNFMDFBQjE5RDM1M0E1
MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
QjlDRUQxOUQwQkE3RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZDOTIxNjFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBl
S2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNzY2MzE5NkI4RjlFMDA5MTA1MkEgLyogREZH
UHVyZVZhbHVlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNTAyLDcgKzEwNDk1LDYgQEAKIAkJCQlB
NzhBOTc3QTE3OTczOEI4MDA5REY3NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkJFMEY3NDE2QzFEQjA5MDA4MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjNFMDFB
QTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjJCOUNFQzE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCMTc2NjIxOTZCOEY5RTAwOTEwNTJBIC8qIERG
R1B1cmVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNBMUJGOTFBOUVDQjdEMDAwREUw
MUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJ
KHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzgsOCArMTUzOCw5IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICBjYXNlIG9wX2NhdGNoOiB7
CiAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgdm9pZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigr
K2l0KSk7CiAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNh
dGNoIik7Ci0gICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAl
cywgJXAiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCks
IHBvaW50ZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF90aHJvdzogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogNCB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQi
LCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wYXJlbnRf
c2NvcGUiLCAibGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhdGNo
IiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJs
ZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3ciLCAibGVuZ3Ro
IiA6IDIgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rocm93X3N0YXRpY19lcnJvciIs
ICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVidWciLCAibGVu
Z3RoIiA6IDMgfSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBG
dW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGlmIChvcGNvZGVJ
RCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29k
ZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCisgICAgaWYgKG9w
Y29kZUlEICE9IG9wX2VudGVyICYmIChjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2lu
Z09wY29kZXMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkpICYmIGNvZGVCbG9jay0+c2NvcGVS
ZWdpc3RlcigpLmlzVmFsaWQoKSkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogCiAg
ICAgc3dpdGNoIChvcGNvZGVJRCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNiAr
NTI5LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAg
ICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsK
ICAgICB9OwogCisgICAgVmVjdG9yPHVuc2lnbmVkLCA0PiBjYXRjaEluZGljZXM7CisKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAg
ICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4
dCgpOwogCkBAIC04MDUsMTAgKzgwNywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTCiAgICAgICAgICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVt
YmVyT2ZBcmd1bWVudHNUb1NraXA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgY2FzZSBvcF9jYXRjaDogeworICAgICAgICAgICAgY2F0Y2hJbmRpY2Vz
LmFwcGVuZChpKTsKKyAgICAgICAgICAgIGJyZWFrOyAKKyAgICAgICAgfQogCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCiAgICAgICAgIGkgKz0gb3BM
ZW5ndGg7CiAgICAgfQogCkBAIC04MzAsMTAgKzgzOCw0MiBAQCBib29sIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEdlbmVyYXRlZEJ5
dGVjb2RlcygpKQogICAgICAgICBkdW1wQnl0ZWNvZGUoKTsKKworICAgIGlmIChjYXRjaEluZGlj
ZXMuc2l6ZSgpKSB7CisgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgYnl0ZWNvZGVM
aXZlbmVzcyA9IGxpdmVuZXNzQW5hbHlzaXMoKTsKKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPj4gY2F0Y2hQcm9maWxlczsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBjYXRjaEluZGV4IDogY2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAg
ICAvLyBXZSBnZXQgdGhlIGxpdmUtb3V0IHNldCBvZiB2YXJpYWJsZXMgYXQgb3BfY2F0Y2gsIG5v
dCB0aGUgbGl2ZS1pbi4gVGhpcworICAgICAgICAgICAgLy8gaXMgYmVjYXVzZSB0aGUgdmFyaWFi
bGVzIHRoYXQgdGhlIG9wX2NhdGNoIGRlZmluZXMgbWlnaHQgYmUgZGVhZCwgYW5kCisgICAgICAg
ICAgICAvLyB3ZSBjYW4gYXZvaWQgcHJvZmlsaW5nIHRoZW0gYW5kIGV4dHJhY3RpbmcgdGhlbSB3
aGVuIGRvaW5nIE9TUiBlbnRyeQorICAgICAgICAgICAgLy8gaW50byB0aGUgREZHLgorICAgICAg
ICAgICAgRmFzdEJpdFZlY3RvciBsaXZlTG9jYWxzID0gYnl0ZWNvZGVMaXZlbmVzcy5nZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGNhdGNoSW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2Nh
dGNoKSk7CisgICAgICAgICAgICBWZWN0b3I8VmlydHVhbFJlZ2lzdGVyPiBsaXZlT3BlcmFuZHM7
CisgICAgICAgICAgICBsaXZlT3BlcmFuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaXZlTG9j
YWxzLmJpdENvdW50KCkpOworICAgICAgICAgICAgbGl2ZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsm
XSAodW5zaWduZWQgbGl2ZUxvY2FsKSB7CisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFw
cGVuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsaXZlTG9jYWwpKTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytp
KQorICAgICAgICAgICAgICAgIGxpdmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoaSkpOworCisgICAgICAgICAgICBhdXRvIHByb2ZpbGVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2ZpbGVzLT5tX3NpemUgPT0gbGl2ZU9wZXJh
bmRzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmls
ZXMtPm1fc2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQo
KVtpXS5tX29wZXJhbmQgPSBsaXZlT3BlcmFuZHNbaV0ub2Zmc2V0KCk7CisgICAgICAgICAgICBt
X2luc3RydWN0aW9uc1tjYXRjaEluZGV4ICsgM10udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7
CisgICAgICAgICAgICBjYXRjaFByb2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7Cisg
ICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKG1fbG9jayk7CisgICAgICAgICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNhdGNo
UHJvZmlsZXMpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxv
Y2tzLT5hZGQodGhpcyk7CiAgICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCht
X2luc3RydWN0aW9ucy5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0yNDg2LDkgKzI1MjYsMTAgQEAgY29uc3QgSWRlbnRpZmll
ciYgQ29kZUJsb2NrOjppZGVudGlmaWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRp
Y3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRW
YWx1ZVByb2ZpbGVzLCB1bnNpZ25lZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJP
ZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0lu
UHJvZmlsZXMgPSAwOyAvLyBJZiB0aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJP
ZkJ1Y2tldHMgZXF1YWxzIG51bWJlck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmls
ZXMgYXJlIGZ1bGwuCisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJP
ZlZhbHVlUHJvZmlsZXMoKTsgKytpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9
IGdldEZyb21BbGxWYWx1ZVByb2ZpbGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVz
ID0gcHJvZmlsZS50b3RhbE51bWJlck9mU2FtcGxlcygpOwpAQCAtMjUwMyw2ICsyNTQ0LDEyIEBA
IHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZEMKICAgICAgICAgICAgIG51
bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgIH0KKworICAgIGZvciAoYXV0byYg
cHJvZmlsZUJ1Y2tldCA6IG1fY2F0Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0
LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAg
ICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7
CisgICAgICAgIH0pOworICAgIH0KICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBtX2xh
enlPcGVyYW5kVmFsdWVQcm9maWxlcy5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGxvY2tlcik7
CkBAIC0yNzg2LDYgKzI4MzMsMjMgQEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAg
ICAgICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CiAgICAgICAgIH0KICAgICB9CisgICAgIAor
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1f
aW5zdHJ1Y3Rpb25zLnNpemUoKTsgKSB7CisgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IEludGVy
cHJldGVyOjpnZXRPcGNvZGVJRChtX2luc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF0pOworICAg
ICAgICBpZiAoISFiYXNlbGluZUFsdGVybmF0aXZlKCktPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfY2F0Y2gg
fHwgb3Bjb2RlID09IG9wX2VudGVyKSB7CisgICAgICAgICAgICAgICAgLy8gb3BfY2F0Y2gvb3Bf
ZW50ZXIgbG9naWNhbGx5IHJlcHJlc2VudCBhbiBlbnRyeXBvaW50LiBFbnRyeXBvaW50cyBhcmUg
bm90IGFsbG93ZWQgdG8gYmUKKyAgICAgICAgICAgICAgICAvLyBpbnNpZGUgb2YgYSB0cnkgYmxv
Y2sgYmVjYXVzZSB0aGV5IGFyZSByZXNwb25zaWJsZSBmb3IgYm9vdHN0cmFwcGluZyBzdGF0ZS4g
QW5kIHRoZXkKKyAgICAgICAgICAgICAgICAvLyBhcmUgbmV2ZXIgYWxsb3dlZCB0aHJvdyBhbiBl
eGNlcHRpb24gYmVjYXVzZSBvZiB0aGlzLiBXZSByZWx5IG9uIHRoaXMgd2hlbiBjb21waWxpbmcK
KyAgICAgICAgICAgICAgICAvLyBpbiB0aGUgREZHLiBCZWNhdXNlIGFuIGVudHJ5cG9pbnQgbmV2
ZXIgdGhyb3dzLCB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIHdpbGwgbmV2ZXIKKyAgICAgICAgICAg
ICAgICAvLyBhbGxvdyBvbmNlIGluc2lkZSBhIHRyeSBibG9jay4KKyAgICAgICAgICAgICAgICBi
ZWdpblZhbGlkYXRpb25EaWRGYWlsKCk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIGVu
dHJ5cG9pbnQgbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJ5IGJsb2NrLiIpOworICAgICAgICAgICAg
ICAgIGVuZFZhbGlkYXRpb25EaWRGYWlsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZSk7CisgICAgfQogfQog
CiB2b2lkIENvZGVCbG9jazo6YmVnaW5WYWxpZGF0aW9uRGlkRmFpbCgpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjEwMjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMDMsNiArMTAwMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZDb3VudGVk
QXJyYXk8VmFsdWVQcm9maWxlPiBtX2FyZ3VtZW50VmFsdWVQcm9maWxlczsKICAgICBSZWZDb3Vu
dGVkQXJyYXk8VmFsdWVQcm9maWxlPiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVz
OwogICAgIFNlZ21lbnRlZFZlY3RvcjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9m
aWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZT4gbV9hcnJh
eUFsbG9jYXRpb25Qcm9maWxlczsKICAgICBBcnJheVByb2ZpbGVWZWN0b3IgbV9hcnJheVByb2Zp
bGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2Zp
bGUuaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhbHVlUHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsOCArMTc0LDggQEAgc3RydWN0
IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldAogfTsKIAogc3RydWN0IFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKLSAg
ICBWYWx1ZVByb2ZpbGUoKTogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPigp
IHsgfQotICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVX
aXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KKyAgICBWYWx1ZVBy
b2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAg
ICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KQEAgLTIwMiw0ICsyMDIsMzggQEAgaW5saW5lIGludCBnZXRSYXJlQ2FzZVByb2Zp
bGVCeXRlY29kZU9mZgogICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQ7CiB9CiAKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kIHsKKyAgICBWYWx1ZVByb2Zp
bGUgbV9wcm9maWxlOworICAgIGludCBtX29wZXJhbmQ7Cit9OworCitzdHJ1Y3QgVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZEJ1ZmZlciB7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcih1
bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IFZhbHVlUHJvZmlsZSBoYXMgbW9yZSBzdHVmZiB0aGFuIHdlIG5lZWQuIFdlIGNvdWxk
IG9wdGltaXplIHRoZXNlIHZhbHVlIHByb2ZpbGVzCisgICAgICAgIC8vIHRvIGJlIG1vcmUgc3Bh
Y2UgZWZmaWNpZW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1NDEzCisgICAgICAgIG1fYnVmZmVyID0gTWFsbG9jUHRyPFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQ+OjptYWxsb2MobV9zaXplICogc2l6ZW9mKFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmQpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAg
ICAgICAgICAgbmV3ICgmbV9idWZmZXIuZ2V0KClbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQo
KTsKKyAgICB9CisKKyAgICB+VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBtX2J1ZmZlci5nZXQoKVtpXS5+VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KKyAgICB2b2lkIGZvckVhY2goRnVuY3Rp
b24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9z
aXplOyArK2kpCisgICAgICAgICAgICBmdW5jdGlvbihtX2J1ZmZlci5nZXQoKVtpXSk7CisgICAg
fQorCisgICAgdW5zaWduZWQgbV9zaXplOworICAgIE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kPiBtX2J1ZmZlcjsKK307CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiAr
MTUzLDE5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgKICAgICAg
ICAgZW1pdFVucmVhY2hhYmxlKCk7CiAgICAgfQogCisgICAgZm9yIChhdXRvJiB0dXBsZSA6IG1f
Y2F0Y2hlc1RvRW1pdCkgeworICAgICAgICBSZWY8TGFiZWw+IHJlYWxDYXRjaFRhcmdldCA9IG5l
d0VtaXR0ZWRMYWJlbCgpOworICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHN0ZDo6Z2V0PDE+KHR1cGxlKSk7CisgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChzdGQ6OmdldDwyPih0dXBsZSkpOworICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CisKKyAgICAgICAgVHJ5RGF0YSogZGF0YSA9IHN0ZDo6Z2V0PDA+KHR1
cGxlKTsKKyAgICAgICAgZW1pdEp1bXAoZGF0YS0+dGFyZ2V0LmdldCgpKTsKKworICAgICAgICBk
YXRhLT50YXJnZXQgPSBXVEZNb3ZlKHJlYWxDYXRjaFRhcmdldCk7CisgICAgfQorCiAgICAgbV9z
dGF0aWNQcm9wZXJ0eUFuYWx5emVyLmtpbGwoKTsKIAogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBt
X3RyeVJhbmdlcykgewpAQCAtNzEwLDcgKzcyMyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYKIAogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFs
dWUgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogdW51c2VkID0gbmV3VGVt
cG9yYXJ5KCk7Ci0gICAgICAgIGVtaXRDYXRjaCh1bnVzZWQsIHRocm93blZhbHVlLmdldCgpKTsK
KyAgICAgICAgZW1pdENhdGNoKHVudXNlZCwgdGhyb3duVmFsdWUuZ2V0KCksIHRyeUZvcm1hbFBh
cmFtZXRlcnNEYXRhKTsKIAogICAgICAgICAvLyByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJl
amVjdCh0aHJvd25WYWx1ZSkKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdCA9IGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBwcm9taXNlQ2FwYWJpbGl0eVJlZ2lzdGVyKCksIG1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOwpA
QCAtMzk2MywxMSArMzk3Niw5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeShUcnlE
YXRhKiAKICAgICBtX3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLXZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdpc3RlcklEKiBleGNlcHRpb25SZWdpc3Rlciwg
UmVnaXN0ZXJJRCogdGhyb3duVmFsdWVSZWdpc3RlcikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDYXRjaChSZWdpc3RlcklEKiBleGNlcHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhy
b3duVmFsdWVSZWdpc3RlciwgVHJ5RGF0YSogZGF0YSkKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2Nh
dGNoKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRl
eCgpKTsKKyAgICBtX2NhdGNoZXNUb0VtaXQuYXBwZW5kKHsgZGF0YSwgZXhjZXB0aW9uUmVnaXN0
ZXItPmluZGV4KCksIHRocm93blZhbHVlUmVnaXN0ZXItPmluZGV4KCkgfSk7CiB9CiAKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJ
bmRleCkKQEAgLTQyOTksNyArNDMxMCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRF
bnVtZXJhdGlvbigKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0
aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVu
dXNlZCA9IG5ld1RlbXBvcmFyeSgpOwogCi0gICAgICAgICAgICBlbWl0Q2F0Y2goY29tcGxldGlv
blZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgICAgIGVtaXRDYXRjaChjb21wbGV0
aW9uVmFsdWVSZWdpc3RlcigpLCB1bnVzZWQsIHRyeURhdGEpOwogICAgICAgICAgICAgZW1pdFNl
dENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBlOjpUaHJvdyk7CiAgICAgICAgICAgICBlbWl0
TW92ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGNvbXBsZXRpb25WYWx1ZVJlZ2lz
dGVyKCkpOwogICAgICAgICAgICAgZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CkBA
IC00MzM5LDcgKzQzNTAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRp
b24oCiAgICAgICAgICAgICAgICAgZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBv
cmFyeSgpOwogICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFy
eSgpOwotICAgICAgICAgICAgICAgIGVtaXRDYXRjaChleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwg
dW51c2VkKTsKKyAgICAgICAgICAgICAgICBlbWl0Q2F0Y2goZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0
KCksIHVudXNlZCwgcmV0dXJuQ2FsbFRyeURhdGEpOwogICAgICAgICAgICAgICAgIC8vIFNpbmNl
IHRoaXMgaXMgYSBzeW50aGVzaXplZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0
byBuZXZlciBuZWVkCiAgICAgICAgICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBm
cm9tIHRoZSBzY29wZSwgd2UgY2FuIHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQogICAgICAgICAg
ICAgICAgIC8vIHJlZ2lzdGVyIGhlcmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMjEw
MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4Niw3ICs3ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgVHJ5RGF0YSogcHVzaFRyeShMYWJlbCYgc3RhcnQsIExhYmVsJiBoYW5kbGVyTGFi
ZWwsIEhhbmRsZXJUeXBlKTsKICAgICAgICAgLy8gRW5kIGEgdHJ5IGJsb2NrLiAnZW5kJyBtdXN0
IGhhdmUgYmVlbiBlbWl0dGVkLgogICAgICAgICB2b2lkIHBvcFRyeShUcnlEYXRhKiwgTGFiZWwm
IGVuZCk7Ci0gICAgICAgIHZvaWQgZW1pdENhdGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lz
dGVyLCBSZWdpc3RlcklEKiB0aHJvd25WYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0
Q2F0Y2goUmVnaXN0ZXJJRCogZXhjZXB0aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZh
bHVlUmVnaXN0ZXIsIFRyeURhdGEqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBj
b25zdCBpbnQgQ3VycmVudExleGljYWxTY29wZUluZGV4ID0gLTI7CkBAIC0xMTg5LDYgKzExODks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBtX25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsK
ICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lIH07CisKKyAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VHJ5RGF0
YSosIGludCwgaW50Pj4gbV9jYXRjaGVzVG9FbWl0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAz
LDYgKzM0MDMsOSBAQCB2b2lkIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAg
ICAgTGFiZWwmIHRyeUhhbmRsZXJMYWJlbCA9IG1fY2F0Y2hCbG9jayA/ICpjYXRjaExhYmVsIDog
KmZpbmFsbHlWaWFUaHJvd0xhYmVsOwogICAgIEhhbmRsZXJUeXBlIHRyeUhhbmRsZXJUeXBlID0g
bV9jYXRjaEJsb2NrID8gSGFuZGxlclR5cGU6OkNhdGNoIDogSGFuZGxlclR5cGU6OkZpbmFsbHk7
CiAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwu
Z2V0KCksIHRyeUhhbmRsZXJMYWJlbCwgdHJ5SGFuZGxlclR5cGUpOworICAgIFRyeURhdGEqIGZp
bmFsbHlUcnlEYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoIW1fY2F0Y2hCbG9jayAmJiBtX2ZpbmFs
bHlCbG9jaykKKyAgICAgICAgZmluYWxseVRyeURhdGEgPSB0cnlEYXRhOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgbV90cnlCbG9jayk7CiAKQEAgLTM0MTksMTQgKzM0MjIsMTMgQEAg
dm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKCpjYXRjaExhYmVsKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRo
cm93blZhbHVlUmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIHVudXNlZCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDYXRjaCh1bnVzZWQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdENhdGNoKHVudXNlZCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQo
KSwgdHJ5RGF0YSk7CiAgICAgICAgIGdlbmVyYXRvci5yZXN0b3JlU2NvcGVSZWdpc3RlcigpOwog
Ci0gICAgICAgIFRyeURhdGEqIHRyeURhdGEgPSBudWxscHRyOwogICAgICAgICBpZiAobV9maW5h
bGx5QmxvY2spIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBjYXRjaCBibG9jayB0aHJvd3MgYW4g
ZXhjZXB0aW9uIGFuZCB3ZSBoYXZlIGEgZmluYWxseSBibG9jaywgdGhlbiB0aGUgZmluYWxseQog
ICAgICAgICAgICAgLy8gYmxvY2sgc2hvdWxkICJjYXRjaCIgdGhhdCBleGNlcHRpb24uCi0gICAg
ICAgICAgICB0cnlEYXRhID0gZ2VuZXJhdG9yLnB1c2hUcnkoKmNhdGNoTGFiZWwsICpmaW5hbGx5
VmlhVGhyb3dMYWJlbCwgSGFuZGxlclR5cGU6OkZpbmFsbHkpOworICAgICAgICAgICAgZmluYWxs
eVRyeURhdGEgPSBnZW5lcmF0b3IucHVzaFRyeSgqY2F0Y2hMYWJlbCwgKmZpbmFsbHlWaWFUaHJv
d0xhYmVsLCBIYW5kbGVyVHlwZTo6RmluYWxseSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9jYXRjaFBhdHRlcm4pIHsKQEAgLTM0NDcsNyArMzQ0OSw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXIKICAgICAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBl
OjpOb3JtYWwpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wKCpmaW5hbGx5TGFiZWwp
OwotICAgICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeSh0cnlEYXRhLCAqZmluYWxseVZpYVRocm93
TGFiZWwpOworICAgICAgICAgICAgZ2VuZXJhdG9yLnBvcFRyeShmaW5hbGx5VHJ5RGF0YSwgKmZp
bmFsbHlWaWFUaHJvd0xhYmVsKTsKICAgICAgICAgfQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoKmNhdGNoRW5kTGFiZWwpOwpAQCAtMzQ2MCw3ICszNDYyLDcgQEAgdm9pZCBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmlu
YWxseSBibG9jayBmb3IgQ29tcGxldGlvblR5cGU6OlRocm93LgogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKCpmaW5hbGx5VmlhVGhyb3dMYWJlbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVu
dXNlZCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
YXRjaChnZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIo
KSwgdW51c2VkLCBmaW5hbGx5VHJ5RGF0YSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0Q29t
cGxldGlvblR5cGUoQ29tcGxldGlvblR5cGU6OlRocm93KTsKIAogICAgICAgICAvLyBFbnRyeSB0
byB0aGUgZmluYWxseSBibG9jayBmb3IgQ29tcGxldGlvblR5cGVzIG90aGVyIHRoYW4gVGhyb3cu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwOCw2ICsyMDgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgz
OSw3ICsxODQwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgICAgICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICAgICAg
bV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc0NGRy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHJldmlzaW9uIDIyMTAyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKLWNsYXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxDRkc+IHsK
K2NsYXNzIEJhY2t3YXJkc0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNDRkcpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIEJhY2t3YXJkc0NGRyhHcmFwaCYgZ3JhcGgpCi0gICAg
ICAgIDogQmFja3dhcmRzR3JhcGg8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogQmFja3dh
cmRzR3JhcGg8U1NBQ0ZHPihzZWxlY3RDRkc8U1NBQ0ZHPihncmFwaCkpCiAgICAgewogICAgIH0K
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJ
KHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFz
aWNCbG9jaygKICAgICA6IGJ5dGVjb2RlQmVnaW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4
KE5vQmxvY2spCiAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBv
aW50KGZhbHNlKQogICAgICwgY2ZhSGFzVmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJl
dmlzaXQoZmFsc2UpCiAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjEwMjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtODIsMTcgKzgyLDkgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2lj
QmxvYwogICAgICAgICBzaXplX3QgaSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewog
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5j
aDoKLSAgICAgICAgICAgIGNhc2UgU3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0g
ICAgICAgICAgICBjYXNlIFRhaWxDYWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2Fs
bDoKLSAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAg
ICAgICAgICAgIGlmIChub2RlLT5pc1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IE5vZGVBbmRJbmRleChub2RlLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkg
ewogICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5k
IHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBh
ZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUg
YW55IGNoZWNrZWQgY2hpbGRyZW4uCiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlz
IGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNl
IFBoYW50b206CkBAIC0xODUsNiArMTc3LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3Vu
dGVkPEJhc2ljQmxvYwogICAgIEJsb2NrSW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09T
UlRhcmdldDsKKyAgICBib29sIGlzQ2F0Y2hFbnRyeXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlz
aXRlZDsKICAgICBib29sIGNmYVNob3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0
YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RI
ZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAj
aW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgog
I2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCkBAIC00MDEsMTQgKzQwMiwxNCBAQCBw
cml2YXRlOgogICAgICAgICAvLyBXZSBjYW4ndCBleGl0IGFueW1vcmUgYmVjYXVzZSBvdXIgT1NS
IGV4aXQgc3RhdGUgaGFzIGNoYW5nZWQuCiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7CiAKLSAg
ICAgICAgRGVsYXllZFNldExvY2FsIGRlbGF5ZWQoY3VycmVudENvZGVPcmlnaW4oKSwgb3BlcmFu
ZCwgdmFsdWUpOworICAgICAgICBEZWxheWVkU2V0TG9jYWwgZGVsYXllZChjdXJyZW50Q29kZU9y
aWdpbigpLCBvcGVyYW5kLCB2YWx1ZSwgc2V0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBpZiAo
c2V0TW9kZSA9PSBOb3JtYWxTZXQpIHsKICAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBl
bmQoZGVsYXllZCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICByZXR1cm4gZGVsYXllZC5leGVj
dXRlKHRoaXMsIHNldE1vZGUpOworICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMp
OwogICAgIH0KICAgICAKICAgICB2b2lkIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCkKQEAgLTY0Miw2
ICs2NDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tF
bnRyeS0+cmVtYXBPcGVyYW5kKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkp
OwogICAgICAgICBpZiAoIWlubGluZVN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lICYmIG1f
Z3JhcGgubmVlZHNGbHVzaGVkVGhpcygpKQogICAgICAgICAgICAgZmx1c2hEaXJlY3QodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoMCkpOworCiAgICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2Nv
cGVSZWdpc3RlcigpKQogICAgICAgICAgICAgZmx1c2hEaXJlY3QobV9jb2RlQmxvY2stPnNjb3Bl
UmVnaXN0ZXIoKSk7CiAgICAgfQpAQCAtMTEzMSw3ICsxMTMzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkg
Ynl0ZWNvZGVCZWdpbiwgYW5kCiAgICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhh
dCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2Nr
Kj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUg
Y2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxs
IGJlCiAgICAgICAgIC8vIHRoZSBoZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMg
aXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tz
LCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTEy
MDAsMjEgKzEyMDIsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsK
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fb3BlcmFuZDsKICAgICAgICAgTm9kZSogbV92YWx1
ZTsKKyAgICAgICAgU2V0TW9kZSBtX3NldE1vZGU7CiAgICAgICAgIAogICAgICAgICBEZWxheWVk
U2V0TG9jYWwoKSB7IH0KLSAgICAgICAgRGVsYXllZFNldExvY2FsKGNvbnN0IENvZGVPcmlnaW4m
IG9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlKQorICAgICAgICBE
ZWxheWVkU2V0TG9jYWwoY29uc3QgQ29kZU9yaWdpbiYgb3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1vZGUgc2V0TW9kZSkKICAgICAgICAgICAgIDogbV9v
cmlnaW4ob3JpZ2luKQogICAgICAgICAgICAgLCBtX29wZXJhbmQob3BlcmFuZCkKICAgICAgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTm9kZSogZXhlY3V0ZShCeXRlQ29kZVBhcnNl
ciogcGFyc2VyLCBTZXRNb2RlIHNldE1vZGUgPSBOb3JtYWxTZXQpCisgICAgICAgIE5vZGUqIGV4
ZWN1dGUoQnl0ZUNvZGVQYXJzZXIqIHBhcnNlcikKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KG1fb3BlcmFuZC5pc0FyZ3VtZW50KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+
c2V0QXJndW1lbnQobV9vcmlnaW4sIG1fb3BlcmFuZCwgbV92YWx1ZSwgc2V0TW9kZSk7Ci0gICAg
ICAgICAgICByZXR1cm4gcGFyc2VyLT5zZXRMb2NhbChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3Zh
bHVlLCBzZXRNb2RlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VyLT5zZXRBcmd1bWVu
dChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3ZhbHVlLCBtX3NldE1vZGUpOworICAgICAgICAgICAg
cmV0dXJuIHBhcnNlci0+c2V0TG9jYWwobV9vcmlnaW4sIG1fb3BlcmFuZCwgbV92YWx1ZSwgbV9z
ZXRNb2RlKTsKICAgICAgICAgfQogICAgIH07CiAgICAgCkBAIC00MDc1LDcgKzQwNzksMTEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRy
YWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBw
YXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNp
dGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxp
bmVDYWxsRnJhbWUoKSkgewotICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251
bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVj
dG9yPE5vZGUqLCA4PiYgZW50cnlwb2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+
dmFsdWU7CisgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRz
KTsKKwogICAgICAgICAvLyBXZSB3aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9u
J3QgZXhpdCwgYnV0IHdlJ3JlIGF0IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAg
Ly8gZXhpdE9LID0gdHJ1ZS4KICAgICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4OCw3ICs0
MDk2LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZEluZGV4aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlKiBzZXRBcmd1bWVudCA9IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJp
YWJsZSkpOwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRB
cmd1bWVudDsKKyAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0
QXJndW1lbnQ7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNl
dEFyZ3VtZW50Rmlyc3RUaW1lKGFyZ3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC01MTU4LDEwICs1MTY2LDEzMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBhZGRUb0dyYXBoKFVucmVhY2hhYmxlKTsKICAgICAg
ICAgICAgIExBU1RfT1BDT0RFKG9wX3Rocm93X3N0YXRpY19lcnJvcik7CiAKLSAgICAgICAgY2Fz
ZSBvcF9jYXRjaDoKKyAgICAgICAgY2FzZSBvcF9jYXRjaDogewogICAgICAgICAgICAgbV9ncmFw
aC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGlubGlu
ZUNhbGxGcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcg
aGVyZSBmb3IgaW5saW5lZCBmcmFtZXMuIFdlIGRvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlw
b2ludC4KKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5
NgorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOwor
CisgICAgICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9u
WzNdLnUucG9pbnRlcik7CisKKyAgICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJn
dW1lbnRQcmVkaWN0aW9ucyhtX251bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3Bl
Y3VsYXRlZFR5cGU+IGxvY2FsUHJlZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2ln
bmVkLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPHVuc2lnbmVkPj4gc2VlbkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5tX2xvY2spOworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0
aW9uc0FyZUVtcHR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQ
cmVkaWN0aW9uc0FyZUVtcHR5ICY9IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQu
aXNBcmd1bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0
YXRpY19jYXN0PHVpbnQzMl90PihvcGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRp
Y3Rpb25zLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVu
YWJsZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChv
cGVyYW5kLnRvQXJndW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFBy
ZWRpY3Rpb25zW29wZXJhbmQudG9Bcmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2
YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
YXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlu
cyhhcmd1bWVudCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChh
bGxQcmVkaWN0aW9uc0FyZUVtcHR5ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBs
b2NhbFByZWRpY3Rpb25zLnNpemUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhp
cyBpcyB0aGUgY2FzZSwgd2UgaGF2ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mg
bm90IGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4K
KyAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRl
ZCB0byBjb21waWxpbmcgdGhpcyBhcyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICBtX2N1
cnJlbnRCbG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPSB0cnVlOworICAgICAgICAgICAgbV9ncmFw
aC5tX2VudHJ5cG9pbnRzLmFwcGVuZChtX2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8VmlydHVhbFJlZ2lzdGVyLCBOb2RlKj4+IGxvY2Fsc1RvU2V0OworICAg
ICAgICAgICAgbG9jYWxzVG9TZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6
ZSk7IC8vIE5vdGU6IFRoaXMgd2lsbCByZXNlcnZlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxv
Y2FscyB3ZSBzZWUgYmVsb3cgYmVjYXVzZSB0aGUgYnVmZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4K
KworICAgICAgICAgICAgLy8gV2UncmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdl
IHdvdWxkIG5vdCBwcm9wZXJseSByZWNvdmVyIHZhbHVlcy4KKyAgICAgICAgICAgIC8vIFdlIGZp
cnN0IG5lZWQgdG8gYm9vdHN0cmFwIHRoZSBjYXRjaCBlbnRyeXBvaW50IHN0YXRlLgorICAgICAg
ICAgICAgbV9leGl0T0sgPSBmYWxzZTsgCisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
TG9jYWxzID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQu
aXNBcmd1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgQVNTRVJUKG9wZXJhbmQuaXNMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1
ZSA9IGFkZFRvR3JhcGgoRXh0cmFjdENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2Fscyks
IE9wSW5mbyhsb2NhbFByZWRpY3Rpb25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAgICAg
ICAgICsrbnVtYmVyT2ZMb2NhbHM7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50
LCBPcEluZm8ocHJvZmlsZS5tX29wZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgbG9j
YWxzVG9TZXQudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVlKSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9y
Q2F0Y2hPU1JFbnRyeSA9IDA7CisgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0
Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21heExvY2Fs
c0ZvckNhdGNoT1NSRW50cnkpOworCisgICAgICAgICAgICAvLyBXZSBjb3VsZCBub3QgZXhpdCBi
ZWZvcmUgdGhpcyBwb2ludCBpbiB0aGUgcHJvZ3JhbSBiZWNhdXNlIHdlIHdvdWxkIG5vdCBrbm93
IGhvdyB0byBkbyB2YWx1ZQorICAgICAgICAgICAgLy8gcmVjb3ZlcnkgZm9yIGxpdmUgbG9jYWxz
LiBUaGUgYWJvdmUgSVIgc2V0cyB1cCB0aGUgbmVjZXNzYXJ5IHN0YXRlIHNvIHdlIGNhbiByZWNv
dmVyIHZhbHVlcworICAgICAgICAgICAgLy8gZHVyaW5nIE9TUiBleGl0LiAKKyAgICAgICAgICAg
IC8vCisgICAgICAgICAgICAvLyBUaGUgbm9kZXMgdGhhdCBmb2xsb3cgaGVyZSBhbGwgZXhpdCB0
byB0aGUgZm9sbG93aW5nIGJ5dGVjb2RlIGluc3RydWN0aW9uLCBub3QKKyAgICAgICAgICAgIC8v
IHRoZSBvcF9jYXRjaC4gRXhpdGluZyB0byBvcF9jYXRjaCBpcyByZXNlcnZlZCBmb3Igd2hlbiBh
biBleGNlcHRpb24gaXMgdGhyb3duLgorICAgICAgICAgICAgLy8gVGhlIFNldEFyZ3VtZW50IG5v
ZGVzIHRoYXQgZm9sbG93IGJlbG93IG1heSBleGl0IGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUg
Y2hlY2tzCisgICAgICAgICAgICAvLyB0byB0aGVtLiBUaGUgU2V0TG9jYWwgbm9kZXMgdGhhdCBm
b2xsb3cgYmVsb3cgbWF5IGV4aXQgYmVjYXVzZSB3ZSBtYXkgY2hvb3NlCisgICAgICAgICAgICAv
LyBhIGZsdXNoIGZvcm1hdCB0aGF0IHNwZWN1bGF0ZXMgb24gdGhlIHR5cGUgb2YgdGhlIGxvY2Fs
LgorICAgICAgICAgICAgbV9leGl0T0sgPSB0cnVlOyAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
RXhpdE9LKTsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNldCB1cCBvdXIg
YXJndW1lbnRzIG5vdyB0aGF0IGl0J3Mgc2FmZSB0byBleGl0LiBUaGlzIGhhcHBlbnMgaGVyZSBi
ZWNhdXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcyB1cAorICAgICAgICAgICAgICAgIC8vIHRv
IHRoaXMgcG9pbnQgaW4gdGhlIHByb2dyYW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0byBleGl0Lgor
ICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5hZGQobV9jdXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAg
ICAgICAgIFZlY3RvcjxOb2RlKiwgOD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVz
aXplKG1fbnVtQXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3Vt
ZW50ID0gMDsgYXJndW1lbnQgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKythcmd1bWVu
dCkgeworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0g
bmV3VmFyaWFibGVBY2Nlc3NEYXRhKHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50
KSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50UHJlZGlj
dGlvbnNbYXJndW1lbnRdKTsKKworICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VT
dHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2FjaGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJh
eUhvaXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdU
eXBlKSk7CisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dy
YXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAg
c2V0QXJndW1lbnQtPm9yaWdpbi5mb3JFeGl0LmJ5dGVjb2RlSW5kZXggKz0gT1BDT0RFX0xFTkdU
SChvcF9jYXRjaCk7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJs
ZXNBdFRhaWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1
bWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZv
ciAoY29uc3Qgc3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+JiBwYWlyIDogbG9jYWxz
VG9TZXQpIHsKKyAgICAgICAgICAgICAgICBEZWxheWVkU2V0TG9jYWwgZGVsYXllZCB7IGN1cnJl
bnRDb2RlT3JpZ2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCBJbW1lZGlhdGVOYWtlZFNl
dCB9OworICAgICAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBlbmQoZGVsYXllZCk7Cisg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKLSAgICAg
ICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAg
aGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsK
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0g
Y3VycmVudEluc3RydWN0aW9uLCAiaGFuZGxlQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0
aGUgY2FsbGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CkBAIC02MTU2LDggKzYy
ODQsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxp
bmtlZEJsb2NrKGJsb2NrLnB0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAg
ICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFy
Z2V0LgotICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAg
ICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2so
V1RGTW92ZShibG9jaykpOwogICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2Nr
KCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjIxNCwxMCArNjM0NCwxMiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCks
IElubGluZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQog
ICAgIGxpbmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVT
dGFja0VudHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWlu
ZVJlYWNoYWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisK
KyAgICBtX2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgp
OwogICAgIAogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9j
a3MoKTsgYmxvY2tJbmRleC0tOykgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3Jh
cGguYmxvY2soYmxvY2tJbmRleCk7CkBAIC02MjI4LDcgKzYzNjAsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZSgpCiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51
bWJlck9mTG9jYWxzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJl
ck9mTG9jYWxzKCkpOwogICAgICAgICBBU1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1i
ZXJPZkFyZ3VtZW50cygpID09IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1i
ZXJPZkFyZ3VtZW50cygpKTsKICAgICB9Ci0gICAgCisKICAgICBtX2dyYXBoLm1fbG9jYWxWYXJz
ID0gbV9udW1Mb2NhbHM7CiAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9wYXJhbWV0
ZXJTbG90czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5j
cHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5ieXRl
Y29kZUJlZ2luICE9IG1fZ3JhcGgubV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAg
ICAgICBpZiAobV92ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICBGb3Vu
ZCBtdXN0LWhhbmRsZSBibG9jazogIiwgKmJsb2NrLCAiXG4iKTsKICAgICAgICAgICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkocmV2aXNpb24gMjIxMDI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkRG
R0Jsb2NrU2V0LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlIDx3dGYvU2luZ2xl
Um9vdEdyYXBoLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtNDgs
NyArNDksMTkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBOb2RlIHJvb3QoKSB7IHJl
dHVybiBtX2dyYXBoLmJsb2NrKDApOyB9CisgICAgTm9kZSByb290KCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EgfHwgbV9ncmFwaC5tX2lzSW5TU0FDb252ZXJz
aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7CisgICAgfQorCisgICAgTGlz
dCByb290cygpCisgICAgeworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yIChCYXNp
Y0Jsb2NrKiByb290IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChyb290KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBCbG9ja01hcDxU
PihtX2dyYXBoKTsgfQpAQCAtNzEsNiArODQsMzEgQEAgcHJpdmF0ZToKICAgICBHcmFwaCYgbV9n
cmFwaDsKIH07CiAKK2NsYXNzIENQU0NGRyA6IHB1YmxpYyBTaW5nbGVSb290R3JhcGg8Q0ZHPiB7
CitwdWJsaWM6CisgICAgQ1BTQ0ZHKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBTaW5nbGVSb290
R3JhcGg8Q0ZHPigqZ3JhcGgubV9zc2FDRkcpCisgICAgeworICAgICAgICBBU1NFUlQoZ3JhcGgu
bV9lbnRyeXBvaW50cy5zaXplKCkpOworICAgIH0KK307CisKK3VzaW5nIFNTQUNGRyA9IENGRzsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVf
aWY8c3RkOjppc19zYW1lPFQsIENQU0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0NGRyYgc2VsZWN0
Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX2Nwc0NGRyk7
CisgICAgcmV0dXJuICpncmFwaC5tX2Nwc0NGRzsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNG
Rz46OnZhbHVlPjo6dHlwZT4KK1NTQUNGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAg
ICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX3NzYUNGRyk7CisgICAgcmV0dXJuICpncmFwaC5tX3Nz
YUNGRzsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2OSw4ICszNjksMTMgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFy
Z3VtZW50cyB1c2VkIGZvciB0aGUgYWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2Rl
QmxvY2sgZ2V0CiAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVh
ZCB1c2VkIHR3byBkaWZmZXJlbnQgbm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwog
ICAgICAgICAvLyBhdCB0aGUgcHJvbG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhl
ciB1c2VzLiBCdXQgdGhpcyBzZWVtZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGktLTspCi0gICAgICAgICAg
ICBtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUo
aSwgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDog
bV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykgeworICAgICAgICAgICAgQmFzaWNCbG9j
ayogZW50cnlwb2ludCA9IHBhaXIua2V5OworICAgICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUq
LCA4PiYgYXJndW1lbnRzID0gcGFpci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+
dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtp
bmQ+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2
aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OCw3ICs1OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5p
bml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMo
KTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAg
ICAgICBtX3ByZU9yZGVyID0gbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CiAgICAgICAgIApA
QCAtNjkwLDcgKzY5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAg
ICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwg
bV9ibG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9t
aW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgbV9u
b2RlLT5yZXBsYWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9
IHRydWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzc5LDcgKzc3OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUgc3RyaWN0IGRvbWluYXRpb24gYmVjYXVzZSB0
aGlzIHdvdWxkIG9ubHkgc2VlIHRoaW5ncyBpbiBvdXIgb3duIGJsb2NrIGlmCiAgICAgICAgICAg
ICAvLyB0aGV5IGNhbWUgKmFmdGVyKiBvdXIgcG9zaXRpb24gaW4gdGhlIGJsb2NrLiBDbGVhcmx5
LCB3aGlsZSBvdXIgYmxvY2sgZG9taW5hdGVzCiAgICAgICAgICAgICAvLyBpdHNlbGYsIHRoZSB0
aGluZ3MgaW4gdGhlIGJsb2NrIGFmdGVyIHVzIGRvbid0IGRvbWluYXRlIHVzLgotICAgICAgICAg
ICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9i
bG9jaykpIHsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0
bHlEb21pbmF0ZXMoYmxvY2ssIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2UpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9t
aW5hdGVzLlxuIik7CiAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IGRhdGEuZGlkVmlzaXQpOwpAQCAtODU2LDcgKzg1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlW2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3Jz
LT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0
ZS0+b3duZXIsIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtPnJlcGxhY2VX
aXRoKGNhbmRpZGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guc2V0Tm9k
ZShjYW5kaWRhdGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBBU1NFUlQoIW5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICByZWFkKEFic3RyYWN0SGVh
cChTdGFjaywgZ3JhcGgubV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSkpOwogICAgIH0KLSAg
ICAgICAgCiAgICAgCiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgY2FzZSBKU0NvbnN0
YW50OgpAQCAtMTQxLDYgKzE0MCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4
dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2Fz
ZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxl
bmNlQW5hbHlzaXMoR3JhcGgmIGdyYXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5l
bnN1cmVEb21pbmF0b3JzKCkpCisgICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKSkKICAgICAgICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5z
dXJlQmFja3dhcmRzRG9taW5hdG9ycygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3Jz
OworICAgIFNTQURvbWluYXRvcnMmIG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0
b3JzJiBtX2JhY2t3YXJkc0RvbWluYXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcg
KzUzLDggQEAgcHVibGljOgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFw
aC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAg
ICAgICBmb3IgKGF1dG8mIGFyZ3VtZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMudmFsdWVzKCkpCisgICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNW
ZWN0b3IpOwogCiAgICAgICAgIC8vIEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFu
LXVwLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
OCArOTUsOCBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAg
ZHVtcEhlYWRlcihvdXQsIGxpbmtCdWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJl
dmlvdXNPcmlnaW4pOwogICAgIAotICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAg
IG1fZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21p
bmF0b3JzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAg
ICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1i
bHlQcmVmaXggPSAiICAgICAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDcgQEAgYm9vbCBk
b2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1
Y2tldDoKICAgICBjYXNlIElzTm9uRW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVw
QXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMu
aAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21p
bmF0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6IHB1Ymxp
YyBXVEY6OkRvbWluYXRvcnM8Q0ZHPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2Ns
YXNzIERvbWluYXRvcnMgOiBwdWJsaWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShEb21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBEb21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBX
VEY6OkRvbWluYXRvcnM8Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0
b3JzPENGR0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAgIH0KIH07
CiAKK3VzaW5nIFNTQURvbWluYXRvcnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNE
b21pbmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZH
Pjo6dmFsdWU+Ojp0eXBlPgorQ1BTRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhH
cmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRv
cnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBn
cmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdFZGdlRG9taW5hdGVzLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxMSArNDAsMTIgQEAgcHVibGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAg
ICAgICwgbV9yZXN1bHQodHJ1ZSkKICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0g
PT0gU1NBKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVk
Z2UpCiAgICAgewotICAgICAgICBib29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5k
b21pbmF0ZXMoZWRnZS5ub2RlKCktPm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25l
ciwgbV9ibG9jayk7CiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgICAgICJDaGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5v
ZGUoKS0+b3duZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OTksNiArMTk5OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKICAgICAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRy
YWN0Q2F0Y2hMb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZI
aW50OgogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CkBAIC0zMTk0LDYgKzMxOTUsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmlzTnVtYmVyQ29uc3RhbnQoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBT
cGVjQnl0ZWNvZGVEb3VibGUsIERvdWJsZUNvbnN0YW50LCBvcmlnaW5Gb3JDaGVja3MsCkBAIC0z
MjI0LDYgKzMyMjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVk
Z2UtPmhhc0ludDUyUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEZvckNo
ZWNrcyAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aXNB
bnlJbnRDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5kZXhGb3JDaGVja3MsIFNwZWNBbnlJbnQsIEludDUyQ29uc3RhbnQsIG9yaWdpbkZvckNo
ZWNrcywKQEAgLTMyNTAsNiArMzI1Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJbnQ1MlJlc3Vs
dCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3Ms
IFNwZWNCeXRlY29kZURvdWJsZSwgVmFsdWVSZXAsIG9yaWdpbkZvckNoZWNrcywKQEAgLTMyOTEs
NiArMzI5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChpbmRleEZvckNoZWNrcyAhPSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4Rm9yQ2hlY2tzLCBTcGVjTm9uZSwgQ2hlY2ssIG9yaWdpbkZvckNoZWNrcywgZWRnZSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJl
dmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3Jt
YXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAKLWVudW0gRmx1c2hGb3JtYXQgeworZW51bSBGbHVzaEZvcm1hdCA6
IHVpbnQ4X3QgewogICAgIERlYWRGbHVzaCwKICAgICBGbHVzaGVkSW50MzIsCiAgICAgRmx1c2hl
ZEludDUyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgog
I2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdOYXR1cmFsTG9vcHMuaCIKLSNp
bmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25FeGVjdXRhYmxlRHVtcC5oIgpAQCAtNzMsNyArNzIsNyBAQCBHcmFwaDo6R3Jh
cGgoVk0mIHZtLCBQbGFuJiBwbGFuKQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVC
bG9jayhtX3BsYW4uY29kZUJsb2NrKQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2Nr
LT5hbHRlcm5hdGl2ZSgpKQotICAgICwgbV9jZmcoc3RkOjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlz
KSkKKyAgICAsIG1fc3NhQ0ZHKHN0ZDo6bWFrZV91bmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAg
LCBtX25leHRNYWNoaW5lTG9jYWwoMCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhw
b2ludCkKICAgICAsIG1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRS
ZWdpc3RlcmluZykKQEAgLTQwOSw5ICs0MDgsMTMgQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJl
VmFsaWQoKQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hM
b29wTm9kZShjb25zdCBDUFNDRkc6Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZSgpOyB9
CitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9kZShCYXNpY0Jsb2NrKiBibG9jaykgeyBy
ZXR1cm4gYmxvY2s7IH0KKwogdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVEdW1w
TW9kZSBwaGlOb2RlRHVtcE1vZGUsIER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91dC5w
cmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQo
MCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/
ICIiIDogIiAoc2tpcHBlZCkiLCBibG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIg
OiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAo
IiwgaW5Db250ZXh0KGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6
IiwKKyAgICAgICAgYmxvY2stPmlzUmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2Nr
LT5pc09TUlRhcmdldCA/ICIgKE9TUiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaEVudHJ5
cG9pbnQgPyAiIChDYXRjaCBFbnRyeXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJsb2Nr
LT5leGVjdXRpb25Db3VudCA9PSBibG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIEV4ZWN1dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50
LCAiXG4iKTsKICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00
MjIsMTggKzQyNSwyNiBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0m
CiAgICAgaWYgKGJsb2NrLT50ZXJtaW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayog
c3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnByaW50
KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0gICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQot
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VL
aW5kKGJsb2NrLCBzdWNjZXNzb3IpLCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAg
ICAgIG91dC5wcmludCgiIDxpbnZhbGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsKLSAgICBp
ZiAobV9kb21pbmF0b3JzICYmIHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAgb3V0LnBy
aW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRvcnNP
ZihibG9jayksICJcbiIpOwotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6
ICIsIG1fZG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKLSAgICAg
ICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRv
cnMtPmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50
KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMt
Pml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxuIik7
CisKKyAgICBhdXRvIHByaW50RG9taW5hdG9ycyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgewor
ICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIGRvbWluYXRvcnMu
ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIg
IERvbWluYXRlczogIiwgZG9taW5hdG9ycy5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIp
OworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIGRv
bWluYXRvcnMuZG9taW5hbmNlRnJvbnRpZXJPZihibG9jayksICJcbiIpOworICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBJdGVyYXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsCisgICAgICAg
ICAgICBkb21pbmF0b3JzLml0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZih0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZG9taW5hdG9ycyk+Ojp0eXBlOjpMaXN0IHsgYmxv
Y2sgfSksICJcbiIpOworICAgIH07CisKKyAgICBpZiAodGVybWluYWxzQXJlVmFsaWQoKSkgewor
ICAgICAgICBpZiAobV9zc2FEb21pbmF0b3JzKQorICAgICAgICAgICAgcHJpbnREb21pbmF0b3Jz
KCptX3NzYURvbWluYXRvcnMpOworICAgICAgICBlbHNlIGlmIChtX2Nwc0RvbWluYXRvcnMpCisg
ICAgICAgICAgICBwcmludERvbWluYXRvcnMoKm1fY3BzRG9taW5hdG9ycyk7CiAgICAgfQorCiAg
ICAgaWYgKG1fYmFja3dhcmRzRG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CiAg
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBkb21pbmF0ZXMgYnk6ICIsIG1f
YmFja3dhcmRzRG9taW5hdG9ycy0+ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CiAgICAgICAg
IG91dC5wcmludChwcmVmaXgsICIgIEJhY2t3YXJkcyBkb21pbmF0ZXM6ICIsIG1fYmFja3dhcmRz
RG9taW5hdG9ycy0+YmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKQEAgLTQ0NiwyOSAr
NDU3LDMzIEBAIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICAg
ICAgfQogICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgfQotICAgIGlmIChtX3ByZVBvc3RO
dW1iZXJpbmcpCi0gICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZS9Qb3N0IE51bWJlcmlu
ZzogIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5wcmVOdW1iZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9z
dE51bWJlcmluZy0+cG9zdE51bWJlcihibG9jayksICJcbiIpOwotICAgIGlmIChtX25hdHVyYWxM
b29wcykgewotICAgICAgICBpZiAoY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxM
b29wcy0+aGVhZGVyT2YoYmxvY2spKSB7CisKKyAgICBhdXRvIHByaW50TmF0dXJhbExvb3BzID0g
WyZdIChhdXRvJiBuYXR1cmFsTG9vcHMpIHsKKyAgICAgICAgaWYgKGNvbnN0IGF1dG8qIGxvb3Ag
PSBuYXR1cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgewogICAgICAgICAgICAgb3V0LnByaW50
KHByZWZpeCwgIiAgTG9vcCBoZWFkZXIsIGNvbnRhaW5zOiIpOwogICAgICAgICAgICAgVmVjdG9y
PEJsb2NrSW5kZXg+IHNvcnRlZEJsb2NrTGlzdDsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsb29wLT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBzb3J0ZWRCbG9j
a0xpc3QuYXBwZW5kKGxvb3AtPmF0KGkpLT5pbmRleCk7CisgICAgICAgICAgICAgICAgc29ydGVk
QmxvY2tMaXN0LmFwcGVuZCh1bmJveExvb3BOb2RlKGxvb3AtPmF0KGkpKS0+aW5kZXgpOwogICAg
ICAgICAgICAgc3RkOjpzb3J0KHNvcnRlZEJsb2NrTGlzdC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xp
c3QuZW5kKCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvcnRlZEJs
b2NrTGlzdC5zaXplKCk7ICsraSkKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29y
dGVkQmxvY2tMaXN0W2ldKTsKICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gY29udGFpbmlu
Z0xvb3BzID0KLSAgICAgICAgICAgIG1fbmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsKKyAg
ICAgICAgYXV0byBjb250YWluaW5nTG9vcHMgPSBuYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2sp
OwogICAgICAgICBpZiAoIWNvbnRhaW5pbmdMb29wcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IG91dC5wcmludChwcmVmaXgsICIgIENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbnRhaW5pbmdMb29wcy5zaXplKCk7ICsr
aSkKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiLCAqY29udGFpbmluZ0xvb3BzW2ldLT5o
ZWFkZXIoKSk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnVuYm94TG9vcE5vZGUo
Y29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSkpOwogICAgICAgICAgICAgb3V0LnByaW50KCJc
biIpOwogICAgICAgICB9Ci0gICAgfQorICAgIH07CisKKyAgICBpZiAobV9zc2FOYXR1cmFsTG9v
cHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1fc3NhTmF0dXJhbExvb3BzKTsKKyAgICBl
bHNlIGlmIChtX2Nwc05hdHVyYWxMb29wcykKKyAgICAgICAgcHJpbnROYXR1cmFsTG9vcHMobV9j
cHNOYXR1cmFsTG9vcHMpOworCiAgICAgaWYgKCFibG9jay0+cGhpcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUGhpIE5vZGVzOiIpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGJsb2NrLT5waGlzLnNpemUoKTsgKytpKSB7CkBAIC01MDIsOCArNTE3
LDEwIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICBvdXQu
cHJpbnQoIiAgRml4cG9pbnQgc3RhdGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwg
bV9mb3JtLCAiOyBVbmlmaWNhdGlvbiBzdGF0ZTogIiwgbV91bmlmaWNhdGlvblN0YXRlLCAiOyBS
ZWYgY291bnQgc3RhdGU6ICIsIG1fcmVmQ291bnRTdGF0ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9y
bSA9PSBTU0EpCiAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0
RHVtcChtX2FyZ3VtZW50Rm9ybWF0cyksICJcbiIpOwotICAgIGVsc2UKLSAgICAgICAgb3V0LnBy
aW50KCIgIEFyZ3VtZW50czogIiwgbGlzdER1bXAobV9hcmd1bWVudHMpLCAiXG4iKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykK
KyAgICAgICAgICAgIG91dC5wcmludCgiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5
LT5pbmRleCwgIjogIiwgbGlzdER1bXAocGFpci52YWx1ZSksICJcbiIpOworICAgIH0KICAgICBv
dXQucHJpbnQoIlxuIik7CiAgICAgCiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAt
NjQwLDggKzY1NywxMCBAQCB2b2lkIEdyYXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2lj
CiB2b2lkIEdyYXBoOjpkZXRlcm1pbmVSZWFjaGFiaWxpdHkoKQogewogICAgIFZlY3RvcjxCYXNp
Y0Jsb2NrKiwgMTY+IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LmFwcGVuZChibG9jaygwKSk7Ci0g
ICAgYmxvY2soMCktPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVu
dHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hh
YmxlID0gdHJ1ZTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQpOworICAgIH0K
ICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJs
b2NrLT5udW1TdWNjZXNzb3JzKCk7IGktLTspCkBAIC03OTgsOSArODE3LDEwIEBAIHZvaWQgR3Jh
cGg6OmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpCiAKIHZvaWQgR3JhcGg6OmludmFsaWRhdGVDRkco
KQogewotICAgIG1fZG9taW5hdG9ycyA9IG51bGxwdHI7Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBu
dWxscHRyOwotICAgIG1fcHJlUG9zdE51bWJlcmluZyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21p
bmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX3NzYURvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1f
Y3BzTmF0dXJhbExvb3BzID0gbnVsbHB0cjsKKyAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG51bGxw
dHI7CiAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IG51bGxwdHI7CiAgICAgbV9i
YWNrd2FyZHNEb21pbmF0b3JzID0gbnVsbHB0cjsKICAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxw
dHI7CkBAIC04NTAsMTIgKzg3MCwzNyBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUHJlT3Jk
ZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlz
dDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVu
dHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9p
bnQpOwogICAgIHdoaWxlIChCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoYmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQogICAgICAgICAgICAgd29ya2xpc3QucHVzaChi
bG9jay0+c3VjY2Vzc29yKGkpKTsKICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQo
KSkgeworICAgICAgICAvLyBXaGVuIGl0ZXJhdGluZyBvdmVyIHByZSBvcmRlciwgd2Ugc2hvdWxk
IHNlZSBkb21pbmF0b3JzCisgICAgICAgIC8vIGJlZm9yZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4K
KyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAg
ICAgICAgIGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAg
ICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBqKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9y
bSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVz
dWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2
YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsKKyAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtODYzLDcgKzkwOCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tz
SW5Qb3N0T3JkZXIoKQogewogICAgIEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxv
Y2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBm
b3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3Jr
bGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0g
d29ya2xpc3QucG9wKCkpIHsKICAgICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAg
IGNhc2UgVmlzaXRPcmRlcjo6UHJlOgpAQCAtODc2LDYgKzkyMiwzMSBAQCBCbG9ja0xpc3QgR3Jh
cGg6OmJsb2Nrc0luUG9zdE9yZGVyKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgYXV0byB2YWxp
ZGF0ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIC8vIFdo
ZW4gaXRlcmF0aW5nIG92ZXIgcmV2ZXJzZSBwb3N0IG9yZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWlu
YXRvcnMKKyAgICAgICAgICAgIC8vIGJlZm9yZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAg
IGlmICghYSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIWIgfHwgYSA9PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGkgPiBqKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBT
U0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhl
bnN1cmVTU0FEb21pbmF0b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0
ZVJlc3VsdHMoZW5zdXJlQ1BTRG9taW5hdG9ycygpKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCkBAIC0xNDcyLDMwICsxNTQzLDQ0IEBAIHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlv
bkZhaWx1cmUoCiAgICAgbG9nREZHQXNzZXJ0aW9uRmFpbHVyZSgqdGhpcywgdG9DU3RyaW5nKCJX
aGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVtcChibG9jayksICJcblxuIiksIGZpbGUs
IGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOwogfQogCi1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5z
dXJlRG9taW5hdG9ycygpCitDUFNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9y
cygpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29u
dmVyc2lvbik7CisgICAgaWYgKCFtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgIG1fY3BzRG9taW5h
dG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVy
biAqbV9jcHNEb21pbmF0b3JzOworfQorCitTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NB
RG9taW5hdG9ycygpCiB7Ci0gICAgaWYgKCFtX2RvbWluYXRvcnMpCi0gICAgICAgIG1fZG9taW5h
dG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8RG9taW5hdG9ycz4oKnRoaXMpOwotICAgIHJldHVybiAq
bV9kb21pbmF0b3JzOworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0lu
U1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFtX3NzYURvbWluYXRvcnMpCisgICAgICAgIG1fc3Nh
RG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAg
IHJldHVybiAqbV9zc2FEb21pbmF0b3JzOwogfQogCi1QcmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6
ZW5zdXJlUHJlUG9zdE51bWJlcmluZygpCitDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVD
UFNOYXR1cmFsTG9vcHMoKQogewotICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAg
ICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+
KCp0aGlzKTsKLSAgICByZXR1cm4gKm1fcHJlUG9zdE51bWJlcmluZzsKKyAgICBSRUxFQVNFX0FT
U0VSVChtX2Zvcm0gIT0gU1NBICYmICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBlbnN1cmVD
UFNEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX2Nwc05hdHVyYWxMb29wcykKKyAgICAgICAgbV9j
cHNOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMp
OworICAgIHJldHVybiAqbV9jcHNOYXR1cmFsTG9vcHM7CiB9CiAKLU5hdHVyYWxMb29wcyYgR3Jh
cGg6OmVuc3VyZU5hdHVyYWxMb29wcygpCitTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVT
U0FOYXR1cmFsTG9vcHMoKQogewotICAgIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBpZiAoIW1f
bmF0dXJhbExvb3BzKQotICAgICAgICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8
TmF0dXJhbExvb3BzPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX25hdHVyYWxMb29wczsKKyAgICBS
RUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKKyAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7
CisgICAgaWYgKCFtX3NzYU5hdHVyYWxMb29wcykKKyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFNTQU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAq
bV9zc2FOYXR1cmFsTG9vcHM7CiB9CiAKIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3
YXJkc0NGRygpCiB7CisgICAgLy8gV2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1
dHVyZSB0byB3b3JrIG92ZXIgQ1BTLCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4K
KyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJk
c0NGRykKICAgICAgICAgbV9iYWNrd2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJk
c0NGRz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNDRkc7CkBAIC0xNTAzLDYgKzE1
ODgsNyBAQCBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAKIEJhY2t3
YXJkc0RvbWluYXRvcnMmIEdyYXBoOjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9t
aW5hdG9ycykKICAgICAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1
ZTxCYWNrd2FyZHNEb21pbmF0b3JzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0Rv
bWluYXRvcnM7CkBAIC0xNTEwLDYgKzE1OTYsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFw
aDo6ZW5zdXJlQmFja3dhCiAKIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5z
dXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1f
Zm9ybSA9PSBTU0EpOwogICAgIGlmICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKICAg
ICAgICAgbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29u
dHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udHJvbEVx
dWl2YWxlbmNlQW5hbHlzaXM7CkBAIC0xNTI3LDcgKzE2MTQsOSBAQCBNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIEdyYXBoOjptZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+
bG9jYWwoKS5pc0FyZ3VtZW50KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1f
YXJndW1lbnRzW2FyZ3VtZW50XTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBtYXRjaCBTZXRBcmd1bWVudCBub2RlcyBhdCBvdGhlciBlbnRyeXBvaW50cyBhcyB3ZWxs
OgorICAgICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1ODQxCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9
IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07
CiAgICAgICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
KQpAQCAtMTY5OCw2ICsxNzg3LDEzIEBAIGJvb2wgR3JhcGg6OmNhbkRvRmFzdFNwcmVhZChOb2Rl
KiBub2RlLCAKICAgICByZXR1cm4gYWxsR29vZDsKIH0KIAordm9pZCBHcmFwaDo6Y2xlYXJDUFND
RkdEYXRhKCkKK3sKKyAgICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9jcHNE
b21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBtX2Nwc0NGRyA9IG51bGxwdHI7Cit9CisKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFNpbmdsZVJvb3RHcmFwaDsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9j
azsKQEAgLTU2LDEwICs2MCwxNyBAQCBjbGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2Fy
ZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM7Ci1jbGFzcyBEb21pbmF0b3JzOwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWlu
YXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3Mg
Rmxvd0luZGV4aW5nOwotY2xhc3MgTmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmlu
ZzsKKworY2xhc3MgQ1BTQ0ZHOwordXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit1c2luZyBDUFNEb21p
bmF0b3JzID0gRG9taW5hdG9yczxDUFNDRkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWlu
YXRvcnM8U1NBQ0ZHPjsKK3VzaW5nIENQU05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFND
Rkc+OwordXNpbmcgU1NBTmF0dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRl
bXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBGbG93TWFwOwogCkBAIC05MDEsMjcgKzkxMiwzNyBAQCBw
dWJsaWM6CiAKICAgICBib29sIGhhc0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzRGVidWdnZXJFbmFibGVkOyB9CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3Jz
KCk7Ci0gICAgUHJlUG9zdE51bWJlcmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOwotICAg
IE5hdHVyYWxMb29wcyYgZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9taW5hdG9ycyYg
ZW5zdXJlQ1BTRG9taW5hdG9ycygpOworICAgIFNTQURvbWluYXRvcnMmIGVuc3VyZVNTQURvbWlu
YXRvcnMoKTsKKyAgICBDUFNOYXR1cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxMb29wcygpOwor
ICAgIFNTQU5hdHVyYWxMb29wcyYgZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgQmFja3dh
cmRzQ0ZHJiBlbnN1cmVCYWNrd2FyZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBl
bnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXMmIGVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCk7CiAKLSAgICAvLyBUaGlzIGZ1
bmN0aW9uIG9ubHkgbWFrZXMgc2Vuc2UgdG8gY2FsbCBhZnRlciBieXRlY29kZSBwYXJzaW5nCisg
ICAgLy8gVGhlc2UgZnVuY3Rpb25zIG9ubHkgbWFrZXMgc2Vuc2UgdG8gY2FsbCBhZnRlciBieXRl
Y29kZSBwYXJzaW5nCiAgICAgLy8gYmVjYXVzZSBpdCBxdWVyaWVzIHRoZSBtX2hhc0V4Y2VwdGlv
bkhhbmRsZXJzIGJvb2xlYW4gd2hvc2UgdmFsdWUKICAgICAvLyBpcyBvbmx5IGZ1bGx5IGRldGVy
bWluZWQgYWZ0ZXIgYnl0Y29kZSBwYXJzaW5nLgorICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9u
SW5NYWNoaW5lRnJhbWUoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgQ29k
ZU9yaWdpbiBpZ25vcmVkOworICAgICAgICBIYW5kbGVySW5mbyogaWdub3JlZDI7CisgICAgICAg
IHJldHVybiB3aWxsQ2F0Y2hFeGNlcHRpb25Jbk1hY2hpbmVGcmFtZShjb2RlT3JpZ2luLCBpZ25v
cmVkLCBpZ25vcmVkMik7CisgICAgfQogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNo
aW5lRnJhbWUoQ29kZU9yaWdpbiwgQ29kZU9yaWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFuZGxl
ckluZm8qJiBjYXRjaEhhbmRsZXJPdXQpOwogICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJlZ2lz
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxvY2st
PnVzZXNFdmFsKCk7IH0KICAgICBib29sIG5lZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJldHVy
biBtX2NvZGVCbG9jay0+dXNlc0V2YWwoKTsgfQogCisgICAgdm9pZCBjbGVhckNQU0NGR0RhdGEo
KTsKKwogICAgIFZNJiBtX3ZtOwogICAgIFBsYW4mIG1fcGxhbjsKICAgICBDb2RlQmxvY2sqIG1f
Y29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9wcm9maWxlZEJsb2NrOwogICAgIAotICAgIFZl
Y3RvcjwgUmVmUHRyPEJhc2ljQmxvY2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPFJlZlB0
cjxCYXNpY0Jsb2NrPiwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxPiBt
X2VudHJ5cG9pbnRzOwogICAgIFZlY3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKIAog
ICAgIEhhc2hNYXA8RW5jb2RlZEpTVmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2RlZEpTVmFsdWVI
YXNoLCBFbmNvZGVkSlNWYWx1ZUhhc2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7CkBAIC05NTYs
MTEgKzk3NywxMSBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRo
QWRkIGFuZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8g
dGhlIHNpZGUKICAgICAvLyBlZmZlY3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVu
dHM7CisgICAgSGFzaE1hcDxCYXNpY0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBv
aW50VG9Bcmd1bWVudHM7CiAgICAgCiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNz
LiBJbiBTU0EsIHRoaXMgaXMgdGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9j
a2VkIGluLgogICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Ci0gICAg
CisKICAgICBTZWdtZW50ZWRWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhLCAxNj4gbV92YXJpYWJs
ZUFjY2Vzc0RhdGE7CiAgICAgU2VnbWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24sIDg+IG1f
YXJndW1lbnRQb3NpdGlvbnM7CiAgICAgQmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7CkBA
IC05ODIsMTAgKzEwMDMsMTIgQEAgcHVibGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2Jq
ZWN0KiwgUHJvcGVydHlPZmZzZXQ+PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0
eVR5cGVLZXksIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAg
IFZlY3RvcjxSZWY8U25pcHBldD4+IG1fZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPERvbWluYXRvcnM+IG1fZG9taW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9z
dE51bWJlcmluZz4gbV9wcmVQb3N0TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1
cmFsTG9vcHM+IG1fbmF0dXJhbExvb3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2Zn
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNTQURvbWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1NBTmF0dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZHPiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BT
Q0ZHPiBtX2Nwc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3
YXJkc0NGRzsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNr
d2FyZHNEb21pbmF0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VB
bmFseXNpcz4gbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAzMiw4
IEBAIHB1YmxpYzoKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29s
IG1faGFzRGVidWdnZXJFbmFibGVkOwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBz
dGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3Rh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNTQgKzkzLDYxIEBAIHN0YXRpYyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMK
IAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNC
bG9jayogcm9vdCA9IG1fZ3JhcGguYmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNp
dCA9IHRydWU7Ci0gICAgcm9vdC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNm
YUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0
YXRlQXRIZWFkID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJl
Q2xvYmJlclN0YXRlQXRUYWlsID0gU3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytp
KSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0g
ICAgICAgIEZsdXNoRm9ybWF0IGZvcm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09
IFNTQSkKLSAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1
bWVudHNbaV07Ci0gICAgICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0
ID0gRmx1c2hlZEpTVmFsdWU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0
ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgZm9yIChC
YXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAg
IGVudHJ5cG9pbnQtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50
LT5jZmFIYXNWaXNpdGVkID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29u
c3RhbnRzID0gZmFsc2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJT
dGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5j
ZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5u
dW1iZXJPZkFyZ3VtZW50cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVl
c0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBm
b3JtYXQ7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdoZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBlbnRyeXBvaW50cyBp
biB0aGUgRlRMLCB3ZSBuZWVkIHRvIGNoYW5nZQorICAgICAgICAgICAgICAgIC8vIHdoYXQgd2Ug
ZG8gaGVyZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5Ngor
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAg
ICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1
c2hlZEpTVmFsdWU7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBz
d2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAg
ICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3Bl
Y0ludDMyT25seSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZs
dXNoZWRCb29sZWFuOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2lu
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToK
KyAgICAgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFr
ZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZs
dXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsK
LSAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhl
YWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgs
IG51bGxwdHIsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290
LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5sb2NhbChpKS5jbGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwu
bG9jYWwoaSkuY2xlYXIoKTsKLSAgICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXgg
PSAxIDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewot
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0g
ICAgICAgIGlmICghYmxvY2spCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlw
b2ludC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAg
ZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJh
bE9yZGVyKCkpIHsKKyAgICAgICAgaWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhi
bG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3Zl
LgogICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxv
Y2stPmlzUmVhY2hhYmxlKTsKICAgICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxz
ZTsKICAgICAgICAgYmxvY2stPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw3ICszNzEs
NyBAQCBpbmxpbmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlKGJhc2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9j
ayk7CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNl
IFJldHVybjoKICAgICBjYXNlIFRhaWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIy
MTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAg
ICAgY29tbW9uLnNocmlua1RvRml0KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAg
ICBvc3JFeGl0LnNocmlua1RvRml0KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0Zp
dCgpOwogICAgIHNwZWN1bGF0aW9uUmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmll
ZERGRy5wcmVwYXJlQW5kU2hyaW5rKCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtU
b0ZpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlz
aW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JF
bnRyeSwgb3NyRW50cnkuc2l6ZSgpLCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NS
RW50cnlEYXRhQnl0ZWNvZGVJbmRleCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0
YSogY2F0Y2hPU1JFbnRyeURhdGFGb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2lu
dERhdGEsIHVuc2lnbmVkPigKKyAgICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50
cnlwb2ludHMuc2l6ZSgpLCBieXRlY29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0IENh
dGNoRW50cnlwb2ludERhdGEqIGl0ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsg
fSk7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAg
IHsKKyAgICAgICAgc3RkOjpzb3J0KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRy
eXBvaW50cy5lbmQoKSwgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENh
dGNoRW50cnlwb2ludERhdGEmIGIpIHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJ
bmRleCA8IGIubV9ieXRlY29kZUluZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3IgKGNv
bnN0IENhdGNoRW50cnlwb2ludERhdGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7
CisgICAgICAgICAgICBBU1NFUlQocHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29k
ZUluZGV4KTsKKyAgICAgICAgICAgIHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNv
ZGVJbmRleDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRj
aEVudHJ5cG9pbnQodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVP
ZmZzZXQsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAg
ICAgICBjYXRjaEVudHJ5cG9pbnRzLmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNv
ZGVJbmRleCwgbWFjaGluZUNvZGVPZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsK
KyAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBl
eGl0KQogICAgIHsKQEAgLTEzMiwxMCArMTU4LDEzIEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAg
Q29tbW9uRGF0YSBjb21tb247CiAgICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRy
eTsKKyAgICBWZWN0b3I8Q2F0Y2hFbnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRyeXBvaW50czsKICAg
ICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxE
Rkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpW
YXJpYWJsZUV2ZW50U3RyZWFtIHZhcmlhYmxlRXZlbnRTdHJlYW07CiAgICAgREZHOjpNaW5pZmll
ZEdyYXBoIG1pbmlmaWVkREZHOworICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50cnlCdWZm
ZXI7CisKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICB1aW50OF90IG5ldmVyRXhlY3V0ZWRFbnRy
eSB7IDEgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDggQEAgc3Rh
dGljIHZvaWQgZW1pdFN0YWNrT3ZlcmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVy
Ojpjb21waWxlKCkKIHsKKyAgICBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAgc2V0
U3RhcnRPZkNvZGUoKTsKICAgICBjb21waWxlRW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0g
c3RkOjptYWtlX3VuaXF1ZTxTcGVjdWxhdGl2ZUpJVD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQyOCw4
IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlRnVuY3Rpb24oKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAgICBz
ZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NSwy
MyBAQCB2b2lkKiBKSVRDb21waWxlcjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYK
IAordm9pZCBKSVRDb21waWxlcjo6bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJh
c2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtC
dWZmZXIsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRy
eXBvaW50IGlzIHJlYWNoYWJsZSBieSBkZWZpbml0aW9uLgorICAgIG1faml0Q29kZS0+YXBwZW5k
Q2F0Y2hFbnRyeXBvaW50KGJhc2ljQmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZz
ZXRPZihibG9ja0hlYWQpLCBXVEZNb3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJ
VENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21w
aWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKCFiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9T
UiBlbnRyeSBpcyBub3QgYWxsb3dlZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkg
Y29udHJvbCBmbG93IGFuYWx5c2lzLgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25P
ZkNGQUhhc1Zpc2l0ZWQpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRy
eURhdGEqIGVudHJ5ID0gbV9qaXRDb2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5i
eXRlY29kZUJlZ2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAg
ICAgZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFz
dFZhbHVlc0F0SGVhZDsKICAgICAgICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6
IGluIG91ciBwcm90b2NvbCwgYSBkZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApA
QCAtNjcwLDYgKzY4MywxNCBAQCB2b2lkIEpJVENvbXBpbGVyOjpzZXRFbmRPZkNvZGUoKQogICAg
IG1fZGlzYXNzZW1ibGVyLT5zZXRFbmRPZkNvZGUobGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkp
OwogfQogCit2b2lkIEpJVENvbXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpCit7Cisg
ICAgaWYgKG1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5KSB7CisgICAgICAgIHVp
bnQzMl90IG51bWJlck9mTGl2ZUxvY2FscyA9IHN0ZDo6bWF4KCptX2dyYXBoLm1fbWF4TG9jYWxz
Rm9yQ2F0Y2hPU1JFbnRyeSwgMXUpOyAvLyBNYWtlIHN1cmUgd2UgYWx3YXlzIGFsbG9jYXRlIGEg
bm9uLW51bGwgY2F0Y2hPU1JFbnRyeUJ1ZmZlci4KKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9T
UkVudHJ5QnVmZmVyID0gdm0oKS0+c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKEpTVmFsdWUp
ICogbnVtYmVyT2ZMaXZlTG9jYWxzKTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTYsNiArMjU2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnko
QmFzaWNCbG9jayYsIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsK
KyAgICB2b2lkIG5vdGljZUNhdGNoRW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6
OkxhYmVsIGJsb2NrSGVhZCwgTGlua0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1
bWVudEZvcm1hdHMpOwogICAgIAogICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1
cm4gbV9qaXRDb2RlOyB9CiAgICAgCkBAIC0yODQsNiArMjg1LDggQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgYXBwZW5kRXhjZXB0aW9uSGFuZGxpbmdPU1JFeGl0KEV4aXRLaW5kLCB1bnNpZ25lZCBl
dmVudFN0cmVhbUluZGV4LCBDb2RlT3JpZ2luLCBIYW5kbGVySW5mbyogZXhjZXB0aW9uSGFuZGxl
ciwgQ2FsbFNpdGVJbmRleCwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBzVG9GYWlsID0g
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0KCkpOwogCisgICAgdm9pZCBtYWtlQ2F0Y2hPU1JFbnRy
eUJ1ZmZlcigpOworCiAgICAgLy8gVGhlIGRhdGFmbG93IGdyYXBoIGN1cnJlbnRseSBiZWluZyBn
ZW5lcmF0ZWQuCiAgICAgR3JhcGgmIG1fZ3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xJQ01QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7
CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0
YSB7CiAgICAgTG9vcERhdGEoKQogICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQs
OCArNzYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51
bGxwdHIsIG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBo
LmVuc3VyZURvbWluYXRvcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMo
KTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3Jh
cGguZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMs
NyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3Bz
LT5udW1Mb29wcygpKTsKKyAgICAgICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJh
bExvb3BzLT5udW1Mb29wcygpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhl
IHNldCBvZiB0aGluZ3MgZWFjaCBsb29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3Mg
dGhhdAogICAgICAgICAvLyBiZWxvbmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVy
LgpAQCAtOTgsNyArMTAwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2Zh
SGFzVmlzaXRlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3Bz
LT5pbm5lck1vc3RMb29wT2YoYmxvY2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3Aq
IGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2sp
OwogICAgICAgICAgICAgaWYgKCFsb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYs
MTQgKzExOCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAg
IC8vIC0gSWRlbnRpZnkgaXRzIHByZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0
cyBvdXRlciBsb29wcyBrbm93IHdoYXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcElu
ZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgu
bV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBs
b29wSW5kZXggPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5k
ZXgtLTspIHsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5t
X3NzYU5hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEm
IGRhdGEgPSBtX2RhdGFbbG9vcC5pbmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Zm9yICgKLSAgICAgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAg
ICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJh
bExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJM
b29wOwotICAgICAgICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMt
PmlubmVyTW9zdE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxv
b3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVy
TG9vcCkpCiAgICAgICAgICAgICAgICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVz
LmFkZEFsbChkYXRhLndyaXRlcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxv
Y2sqIGhlYWRlciA9IGxvb3AuaGVhZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRl
Y2Vzc29ycy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVk
ZWNlc3NvciA9IGhlYWRlci0+cHJlZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRl
ciwgcHJlZGVjZXNzb3IpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgICAgIHByZUhlYWRlciA9IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgVmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAg
ICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1
cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihi
bG9jayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAo
IWxvb3ApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3
ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNv
bnN0IE5hdHVyYWxMb29wKiBjdXJyZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50
OwotICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5l
ck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dy
YXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAg
ICAgICAgICAgICAgIGxvb3BTdGFjay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIFJlbWVtYmVyOiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3Qg
bG9vcCBhdCBpbmRleCAwLCBzbyBpZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLy8gYmVjYXVzZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9j
a3MgYmVsb25nIHRvIGZldyBsb29wcy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXgg
PSBsb29wLT5zaXplKCk7IGJvZHlJbmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayog
c3ViQmxvY2sgPSBsb29wLT5hdChib2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIHN1Ykxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9j
ayk7CisgICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9z
c2FOYXR1cmFsTG9vcHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3Vi
TG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sq
IHN1YlByZUhlYWRlciA9IG1fZGF0YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFC
TEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0lu
c2VydGlvblNldC5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBAIC00NiwxMDkgKzQ3LDE3NiBA
QCBwdWJsaWM6CiAKICAgICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBpZiAoIW1fZ3JhcGgu
bV9oYXNFeGNlcHRpb25IYW5kbGVycykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gTG9hZFN0
b3JlKTsKIAotICAgICAgICBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzLnJlc2l6ZShtX2dyYXBoLmJs
b2NrKDApLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgICAgIGlmICgh
bV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7Ci0gICAgICAg
IGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKLSAgICAgICAgICAgIGhhbmRsZUJsb2NrKGJsb2NrLCBpbnNlcnRpb25TZXQpOwotICAgICAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworICAgICAgICBpZiAobV9ncmFwaC5t
X2hhc0V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBtX2xpdmVBdENhdGNoSGVhZC5y
ZXNpemUobV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkp
OworCisgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlQmxvY2tGb3JUcnlDYXRj
aChibG9jaywgaW5zZXJ0aW9uU2V0KTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhl
Y3V0ZShibG9jayk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlvbihDb2RlT3JpZ2luIG9y
aWdpbikKKyAgICBib29sIGlzVmFsaWRGbHVzaExvY2F0aW9uKEJhc2ljQmxvY2sqIHN0YXJ0aW5n
QmxvY2ssIHVuc2lnbmVkIGluZGV4LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgND4gd29ya2xpc3Q7CisgICAgICAgIEJsb2NrU2V0
IHNlZW47CisKKyAgICAgICAgYXV0byBhZGRQcmVkZWNlc3NvcnMgPSBbJl0gKEJhc2ljQmxvY2sq
IGJsb2NrKSB7CisgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogYmxvY2stPnBy
ZWRlY2Vzc29ycykgeworICAgICAgICAgICAgICAgIGJvb2wgaXNOZXdFbnRyeSA9IHNlZW4uYWRk
KGJsb2NrKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAg
ICAgICAgd29ya2xpc3QuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KworICAgICAgICBhdXRvIGZsdXNoSXNEZWZpbml0ZWx5SW52YWxpZCA9IFsmXSAoQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICBib29sIGFsbEdvb2QgPSBm
YWxzZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGV4OyBpLS07ICkgeworICAg
ICAgICAgICAgICAgIGlmIChibG9jay0+YXQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkgJiYg
YmxvY2stPmF0KGkpLT5sb2NhbCgpID09IG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAg
YWxsR29vZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGFsbEdvb2QpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpZiAoYmxvY2stPnByZWRlY2Vz
c29ycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcm9vdCBibG9j
ay4gV2UgcHJvdmVkIHdlIHJlYWNoZWQgaGVyZSwgdGhlcmVmb3JlIHdlIGNhbid0IEZsdXNoLCBh
cworICAgICAgICAgICAgICAgIC8vIGl0J2xsIG1ha2UgdGhpcyBsb2NhbCBsaXZlIGF0IHRoZSBz
dGFydCBvZiBhIHJvb3QgYmxvY2ssIHdoaWNoIGlzIGludmFsaWQgSVIuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFkZFByZWRlY2Vz
c29ycyhibG9jayk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CisKKyAg
ICAgICAgaWYgKGZsdXNoSXNEZWZpbml0ZWx5SW52YWxpZChzdGFydGluZ0Jsb2NrLCBpbmRleCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgd2hpbGUgKCF3b3JrbGlzdC5p
c0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gd29ya2xpc3QudGFr
ZUxhc3QoKTsKKyAgICAgICAgICAgIGlmIChmbHVzaElzRGVmaW5pdGVseUludmFsaWQoYmxvY2ss
IGJsb2NrLT5zaXplKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGQ6OnBhaXI8SGFuZGxlcklu
Zm8qLCBGYXN0Qml0VmVjdG9yPiBjYXRjaEhhbmRsZXIoQ29kZU9yaWdpbiBvcmlnaW4pCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4VG9DaGVjayA9IG9yaWdpbi5ieXRlY29k
ZUluZGV4OwotICAgICAgICBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzLmNsZWFyQWxsKCk7CiAKICAg
ICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2Fs
bEZyYW1lID0gb3JpZ2luLmlubGluZUNhbGxGcmFtZTsKICAgICAgICAgICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUp
OwogICAgICAgICAgICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleFRvQ2hlY2spKSB7CisgICAgICAgICAg
ICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKKyAgICAgICAgICAgICAgICBsaXZlbmVzcy5y
ZXNpemUobV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkp
OworCiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2F0Y2hCeXRlY29kZUluZGV4ID0gaGFuZGxl
ci0+dGFyZ2V0OwogICAgICAgICAgICAgICAgIG1fZ3JhcGguZm9yQWxsTG9jYWxzTGl2ZUluQnl0
ZWNvZGUoQ29kZU9yaWdpbihjYXRjaEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZSksIFsm
XSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2tMaXZlbmVzc1tvcGVyYW5kLnRvTG9jYWwoKV0gPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBsaXZlbmVzc1tvcGVyYW5kLnRvTG9jYWwoKV0gPSB0cnVlOwogICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgaGFuZGxlciwgbGl2ZW5lc3MgfTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIHJldHVybiB7IG51bGxwdHIsIEZhc3RCaXRWZWN0b3IoKSB9OwogCiAg
ICAgICAgICAgICBieXRlY29kZUluZGV4VG9DaGVjayA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0
Q2FsbGVyLmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgICAgICBvcmlnaW4gPSBpbmxpbmVDYWxsRnJh
bWUtPmRpcmVjdENhbGxlcjsKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgaGFuZGxlQmxv
Y2soQmFzaWNCbG9jayogYmxvY2ssIEluc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0KQorICAgIHZv
aWQgaGFuZGxlQmxvY2tGb3JUcnlDYXRjaChCYXNpY0Jsb2NrKiBibG9jaywgSW5zZXJ0aW9uU2V0
JiBpbnNlcnRpb25TZXQpCiAgICAgewotICAgICAgICAvLyBCZWNhdXNlIHByZWNpc2UganVtcCB0
YXJnZXRzIGVuc3VyZXMgdGhhdCB0aGUgc3RhcnQgb2YgYSAidHJ5IiBibG9jayBpcyBpdHMKLSAg
ICAgICAgLy8gb3duIGJhc2ljIGJsb2NrLCB3ZSB3aWxsIG5ldmVyIGhhdmUgdHdvICJ0cnkiIHN0
YXRlbWVudHMgaW4gdGhlIHNhbWUgREZHCi0gICAgICAgIC8vIGJhc2ljIGJsb2NrLiBUaGVyZWZv
cmUsIGNoZWNraW5nIHRoZSBmaXJzdCBub2RlIGluIHRoZSBibG9jayBpcyBzdWZmaWNpZW50IAot
ICAgICAgICAvLyB0byBjaGVja2luZyBpZiB3ZSdyZSBpbiBhIHRyeSBibG9jay4KLSAgICAgICAg
aWYgKCF3aWxsQ2F0Y2hFeGNlcHRpb24oYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMpKQot
ICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIE9wZXJhbmRzPFZhcmlhYmxlQWNjZXNzRGF0
YSo+IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJP
ZkFyZ3VtZW50cygpLCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCksIG51
bGxwdHIpOwogICAgICAgICBIYXNoU2V0PElubGluZUNhbGxGcmFtZSo+IHNlZW5JbmxpbmVDYWxs
RnJhbWVzOwogCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBibG9jay0+c2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxv
Y2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQg
PSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgp
ICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQo
KV07Ci0gICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBu
b2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgICAgIGlm
IChpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJh
bWVzLmFkZChpbmxpbmVDYWxsRnJhbWUpOwotCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9w
KCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgIWlzUHJpbW9y
ZGlhbFNldEFyZ3VtZW50KSkgewotICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CisgICAgICAgIG1fY3VycmVudEV4Y2VwdGlvbkhhbmRs
ZXIgPSBudWxscHRyOwogCi0gICAgICAgICAgICAgICAgICAgIGludCBzdGFja09mZnNldCA9IGlu
bGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYmIG1fY3VycmVudEJsb2NrTGl2
ZW5lc3Nbb3BlcmFuZC50b0xvY2FsKCldKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG9w
ZXJhbmQub2Zmc2V0KCkgPT0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9m
ZnNldCgpKSkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHZhcmlhYmxlQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVy
YW5kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1Zhcmlh
YmxlQWNjZXNzRGF0YShvcGVyYW5kKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoaSwgU3BlY05vbmUsIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZsdXNoLCBub2RlLT5vcmlnaW4sIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IGlmIChub2RlLT5hY2Nlc3Nlc1N0YWNrKG1fZ3JhcGgpKQotICAgICAgICAgICAgICAgICAgICBj
dXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQobm9kZS0+bG9jYWwoKSkgPSBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEluc2VydCBGbHVzaCBmb3IgZXZlcnl0aGluZyBhdCB0aGUgZW5kIG9mIHRoZSBibG9jay4KLSAg
ICAgICAgewotICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBibG9jay0+YXQoYmxvY2st
PnNpemUoKSAtIDEpLT5vcmlnaW47CisgICAgICAgIGF1dG8gZmx1c2hFdmVyeXRoaW5nID0gWyZd
IChOb2RlT3JpZ2luIG9yaWdpbiwgdW5zaWduZWQgaW5kZXgpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fY3VycmVudEV4Y2VwdGlvbkhhbmRsZXIpOwogICAgICAgICAgICAgYXV0byBw
cmVzZXJ2ZUxpdmVuZXNzQXRFbmRPZkJsb2NrID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCwgYm9vbCBhbHdheXNJbnNlcnQpIHsKLSAgICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNM
b2NhbCgpICYmIG1fY3VycmVudEJsb2NrTGl2ZW5lc3Nbb3BlcmFuZC50b0xvY2FsKCldKSAKKyAg
ICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYmIG1fbGl2ZUF0Q2F0Y2hIZWFk
W29wZXJhbmQudG9Mb2NhbCgpXSkgCiAgICAgICAgICAgICAgICAgICAgIHx8IG9wZXJhbmQuaXNB
cmd1bWVudCgpCiAgICAgICAgICAgICAgICAgICAgIHx8IGFsd2F5c0luc2VydCkgeworCisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkRmx1c2hMb2NhdGlvbihibG9jaywgaW5kZXgs
IG9wZXJhbmQpKTsKKwogICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGFj
Y2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghYWNjZXNzRGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCk7CiAKICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpID0gYWNj
ZXNzRGF0YTsKIAotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShi
bG9jay0+c2l6ZSgpLCBTcGVjTm9uZSwgCisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNl
dC5pbnNlcnROb2RlKGluZGV4LCBTcGVjTm9uZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBG
bHVzaCwgb3JpZ2luLCBPcEluZm8oYWNjZXNzRGF0YSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH07CisKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbG9jYWwgPSAwOyBsb2Nh
bCA8IGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKTsgbG9jYWwrKykKICAg
ICAgICAgICAgICAgICBwcmVzZXJ2ZUxpdmVuZXNzQXRFbmRPZkJsb2NrKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGxvY2FsKSwgZmFsc2UpOwogICAgICAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA6IHNlZW5JbmxpbmVDYWxsRnJhbWVzKQogICAgICAgICAgICAg
ICAgIHByZXNlcnZlTGl2ZW5lc3NBdEVuZE9mQmxvY2soVmlydHVhbFJlZ2lzdGVyKGlubGluZUNh
bGxGcmFtZS0+c3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKSwg
dHJ1ZSk7CiAgICAgICAgICAgICBwcmVzZXJ2ZUxpdmVuZXNzQXRFbmRPZkJsb2NrKFZpcnR1YWxS
ZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKSwgdHJ1ZSk7CisKKyAgICAg
ICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmNsZWFyKCk7CisgICAgICAgIH07CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7IGkrKykgeworICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKworICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHN0ZDo6cGFpcjxIYW5kbGVySW5mbyosIEZhc3RCaXRWZWN0b3I+IGRhdGEgPSBj
YXRjaEhhbmRsZXIobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBIYW5k
bGVySW5mbyogbmV3SGFuZGxlciA9IGRhdGEuZmlyc3Q7CisgICAgICAgICAgICAgICAgaWYgKG5l
d0hhbmRsZXIgIT0gbV9jdXJyZW50RXhjZXB0aW9uSGFuZGxlciAmJiBtX2N1cnJlbnRFeGNlcHRp
b25IYW5kbGVyKQorICAgICAgICAgICAgICAgICAgICBmbHVzaEV2ZXJ5dGhpbmcobm9kZS0+b3Jp
Z2luLCBpKTsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRFeGNlcHRpb25IYW5kbGVyID0gbmV3
SGFuZGxlcjsKKyAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50RXhjZXB0aW9uSGFuZGxlcikK
KyAgICAgICAgICAgICAgICAgICAgbV9saXZlQXRDYXRjaEhlYWQgPSBkYXRhLnNlY29uZDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fY3VycmVudEV4Y2VwdGlvbkhhbmRsZXIg
JiYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgbm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCkp
IHsKKyAgICAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICAgICAgaWYg
KGlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFt
ZXMuYWRkKGlubGluZUNhbGxGcmFtZSk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOworCisgICAgICAgICAgICAgICAgaW50IHN0YWNrT2Zm
c2V0ID0gaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDA7
CisgICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwoKSAmJiBtX2xpdmVBdENhdGNo
SGVhZFtvcGVyYW5kLnRvTG9jYWwoKV0pCisgICAgICAgICAgICAgICAgICAgIHx8IG9wZXJhbmQu
aXNBcmd1bWVudCgpCisgICAgICAgICAgICAgICAgICAgIHx8IChvcGVyYW5kLm9mZnNldCgpID09
IHN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkpIHsKKworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEZsdXNoTG9jYXRpb24oYmxvY2ssIGksIG9w
ZXJhbmQpKTsKKworICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEpCisgICAgICAgICAg
ICAgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEo
b3BlcmFuZCk7CisKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
aSwgU3BlY05vbmUsIAorICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gsIG5vZGUtPm9yaWdp
biwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkp
CisgICAgICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5vZGUtPmxv
Y2FsKCkpID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBJbnNlcnQgRmx1c2ggZm9yIGV2ZXJ5dGhpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2su
CisgICAgICAgIGlmIChtX2N1cnJlbnRFeGNlcHRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBO
b2RlT3JpZ2luIG9yaWdpbiA9IGJsb2NrLT5hdChibG9jay0+c2l6ZSgpIC0gMSktPm9yaWdpbjsK
KyAgICAgICAgICAgIGZsdXNoRXZlcnl0aGluZyhvcmlnaW4sIGJsb2NrLT5zaXplKCkpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xNjAsNyArMjI4LDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gJm1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEubGFzdCgpOwogICAgIH0KIAotICAgIEZh
c3RCaXRWZWN0b3IgbV9jdXJyZW50QmxvY2tMaXZlbmVzczsKKyAgICBGYXN0Qml0VmVjdG9yIG1f
bGl2ZUF0Q2F0Y2hIZWFkOworICAgIEhhbmRsZXJJbmZvKiBtX2N1cnJlbnRFeGNlcHRpb25IYW5k
bGVyIHsgbnVsbHB0ciB9OwogfTsKIAogYm9vbCBwZXJmb3JtTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVI
ZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0luc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNp
Y0Jsb2NrKiBibG9jaykKIHsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFncmFwaC5tX2VudHJ5
cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSwgIkFuIGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBh
IGxvb3AiKTsKKwogICAgIC8vIEZJWE1FOiBJZiB3ZSBydW4gdGhpcyB1dGlsaXR5IG9uIFNTQSBJ
UiwgdGhlbiB3ZSBtYXkgZW5kIHVwIHdpdGggYSBiaXphcnJlIGFycmFuZ2VtZW50IG9mCiAgICAg
Ly8gVXBzaWxvbnMgYW5kIFBoaXMsIGxpa2U6CiAgICAgLy8KQEAgLTY5LDcgKzcxLDggQEAgQmFz
aWNCbG9jayogY3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIC8vIEluc3RlYWQsIHdl
IHVzZSB0aGUgbWF4IG9mIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgbG9vcCBib2R5J3Mgbm9uLWxv
b3AgcHJlZGVjZXNzb3JzLgogICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7CiAgICAgZm9yIChCYXNp
Y0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgaWYg
KGdyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAg
ICAgIEFTU0VSVChncmFwaC5tX2Zvcm0gIT0gU1NBKTsKKyAgICAgICAgaWYgKGdyYXBoLm1fY3Bz
RG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNl
c3Nvci0+ZXhlY3V0aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBCYXNpY0Js
b2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNl
c3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAg
ICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBw
cmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRl
Y2Vzc29yc1twcmVkZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7
CiAgICAgICAgIGJsb2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsx
MzMsMTYgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxM
b29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAg
bV9ncmFwaC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAo
dW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsg
bG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2lj
QmxvY2sqIGV4aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29w
SW5kZXggPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgt
LTspIHsKKyAgICAgICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5t
X2Nwc05hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9j
ayogZXhpc3RpbmdQcmVIZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05l
d1ByZUhlYWRlciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3Nv
ckluZGV4ID0gbG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJ
bmRleC0tOykgewotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9v
cC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHBy
ZWRlY2Vzc29yKSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9
IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3Nvcklu
ZGV4LS07KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29w
LmhlYWRlcigpLm5vZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAg
ICAgICAgICAgIGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVh
ZGVyKCkubm9kZSgpLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgZXhpc3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY4
LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1
bCBpZiBpdCdzIHBvc3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAg
ICAgICAgICAvLyBpZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9l
c24ndCBhbGxvdyBmb3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2lu
IG9mIHRoZSBsb29wIGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJl
LWhlYWRlci4KLSAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFk
ZXIoKS0+YXQoMCktPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVI
ZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAg
ICAgICAgICAgICAgJiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhp
dE9LKQogICAgICAgICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1f
Z3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0
ZVByZUhlYWRlcihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhl
Y3V0ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw4ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgICAgIH0KIAotICAgICAgICB0cmVh
dFJvb3RCbG9jayhtX2dyYXBoLmJsb2NrKDApLCBpbnNlcnRpb25TZXQpOwotICAgICAgICBpbnNl
cnRpb25TZXQuZXhlY3V0ZShtX2dyYXBoLmJsb2NrKDApKTsKKyAgICAgICAgZm9yIChCYXNpY0Js
b2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICB0
cmVhdFJvb3RCbG9jayhlbnRyeXBvaW50LCBpbnNlcnRpb25TZXQpOworICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0LmV4ZWN1dGUoZW50cnlwb2ludCk7CisgICAgICAgIH0KIAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC02Nyw3ICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAg
ICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2Fy
Z3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9v
bCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9B
cmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+
bG9jYWwoKS50b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0Fj
Y2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKQEAgLTEyOCwxMiArMTM2LDEyIEBAIHB1YmxpYzoK
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0VGFp
bC5udW1iZXJPZkxvY2FscygpOyBpKyspIHsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7Ci0gICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIGFjY2Vzc0RhdGE7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG51bGxwdHIsIGluaXRpYWxBY2Nlc3NOb2Rlcy5vcGVyYW5kKG9wZXJhbmQpLT5vcCgpID09IEZs
dXNoKTsgLy8gV2Ugc2hvdWxkIGhhdmUgaW5zZXJ0ZWQgYSBGbHVzaCBiZWZvcmUgYW55IFNldExv
Y2FsL1NldEFyZ3VtZW50IGZvciB0aGUgbG9jYWwgdGhhdCB3ZSBhcmUgYW5hbHl6aW5nIG5vdy4K
LSAgICAgICAgICAgIGFjY2Vzc0RhdGEgPSBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBhY2Nlc3NEYXRhID0gaW5pdGlh
bEFjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbnVsbHB0ciwgYWNjZXNzRGF0YSk7CiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgwLCBTcGVjTm9uZSwgCiAgICAgICAgICAgICAgICAgU2V0TG9jYWwsIG9yaWdpbiwg
T3BJbmZvKGFjY2Vzc0RhdGEpLCBFZGdlKHVuZGVmaW5lZCkpOworICAgICAgICAgICAgYWNjZXNz
RGF0YS0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUpOyAvLyBXZSBkb24ndCBrbm93IGlmIHdl
IGNhbiBleGl0IGhlcmUuCiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiAr
ODQsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2Fz
ZSBJbnQ1MlJlcDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6
CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIx
MDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsMTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Ci0K
LWNsYXNzIE5hdHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdU
Rjo6TmF0dXJhbExvb3BzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1
cmFsTG9vcHMpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5h
dHVyYWxMb29wcyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZH
PigqZ3JhcGgubV9jZmcsIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJs
ZWQoKSkKKyAgICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZH
S2luZD4oZ3JhcGgpLCBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFs
aWRhdGlvbkVuYWJsZWQoKSkKICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBTmF0dXJhbExv
b3AgPSBXVEY6Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcCA9IFdU
Rjo6TmF0dXJhbExvb3A8Q1BTQ0ZHPjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNo
KCkKKyAgICBib29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgp
ID09IFN3aXRjaDsKICAgICB9CkBAIC0xMzcyLDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7
CiAgICAgICAgICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAg
ICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAg
ICAgICAgICAgaWYgKGlzSnVtcCgpKQpAQCAtMTU0MSw2ICsxNTQyLDE4IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gSWRlbnRpdHlXaXRoUHJvZmlsZSk7CiAgICAgICAgIHJldHVy
biBtX29wSW5mby5hczxTcGVjdWxhdGVkVHlwZT4oKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBj
YXRjaE9TUkVudHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0g
RXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+
KCk7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hMb2NhbFByZWRpY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAg
ICByZXR1cm4gbV9vcEluZm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigpOworICAgIH0KICAgICAKICAg
ICBib29sIGhhc0NlbGxPcGVyYW5kKCkKICAgICB7CkBAIC0xOTM2LDcgKzE5NDksNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwog
ICAgIH0KLSAgICAKKwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZv
ciBPU1IgZW50cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEg
bG9jYWwgKi9cCiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAog
ICAgIG1hY3JvKEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNy
byhFeHRyYWN0Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXIt
dXAgY2hlY2tzIGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1Rp
ZXJVcEluTG9vcCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgog
I2luY2x1ZGUgIkRGR05vZGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1Jbmxp
bmVzLmgiCkBAIC0zMzYsNiArMzM3LDcxIEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3Rh
dGUqIGV4ZWMsIEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNo
T1NSRW50cnkoRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7
CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygp
OworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaEVudHJ5cG9p
bnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5
dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsK
KyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRo
ZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndAorICAgICAgICAvLyBjb21waWxlIHRoaXMg
b3BfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQgd2hl
biBzdGFydGluZworICAgICAgICAvLyB0aGUgY29tcGlsYXRpb24uCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIg
aWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBm
b3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1f
YXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVu
dCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1l
bnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgor
ICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRD
ZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1
c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVu
dCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAg
ICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAg
ICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVT
aXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhl
Y3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0
eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXpl
Rm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFT
U0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9jYXRjaCk7Cisg
ICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgM10udS5wb2ludGVyKTsKKyAgICBKU1ZhbHVl
KiBkYXRhQnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oaml0Q29kZS0+Y2F0Y2hP
U1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7Cisg
ICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkg
eworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2Nh
bCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkYXRhQnVmZmVyW2luZGV4XSA9IGV4
ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytp
bmRleDsKKyAgICB9KTsKKworICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXItPnNldEFj
dGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisKKyAgICByZXR1cm4gaml0Q29k
ZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5cG9pbnQtPm1fbWFjaGluZUNv
ZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50
cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5
LmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1c2hGb3JtYXQu
aCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIApA
QCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2Rl
SQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0KIAorc3RydWN0
IENhdGNoRW50cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAg
ICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8vIFdlIHVzZSB0aGlzIHdoZW4g
ZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUgYXJndW1lbnRzCisgICAgLy8g
YXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmluZyBhdCBhIGNhdGNoIGJsb2Nr
LgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Cit9OworCiAvLyBS
ZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQgdGhlIE9TUiBlbnRyeSB0aHVu
ayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlzIHJldHVybnMgbnVsbCwgaXQg
bWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMgcmV0dXJuZWQsIHdlIGNhbid0
IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUgUEMgdG8ganVtcCB0by4KK3Zv
aWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhl
Y1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRy
eXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5l
cy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZHQ0ZH
LmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBAIC01NCw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVJbmRleCAhPSBVSU5UX01BWCk7
CiAgICAgICAgIAogICAgICAgICAvLyBOZWVkZWQgYnkgY3JlYXRlUHJlSGVhZGVyKCkuCi0gICAg
ICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQ
U0RvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmUgPSBt
X2dyYXBoLm1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgCkBAIC0xMTIsMTYgKzExMywxNyBAQCBw
dWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhlcmUuCiAgICAgICAgIG9yaWdpbiA9
IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisgICAgICAgIFZlY3RvcjxOb2RlKiwg
OD4gbmV3QXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1f
Z3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBh
cmd1bWVudCA8IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKICAgICAg
ICAgICAgIE5vZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChh
cmd1bWVudCk7CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsKICAgICAgICAgICAgICAgICAv
LyBKdXN0IGZvciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJndW1lbnQgZXZlbiBpZiBpdCdz
IG5vdCBuZWVkZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVu
dHNbYXJndW1lbnRdOworICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBuZXdBcmd1bWVudHNbYXJn
dW1lbnRdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3Qt
PmFwcGVuZE5vZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3Vt
ZW50LCBvcmlnaW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IG5vZGU7CisgICAgICAgICAgICBuZXdBcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAg
ICAgfQogCiAgICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9u
dW1DYWxsZWVMb2NhbHM7ICsrbG9jYWwpIHsKQEAgLTEzOSw4ICsxNDEsMTcgQEAgcHVibGljOgog
ICAgICAgICAgICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBpbnNlcnRpb25TZXQs
IHRhcmdldCkpKTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKCk7CisK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAx
KTsKKyAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0gbmV3Um9vdDsKKyAgICAgICAg
bV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigpOworICAgICAgICBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBuZXdBcmd1bWVudHMpOworCisg
ICAgICAgIG1fZ3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4obV9ncmFw
aCk7CisKICAgICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICBtX2dy
YXBoLmtpbGxVbnJlYWNoYWJsZUJsb2NrcygpOworCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ckNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDEwICszOSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
IHZvaWQgaGFuZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJh
c2UmIGV4aXQpCiB7Ci0gICAgaml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KDEpLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50KSk7Ci0K
LSAgICBpZiAoIWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKQorICAgIGlmICghZXhp
dEtpbmRNYXlKZXR0aXNvbihleGl0Lm1fa2luZCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1h
eSB3YW50IHRvIG5vdGljZSB0aGF0IHdlJ3JlIGZyZXF1ZW50bHkgZXhpdGluZworICAgICAgICAv
LyBhdCBhbiBvcF9jYXRjaCB0aGF0IHdlIGRpZG4ndCBjb21waWxlIGFuIGVudHJ5cG9pbnQgZm9y
LCBhbmQKKyAgICAgICAgLy8gdGhlbiB0cmlnZ2VyIGEgcmVvcHRpbWl6YXRpb24gb2YgdGhpcyBD
b2RlQmxvY2s6CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzU4NDIKICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGppdC5hZGQzMihBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFk
ZHJlc3MoJmV4aXQubV9jb3VudCkpOwogICAgIAogICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVy
czo6VHJ1c3RlZEltbVB0cihqaXQuY29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNyw3ICs3MjcsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgbV9ncmFwaC5jb21wdXRlUmVmQ291bnRzKCk7CiAgICAgICAgIG1fZ3JhcGguaW5pdGlh
bGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Cisg
ICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICBwZXJmb3JtTGl2
ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsKICAgICAgICAgcGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFu
YWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBtX2NvbWJpbmVkTGl2ZW5lc3MgPSBDb21iaW5lZExp
dmVuZXNzKG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsOSArMzY2LDggQEAgUGxhbjo6Q29tcGlsYXRpb25Q
YXRoIFBsYW46OmNvbXBpbGVJblRocgogICAgIC8vIElmIHdlJ3JlIGRvaW5nIHZhbGlkYXRpb24s
IHRoZW4gcnVuIHNvbWUgYW5hbHlzZXMsIHRvIGdpdmUgdGhlbSBhbiBvcHBvcnR1bml0eQogICAg
IC8vIHRvIHNlbGYtdmFsaWRhdGUuIE5vdyBpcyBhcyBnb29kIGEgdGltZSBhcyBhbnkgdG8gZG8g
dGhpcy4KICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBkZmcuZW5zdXJl
RG9taW5hdG9ycygpOwotICAgICAgICBkZmcuZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAg
IGRmZy5lbnN1cmVQcmVQb3N0TnVtYmVyaW5nKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNEb21p
bmF0b3JzKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICB9CiAK
ICAgICBzd2l0Y2ggKG1vZGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlUG9zdE51bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVy
aW5nLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5s
aW5lcy5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrV29ya2xpc3QuaCIKLSNpbmNsdWRlICJERkdHcmFw
aC5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLVByZVBvc3ROdW1iZXJp
bmc6OlByZVBvc3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBoKQotewotICAgIG1fbWFwID0gQmxvY2tN
YXA8TnVtYmVyaW5nPihncmFwaCk7Ci0gICAgCi0gICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3
b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNoKGdyYXBoLmJsb2NrKDApKTsKLSAgICB1bnNpZ25l
ZCBuZXh0UHJlTnVtYmVyID0gMDsKLSAgICB1bnNpZ25lZCBuZXh0UG9zdE51bWJlciA9IDA7Ci0g
ICAgd2hpbGUgKEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewotICAgICAg
ICBzd2l0Y2ggKGl0ZW0ub3JkZXIpIHsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6Ci0g
ICAgICAgICAgICBtX21hcFtpdGVtLm5vZGVdLm1fcHJlTnVtYmVyID0gbmV4dFByZU51bWJlcisr
OwotICAgICAgICAgICAgd29ya2xpc3QucHVzaFBvc3QoaXRlbS5ub2RlKTsKLSAgICAgICAgICAg
IGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogaXRlbS5ub2RlLT5zdWNjZXNzb3JzKCkpCi0g
ICAgICAgICAgICAgICAgd29ya2xpc3QucHVzaChzdWNjZXNzb3IpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UG9zdDoKLSAgICAgICAgICAgIG1fbWFwW2l0
ZW0ubm9kZV0ubV9wb3N0TnVtYmVyID0gbmV4dFBvc3ROdW1iZXIrKzsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1QcmVQb3N0TnVtYmVyaW5nOjp+UHJlUG9zdE51
bWJlcmluZygpIHsgfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBX
VEYgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYgb3V0LCBFZGdlS2luZCBraW5kKQotewotICAgIHN3aXRjaCAoa2luZCkgewot
ICAgIGNhc2UgRm9yd2FyZEVkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiRm9yd2FyZEVkZ2UiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3Jvc3NFZGdlOgotICAgICAgICBvdXQucHJpbnQo
IkNyb3NzRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCYWNrRWRnZToKLSAgICAg
ICAgb3V0LnByaW50KCJCYWNrRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCShyZXZpc2lvbiAyMjEwMjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0j
aW5jbHVkZSAiREZHQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrTWFwLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQot
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1lbnVtIEVkZ2VLaW5kIHsKLSAgICBG
b3J3YXJkRWRnZSwKLSAgICBDcm9zc0VkZ2UsCi0gICAgQmFja0VkZ2UKLX07Ci0KLWNsYXNzIFBy
ZVBvc3ROdW1iZXJpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZVBvc3ROdW1iZXJp
bmcpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFByZVBvc3RO
dW1iZXJpbmcoR3JhcGgmKTsKLSAgICB+UHJlUG9zdE51bWJlcmluZygpOwotCi0gICAgdW5zaWdu
ZWQgcHJlTnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9j
a10ubV9wcmVOdW1iZXI7IH0KLSAgICB1bnNpZ25lZCBwb3N0TnVtYmVyKEJhc2ljQmxvY2sqIGJs
b2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wb3N0TnVtYmVyOyB9Ci0gICAgCi0g
ICAgLy8gSXMgZnJvbSBhIHN0cmljdCBhbmNlc3RvciBvZiB0bz8KLSAgICBib29sIGlzU3RyaWN0
QW5jZXN0b3JPZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBwcmVOdW1iZXIoZnJvbSkgPCBwcmVOdW1iZXIodG8pCi0gICAgICAg
ICAgICAmJiBwb3N0TnVtYmVyKGZyb20pID4gcG9zdE51bWJlcih0byk7Ci0gICAgfQotICAgIAot
ICAgIGJvb2wgaXNBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyb20gPT0gdG8gfHwgaXNTdHJpY3RBbmNlc3Rv
ck9mKGZyb20sIHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1N0cmljdERlc2NlbmRhbnRP
ZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBpc1N0cmljdEFuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICBi
b29sIGlzRGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQot
ICAgIAotICAgIC8vIFRoaXMgd2lsbCBnaXZlIGEgYm9ndXMgYW5zd2VyIGlmIHRoZXJlIGlzIGFj
dHVhbGx5IG5vIHN1Y2ggZWRnZS4gSWYgeW91IHdhbnQgdG8gZGV0ZXJtaW5lCi0gICAgLy8gaWYg
dGhlcmUgaXMgYW55IHN1Y2ggZWRnZSwgeW91IGhhdmUgdG8gZG8gaXQgeW91cnNlbGYuCi0gICAg
RWRnZUtpbmQgZWRnZUtpbmQoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAoaXNTdHJpY3REZXNjZW5kYW50T2YodG8sIGZyb20pKQotICAg
ICAgICAgICAgcmV0dXJuIEZvcndhcmRFZGdlOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzQW5j
ZXN0b3JPZih0bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gQmFja0VkZ2U7Ci0gICAgICAg
IAotICAgICAgICByZXR1cm4gQ3Jvc3NFZGdlOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAg
c3RydWN0IE51bWJlcmluZyB7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJlTnVtYmVyOwotICAgICAg
ICB1bnNpZ25lZCBtX3Bvc3ROdW1iZXI7Ci0gICAgfTsKLQotICAgIEJsb2NrTWFwPE51bWJlcmlu
Zz4gbV9tYXA7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBX
VEYgewotCi12b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkRGRzo6RWRnZUtp
bmQpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvbkluamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MSw5ICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMg
YXQgdGhlIGZpcnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90
aGVyIGVudHJ5cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHBy
ZWRpY3Rpb25zLgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAg
ICAgICAgZm9yIChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1
ZVByb2ZpbGUmIHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3Vt
ZW50KGFyZyk7Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJn
XS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2Nh
bDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRjaExvY2Fs
UHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAgICBjYXNl
IEdldER5bmFtaWNWYXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5dGVjb2Rl
VG9wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5n
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0
U3RhY2tTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBt
X2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIFNTQUNhbGN1
bGF0b3Igc3NhQ2FsY3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2Vy
dGlvblNldChtX2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
Q2FsY3VsYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDYWxjdWxhdG9yLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTIg
Kzk1LDEyIEBAIFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUKIAogU1NB
Q2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVmKEJhc2lj
QmxvY2sqIGJsb2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJlYWNoaW5n
RGVmQXRUYWlsKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOwor
ICAgIHJldHVybiByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRv
bShibG9jayksIHZhcmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxh
dG9yOjpyZWFjaGluZ0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlh
YmxlKQogewotICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+
aWRvbShibG9jaykpIHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX3NzYURv
bWluYXRvcnMtPmlkb20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1fZGF0YVti
bG9ja10ubV9kZWZzLmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVmOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5o
CShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNh
bGN1bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9pZCBjb21w
dXRlUGhpcyhjb25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9ycyk7Cisg
ICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURvbWluYXRv
cnMpOwogICAgICAgICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBtX3Zhcmlh
YmxlcykgewotICAgICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0lu
UHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAgICAgbV9ncmFwaC5t
X3NzYURvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9u
dGllck9mKAogICAgICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMsCiAgICAg
ICAgICAgICAgICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAgICAgICAg
ICAgICAgICAgIE5vZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2spOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBo
YXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw4IEBA
IHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFk
ZWRDUFMpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50cygpOwot
ICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5jbGVh
ckNQU0NGR0RhdGEoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAg
ICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3Jh
cGggYmVmb3JlIFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMg
YXJlIHRvIGJlIGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGlu
c2VydCB0aGVtCi0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGlu
c2VydCB0aGVtIGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAv
LyB5ZXQuIFdlIHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUg
U1NBQ2FsY3VsYXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQ
aGlzKAogICAgICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFi
bGUsIEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJs
ZS0+aW5kZXgoKV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBi
bG9jay0+dmFsdWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3Rk
OjptYWtlX3VuaXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgu
bV9hcmd1bWVudHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5t
X2FyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBt
dWx0aXBsZSBlbnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8mIGFyZ3Vt
ZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2Nr
KDApKS0+dmFsdWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKGFy
Z3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6
ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNW
YWx1ZTsKIAotICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldCht
X2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3Vt
ZW50TWFwcGluZy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0Fj
Y2Vzc0RhdGEoKS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1f
YXJndW1lbnRGb3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3Vt
ZW50c1tpXSA9IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVu
dHMgZm9yIHRoZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgYXJndW1l
bnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50
cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQyMSwxMiBAQCBwcml2
YXRlOgogCiBib29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICBy
ZXR1cm4gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9B
U1NFUlQoIWdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJblNTQUNv
bnZlcnNpb24gPSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29udmVyc2lv
blBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NBQ29udmVy
c2lvbik7CisgICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjEwMjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVw
QXRSZXR1cm46CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjM3LDYgKzU2MzcsMjMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB1bnJlYWNo
YWJsZShub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2Fs
OiB7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3Jh
cnkgdGFnKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcGF5bG9hZCh0aGlzKTsKKworICAg
ICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0YWdHUFIg
PSB0YWcuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gcGF5bG9hZC5ncHIoKTsK
KworICAgICAgICBKU1ZhbHVlKiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4obV9q
aXQuaml0Q29kZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25vZGUtPmNh
dGNoT1NSRW50cnlJbmRleCgpXTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3ModGVtcEdQUiwgVGFnT2Zmc2V0KSwgdGFnR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBQYXlsb2FkT2Zmc2V0KSwg
cGF5bG9hZEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGFnR1BSLCBwYXlsb2FkR1BSLCBu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAg
ICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjEwMjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OTk3LDYgKzU5OTcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ2hlY2tTdWJDbGFzcyhub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAg
IEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5qaXRDb2Rl
KCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hPU1JFbnRy
eUluZGV4KCldOworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KEND
YWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVS
ZXN1bHQodGVtcEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVOQUJM
RShGVExfSklUKSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBA
IC02MDg1LDYgKzYwOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKICNlbHNlIC8vIEVOQUJM
RShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzA2LDYg
KzE3MDYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50
KSB7CisgICAgICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2pp
dC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CisgICAgICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQu
ZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spOworICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVu
dDo6cmVzZXQoKSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUo
KTsKQEAgLTE4MDAsOCArMTgwNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1l
bnRUeXBlcygKICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9k
ZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8m
IGFyZ3VtZW50cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZCht
X2ppdC5ncmFwaCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
X2ppdC5jb2RlQmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSog
bm9kZSA9IG1faml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUg
PSBhcmd1bWVudHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhl
IGFyZ3VtZW50IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1l
bnRzLgogICAgICAgICAgICAgY29udGludWU7CkBAIC0xODg1LDEyICsxODkzLDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxv
Y2spCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJn
ZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1cnJlbnRs
eSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0K
LSAgICAgICAgLy8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBw
ZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChibG9jay0+
aXNPU1JUYXJnZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICAv
LyBDdXJyZW50bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxk
IGFkZCB0aGVtCisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAgICAgICBt
X29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7Cisg
ICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE5MDEsMTAgKzE5MDgsMzAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1faml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCisg
ICAgICAgIGlmICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVudHJ5cG9p
bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnko
KmJsb2NrLCBtX29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7Cisg
ICAgICAgIGlmIChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIGF1dG8g
aXRlciA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7
CisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAg
ICAgICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAg
YXJndW1lbnRGb3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNp
emUoKSk7CisgICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVj
dG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAg
ICAgICAgIEZsdXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmx1
c2hGb3JtYXQgPT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRDZWxsIHx8
IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRK
U1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFw
cGVuZChmbHVzaEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgqYmxvY2ss
IG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFy
Z3VtZW50Rm9ybWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGJs
b2NrLT5pc09TUlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxv
Y2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAg
ICAgfQogICAgIH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9TUkVudHJ5
cG9pbnRzKCk7CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMu
c2l6ZSgpKTsKICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0
aW1hdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIx
MDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3Vu
dEVzdGltYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVi
bGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJl
TmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7
CiAgICAgICAgIAogICAgICAgICAvLyBFc3RpbWF0ZSBiYXNpYyBibG9jayBleGVjdXRpb24gY291
bnRzIGJhc2VkIG9uIGxvb3AgZGVwdGguCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0lu
ZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpAQCAtNTMsNyArNTMs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOworICAgICAgICAgICAgYmxv
Y2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5s
b29wRGVwdGgoYmxvY2spKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRXN0aW1h
dGUgYnJhbmNoIHdlaWdodHMgYmFzZWQgb24gZXhlY3V0aW9uIGNvdW50cy4gVGhpcyBpc24ndCBx
dWl0ZSBjb3JyZWN0LiBJdCdsbApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgYXBwbHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsMTggKzI2
OCwyNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAg
ICAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSAhPSBTU0EpOworCisgICAgICAgICAgICBp
ZiAobV9ncmFwaC53aWxsQ2F0Y2hFeGNlcHRpb25Jbk1hY2hpbmVGcmFtZShtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYykpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gcmVsYXggdGhpczoKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODI0CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldExvY2FsID0gbnVs
bHB0cjsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCA9IG1fbm9kZS0+bG9jYWwo
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ub2RlSW5k
ZXg7IGktLTspIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ibG9jay0+YXQoaSk7
CisKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5s
b2NhbCgpID09IGxvY2FsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldExvY2FsID0gbm9kZTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgaWYgKGFjY2Vzc2VzT3ZlcmxhcChtX2dyYXBoLCBub2RlLCBBYnN0cmFjdEhlYXAo
U3RhY2ssIGxvY2FsKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghc2V0TG9jYWwpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDYgKzUwLDggQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxGVAog
ICAgIHJldHVybiBmdGxXaGl0ZWxpc3Q7CiB9CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gQ1BTTmF0
dXJhbExvb3A7CisKIGNsYXNzIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogcHVibGljOgogICAgIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBo
KQpAQCAtODEsOCArODMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlT1NS
RW50cnlUb0ZUTCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAg
ICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBOYXR1
cmFsTG9vcHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fbmF0dXJhbExvb3BzOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgICAgICBDUFNOYXR1cmFsTG9v
cHMmIG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzOwogICAgICAgICBI
YXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wVG9Mb29wSGlu
dCA9IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKG5hdHVyYWxMb29wcyk7CiAKICAgICAg
ICAgSGFzaE1hcDx1bnNpZ25lZCwgTG9vcEhpbnREZXNjcmlwdG9yPiB0aWVyVXBIaWVyYXJjaHk7
CkBAIC0xODIsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVy
YWxMb29wVG9Mb29wSGludE1hcChjb25zdCBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKKyAg
ICBIYXNoTWFwPGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BU
b0xvb3BIaW50TWFwKGNvbnN0IENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQogICAgIHsK
ICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9v
cHNUb0xvb3BIaW50OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNCwxMCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9h
cnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMg
aG9pc3RpbmcgZm9yIFNldEFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJl
bnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVu
dHMgYXQgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgu
bV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5v
ZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGlj
dGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMCArODMsMTMg
QEAgcHVibGljOgogICAgICAgICAvLyBOQi4gVGhpcyBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciBw
ZXJmb3JtYW5jZSwgc2luY2UgaXQgaXMgbm90IGludGVuZGVkIHRvIHJ1bgogICAgICAgICAvLyBp
biByZWxlYXNlIGJ1aWxkcy4KIAotICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2
YXJpYWJsZXMgYXQgdGhlIGhlYWQgb2YgdGhlIHJvb3QgYmxvY2sgYXJlIGRlYWQuCi0gICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcm9vdC0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsr
aSkKLSAgICAgICAgICAgIFZfRVFVQUwoKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCByb290
KSwgc3RhdGljX2Nhc3Q8Tm9kZSo+KDApLCByb290LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkp
OworICAgICAgICBWQUxJREFURSgobV9ncmFwaC5ibG9jaygwKSksIG1fZ3JhcGgubV9lbnRyeXBv
aW50cy5jb250YWlucyhtX2dyYXBoLmJsb2NrKDApKSk7CisKKyAgICAgICAgLy8gVmFsaWRhdGUg
dGhhdCBhbGwgbG9jYWwgdmFyaWFibGVzIGF0IHRoZSBoZWFkIG9mIGFsbCBlbnRyeXBvaW50cyBh
cmUgZGVhZC4KKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5t
X2VudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50
cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKKyAgICAgICAg
ICAgICAgICBWX0VRVUFMKCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwgZW50cnlwb2ludCks
IHN0YXRpY19jYXN0PE5vZGUqPihudWxscHRyKSwgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFk
LmxvY2FsKGkpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gVmFsaWRhdGUgcmVm
IGNvdW50cyBhbmQgdXNlcy4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAw
OyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDggKzc0LDggQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2Zp
bGVyOjpPcmlnaW5TdGFjaygpLAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRM
IEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6
OkZUTEpJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSwgIjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3Vy
ZURvbWluYXRvcnMoKTsKLSAgICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAg
ICAgIGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NB
TmF0dXJhbExvb3BzKCk7CiAgICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAi
ICAgICI7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUw
LDcgQEAgcHVibGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5
IjsKICAgICAgICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAg
ICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNv
bXBpbGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHks
IGJlZ2lubmluZyBsb3dlcmluZy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICBtX25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5v
ZGVPcmlnaW4oQ29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1
dG8mIGFyZ3VtZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dy
YXBoLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9j
aygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBt
X2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50
c1tpXTsKICAgICAgICAgICAgIG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAg
ICAgICAgICAgICAKQEAgLTQ0Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZH
OjpCYXNpY0Jsb2NrKiB0YXJnZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAg
ICAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAobV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0
KSkgeworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMo
bV9oaWdoQmxvY2ssIHRhcmdldCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBp
bGF0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAq
dGFyZ2V0LCAiIHdpbGwgYmFpbCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5j
ZmFIYXNWaXNpdGVkID0gZmFsc2U7CkBAIC0xNDQzMyw3ICsxNDQzNCw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwg
bV9oaWdoQmxvY2spKQorICAgICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21p
bmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5Niw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
WlosIGludCwgaW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVVpLCB1aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oU19KSVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwg
UmVnaXN0ZXJJRCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
U19KSVRPcGVyYXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIxMDI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2Myw2ICs0NjMsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6
OgogICAgIHJldHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50
MzJfdCBhcmcxKQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIoYXJnMSkpOworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7Cit9CisKICNpZiBVU0UoSlNWQUxVRTY0KQogQUxXQVlTX0lOTElORSBN
YWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpa
WiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFyZzIsIGludDMyX3QgYXJnMykKIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJ
KHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU2LDYgKzg1NiwyNCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9jYXRjaChJbnN0cnVjdGlvbiogY3VyCiAKICAgICB1bnNpZ25lZCB0aHJvd25WYWx1
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgZW1pdFN0b3JlKHRocm93
blZhbHVlLCByZWdUMSwgcmVnVDApOworCisgICAgLy8gRklYTUU6IGNvbnNpZGVyIGlubGluZSBj
YWNoaW5nIHRoZSBwcm9jZXNzIG9mIGRvaW5nIE9TUiBlbnRyeSwgaW5jbHVkaW5nCisgICAgLy8g
YXJndW1lbnQgdHlwZSBwcm9vZnMsIHN0b3JpbmcgbG9jYWxzIHRvIHRoZSBidWZmZXIsIGV0Ywor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTgKKwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBtX2J5dGVjb2Rl
T2Zmc2V0KTsKKyAgICBhdXRvIHNraXBPU1JFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0
dXJuVmFsdWVHUFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJl
dHVyblZhbHVlR1BSKTsKKyAgICBza2lwT1NSRW50cnkubGluayh0aGlzKTsKKyAgICBpZiAoc2hv
dWxkRW1pdFByb2ZpbGluZygpKSB7CisgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZm
ZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5wb2ludGVyKTsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNo
KFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVncyhyZWdUMSwgcmVnVDApOworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCwgcmVncyk7CisgICAgICAgICAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKHByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQogfQog
CiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNp
b24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTU0LDYgKzU1NCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRj
aChJbnN0cnVjdGlvbiogY3VyCiAKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMCwgRXhjZXB0aW9u
Ojp2YWx1ZU9mZnNldCgpKSwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisKKyAgICAvLyBGSVhNRTogY29uc2lkZXIg
aW5saW5lIGNhY2hpbmcgdGhlIHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcK
KyAgICAvLyBhcmd1bWVudCB0eXBlIHByb29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZl
ciwgZXRjCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NTU5OAorCisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1f
Ynl0ZWNvZGVPZmZzZXQpOworICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0ciha
ZXJvLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAg
IGp1bXAocmV0dXJuVmFsdWVHUFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAg
IGlmIChzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3Bl
cmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1
ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXIt
PmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAg
ICAgICBKU1ZhbHVlUmVncyByZWdzKHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ3MpOworICAgICAgICAgICAgZW1pdFZhbHVl
UHJvZmlsaW5nU2l0ZShwcm9maWxlLm1fcHJvZmlsZSk7CisgICAgICAgIH0pOworICAgIH0KIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTUsNiArMTUxNSwxOSBAQCBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChj
b2RlQmxvY2ssICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlPU1JFbnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUlu
ZGV4KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNl
bWVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6
ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFy
ZUNhdGNoT1NSRW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgp
KTsKK30KKwogI2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMy
X3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzE4LDYgKzMxOCw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEK
IHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0
YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQ
X0pJVE9wZXJhdGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRl
ZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBk
b3VibGUsIGludDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVy
YXRpb25fRVVpKShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJu
VHlwZSAoSklUX09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwg
Q2FsbExpbmtJbmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJ
VE9wZXJhdGlvbl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmlu
ZyogKEpJVF9PUEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMy
X3QpOwpAQCAtMzk4LDYgKzM5OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJv
dyhFeGVjU3QKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVy
blR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90
KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVy
QXRDYXRjaChFeGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEdldHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwq
LCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIx
MDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KworICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1szXS51LnBvaW50ZXIpOworICAgIGJ1
ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAg
ICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisK
KyAgICBMTElOVF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJv
dG9GcmFtZSkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlz
aW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9oYQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9nZXRfZnJvbV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF90b19zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NoZWNrX2lmX2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsK
K0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRjaCk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9w
cm9sb2d1ZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFk
b3dfY2hpY2tlbl90YWlsKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Ro
cm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJO
QUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcg
Y29weSkKQEAgLTE5OTcsNyArMTk5NywxMCBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KIAogICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhp
cyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0
MSwgdDIsIHQzIGFib3ZlLgotICAgIGRpc3BhdGNoKDMpCisKKyAgICBjYWxsT3Bjb2RlU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQorCisgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX2NhdGNoX2xlbmd0aCkKIAogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTE5NzQsNiArMTk3NCw5IEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBzdG9yZXEgdDMsIFtjZnIs
IHQyLCA4XQogCiAgICAgdHJhY2VFeGVjdXRpb24oKQorCisgICAgY2FsbE9wY29kZVNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKKwogICAgIGRpc3BhdGNoKGNvbnN0ZXhw
ciBvcF9jYXRjaF9sZW5ndGgpCiAKIApJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNiArMzM0LDcgQEAKIAkJ
NzBFQ0E2MEIxQjAyNDI2ODAwNDQ5NzM5IC8qIFN5bWJvbEltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MEVDQTYwQzFCMDI0MjY4MDA0NDk3MzkgLyogVW5pcXVlZFN0cmluZ0ltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlZFN0cmluZ0ltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkzNkQ2QTkxQzk5RjhBRTAwMEQxQUVEIC8qIFNtYWxs
UHRyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNtYWxsUHRyU2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAv
KiBTaW5nbGVSb290R3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lu
Z2xlUm9vdEdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkFFMUVC
MjJBQzYwMERBREUzNiAvKiBVVUlELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVVSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRUM2QjAxRUIyMkI1OTAw
REFERTM2IC8qIFVVSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VVVJRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDM0Y3MjM5MUQ3ODgxMTkw
MDY3NEUyNiAvKiBCcmlnYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJy
aWdhbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkzOCw2ICs5MzksNyBAQAog
CQkJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkx
NDY5NDE5ODE2RUFCMDQxMDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyQ0YuY3BwICovLAogCQkJCTE0
Njk0MTk1MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXJNYWMubW0gKi8sCisJCQkJNzk1
MjEyMDIxRjQyNTg4ODAwQkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovLAogCQkJCTFBMzUy
NEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLAogCQkJCTBGRUM4NEIwMUJEQUNEMzkw
MDgwRkY3NCAvKiBTY29wZWRMYW1iZGEuaCAqLywKIAkJCQkwRjY2QjI4NDFEQzk3QkFCMDA0QTFE
M0YgLyogU2Vjb25kcy5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFw
aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHJldmlz
aW9uIDIyMTAyOCkKKysrIFNvdXJjZS9XVEYvd3RmL0JhY2t3YXJkc0dyYXBoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9TaW5nbGVSb290R3JhcGguaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtMzgsMTMzICszOSw5IEBAIGNsYXNz
IEJhY2t3YXJkc0dyYXBoIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNrd2FyZHNHcmFw
aCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gV2UgdXNl
ICIjZW5kIiB0byByZWZlciB0byB0aGUgc3ludGhldGljIHJvb3Qgd2UgaGF2ZSBjcmVhdGVkLgot
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiByb290TmFtZSgpIHsgcmV0dXJuICIjZW5kIjsgfTsKLQot
ICAgIGNsYXNzIE5vZGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgTm9kZSh0eXBlbmFtZSBHcmFw
aDo6Tm9kZSBub2RlID0gdHlwZW5hbWUgR3JhcGg6Ok5vZGUoKSkKLSAgICAgICAgICAgIDogbV9u
b2RlKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBOb2RlIHJv
b3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICBOb2RlIHJlc3VsdDsKLSAgICAgICAgICAgIHJl
c3VsdC5tX25vZGUgPSAwOwotICAgICAgICAgICAgcmVzdWx0Lm1faXNSb290ID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCi0gICAgICAgICAgICAgICAgJiYgbV9pc1Jvb3Qg
PT0gb3RoZXIubV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBOb2RlKCk7IH0KLQotICAgICAgICBib29s
IGlzUm9vdCgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2lzUm9vdDsK
LSAgICAgICAgfQotCi0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdCB7
IHJldHVybiBtX25vZGU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpOb2RlIG1fbm9kZTsKLSAgICAgICAgYm9vbCBtX2lzUm9vdCB7IGZhbHNlIH07Ci0gICAgfTsK
LQotICAgIGNsYXNzIFNldCB7Ci0gICAgcHVibGljOgotICAgICAgICBTZXQoKQotICAgICAgICB7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJvb2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBjaGVja0FuZFNldChtX2hhc1Jvb3QsIHRydWUpOwotICAgICAgICAgICAgcmV0
dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHJl
bW92ZShjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBm
YWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1faGFzUm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5v
ZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1faGFzUm9vdCkKLSAgICAgICAgICAg
ICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSwgIiAiKTsKLSAgICAgICAgICAgIG91dC5wcmludCht
X3NldCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5h
bWUgR3JhcGg6OlNldCBtX3NldDsKLSAgICAgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9Owot
ICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGNsYXNzIE1hcCB7Ci0gICAg
cHVibGljOgotICAgICAgICBNYXAoR3JhcGgmIGdyYXBoKQotICAgICAgICAgICAgOiBtX21hcChn
cmFwaC50ZW1wbGF0ZSBuZXdNYXA8VD4oKSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAg
ICAgdm9pZCBjbGVhcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fbWFwLmNsZWFyKCk7Ci0g
ICAgICAgICAgICBtX3Jvb3QgPSBUKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KLQotICAgICAgICBUJiBvcGVy
YXRvcltdKHNpemVfdCBpbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFpbmRleCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0dXJuIG1fbWFw
W2luZGV4IC0gMV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqY29uc3Rf
Y2FzdDxNYXAqPih0aGlzKSlbaW5kZXhdOwotICAgICAgICB9Ci0KLSAgICAgICAgVCYgb3BlcmF0
b3JbXShjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9yb290OwotICAgICAgICAgICAgcmV0
dXJuIG1fbWFwW25vZGUubm9kZSgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFQmIG9w
ZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICgqY29uc3RfY2FzdDxNYXAqPih0aGlzKSlbbm9kZV07Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxU
PiBtX21hcDsKLSAgICAgICAgVCBtX3Jvb3Q7Ci0gICAgfTsKLQorICAgIHVzaW5nIE5vZGUgPSBT
aW5nbGVSb290R3JhcGhOb2RlPEdyYXBoPjsKKyAgICB1c2luZyBTZXQgPSBTaW5nbGVSb290R3Jh
cGhTZXQ8R3JhcGg+OworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyBNYXAgPSBTaW5n
bGVSb290TWFwPFQsIEdyYXBoPjsKICAgICB0eXBlZGVmIFZlY3RvcjxOb2RlLCA0PiBMaXN0Owog
CiAgICAgQmFja3dhcmRzR3JhcGgoR3JhcGgmIGdyYXBoKQpAQCAtMjU1LDcgKzEzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgb3V0LnByaW50KCI8bnVsbD4i
KTsKICAgICAgICAgZWxzZSBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgIG91dC5wcmlu
dChyb290TmFtZSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5v
ZGUoKSkpOwogICAgICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygpOwpJbmRleDogU291cmNlL1dU
Ri93dGYvRG9taW5hdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRv
cnMuaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL1dURi93dGYvRG9taW5hdG9ycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIHRl
bXBsYXRlPHR5cGVuYW1lIEdyYXBoPgogY2xhc3MgRG9taW5hdG9ycyB7CiBwdWJsaWM6CisgICAg
dXNpbmcgTGlzdCA9IHR5cGVuYW1lIEdyYXBoOjpMaXN0OworCiAgICAgRG9taW5hdG9ycyhHcmFw
aCYgZ3JhcGgsIGJvb2wgc2VsZkNoZWNrID0gZmFsc2UpCiAgICAgICAgIDogbV9ncmFwaChncmFw
aCkKICAgICAgICAgLCBtX2RhdGEoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPEJsb2NrRGF0YT4oKSkK
QEAgLTQ3LDggKzQ5LDYgQEAgcHVibGljOgogICAgICAgICBMZW5nYXVlclRhcmphbiBsZW5nYXVl
clRhcmphbihtX2dyYXBoKTsKICAgICAgICAgbGVuZ2F1ZXJUYXJqYW4uY29tcHV0ZSgpOwogCi0g
ICAgICAgIG1fZGF0YSA9IG1fZ3JhcGgudGVtcGxhdGUgbmV3TWFwPEJsb2NrRGF0YT4oKTsKLSAg
ICAKICAgICAgICAgLy8gRnJvbSBoZXJlIHdlIHdhbnQgdG8gYnVpbGQgYSBzcGFubmluZyB0cmVl
IHdpdGggYm90aCB1cHdhcmQgYW5kIGRvd253YXJkIGxpbmtzIGFuZCB3ZSB3YW50CiAgICAgICAg
IC8vIHRvIGRvIGEgc2VhcmNoIG92ZXIgdGhpcyB0cmVlIHRvIGNvbXB1dGUgcHJlIGFuZCBwb3N0
IG51bWJlcnMgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZG9taW5hbmNlCiAgICAgICAgIC8vIHRlc3Rz
LgpAQCAtMjQwLDcgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mKGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5j
dG9yJiBmdW5jdG9yKQorICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZy
b250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKICAgICB7
CiAgICAgICAgIGZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9m
KAogICAgICAgICAgICAgZnJvbSwKQEAgLTI1NSw3ICsyNTUsNyBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZnVsIGZvciBjb21wdXRpbmcgcHJ1bmVkIFNTQSBmb3JtLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKLSAgICAgICAgY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20s
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgICAgIGNvbnN0IExpc3QmIGZyb20sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IHNl
dDsKICAgICAgICAgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBs
KApAQCAtMjY3LDcgKzI2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIH0pOwogICAgIH0KICAg
ICAKLSAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IGl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihj
b25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSkgY29uc3QKKyAgICB0eXBlbmFtZSBHcmFw
aDo6U2V0IGl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCBMaXN0JiBmcm9tKSBjb25z
dAogICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCByZXN1bHQ7CiAgICAgICAgIGZv
ckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTcxMiw5ICs3
MTIsOSBAQCBwcml2YXRlOgogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAg
ICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCi0g
ICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKSBjb25zdAorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKSBjb25zdAogICAgIHsKLSAgICAgICAgdHlwZW5hbWUgR3JhcGg6Okxpc3Qgd29ya2xp
c3QgPSBmcm9tOworICAgICAgICBMaXN0IHdvcmtsaXN0ID0gZnJvbTsKICAgICAgICAgd2hpbGUg
KCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpOb2Rl
IGJsb2NrID0gd29ya2xpc3QudGFrZUxhc3QoKTsKICAgICAgICAgICAgIGZvckFsbEJsb2Nrc0lu
RG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290
R3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDMxMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdURl9TaW5nbGVSb290R3JhcGhfaAorI2RlZmluZSBX
VEZfU2luZ2xlUm9vdEdyYXBoX2gKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5j
bHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoTm9kZSB7Citw
dWJsaWM6CisgICAgLy8gV2UgdXNlICIjcm9vdCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyBy
b290IHdlIGhhdmUgY3JlYXRlZC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7
IHJldHVybiAiI3Jvb3QiOyB9OworCisgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSh0eXBlbmFtZSBH
cmFwaDo6Tm9kZSBub2RlID0gdHlwZW5hbWUgR3JhcGg6Ok5vZGUoKSkKKyAgICAgICAgOiBtX25v
ZGUobm9kZSkKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIFNpbmdsZVJvb3RHcmFwaE5vZGUg
cm9vdCgpCisgICAgeworICAgICAgICBTaW5nbGVSb290R3JhcGhOb2RlIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fbm9kZSA9IDA7CisgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fbm9kZSA9PSBvdGhlci5tX25vZGUKKyAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVy
Lm1faXNSb290OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTaW5nbGVSb290
R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gKnRoaXMgIT0gU2luZ2xlUm9vdEdyYXBoTm9kZSgpOyB9CisKKyAgICBib29sIGlzUm9v
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7CisgICAgfQorCisgICAg
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQo
IW1faXNSb290KTsKKyAgICAgICAgcmV0dXJuIG1fbm9kZTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdHlwZW5hbWUgR3JhcGg6Ok5vZGUgbV9ub2RlOworICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxz
ZSB9OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdy
YXBoU2V0IHsKKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47Citw
dWJsaWM6CisgICAgU2luZ2xlUm9vdEdyYXBoU2V0KCkgPSBkZWZhdWx0OworICAgIAorICAgIGJv
b2wgYWRkKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3Qo
KSkKKyAgICAgICAgICAgIHJldHVybiBjaGVja0FuZFNldChtX2hhc1Jvb3QsIHRydWUpOworICAg
ICAgICByZXR1cm4gbV9zZXQuYWRkKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIHJl
bW92ZShjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCBmYWxzZSk7CisgICAg
ICAgIHJldHVybiBtX3NldC5yZW1vdmUobm9kZS5ub2RlKCkpOworICAgIH0KKworICAgIGJvb2wg
Y29udGFpbnMoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9v
dCgpKQorICAgICAgICAgICAgcmV0dXJuIG1faGFzUm9vdDsKKyAgICAgICAgcmV0dXJuIG1fc2V0
LmNvbnRhaW5zKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2hhc1Jvb3QpCisgICAgICAgICAg
ICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSwgIiAiKTsKKyAgICAgICAgb3V0LnByaW50KG1f
c2V0KTsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9z
ZXQ7CisgICAgYm9vbCBtX2hhc1Jvb3QgeyBmYWxzZSB9OworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290TWFwIHsKKyAgICB1c2luZyBO
b2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CitwdWJsaWM6CisgICAgU2luZ2xlUm9v
dE1hcChHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFw
PFQ+KCkpCisgICAgeworICAgIH0KKworICAgIFNpbmdsZVJvb3RNYXAoU2luZ2xlUm9vdE1hcCYm
IG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQorICAgICAgICAs
IG1fcm9vdChXVEZNb3ZlKG90aGVyLm1fcm9vdCkpCisgICAgeworICAgIH0KKworICAgIHZvaWQg
Y2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9tYXAuY2xlYXIoKTsKKyAgICAgICAgbV9yb290ID0g
VCgpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6
ZSgpICsgMTsgfQorCisgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCisgICAgeworICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKKyAgICAgICAgcmV0
dXJuIG1fbWFwW2luZGV4IC0gMV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PFNp
bmdsZVJvb3RNYXAqPih0aGlzKSlbaW5kZXhdOworICAgIH0KKworICAgIFQmIG9wZXJhdG9yW10o
Y29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIG1fcm9vdDsKKyAgICAgICAgcmV0dXJuIG1fbWFwW25vZGUubm9kZSgp
XTsKKyAgICB9CisKKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gKCpjb25zdF9jYXN0PFNpbmdsZVJvb3RNYXAqPih0
aGlzKSlbbm9kZV07CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6
dGVtcGxhdGUgTWFwPFQ+IG1fbWFwOworICAgIFQgbV9yb290OworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgR3JhcGg+CitjbGFzcyBTaW5nbGVSb290R3JhcGggeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFNpbmdsZVJvb3RHcmFwaCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisKKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47Cisg
ICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CisgICAgdXNp
bmcgTGlzdCA9IFZlY3RvcjxOb2RlLCA0PjsKKworICAgIFNpbmdsZVJvb3RHcmFwaChHcmFwaCYg
Z3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgICAgIGZvciAodHlw
ZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgICAgIG1fcm9vdFN1Y2Nlc3Nvckxpc3QuYXBwZW5kKHJlYWxSb290KTsKKyAgICAgICAg
ICAgIG1fcm9vdFN1Y2Nlc3NvclNldC5hZGQocmVhbFJvb3QpOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVChtX3Jvb3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgfQorCisgICAgTm9kZSBy
b290KCkgY29uc3QgeyByZXR1cm4gTm9kZTo6cm9vdCgpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBNYXA8VD4obV9ncmFwaCk7IH0K
KworICAgIExpc3Qgc3VjY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAg
ICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICByZXR1cm4gbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICAgICAgTGlzdCBy
ZXN1bHQ7CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA6IG1fZ3JhcGgu
c3VjY2Vzc29ycyhub2RlLm5vZGUoKSkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIExpc3QgcHJlZGVjZXNzb3Jz
KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBhc3NlcnRJc0NvbnNpc3Rl
bnQoKTsKKworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBM
aXN0IHsgfTsKKworICAgICAgICBpZiAobV9yb290U3VjY2Vzc29yU2V0LmNvbnRhaW5zKG5vZGUu
bm9kZSgpKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgucHJlZGVjZXNzb3JzKG5vZGUu
bm9kZSgpKS5pc0VtcHR5KCkpOworICAgICAgICAgICAgcmV0dXJuIExpc3QgeyByb290KCkgfTsK
KyAgICAgICAgfQorCisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1l
IEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkpCisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKG5vZGUpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHVuc2lnbmVkIGluZGV4KGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbV9ncmFwaC5pbmRleChub2RlLm5vZGUoKSkgKyAxOworICAgIH0KKworICAg
IE5vZGUgbm9kZSh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaW5k
ZXgpCisgICAgICAgICAgICByZXR1cm4gcm9vdCgpOworICAgICAgICByZXR1cm4gbV9ncmFwaC5u
b2RlKGluZGV4IC0gMSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbnVtTm9kZXMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubnVtTm9kZXMoKSArIDE7CisgICAgfQorCisg
ICAgQ1N0cmluZyBkdW1wKE5vZGUgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIFN0cmluZ1By
aW50U3RyZWFtIG91dDsKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgb3V0LnByaW50
KCI8bnVsbD4iKTsKKyAgICAgICAgZWxzZSBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAg
IG91dC5wcmludChOb2RlOjpyb290TmFtZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
b3V0LnByaW50KG1fZ3JhcGguZHVtcChub2RlLm5vZGUoKSkpOworICAgICAgICByZXR1cm4gb3V0
LnRvQ1N0cmluZygpOworICAgIH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU5vZGVzKCk7
ICsraSkgeworICAgICAgICAgICAgTm9kZSBub2RlID0gdGhpcy0+bm9kZShpKTsKKyAgICAgICAg
ICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG91
dC5wcmludChkdW1wKG5vZGUpLCAiOlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICBQ
cmVkczogIik7CisgICAgICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAgICAgICAgICBm
b3IgKE5vZGUgcHJlZGVjZXNzb3IgOiBwcmVkZWNlc3NvcnMobm9kZSkpCisgICAgICAgICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCBkdW1wKHByZWRlY2Vzc29yKSk7CisgICAgICAgICAgICBvdXQu
cHJpbnQoIlxuIik7CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgICBTdWNjczogIik7CisgICAg
ICAgICAgICBjb21tYSA9IENvbW1hUHJpbnRlcigpOworICAgICAgICAgICAgZm9yIChOb2RlIHN1
Y2Nlc3NvciA6IHN1Y2Nlc3NvcnMobm9kZSkpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCBkdW1wKHN1Y2Nlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAg
ICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBhc3NlcnRJ
c0NvbnNpc3RlbnQoKSBjb25zdAorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAg
IC8vIFdlIGV4cGVjdCB0aGUgcm9vdHMoKSBmdW5jdGlvbiB0byBiZSBpZGVtcG90ZW50IHdoaWxl
IHdlJ3JlIGFsaXZlIHNvIHdlIGNhbiBjYWNoZQorICAgICAgICAvLyB0aGUgcmVzdWx0IGluIHRo
ZSBjb25zdHJ1Y3Rvci4gSWYgYSB1c2VyIG9mIHRoaXMgY2hhbmdlcyB0aGUgcmVzdWx0IG9mIGl0
cyByb290cygpCisgICAgICAgIC8vIGZ1bmN0aW9uLCBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlIHVz
ZXIgd2lsbCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KKyAgICAgICAgTGlz
dCByb290U3VjY2Vzc29yTGlzdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBy
ZWFsUm9vdCA6IG1fZ3JhcGgucm9vdHMoKSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgu
cHJlZGVjZXNzb3JzKHJlYWxSb290KS5pc0VtcHR5KCkpOworICAgICAgICAgICAgcm9vdFN1Y2Nl
c3Nvckxpc3QuYXBwZW5kKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocm9v
dFN1Y2Nlc3Nvckxpc3Quc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0
ID09IG1fcm9vdFN1Y2Nlc3Nvckxpc3QpOworI2VuZGlmCisgICAgfQorCisgICAgR3JhcGgmIG1f
Z3JhcGg7CisgICAgTGlzdCBtX3Jvb3RTdWNjZXNzb3JMaXN0OworICAgIHR5cGVuYW1lIEdyYXBo
OjpTZXQgbV9yb290U3VjY2Vzc29yU2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3Vz
aW5nIFdURjo6U2luZ2xlUm9vdEdyYXBoOworCisjZW5kaWYgLy8gV1RGX1NpbmdsZVJvb3RHcmFw
aF9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318835</attachid>
            <date>2017-08-22 17:41:42 -0700</date>
            <delta_ts>2017-08-23 15:22:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>225136</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjEwNTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEwOSBAQAorMjAxNy0wOC0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbXBpbGluZyBjYXRjaCBpbiB0aGUgREZHCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ1OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2ht
YXJrcy9kZWx0YS1ibHVlLXRyeS1jYXRjaC5qczogQWRkZWQuCisgICAgICAgIChleGNlcHRpb24p
OgorICAgICAgICAodmFsdWUpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24pOgorICAgICAg
ICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmFkZCk6CisgICAgICAgIChPcmRlcmVkQ29s
bGVjdGlvbi5wcm90b3R5cGUuYXQpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLnJlbW92ZUZp
cnN0KToKKyAgICAgICAgKE9yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmUpOgorICAg
ICAgICAoU3RyZW5ndGgpOgorICAgICAgICAoU3RyZW5ndGguc3Ryb25nZXIpOgorICAgICAgICAo
U3RyZW5ndGgud2Vha2VyKToKKyAgICAgICAgKFN0cmVuZ3RoLndlYWtlc3RPZik6CisgICAgICAg
IChTdHJlbmd0aC5zdHJvbmdlc3QpOgorICAgICAgICAoU3RyZW5ndGgucHJvdG90eXBlLm5leHRX
ZWFrZXIpOgorICAgICAgICAoQ29uc3RyYWludCk6CisgICAgICAgIChDb25zdHJhaW50LnByb3Rv
dHlwZS5hZGRDb25zdHJhaW50KToKKyAgICAgICAgKENvbnN0cmFpbnQucHJvdG90eXBlLnNhdGlz
ZnkpOgorICAgICAgICAoQ29uc3RyYWludC5wcm90b3R5cGUuZGVzdHJveUNvbnN0cmFpbnQpOgor
ICAgICAgICAoQ29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1dCk6CisgICAgICAgIChVbmFyeUNv
bnN0cmFpbnQpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRUb0dyYXBo
KToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuY2hvb3NlTWV0aG9kKToKKyAg
ICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQpOgorICAgICAgICAo
VW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzKToKKyAgICAgICAgKFVuYXJ5Q29u
c3RyYWludC5wcm90b3R5cGUub3V0cHV0KToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90
b3R5cGUucmVjYWxjdWxhdGUpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5t
YXJrVW5zYXRpc2ZpZWQpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pbnB1
dHNLbm93bik6CisgICAgICAgIChVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21H
cmFwaCk6CisgICAgICAgIChTdGF5Q29uc3RyYWludCk6CisgICAgICAgIChTdGF5Q29uc3RyYWlu
dC5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChFZGl0Q29uc3RyYWludC5wcm90b3R5cGUu
aXNJbnB1dCk6CisgICAgICAgIChFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSk6Cisg
ICAgICAgIChCaW5hcnlDb25zdHJhaW50KToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJv
dG90eXBlLmNob29zZU1ldGhvZCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlw
ZS5hZGRUb0dyYXBoKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlzU2F0
aXNmaWVkKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMp
OgorICAgICAgICAoQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXQpOgorICAgICAgICAo
QmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUub3V0cHV0KToKKyAgICAgICAgKEJpbmFyeUNvbnN0
cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLm1hcmtVbnNhdGlzZmllZCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnBy
b3RvdHlwZS5pbnB1dHNLbm93bik6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlw
ZS5yZW1vdmVGcm9tR3JhcGgpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50KToKKyAgICAgICAg
KFNjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCk6CisgICAgICAgIChTY2FsZUNv
bnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCk6CisgICAgICAgIChTY2FsZUNvbnN0
cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5leGVjdXRlKToKKyAgICAgICAgKFNjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVj
YWxjdWxhdGUpOgorICAgICAgICAoRXF1YWxpdHlDb25zdHJhaW50KToKKyAgICAgICAgKEVxdWFs
aXR5Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChWYXJpYWJsZSk6Cisg
ICAgICAgIChWYXJpYWJsZS5wcm90b3R5cGUuYWRkQ29uc3RyYWludCk6CisgICAgICAgIChWYXJp
YWJsZS5wcm90b3R5cGUucmVtb3ZlQ29uc3RyYWludCk6CisgICAgICAgIChQbGFubmVyKToKKyAg
ICAgICAgKFBsYW5uZXIucHJvdG90eXBlLmluY3JlbWVudGFsQWRkKToKKyAgICAgICAgKFBsYW5u
ZXIucHJvdG90eXBlLmluY3JlbWVudGFsUmVtb3ZlKToKKyAgICAgICAgKFBsYW5uZXIucHJvdG90
eXBlLm5ld01hcmspOgorICAgICAgICAoUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4pOgorICAg
ICAgICAoUGxhbm5lci5wcm90b3R5cGUuZXh0cmFjdFBsYW5Gcm9tQ29uc3RyYWludHMpOgorICAg
ICAgICAoUGxhbm5lci5wcm90b3R5cGUuYWRkUHJvcGFnYXRlKToKKyAgICAgICAgKFBsYW5uZXIu
cHJvdG90eXBlLnJlbW92ZVByb3BhZ2F0ZUZyb20pOgorICAgICAgICAoUGxhbm5lci5wcm90b3R5
cGUuYWRkQ29uc3RyYWludHNDb25zdW1pbmdUbyk6CisgICAgICAgIChQbGFuKToKKyAgICAgICAg
KFBsYW4ucHJvdG90eXBlLmFkZENvbnN0cmFpbnQpOgorICAgICAgICAoUGxhbi5wcm90b3R5cGUu
c2l6ZSk6CisgICAgICAgIChQbGFuLnByb3RvdHlwZS5jb25zdHJhaW50QXQpOgorICAgICAgICAo
UGxhbi5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChjaGFpblRlc3QpOgorICAgICAgICAo
cHJvamVjdGlvblRlc3QpOgorICAgICAgICAoY2hhbmdlKToKKyAgICAgICAgKGRlbHRhQmx1ZSk6
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2Zha2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hl
bi1maW5pc2hlZC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoTnVtYmVy
cyk6CisgICAgICAgIChOdW1iZXJzLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKHJldHVybi5U
cmFuc3Bvc2UpOgorICAgICAgICAocmV0dXJuLlRyYW5zcG9zZS5wcm90b3R5cGUubmV4dCk6Cisg
ICAgICAgICh0cmFuc3Bvc2UpOgorICAgICAgICAodmVyaWZ5RXZlbik6CisgICAgICAgICh2ZXJp
ZnlTdHJpbmcpOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHJ1bkl0ZXJhdG9ycyk6CisgICAg
ICAgICogc3RyZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKG8pOgorICAgICAgICAoZSk6CisgICAgICAgIChlMik6CisgICAgICAg
IChlc2NhcGUpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKG5vSW5saW5lLnJ1bik6CisgICAg
ICAgIChub0lubGluZSk6CisgICAgICAgICogc3RyZXNzL29zci1lbnRlci10by1jYXRjaC13aXRo
LXNldC1sb2NhbC10eXBlLWNoZWNrLWZhaWx1cmUuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToK
KyAgICAgICAgKGUpOgorICAgICAgICAoYmF6KToKKyAgICAgICAgKGJhcik6CisKIDIwMTctMDgt
MTggIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgU2tpcCBm
bGFreSBKU0MgdGVzdCBtaWNyb2JlbmNobWFya3MvZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBl
cy5qcy4KSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5LWNhdGNo
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRhLWJsdWUtdHJ5
LWNhdGNoLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2RlbHRh
LWJsdWUtdHJ5LWNhdGNoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA1IEBACisvLyBD
b3B5cmlnaHQgMjAwOCB0aGUgVjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gQ29weXJpZ2h0IDE5OTYgSm9obiBNYWxvbmV5IGFuZCBNYXJpbyBXb2xjemtvLgorCisv
LyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yIG1vZGlmeQorLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisvLyAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLy8KKy8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLy8gYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy8vIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisvLwor
Ly8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKy8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisvLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Us
IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworLy8gVGhpcyBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgRGVsdGFCbHVlIGJlbmNobWFyayBpcyBkZXJpdmVkCisvLyBmcm9t
IHRoZSBTbWFsbHRhbGsgaW1wbGVtZW50YXRpb24gYnkgSm9obiBNYWxvbmV5IGFuZCBNYXJpbwor
Ly8gV29sY3prby4gU29tZSBwYXJ0cyBoYXZlIGJlZW4gdHJhbnNsYXRlZCBkaXJlY3RseSwgd2hl
cmVhcworLy8gb3RoZXJzIGhhdmUgYmVlbiBtb2RpZmllZCBtb3JlIGFnZ3Jlc2l2ZWx5IHRvIG1h
a2UgaXQgZmVlbAorLy8gbW9yZSBsaWtlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgorCitsZXQgX19l
eGNlcHRpb25Db3VudGVyID0gMDsKK2Z1bmN0aW9uIGV4Y2VwdGlvbigpIHsKKyAgICBpZiAoX19l
eGNlcHRpb25Db3VudGVyKysgJSAzNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgX19leGNlcHRpb25D
b3VudGVyOworfQorCisKKy8qKgorICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBEZWx0YUJsdWUgY29uc3RyYWludC1zb2x2aW5nCisgKiBhbGdvcml0aG0sIGFzIGRlc2NyaWJl
ZCBpbjoKKyAqCisgKiAiVGhlIERlbHRhQmx1ZSBBbGdvcml0aG06IEFuIEluY3JlbWVudGFsIENv
bnN0cmFpbnQgSGllcmFyY2h5IFNvbHZlciIKKyAqICAgQmpvcm4gTi4gRnJlZW1hbi1CZW5zb24g
YW5kIEpvaG4gTWFsb25leQorICogICBKYW51YXJ5IDE5OTAgQ29tbXVuaWNhdGlvbnMgb2YgdGhl
IEFDTSwKKyAqICAgYWxzbyBhdmFpbGFibGUgYXMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIFRS
IDg5LTA4LTA2LgorICoKKyAqIEJld2FyZTogdGhpcyBiZW5jaG1hcmsgaXMgd3JpdHRlbiBpbiBh
IGdyb3Rlc3F1ZSBzdHlsZSB3aGVyZQorICogdGhlIGNvbnN0cmFpbnQgbW9kZWwgaXMgYnVpbHQg
Ynkgc2lkZS1lZmZlY3RzIGZyb20gY29uc3RydWN0b3JzLgorICogSSd2ZSBrZXB0IGl0IHRoaXMg
d2F5IHRvIGF2b2lkIGRldmlhdGluZyB0b28gbXVjaCBmcm9tIHRoZSBvcmlnaW5hbAorICogaW1w
bGVtZW50YXRpb24uCisgKi8KKworCisvKiAtLS0gTyBiIGogZSBjIHQgICBNIG8gZCBlIGwgLS0t
ICovCisKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAiaW5oZXJpdHNG
cm9tIiwgeworICAKKyAgdmFsdWU6IGZ1bmN0aW9uIChzaHVwZXIpIHsKKyAgICBmdW5jdGlvbiBJ
bmhlcml0ZXIoKSB7IH0KKyAgICBJbmhlcml0ZXIucHJvdG90eXBlID0gc2h1cGVyLnByb3RvdHlw
ZTsKKyAgICB0aGlzLnByb3RvdHlwZSA9IG5ldyBJbmhlcml0ZXIoKTsKKyAgICB0aGlzLnN1cGVy
Q29uc3RydWN0b3IgPSBzaHVwZXI7CisgIH0KK30pOworCitmdW5jdGlvbiBPcmRlcmVkQ29sbGVj
dGlvbigpIHsKKyAgdGhpcy5lbG1zID0gbmV3IEFycmF5KCk7Cit9CisKK09yZGVyZWRDb2xsZWN0
aW9uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHRoaXMuZWxtcy5wdXNoKGVs
bSk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRl
eCkgeworICByZXR1cm4gdGhpcy5lbG1zW2luZGV4XTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24u
cHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMubGVuZ3Ro
OworfQorCitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlRmlyc3QgPSBmdW5jdGlv
biAoKSB7CisgIHJldHVybiB0aGlzLmVsbXMucG9wKCk7Cit9CisKK09yZGVyZWRDb2xsZWN0aW9u
LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAoZWxtKSB7CisgIHZhciBpbmRleCA9IDAsIHNr
aXBwZWQgPSAwOworICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZWxtcy5sZW5ndGg7IGkrKykg
eworICAgIHZhciB2YWx1ZSA9IHRoaXMuZWxtc1tpXTsKKyAgICBpZiAodmFsdWUgIT0gZWxtKSB7
CisgICAgICB0aGlzLmVsbXNbaW5kZXhdID0gdmFsdWU7CisgICAgICBpbmRleCsrOworICAgIH0g
ZWxzZSB7CisgICAgICBza2lwcGVkKys7CisgICAgfQorICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9
IGNhdGNoKGUpIHsgfQorICB9CisgIGZvciAodmFyIGkgPSAwOyBpIDwgc2tpcHBlZDsgaSsrKSB7
CisgICAgdGhpcy5lbG1zLnBvcCgpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUp
IHsgfQorICB9Cit9CisKKy8qIC0tLSAqCisgKiBTIHQgciBlIG4gZyB0IGgKKyAqIC0tLSAqLwor
CisvKioKKyAqIFN0cmVuZ3RocyBhcmUgdXNlZCB0byBtZWFzdXJlIHRoZSByZWxhdGl2ZSBpbXBv
cnRhbmNlIG9mIGNvbnN0cmFpbnRzLgorICogTmV3IHN0cmVuZ3RocyBtYXkgYmUgaW5zZXJ0ZWQg
aW4gdGhlIHN0cmVuZ3RoIGhpZXJhcmNoeSB3aXRob3V0CisgKiBkaXNydXB0aW5nIGN1cnJlbnQg
Y29uc3RyYWludHMuICBTdHJlbmd0aHMgY2Fubm90IGJlIGNyZWF0ZWQgb3V0c2lkZQorICogdGhp
cyBjbGFzcywgc28gcG9pbnRlciBjb21wYXJpc29uIGNhbiBiZSB1c2VkIGZvciB2YWx1ZSBjb21w
YXJpc29uLgorICovCitmdW5jdGlvbiBTdHJlbmd0aChzdHJlbmd0aFZhbHVlLCBuYW1lKSB7Cisg
IHRoaXMuc3RyZW5ndGhWYWx1ZSA9IHN0cmVuZ3RoVmFsdWU7CisgIHRoaXMubmFtZSA9IG5hbWU7
Cit9CisKK1N0cmVuZ3RoLnN0cm9uZ2VyID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4g
czEuc3RyZW5ndGhWYWx1ZSA8IHMyLnN0cmVuZ3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtl
ciA9IGZ1bmN0aW9uIChzMSwgczIpIHsKKyAgcmV0dXJuIHMxLnN0cmVuZ3RoVmFsdWUgPiBzMi5z
dHJlbmd0aFZhbHVlOworfQorCitTdHJlbmd0aC53ZWFrZXN0T2YgPSBmdW5jdGlvbiAoczEsIHMy
KSB7CisgIHJldHVybiB0aGlzLndlYWtlcihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5n
dGguc3Ryb25nZXN0ID0gZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gdGhpcy5zdHJvbmdl
cihzMSwgczIpID8gczEgOiBzMjsKK30KKworU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFrZXIg
PSBmdW5jdGlvbiAoKSB7CisgIHN3aXRjaCAodGhpcy5zdHJlbmd0aFZhbHVlKSB7CisgICAgY2Fz
ZSAwOiByZXR1cm4gU3RyZW5ndGguV0VBS0VTVDsKKyAgICBjYXNlIDE6IHJldHVybiBTdHJlbmd0
aC5XRUFLX0RFRkFVTFQ7CisgICAgY2FzZSAyOiByZXR1cm4gU3RyZW5ndGguTk9STUFMOworICAg
IGNhc2UgMzogcmV0dXJuIFN0cmVuZ3RoLlNUUk9OR19ERUZBVUxUOworICAgIGNhc2UgNDogcmV0
dXJuIFN0cmVuZ3RoLlBSRUZFUlJFRDsKKyAgICBjYXNlIDU6IHJldHVybiBTdHJlbmd0aC5SRVFV
SVJFRDsKKyAgfQorfQorCisvLyBTdHJlbmd0aCBjb25zdGFudHMuCitTdHJlbmd0aC5SRVFVSVJF
RCAgICAgICAgPSBuZXcgU3RyZW5ndGgoMCwgInJlcXVpcmVkIik7CitTdHJlbmd0aC5TVE9OR19Q
UkVGRVJSRUQgPSBuZXcgU3RyZW5ndGgoMSwgInN0cm9uZ1ByZWZlcnJlZCIpOworU3RyZW5ndGgu
UFJFRkVSUkVEICAgICAgID0gbmV3IFN0cmVuZ3RoKDIsICJwcmVmZXJyZWQiKTsKK1N0cmVuZ3Ro
LlNUUk9OR19ERUZBVUxUICA9IG5ldyBTdHJlbmd0aCgzLCAic3Ryb25nRGVmYXVsdCIpOworU3Ry
ZW5ndGguTk9STUFMICAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDQsICJub3JtYWwiKTsKK1N0cmVu
Z3RoLldFQUtfREVGQVVMVCAgICA9IG5ldyBTdHJlbmd0aCg1LCAid2Vha0RlZmF1bHQiKTsKK1N0
cmVuZ3RoLldFQUtFU1QgICAgICAgICA9IG5ldyBTdHJlbmd0aCg2LCAid2Vha2VzdCIpOworCisv
KiAtLS0gKgorICogQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICogQW4g
YWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgc3lzdGVtLW1haW50YWluYWJsZSByZWxhdGlv
bnNoaXAKKyAqIChvciAiY29uc3RyYWludCIpIGJldHdlZW4gYSBzZXQgb2YgdmFyaWFibGVzLiBB
IGNvbnN0cmFpbnQgc3VwcGxpZXMKKyAqIGEgc3RyZW5ndGggaW5zdGFuY2UgdmFyaWFibGU7IGNv
bmNyZXRlIHN1YmNsYXNzZXMgcHJvdmlkZSBhIG1lYW5zCisgKiBvZiBzdG9yaW5nIHRoZSBjb25z
dHJhaW5lZCB2YXJpYWJsZXMgYW5kIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkCisgKiB0byBy
ZXByZXNlbnQgYSBjb25zdHJhaW50LgorICovCitmdW5jdGlvbiBDb25zdHJhaW50KHN0cmVuZ3Ro
KSB7CisgIHRoaXMuc3RyZW5ndGggPSBzdHJlbmd0aDsKK30KKworLyoqCisgKiBBY3RpdmF0ZSB0
aGlzIGNvbnN0cmFpbnQgYW5kIGF0dGVtcHQgdG8gc2F0aXNmeSBpdC4KKyAqLworQ29uc3RyYWlu
dC5wcm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5hZGRUb0dy
YXBoKCk7CisgIHBsYW5uZXIuaW5jcmVtZW50YWxBZGQodGhpcyk7Cit9CisKKy8qKgorICogQXR0
ZW1wdCB0byBmaW5kIGEgd2F5IHRvIGVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBJZiBzdWNjZXNz
ZnVsLAorICogcmVjb3JkIHRoZSBzb2x1dGlvbiwgcGVyaGFwcyBtb2RpZnlpbmcgdGhlIGN1cnJl
bnQgZGF0YWZsb3cKKyAqIGdyYXBoLiBBbnN3ZXIgdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGlzIGNv
bnN0cmFpbnQgb3ZlcnJpZGVzLCBpZgorICogdGhlcmUgaXMgb25lLCBvciBuaWwsIGlmIHRoZXJl
IGlzbid0LgorICogQXNzdW1lOiBJIGFtIG5vdCBhbHJlYWR5IHNhdGlzZmllZC4KKyAqLworQ29u
c3RyYWludC5wcm90b3R5cGUuc2F0aXNmeSA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuY2hv
b3NlTWV0aG9kKG1hcmspOworICBpZiAoIXRoaXMuaXNTYXRpc2ZpZWQoKSkgeworICAgIGlmICh0
aGlzLnN0cmVuZ3RoID09IFN0cmVuZ3RoLlJFUVVJUkVEKQorICAgICAgYWxlcnQoIkNvdWxkIG5v
dCBzYXRpc2Z5IGEgcmVxdWlyZWQgY29uc3RyYWludCEiKTsKKyAgICByZXR1cm4gbnVsbDsKKyAg
fQorICB0aGlzLm1hcmtJbnB1dHMobWFyayk7CisgIHZhciBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICB2YXIgb3ZlcnJpZGRlbiA9IG91dC5kZXRlcm1pbmVkQnk7CisgIGlmIChvdmVycmlkZGVuICE9
IG51bGwpIG92ZXJyaWRkZW4ubWFya1Vuc2F0aXNmaWVkKCk7CisgIG91dC5kZXRlcm1pbmVkQnkg
PSB0aGlzOworICBpZiAoIXBsYW5uZXIuYWRkUHJvcGFnYXRlKHRoaXMsIG1hcmspKQorICAgIGFs
ZXJ0KCJDeWNsZSBlbmNvdW50ZXJlZCIpOworICBvdXQubWFyayA9IG1hcms7CisgIHJldHVybiBv
dmVycmlkZGVuOworfQorCitDb25zdHJhaW50LnByb3RvdHlwZS5kZXN0cm95Q29uc3RyYWludCA9
IGZ1bmN0aW9uICgpIHsKKyAgaWYgKHRoaXMuaXNTYXRpc2ZpZWQoKSkgcGxhbm5lci5pbmNyZW1l
bnRhbFJlbW92ZSh0aGlzKTsKKyAgZWxzZSB0aGlzLnJlbW92ZUZyb21HcmFwaCgpOworfQorCisv
KioKKyAqIE5vcm1hbCBjb25zdHJhaW50cyBhcmUgbm90IGlucHV0IGNvbnN0cmFpbnRzLiAgQW4g
aW5wdXQgY29uc3RyYWludAorICogaXMgb25lIHRoYXQgZGVwZW5kcyBvbiBleHRlcm5hbCBzdGF0
ZSwgc3VjaCBhcyB0aGUgbW91c2UsIHRoZQorICoga2V5Ym9yZCwgYSBjbG9jaywgb3Igc29tZSBh
cmJpdHJhdHkgcGllY2Ugb2YgaW1wZXJhdGl2ZSBjb2RlLgorICovCitDb25zdHJhaW50LnByb3Rv
dHlwZS5pc0lucHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIC0t
LSAqCisgKiBVIG4gYSByIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoq
CisgKiBBYnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgYSBzaW5nbGUg
cG9zc2libGUgb3V0cHV0CisgKiB2YXJpYWJsZS4KKyAqLworZnVuY3Rpb24gVW5hcnlDb25zdHJh
aW50KHYsIHN0cmVuZ3RoKSB7CisgIFVuYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNh
bGwodGhpcywgc3RyZW5ndGgpOworICB0aGlzLm15T3V0cHV0ID0gdjsKKyAgdGhpcy5zYXRpc2Zp
ZWQgPSBmYWxzZTsKKyAgdGhpcy5hZGRDb25zdHJhaW50KCk7Cit9CisKK1VuYXJ5Q29uc3RyYWlu
dC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisKKy8qKgorICogQWRkcyB0aGlzIGNvbnN0cmFp
bnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3JhcGgKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlw
ZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm15T3V0cHV0LmFkZENvbnN0cmFp
bnQodGhpcyk7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKKy8qKgorICogRGVjaWRl
cyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQgcmVjb3JkcyB0aGF0Cisg
KiBkZWNpc2lvbi4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2Qg
PSBmdW5jdGlvbiAobWFyaykgeworICB0aGlzLnNhdGlzZmllZCA9ICh0aGlzLm15T3V0cHV0Lm1h
cmsgIT0gbWFyaykKKyAgICAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0aGlz
Lm15T3V0cHV0LndhbGtTdHJlbmd0aCk7Cit9CisKKy8qKgorICogUmV0dXJucyB0cnVlIGlmIHRo
aXMgY29uc3RyYWludCBpcyBzYXRpc2ZpZWQgaW4gdGhlIGN1cnJlbnQgc29sdXRpb24uCisgKi8K
K1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQgPSBmdW5jdGlvbiAoKSB7Cisg
IHJldHVybiB0aGlzLnNhdGlzZmllZDsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5t
YXJrSW5wdXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgLy8gaGFzIG5vIGlucHV0cworfQorCisv
KioKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgb3V0cHV0IHZhcmlhYmxlLgorICovCitVbmFyeUNv
bnN0cmFpbnQucHJvdG90eXBlLm91dHB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMu
bXlPdXRwdXQ7Cit9CisKKy8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgs
IHRoZSBzdGF5IGZsYWcsIGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0
aGUgY3VycmVudCBvdXRwdXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29u
c3RyYWludCBpcyBzYXRpc2ZpZWQuCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUucmVj
YWxjdWxhdGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQud2Fsa1N0cmVuZ3RoID0g
dGhpcy5zdHJlbmd0aDsKKyAgdGhpcy5teU91dHB1dC5zdGF5ID0gIXRoaXMuaXNJbnB1dCgpOwor
ICBpZiAodGhpcy5teU91dHB1dC5zdGF5KSB0aGlzLmV4ZWN1dGUoKTsgLy8gU3RheSBvcHRpbWl6
YXRpb24KK30KKworLyoqCisgKiBSZWNvcmRzIHRoYXQgdGhpcyBjb25zdHJhaW50IGlzIHVuc2F0
aXNmaWVkCisgKi8KK1VuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUubWFya1Vuc2F0aXNmaWVkID0g
ZnVuY3Rpb24gKCkgeworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCitVbmFyeUNvbnN0
cmFpbnQucHJvdG90eXBlLmlucHV0c0tub3duID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdHJ1
ZTsKK30KKworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5j
dGlvbiAoKSB7CisgIGlmICh0aGlzLm15T3V0cHV0ICE9IG51bGwpIHRoaXMubXlPdXRwdXQucmVt
b3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyog
LS0tICoKKyAqIFMgdCBhIHkgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoq
CisgKiBWYXJpYWJsZXMgdGhhdCBzaG91bGQsIHdpdGggc29tZSBsZXZlbCBvZiBwcmVmZXJlbmNl
LCBzdGF5IHRoZSBzYW1lLgorICogUGxhbm5lcnMgbWF5IGV4cGxvaXQgdGhlIGZhY3QgdGhhdCBp
bnN0YW5jZXMsIGlmIHNhdGlzZmllZCwgd2lsbCBub3QKKyAqIGNoYW5nZSB0aGVpciBvdXRwdXQg
ZHVyaW5nIHBsYW4gZXhlY3V0aW9uLiAgVGhpcyBpcyBjYWxsZWQgInN0YXkKKyAqIG9wdGltaXph
dGlvbiIuCisgKi8KK2Z1bmN0aW9uIFN0YXlDb25zdHJhaW50KHYsIHN0cikgeworICBTdGF5Q29u
c3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworU3RheUNv
bnN0cmFpbnQuaW5oZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKK1N0YXlDb25zdHJhaW50
LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICAvLyBTdGF5IGNvbnN0cmFpbnRz
IGRvIG5vdGhpbmcKK30KKworLyogLS0tICoKKyAqIEUgZCBpIHQgICBDIG8gbiBzIHQgciBhIGkg
biB0CisgKiAtLS0gKi8KKworLyoqCisgKiBBIHVuYXJ5IGlucHV0IGNvbnN0cmFpbnQgdXNlZCB0
byBtYXJrIGEgdmFyaWFibGUgdGhhdCB0aGUgY2xpZW50CisgKiB3aXNoZXMgdG8gY2hhbmdlLgor
ICovCitmdW5jdGlvbiBFZGl0Q29uc3RyYWludCh2LCBzdHIpIHsKKyAgRWRpdENvbnN0cmFpbnQu
c3VwZXJDb25zdHJ1Y3Rvci5jYWxsKHRoaXMsIHYsIHN0cik7Cit9CisKK0VkaXRDb25zdHJhaW50
LmluaGVyaXRzRnJvbShVbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEVkaXRzIGluZGljYXRl
IHRoYXQgYSB2YXJpYWJsZSBpcyB0byBiZSBjaGFuZ2VkIGJ5IGltcGVyYXRpdmUgY29kZS4KKyAq
LworRWRpdENvbnN0cmFpbnQucHJvdG90eXBlLmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJl
dHVybiB0cnVlOworfQorCitFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0
aW9uICgpIHsKKyAgLy8gRWRpdCBjb25zdHJhaW50cyBkbyBub3RoaW5nCit9CisKKy8qIC0tLSAq
CisgKiBCIGkgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCit2YXIg
RGlyZWN0aW9uID0gbmV3IE9iamVjdCgpOworRGlyZWN0aW9uLk5PTkUgICAgID0gMDsKK0RpcmVj
dGlvbi5GT1JXQVJEICA9IDE7CitEaXJlY3Rpb24uQkFDS1dBUkQgPSAtMTsKKworLyoqCisgKiBB
YnN0cmFjdCBzdXBlcmNsYXNzIGZvciBjb25zdHJhaW50cyBoYXZpbmcgdHdvIHBvc3NpYmxlIG91
dHB1dAorICogdmFyaWFibGVzLgorICovCitmdW5jdGlvbiBCaW5hcnlDb25zdHJhaW50KHZhcjEs
IHZhcjIsIHN0cmVuZ3RoKSB7CisgIEJpbmFyeUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5j
YWxsKHRoaXMsIHN0cmVuZ3RoKTsKKyAgdGhpcy52MSA9IHZhcjE7CisgIHRoaXMudjIgPSB2YXIy
OworICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLmFkZENvbnN0cmFp
bnQoKTsKK30KKworQmluYXJ5Q29uc3RyYWludC5pbmhlcml0c0Zyb20oQ29uc3RyYWludCk7CisK
Ky8qKgorICogRGVjaWRlcyBpZiB0aGlzIGNvbnN0cmFpbnQgY2FuIGJlIHNhdGlzZmllZCBhbmQg
d2hpY2ggd2F5IGl0CisgKiBzaG91bGQgZmxvdyBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgc3RyZW5n
dGggb2YgdGhlIHZhcmlhYmxlcyByZWxhdGVkLAorICogYW5kIHJlY29yZCB0aGF0IGRlY2lzaW9u
LgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5jaG9vc2VNZXRob2QgPSBmdW5jdGlv
biAobWFyaykgeworICBpZiAodGhpcy52MS5tYXJrID09IG1hcmspIHsKKyAgICB0aGlzLmRpcmVj
dGlvbiA9ICh0aGlzLnYyLm1hcmsgIT0gbWFyayAmJiBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0
cmVuZ3RoLCB0aGlzLnYyLndhbGtTdHJlbmd0aCkpCisgICAgICA/IERpcmVjdGlvbi5GT1JXQVJE
CisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlmICh0aGlzLnYyLm1hcmsgPT0gbWFy
aykgeworICAgIHRoaXMuZGlyZWN0aW9uID0gKHRoaXMudjEubWFyayAhPSBtYXJrICYmIFN0cmVu
Z3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjEud2Fsa1N0cmVuZ3RoKSkKKyAgICAg
ID8gRGlyZWN0aW9uLkJBQ0tXQVJECisgICAgICA6IERpcmVjdGlvbi5OT05FOworICB9CisgIGlm
IChTdHJlbmd0aC53ZWFrZXIodGhpcy52MS53YWxrU3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVu
Z3RoKSkgeworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5ndGguc3Ryb25nZXIodGhpcy5zdHJl
bmd0aCwgdGhpcy52MS53YWxrU3RyZW5ndGgpCisgICAgICA/IERpcmVjdGlvbi5CQUNLV0FSRAor
ICAgICAgOiBEaXJlY3Rpb24uTk9ORTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLmRpcmVjdGlvbiA9
IFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKQor
ICAgICAgPyBEaXJlY3Rpb24uRk9SV0FSRAorICAgICAgOiBEaXJlY3Rpb24uQkFDS1dBUkQKKyAg
fQorfQorCisvKioKKyAqIEFkZCB0aGlzIGNvbnN0cmFpbnQgdG8gdGhlIGNvbnN0cmFpbnQgZ3Jh
cGgKKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCA9IGZ1bmN0aW9u
ICgpIHsKKyAgdGhpcy52MS5hZGRDb25zdHJhaW50KHRoaXMpOworICB0aGlzLnYyLmFkZENvbnN0
cmFpbnQodGhpcyk7CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8q
KgorICogQW5zd2VyIHRydWUgaWYgdGhpcyBjb25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUg
Y3VycmVudCBzb2x1dGlvbi4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRp
c2ZpZWQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0aGlzLmRpcmVjdGlvbiAhPSBEaXJlY3Rp
b24uTk9ORTsKK30KKworLyoqCisgKiBNYXJrIHRoZSBpbnB1dCB2YXJpYWJsZSB3aXRoIHRoZSBn
aXZlbiBtYXJrLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0g
ZnVuY3Rpb24gKG1hcmspIHsKKyAgdGhpcy5pbnB1dCgpLm1hcmsgPSBtYXJrOworfQorCisvKioK
KyAqIFJldHVybnMgdGhlIGN1cnJlbnQgaW5wdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29uc3Ry
YWludC5wcm90b3R5cGUuaW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJl
Y3Rpb24gPT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MSA6IHRoaXMudjI7Cit9CisKKy8q
KgorICogUmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUKKyAqLworQmluYXJ5Q29u
c3RyYWludC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKHRoaXMu
ZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSA/IHRoaXMudjIgOiB0aGlzLnYxOworfQor
CisvKioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBmbGFn
LCBhbmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgb3V0
cHV0IG9mIHRoaXMKKyAqIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0
aXNmaWVkLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0ZSA9IGZ1
bmN0aW9uICgpIHsKKyAgdmFyIGlobiA9IHRoaXMuaW5wdXQoKSwgb3V0ID0gdGhpcy5vdXRwdXQo
KTsKKyAgb3V0LndhbGtTdHJlbmd0aCA9IFN0cmVuZ3RoLndlYWtlc3RPZih0aGlzLnN0cmVuZ3Ro
LCBpaG4ud2Fsa1N0cmVuZ3RoKTsKKyAgb3V0LnN0YXkgPSBpaG4uc3RheTsKKyAgaWYgKG91dC5z
dGF5KSB0aGlzLmV4ZWN1dGUoKTsKK30KKworLyoqCisgKiBSZWNvcmQgdGhlIGZhY3QgdGhhdCB0
aGlzIGNvbnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJv
dG90eXBlLm1hcmtVbnNhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5kaXJlY3Rpb24g
PSBEaXJlY3Rpb24uTk9ORTsKK30KKworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXRz
S25vd24gPSBmdW5jdGlvbiAobWFyaykgeworICB2YXIgaSA9IHRoaXMuaW5wdXQoKTsKKyAgcmV0
dXJuIGkubWFyayA9PSBtYXJrIHx8IGkuc3RheSB8fCBpLmRldGVybWluZWRCeSA9PSBudWxsOwor
fQorCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5jdGlv
biAoKSB7CisgIGlmICh0aGlzLnYxICE9IG51bGwpIHRoaXMudjEucmVtb3ZlQ29uc3RyYWludCh0
aGlzKTsKKyAgaWYgKHRoaXMudjIgIT0gbnVsbCkgdGhpcy52Mi5yZW1vdmVDb25zdHJhaW50KHRo
aXMpOworICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworfQorCisvKiAtLS0gKgor
ICogUyBjIGEgbCBlICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKKy8qKgorICog
UmVsYXRlcyB0d28gdmFyaWFibGVzIGJ5IHRoZSBsaW5lYXIgc2NhbGluZyByZWxhdGlvbnNoaXA6
ICJ2MiA9CisgKiAodjEgKiBzY2FsZSkgKyBvZmZzZXQiLiBFaXRoZXIgdjEgb3IgdjIgbWF5IGJl
IGNoYW5nZWQgdG8gbWFpbnRhaW4KKyAqIHRoaXMgcmVsYXRpb25zaGlwIGJ1dCB0aGUgc2NhbGUg
ZmFjdG9yIGFuZCBvZmZzZXQgYXJlIGNvbnNpZGVyZWQKKyAqIHJlYWQtb25seS4KKyAqLworZnVu
Y3Rpb24gU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZGVzdCwgc3RyZW5ndGgp
IHsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKKyAgdGhpcy5zY2FsZSA9IHNj
YWxlOworICB0aGlzLm9mZnNldCA9IG9mZnNldDsKKyAgU2NhbGVDb25zdHJhaW50LnN1cGVyQ29u
c3RydWN0b3IuY2FsbCh0aGlzLCBzcmMsIGRlc3QsIHN0cmVuZ3RoKTsKK30KKworU2NhbGVDb25z
dHJhaW50LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRo
aXMgY29uc3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaC4KKyAqLworU2NhbGVDb25zdHJh
aW50LnByb3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFp
bnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90b3R5cGUuYWRkVG9HcmFwaC5jYWxsKHRoaXMpOworICB0
aGlzLnNjYWxlLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMub2Zmc2V0LmFkZENvbnN0cmFp
bnQodGhpcyk7Cit9CisKK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVtb3ZlRnJvbUdyYXBo
ID0gZnVuY3Rpb24gKCkgeworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5wcm90
b3R5cGUucmVtb3ZlRnJvbUdyYXBoLmNhbGwodGhpcyk7CisgIGlmICh0aGlzLnNjYWxlICE9IG51
bGwpIHRoaXMuc2NhbGUucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKKyAgaWYgKHRoaXMub2Zmc2V0
ICE9IG51bGwpIHRoaXMub2Zmc2V0LnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cit9CisKK1NjYWxl
Q29uc3RyYWludC5wcm90b3R5cGUubWFya0lucHV0cyA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIFNj
YWxlQ29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5tYXJrSW5wdXRzLmNhbGwo
dGhpcywgbWFyayk7CisgIHRoaXMuc2NhbGUubWFyayA9IHRoaXMub2Zmc2V0Lm1hcmsgPSBtYXJr
OworfQorCisvKioKKyAqIEVuZm9yY2UgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUgdGhhdCBpdCBp
cyBzYXRpc2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1
bmN0aW9uICgpIHsKKyAgaWYgKHRoaXMuZGlyZWN0aW9uID09IERpcmVjdGlvbi5GT1JXQVJEKSB7
CisgICAgdGhpcy52Mi52YWx1ZSA9IHRoaXMudjEudmFsdWUgKiB0aGlzLnNjYWxlLnZhbHVlICsg
dGhpcy5vZmZzZXQudmFsdWU7CisgIH0gZWxzZSB7CisgICAgdGhpcy52MS52YWx1ZSA9ICh0aGlz
LnYyLnZhbHVlIC0gdGhpcy5vZmZzZXQudmFsdWUpIC8gdGhpcy5zY2FsZS52YWx1ZTsKKyAgfQor
fQorCisvKioKKyAqIENhbGN1bGF0ZSB0aGUgd2Fsa2Fib3V0IHN0cmVuZ3RoLCB0aGUgc3RheSBm
bGFnLCBhbmQsIGlmIGl0IGlzCisgKiAnc3RheScsIHRoZSB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQg
b3V0cHV0IG9mIHRoaXMgY29uc3RyYWludC4gQXNzdW1lCisgKiB0aGlzIGNvbnN0cmFpbnQgaXMg
c2F0aXNmaWVkLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0g
ZnVuY3Rpb24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1
dCgpOworICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5n
dGgsIGlobi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5ICYmIHRoaXMuc2Nh
bGUuc3RheSAmJiB0aGlzLm9mZnNldC5zdGF5OworICBpZiAob3V0LnN0YXkpIHRoaXMuZXhlY3V0
ZSgpOworfQorCisvKiAtLS0gKgorICogRSBxIHUgYSBsIGkgdCAgeSAgIEMgbyBuIHMgdCByIGEg
aSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIENvbnN0cmFpbnMgdHdvIHZhcmlhYmxlcyB0byBo
YXZlIHRoZSBzYW1lIHZhbHVlLgorICovCitmdW5jdGlvbiBFcXVhbGl0eUNvbnN0cmFpbnQodmFy
MSwgdmFyMiwgc3RyZW5ndGgpIHsKKyAgRXF1YWxpdHlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0
b3IuY2FsbCh0aGlzLCB2YXIxLCB2YXIyLCBzdHJlbmd0aCk7Cit9CisKK0VxdWFsaXR5Q29uc3Ry
YWludC5pbmhlcml0c0Zyb20oQmluYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRW5mb3JjZSB0
aGlzIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlzZmllZC4KKyAqLworRXF1YWxp
dHlDb25zdHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICB0aGlzLm91
dHB1dCgpLnZhbHVlID0gdGhpcy5pbnB1dCgpLnZhbHVlOworfQorCisvKiAtLS0gKgorICogViBh
IHIgaSBhIGIgbCBlCisgKiAtLS0gKi8KKworLyoqCisgKiBBIGNvbnN0cmFpbmVkIHZhcmlhYmxl
LiBJbiBhZGRpdGlvbiB0byBpdHMgdmFsdWUsIGl0IG1haW50YWluIHRoZQorICogc3RydWN0dXJl
IG9mIHRoZSBjb25zdHJhaW50IGdyYXBoLCB0aGUgY3VycmVudCBkYXRhZmxvdyBncmFwaCwgYW5k
CisgKiB2YXJpb3VzIHBhcmFtZXRlcnMgb2YgaW50ZXJlc3QgdG8gdGhlIERlbHRhQmx1ZSBpbmNy
ZW1lbnRhbAorICogY29uc3RyYWludCBzb2x2ZXIuCisgKiovCitmdW5jdGlvbiBWYXJpYWJsZShu
YW1lLCBpbml0aWFsVmFsdWUpIHsKKyAgdGhpcy52YWx1ZSA9IGluaXRpYWxWYWx1ZSB8fCAwOwor
ICB0aGlzLmNvbnN0cmFpbnRzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRoaXMuZGV0
ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgdGhpcy5tYXJrID0gMDsKKyAgdGhpcy53YWxrU3RyZW5ndGgg
PSBTdHJlbmd0aC5XRUFLRVNUOworICB0aGlzLnN0YXkgPSB0cnVlOworICB0aGlzLm5hbWUgPSBu
YW1lOworfQorCisvKioKKyAqIEFkZCB0aGUgZ2l2ZW4gY29uc3RyYWludCB0byB0aGUgc2V0IG9m
IGFsbCBjb25zdHJhaW50cyB0aGF0IHJlZmVyCisgKiB0aGlzIHZhcmlhYmxlLgorICovCitWYXJp
YWJsZS5wcm90b3R5cGUuYWRkQ29uc3RyYWludCA9IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29u
c3RyYWludHMuYWRkKGMpOworfQorCisvKioKKyAqIFJlbW92ZXMgYWxsIHRyYWNlcyBvZiBjIGZy
b20gdGhpcyB2YXJpYWJsZS4KKyAqLworVmFyaWFibGUucHJvdG90eXBlLnJlbW92ZUNvbnN0cmFp
bnQgPSBmdW5jdGlvbiAoYykgeworICB0aGlzLmNvbnN0cmFpbnRzLnJlbW92ZShjKTsKKyAgaWYg
KHRoaXMuZGV0ZXJtaW5lZEJ5ID09IGMpIHRoaXMuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKK30KKwor
LyogLS0tICoKKyAqIFAgbCBhIG4gbiBlIHIKKyAqIC0tLSAqLworCisvKioKKyAqIFRoZSBEZWx0
YUJsdWUgcGxhbm5lcgorICovCitmdW5jdGlvbiBQbGFubmVyKCkgeworICB0aGlzLmN1cnJlbnRN
YXJrID0gMDsKK30KKworLyoqCisgKiBBdHRlbXB0IHRvIHNhdGlzZnkgdGhlIGdpdmVuIGNvbnN0
cmFpbnQgYW5kLCBpZiBzdWNjZXNzZnVsLAorICogaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRh
dGFmbG93IGdyYXBoLiAgRGV0YWlsczogSWYgc2F0aWZ5aW5nCisgKiB0aGUgY29uc3RyYWludCBp
cyBzdWNjZXNzZnVsLCBpdCBtYXkgb3ZlcnJpZGUgYSB3ZWFrZXIgY29uc3RyYWludAorICogb24g
aXRzIG91dHB1dC4gVGhlIGFsZ29yaXRobSBhdHRlbXB0cyB0byByZXNhdGlzZnkgdGhhdAorICog
Y29uc3RyYWludCB1c2luZyBzb21lIG90aGVyIG1ldGhvZC4gVGhpcyBwcm9jZXNzIGlzIHJlcGVh
dGVkCisgKiB1bnRpbCBlaXRoZXIgYSkgaXQgcmVhY2hlcyBhIHZhcmlhYmxlIHRoYXQgd2FzIG5v
dCBwcmV2aW91c2x5CisgKiBkZXRlcm1pbmVkIGJ5IGFueSBjb25zdHJhaW50IG9yIGIpIGl0IHJl
YWNoZXMgYSBjb25zdHJhaW50IHRoYXQKKyAqIGlzIHRvbyB3ZWFrIHRvIGJlIHNhdGlzZmllZCB1
c2luZyBhbnkgb2YgaXRzIG1ldGhvZHMuIFRoZQorICogdmFyaWFibGVzIG9mIGNvbnN0cmFpbnRz
IHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZCBhcmUgbWFya2VkIHdpdGgKKyAqIGEgdW5pcXVlIG1h
cmsgdmFsdWUgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHdlJ3ZlIGJlZW4uIFRoaXMgYWxsb3dzCisg
KiB0aGUgYWxnb3JpdGhtIHRvIGF2b2lkIGdldHRpbmcgaW50byBhbiBpbmZpbml0ZSBsb29wIGV2
ZW4gaWYgdGhlCisgKiBjb25zdHJhaW50IGdyYXBoIGhhcyBhbiBpbmFkdmVydGVudCBjeWNsZS4K
KyAqLworUGxhbm5lci5wcm90b3R5cGUuaW5jcmVtZW50YWxBZGQgPSBmdW5jdGlvbiAoYykgewor
ICB2YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgb3ZlcnJpZGRlbiA9IGMuc2F0aXNm
eShtYXJrKTsKKyAgd2hpbGUgKG92ZXJyaWRkZW4gIT0gbnVsbCkKKyAgICBvdmVycmlkZGVuID0g
b3ZlcnJpZGRlbi5zYXRpc2Z5KG1hcmspOworfQorCisvKioKKyAqIEVudHJ5IHBvaW50IGZvciBy
ZXRyYWN0aW5nIGEgY29uc3RyYWludC4gUmVtb3ZlIHRoZSBnaXZlbgorICogY29uc3RyYWludCBh
bmQgaW5jcmVtZW50YWxseSB1cGRhdGUgdGhlIGRhdGFmbG93IGdyYXBoLgorICogRGV0YWlsczog
UmV0cmFjdGluZyB0aGUgZ2l2ZW4gY29uc3RyYWludCBtYXkgYWxsb3cgc29tZSBjdXJyZW50bHkK
KyAqIHVuc2F0aXNmaWFibGUgZG93bnN0cmVhbSBjb25zdHJhaW50IHRvIGJlIHNhdGlzZmllZC4g
V2UgdGhlcmVmb3JlIGNvbGxlY3QKKyAqIGEgbGlzdCBvZiB1bnNhdGlzZmllZCBkb3duc3RyZWFt
IGNvbnN0cmFpbnRzIGFuZCBhdHRlbXB0IHRvCisgKiBzYXRpc2Z5IGVhY2ggb25lIGluIHR1cm4u
IFRoaXMgbGlzdCBpcyB0cmF2ZXJzZWQgYnkgY29uc3RyYWludAorICogc3RyZW5ndGgsIHN0cm9u
Z2VzdCBmaXJzdCwgYXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nCisgKiB1bm5lY2Vzc2FyaWx5
IGFkZGluZyBhbmQgdGhlbiBvdmVycmlkaW5nIHdlYWsgY29uc3RyYWludHMuCisgKiBBc3N1bWU6
IGMgaXMgc2F0aXNmaWVkLgorICovCitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbFJlbW92
ZSA9IGZ1bmN0aW9uIChjKSB7CisgIHZhciBvdXQgPSBjLm91dHB1dCgpOworICBjLm1hcmtVbnNh
dGlzZmllZCgpOworICBjLnJlbW92ZUZyb21HcmFwaCgpOworICB2YXIgdW5zYXRpc2ZpZWQgPSB0
aGlzLnJlbW92ZVByb3BhZ2F0ZUZyb20ob3V0KTsKKyAgdmFyIHN0cmVuZ3RoID0gU3RyZW5ndGgu
UkVRVUlSRUQ7CisgIGRvIHsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuc2F0aXNmaWVkLnNp
emUoKTsgaSsrKSB7CisgICAgICB2YXIgdSA9IHVuc2F0aXNmaWVkLmF0KGkpOworICAgICAgaWYg
KHUuc3RyZW5ndGggPT0gc3RyZW5ndGgpCisgICAgICAgIHRoaXMuaW5jcmVtZW50YWxBZGQodSk7
CisgICAgfQorICAgIHN0cmVuZ3RoID0gc3RyZW5ndGgubmV4dFdlYWtlcigpOworICB9IHdoaWxl
IChzdHJlbmd0aCAhPSBTdHJlbmd0aC5XRUFLRVNUKTsKK30KKworLyoqCisgKiBTZWxlY3QgYSBw
cmV2aW91c2x5IHVudXNlZCBtYXJrIHZhbHVlLgorICovCitQbGFubmVyLnByb3RvdHlwZS5uZXdN
YXJrID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gKyt0aGlzLmN1cnJlbnRNYXJrOworfQorCisv
KioKKyAqIEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZmFjdGlvbiBzdGFydGluZyBmcm9tIHRo
ZSBnaXZlbiBzb3VyY2UKKyAqIGNvbnN0cmFpbnRzLCB1c3VhbGx5IGEgc2V0IG9mIGlucHV0IGNv
bnN0cmFpbnRzLiBUaGlzIG1ldGhvZAorICogYXNzdW1lcyB0aGF0IHN0YXkgb3B0aW1pemF0aW9u
IGlzIGRlc2lyZWQ7IHRoZSBwbGFuIHdpbGwgY29udGFpbgorICogb25seSBjb25zdHJhaW50cyB3
aG9zZSBvdXRwdXQgdmFyaWFibGVzIGFyZSBub3Qgc3RheS4gQ29uc3RyYWludHMKKyAqIHRoYXQg
ZG8gbm8gY29tcHV0YXRpb24sIHN1Y2ggYXMgc3RheSBhbmQgZWRpdCBjb25zdHJhaW50cywgYXJl
CisgKiBub3QgaW5jbHVkZWQgaW4gdGhlIHBsYW4uCisgKiBEZXRhaWxzOiBUaGUgb3V0cHV0cyBv
ZiBhIGNvbnN0cmFpbnQgYXJlIG1hcmtlZCB3aGVuIGl0IGlzIGFkZGVkCisgKiB0byB0aGUgcGxh
biB1bmRlciBjb25zdHJ1Y3Rpb24uIEEgY29uc3RyYWludCBtYXkgYmUgYXBwZW5kZWQgdG8KKyAq
IHRoZSBwbGFuIHdoZW4gYWxsIGl0cyBpbnB1dCB2YXJpYWJsZXMgYXJlIGtub3duLiBBIHZhcmlh
YmxlIGlzCisgKiBrbm93biBpZiBlaXRoZXIgYSkgdGhlIHZhcmlhYmxlIGlzIG1hcmtlZCAoaW5k
aWNhdGluZyB0aGF0IGhhcworICogYmVlbiBjb21wdXRlZCBieSBhIGNvbnN0cmFpbnQgYXBwZWFy
aW5nIGVhcmxpZXIgaW4gdGhlIHBsYW4pLCBiKQorICogdGhlIHZhcmlhYmxlIGlzICdzdGF5JyAo
aS5lLiBpdCBpcyBhIGNvbnN0YW50IGF0IHBsYW4gZXhlY3V0aW9uCisgKiB0aW1lKSwgb3IgYykg
dGhlIHZhcmlhYmxlIGlzIG5vdCBkZXRlcm1pbmVkIGJ5IGFueQorICogY29uc3RyYWludC4gVGhl
IGxhc3QgcHJvdmlzaW9uIGlzIGZvciBwYXN0IHN0YXRlcyBvZiBoaXN0b3J5CisgKiB2YXJpYWJs
ZXMsIHdoaWNoIGFyZSBub3Qgc3RheSBidXQgd2hpY2ggYXJlIGFsc28gbm90IGNvbXB1dGVkIGJ5
CisgKiBhbnkgY29uc3RyYWludC4KKyAqIEFzc3VtZTogc291cmNlcyBhcmUgYWxsIHNhdGlzZmll
ZC4KKyAqLworUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4gPSBmdW5jdGlvbiAoc291cmNlcykg
eworICB2YXIgbWFyayA9IHRoaXMubmV3TWFyaygpOworICB2YXIgcGxhbiA9IG5ldyBQbGFuKCk7
CisgIHZhciB0b2RvID0gc291cmNlczsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgeworICAg
IHZhciBjID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGlmIChjLm91dHB1dCgpLm1hcmsgIT0g
bWFyayAmJiBjLmlucHV0c0tub3duKG1hcmspKSB7CisgICAgICBwbGFuLmFkZENvbnN0cmFpbnQo
Yyk7CisgICAgICBjLm91dHB1dCgpLm1hcmsgPSBtYXJrOworICAgICAgdGhpcy5hZGRDb25zdHJh
aW50c0NvbnN1bWluZ1RvKGMub3V0cHV0KCksIHRvZG8pOworICAgIH0KKyAgfQorICByZXR1cm4g
cGxhbjsKK30KKworLyoqCisgKiBFeHRyYWN0IGEgcGxhbiBmb3IgcmVzYXRpc2Z5aW5nIHN0YXJ0
aW5nIGZyb20gdGhlIG91dHB1dCBvZiB0aGUKKyAqIGdpdmVuIGNvbnN0cmFpbnRzLCB1c3VhbGx5
IGEgc2V0IG9mIGlucHV0IGNvbnN0cmFpbnRzLgorICovCitQbGFubmVyLnByb3RvdHlwZS5leHRy
YWN0UGxhbkZyb21Db25zdHJhaW50cyA9IGZ1bmN0aW9uIChjb25zdHJhaW50cykgeworICB2YXIg
c291cmNlcyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBmb3IgKHZhciBpID0gMDsgaSA8
IGNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgICAgdmFyIGMgPSBjb25zdHJhaW50cy5hdChpKTsKKyAgICB0cnkgeyBleGNl
cHRpb24oKTsgfSBjYXRjaChlKSB7IH0KKyAgICBpZiAoYy5pc0lucHV0KCkgJiYgYy5pc1NhdGlz
ZmllZCgpKQorICAgICAgLy8gbm90IGluIHBsYW4gYWxyZWFkeSBhbmQgZWxpZ2libGUgZm9yIGlu
Y2x1c2lvbgorICAgICAgc291cmNlcy5hZGQoYyk7CisgIH0KKyAgcmV0dXJuIHRoaXMubWFrZVBs
YW4oc291cmNlcyk7Cit9CisKKy8qKgorICogUmVjb21wdXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5n
dGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25zdHJlYW0gb2YgdGhl
IGdpdmVuIGNvbnN0cmFpbnQgYW5kIHJlY29tcHV0ZSB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgb2Yg
YWxsIHZhcmlhYmxlcyB3aG9zZSBzdGF5IGZsYWcgaXMgdHJ1ZS4gSWYgYSBjeWNsZSBpcworICog
ZGV0ZWN0ZWQsIHJlbW92ZSB0aGUgZ2l2ZW4gY29uc3RyYWludCBhbmQgYW5zd2VyCisgKiBmYWxz
ZS4gT3RoZXJ3aXNlLCBhbnN3ZXIgdHJ1ZS4KKyAqIERldGFpbHM6IEN5Y2xlcyBhcmUgZGV0ZWN0
ZWQgd2hlbiBhIG1hcmtlZCB2YXJpYWJsZSBpcworICogZW5jb3VudGVyZWQgZG93bnN0cmVhbSBv
ZiB0aGUgZ2l2ZW4gY29uc3RyYWludC4gVGhlIHNlbmRlciBpcworICogYXNzdW1lZCB0byBoYXZl
IG1hcmtlZCB0aGUgaW5wdXRzIG9mIHRoZSBnaXZlbiBjb25zdHJhaW50IHdpdGgKKyAqIHRoZSBn
aXZlbiBtYXJrLiBUaHVzLCBlbmNvdW50ZXJpbmcgYSBtYXJrZWQgbm9kZSBkb3duc3RyZWFtIG9m
CisgKiB0aGUgb3V0cHV0IGNvbnN0cmFpbnQgbWVhbnMgdGhhdCB0aGVyZSBpcyBhIHBhdGggZnJv
bSB0aGUKKyAqIGNvbnN0cmFpbnQncyBvdXRwdXQgdG8gb25lIG9mIGl0cyBpbnB1dHMuCisgKi8K
K1BsYW5uZXIucHJvdG90eXBlLmFkZFByb3BhZ2F0ZSA9IGZ1bmN0aW9uIChjLCBtYXJrKSB7Cisg
IHZhciB0b2RvID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKGMpOworICB3
aGlsZSAodG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGQgPSB0b2RvLnJlbW92ZUZpcnN0KCk7
CisgICAgaWYgKGQub3V0cHV0KCkubWFyayA9PSBtYXJrKSB7CisgICAgICB0aGlzLmluY3JlbWVu
dGFsUmVtb3ZlKGMpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBkLnJlY2FsY3Vs
YXRlKCk7CisgICAgdGhpcy5hZGRDb25zdHJhaW50c0NvbnN1bWluZ1RvKGQub3V0cHV0KCksIHRv
ZG8pOworICB9CisgIHJldHVybiB0cnVlOworfQorCisKKy8qKgorICogVXBkYXRlIHRoZSB3YWxr
YWJvdXQgc3RyZW5ndGhzIGFuZCBzdGF5IGZsYWdzIG9mIGFsbCB2YXJpYWJsZXMKKyAqIGRvd25z
dHJlYW0gb2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQuIEFuc3dlciBhIGNvbGxlY3Rpb24gb2YKKyAq
IHVuc2F0aXNmaWVkIGNvbnN0cmFpbnRzIHNvcnRlZCBpbiBvcmRlciBvZiBkZWNyZWFzaW5nIHN0
cmVuZ3RoLgorICovCitQbGFubmVyLnByb3RvdHlwZS5yZW1vdmVQcm9wYWdhdGVGcm9tID0gZnVu
Y3Rpb24gKG91dCkgeworICBvdXQuZGV0ZXJtaW5lZEJ5ID0gbnVsbDsKKyAgb3V0LndhbGtTdHJl
bmd0aCA9IFN0cmVuZ3RoLldFQUtFU1Q7CisgIG91dC5zdGF5ID0gdHJ1ZTsKKyAgdmFyIHVuc2F0
aXNmaWVkID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIHZhciB0b2RvID0gbmV3IE9yZGVy
ZWRDb2xsZWN0aW9uKCk7CisgIHRvZG8uYWRkKG91dCk7CisgIHdoaWxlICh0b2RvLnNpemUoKSA+
IDApIHsKKyAgICB2YXIgdiA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBjID0gdi5jb25z
dHJhaW50cy5hdChpKTsKKyAgICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICAgICAgaWYgKCFjLmlzU2F0aXNmaWVkKCkpCisgICAgICAgIHVuc2F0aXNmaWVkLmFkZChjKTsK
KyAgICB9CisgICAgdmFyIGRldGVybWluaW5nID0gdi5kZXRlcm1pbmVkQnk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB2LmNvbnN0cmFpbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICB2YXIgbmV4
dCA9IHYuY29uc3RyYWludHMuYXQoaSk7CisgICAgICBpZiAobmV4dCAhPSBkZXRlcm1pbmluZyAm
JiBuZXh0LmlzU2F0aXNmaWVkKCkpIHsKKyAgICAgICAgbmV4dC5yZWNhbGN1bGF0ZSgpOworICAg
ICAgICB0b2RvLmFkZChuZXh0Lm91dHB1dCgpKTsKKyAgICAgIH0KKyAgICAgIHRyeSB7IGV4Y2Vw
dGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICAgIH0KKyAgfQorICByZXR1cm4gdW5zYXRpc2ZpZWQ7
Cit9CisKK1BsYW5uZXIucHJvdG90eXBlLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8gPSBmdW5j
dGlvbiAodiwgY29sbCkgeworICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAg
dmFyIGNjID0gdi5jb25zdHJhaW50czsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYy5zaXplKCk7
IGkrKykgeworICAgIHZhciBjID0gY2MuYXQoaSk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0g
Y2F0Y2goZSkgeyB9CisgICAgaWYgKGMgIT0gZGV0ZXJtaW5pbmcgJiYgYy5pc1NhdGlzZmllZCgp
KQorICAgICAgY29sbC5hZGQoYyk7CisgIH0KK30KKworLyogLS0tICoKKyAqIFAgbCBhIG4KKyAq
IC0tLSAqLworCisvKioKKyAqIEEgUGxhbiBpcyBhbiBvcmRlcmVkIGxpc3Qgb2YgY29uc3RyYWlu
dHMgdG8gYmUgZXhlY3V0ZWQgaW4gc2VxdWVuY2UKKyAqIHRvIHJlc2F0aXNmeSBhbGwgY3VycmVu
dGx5IHNhdGlzZmlhYmxlIGNvbnN0cmFpbnRzIGluIHRoZSBmYWNlIG9mCisgKiBvbmUgb3IgbW9y
ZSBjaGFuZ2luZyBpbnB1dHMuCisgKi8KK2Z1bmN0aW9uIFBsYW4oKSB7CisgIHRoaXMudiA9IG5l
dyBPcmRlcmVkQ29sbGVjdGlvbigpOworfQorCitQbGFuLnByb3RvdHlwZS5hZGRDb25zdHJhaW50
ID0gZnVuY3Rpb24gKGMpIHsKKyAgdGhpcy52LmFkZChjKTsKK30KKworUGxhbi5wcm90b3R5cGUu
c2l6ZSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMudi5zaXplKCk7Cit9CisKK1BsYW4u
cHJvdG90eXBlLmNvbnN0cmFpbnRBdCA9IGZ1bmN0aW9uIChpbmRleCkgeworICByZXR1cm4gdGhp
cy52LmF0KGluZGV4KTsKK30KKworUGxhbi5wcm90b3R5cGUuZXhlY3V0ZSA9IGZ1bmN0aW9uICgp
IHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNpemUoKTsgaSsrKSB7CisgICAgdmFyIGMg
PSB0aGlzLmNvbnN0cmFpbnRBdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChl
KSB7IH0KKyAgICBjLmV4ZWN1dGUoKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogTSBhIGkgbgor
ICogLS0tICovCisKKy8qKgorICogVGhpcyBpcyB0aGUgc3RhbmRhcmQgRGVsdGFCbHVlIGJlbmNo
bWFyay4gQSBsb25nIGNoYWluIG9mIGVxdWFsaXR5CisgKiBjb25zdHJhaW50cyBpcyBjb25zdHJ1
Y3RlZCB3aXRoIGEgc3RheSBjb25zdHJhaW50IG9uIG9uZSBlbmQuIEFuCisgKiBlZGl0IGNvbnN0
cmFpbnQgaXMgdGhlbiBhZGRlZCB0byB0aGUgb3Bwb3NpdGUgZW5kIGFuZCB0aGUgdGltZSBpcwor
ICogbWVhc3VyZWQgZm9yIGFkZGluZyBhbmQgcmVtb3ZpbmcgdGhpcyBjb25zdHJhaW50LCBhbmQg
ZXh0cmFjdGluZworICogYW5kIGV4ZWN1dGluZyBhIGNvbnN0cmFpbnQgc2F0aXNmYWN0aW9uIHBs
YW4uIFRoZXJlIGFyZSB0d28gY2FzZXMuCisgKiBJbiBjYXNlIDEsIHRoZSBhZGRlZCBjb25zdHJh
aW50IGlzIHN0cm9uZ2VyIHRoYW4gdGhlIHN0YXkKKyAqIGNvbnN0cmFpbnQgYW5kIHZhbHVlcyBt
dXN0IHByb3BhZ2F0ZSBkb3duIHRoZSBlbnRpcmUgbGVuZ3RoIG9mIHRoZQorICogY2hhaW4uIElu
IGNhc2UgMiwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMgd2Vha2VyIHRoYW4gdGhlIHN0YXkKKyAq
IGNvbnN0cmFpbnQgc28gaXQgY2Fubm90IGJlIGFjY29tb2RhdGVkLiBUaGUgY29zdCBpbiB0aGlz
IGNhc2UgaXMsCisgKiBvZiBjb3Vyc2UsIHZlcnkgbG93LiBUeXBpY2FsIHNpdHVhdGlvbnMgbGll
IHNvbWV3aGVyZSBiZXR3ZWVuIHRoZXNlCisgKiB0d28gZXh0cmVtZXMuCisgKi8KK2Z1bmN0aW9u
IGNoYWluVGVzdChuKSB7CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgcHJldiA9
IG51bGwsIGZpcnN0ID0gbnVsbCwgbGFzdCA9IG51bGw7CisKKyAgLy8gQnVpbGQgY2hhaW4gb2Yg
biBlcXVhbGl0eSBjb25zdHJhaW50cworICBmb3IgKHZhciBpID0gMDsgaSA8PSBuOyBpKyspIHsK
KyAgICB2YXIgbmFtZSA9ICJ2IiArIGk7CisgICAgdmFyIHYgPSBuZXcgVmFyaWFibGUobmFtZSk7
CisgICAgaWYgKHByZXYgIT0gbnVsbCkKKyAgICAgIG5ldyBFcXVhbGl0eUNvbnN0cmFpbnQocHJl
diwgdiwgU3RyZW5ndGguUkVRVUlSRUQpOworICAgIGlmIChpID09IDApIGZpcnN0ID0gdjsKKyAg
ICBpZiAoaSA9PSBuKSBsYXN0ID0gdjsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChl
KSB7IH0KKyAgICBwcmV2ID0gdjsKKyAgfQorCisgIG5ldyBTdGF5Q29uc3RyYWludChsYXN0LCBT
dHJlbmd0aC5TVFJPTkdfREVGQVVMVCk7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50
KGZpcnN0LCBTdHJlbmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENv
bGxlY3Rpb24oKTsKKyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0
cmFjdFBsYW5Gcm9tQ29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDsgaSsrKSB7CisgICAgZmlyc3QudmFsdWUgPSBpOworICAgIHBsYW4uZXhlY3V0ZSgpOworICAg
IGlmIChsYXN0LnZhbHVlICE9IGkpCisgICAgICBhbGVydCgiQ2hhaW4gdGVzdCBmYWlsZWQuIik7
CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworLyoqCisg
KiBUaGlzIHRlc3QgY29uc3RydWN0cyBhIHR3byBzZXRzIG9mIHZhcmlhYmxlcyByZWxhdGVkIHRv
IGVhY2gKKyAqIG90aGVyIGJ5IGEgc2ltcGxlIGxpbmVhciB0cmFuc2Zvcm1hdGlvbiAoc2NhbGUg
YW5kIG9mZnNldCkuIFRoZQorICogdGltZSBpcyBtZWFzdXJlZCB0byBjaGFuZ2UgYSB2YXJpYWJs
ZSBvbiBlaXRoZXIgc2lkZSBvZiB0aGUKKyAqIG1hcHBpbmcgYW5kIHRvIGNoYW5nZSB0aGUgc2Nh
bGUgYW5kIG9mZnNldCBmYWN0b3JzLgorICovCitmdW5jdGlvbiBwcm9qZWN0aW9uVGVzdChuKSB7
CisgIHBsYW5uZXIgPSBuZXcgUGxhbm5lcigpOworICB2YXIgc2NhbGUgPSBuZXcgVmFyaWFibGUo
InNjYWxlIiwgMTApOworICB2YXIgb2Zmc2V0ID0gbmV3IFZhcmlhYmxlKCJvZmZzZXQiLCAxMDAw
KTsKKyAgdmFyIHNyYyA9IG51bGwsIGRzdCA9IG51bGw7CisKKyAgdmFyIGRlc3RzID0gbmV3IE9y
ZGVyZWRDb2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAg
c3JjID0gbmV3IFZhcmlhYmxlKCJzcmMiICsgaSwgaSk7CisgICAgZHN0ID0gbmV3IFZhcmlhYmxl
KCJkc3QiICsgaSwgaSk7CisgICAgZGVzdHMuYWRkKGRzdCk7CisgICAgdHJ5IHsgZXhjZXB0aW9u
KCk7IH0gY2F0Y2goZSkgeyB9CisgICAgbmV3IFN0YXlDb25zdHJhaW50KHNyYywgU3RyZW5ndGgu
Tk9STUFMKTsKKyAgICBuZXcgU2NhbGVDb25zdHJhaW50KHNyYywgc2NhbGUsIG9mZnNldCwgZHN0
LCBTdHJlbmd0aC5SRVFVSVJFRCk7CisgIH0KKworICBjaGFuZ2Uoc3JjLCAxNyk7CisgIGlmIChk
c3QudmFsdWUgIT0gMTE3MCkgYWxlcnQoIlByb2plY3Rpb24gMSBmYWlsZWQiKTsKKyAgY2hhbmdl
KGRzdCwgMTA1MCk7CisgIGlmIChzcmMudmFsdWUgIT0gNSkgYWxlcnQoIlByb2plY3Rpb24gMiBm
YWlsZWQiKTsKKyAgY2hhbmdlKHNjYWxlLCA1KTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuIC0g
MTsgaSsrKSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsgMTAwMCkKKyAg
ICAgIGFsZXJ0KCJQcm9qZWN0aW9uIDMgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7
IH0gY2F0Y2goZSkgeyB9CisgIH0KKyAgY2hhbmdlKG9mZnNldCwgMjAwMCk7CisgIGZvciAodmFy
IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgeworICAgIGlmIChkZXN0cy5hdChpKS52YWx1ZSAhPSBp
ICogNSArIDIwMDApCisgICAgICBhbGVydCgiUHJvamVjdGlvbiA0IGZhaWxlZCIpOworICAgIHRy
eSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQorICB9Cit9CisKK2Z1bmN0aW9uIGNoYW5n
ZSh2LCBuZXdWYWx1ZSkgeworICB2YXIgZWRpdCA9IG5ldyBFZGl0Q29uc3RyYWludCh2LCBTdHJl
bmd0aC5QUkVGRVJSRUQpOworICB2YXIgZWRpdHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsK
KyAgZWRpdHMuYWRkKGVkaXQpOworICB2YXIgcGxhbiA9IHBsYW5uZXIuZXh0cmFjdFBsYW5Gcm9t
Q29uc3RyYWludHMoZWRpdHMpOworICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAg
ICB2LnZhbHVlID0gbmV3VmFsdWU7CisgICAgcGxhbi5leGVjdXRlKCk7CisgIH0KKyAgZWRpdC5k
ZXN0cm95Q29uc3RyYWludCgpOworfQorCisvLyBHbG9iYWwgdmFyaWFibGUgaG9sZGluZyB0aGUg
Y3VycmVudCBwbGFubmVyLgordmFyIHBsYW5uZXIgPSBudWxsOworCitmdW5jdGlvbiBkZWx0YUJs
dWUoKSB7CisgIGNoYWluVGVzdCgxMDApOworICBwcm9qZWN0aW9uVGVzdCgxMDApOworfQorCit7
CisgICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUw
OyArK2kpCisgICAgICAgIGRlbHRhQmx1ZSgpOworfQorCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4tZmluaXNoZWQuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJv
dy13aGVuLWZpbmlzaGVkLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2Zha2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc4IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQiKTsKK30KKworY2xhc3MgTnVtYmVycyB7Cisg
ICAgY29uc3RydWN0b3IobGltaXQgPSAxMDApIHsKKyAgICAgICAgdGhpcy5saW1pdCA9IGxpbWl0
OworICAgICAgICB0aGlzLml0ZW0gPSAwOworICAgIH0KKworICAgIG5leHQoKSB7CisgICAgICAg
IGlmICh0aGlzLml0ZW0gPj0gdGhpcy5saW1pdCkKKyAgICAgICAgICAgIHRocm93ICJkb25lIjsK
KyAgICAgICAgcmV0dXJuIHRoaXMuaXRlbSsrOworICAgIH0KK30KKworZnVuY3Rpb24gdHJhbnNw
b3NlKEksIGYpIHsKKyAgICByZXR1cm4gY2xhc3MgVHJhbnNwb3NlIHsKKyAgICAgICAgY29uc3Ry
dWN0b3IoLi4uYXJncykgeworICAgICAgICAgICAgdGhpcy5pdGVyYXRvciA9IG5ldyBJKC4uLmFy
Z3MpOworICAgICAgICB9CisKKyAgICAgICAgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBm
KHRoaXMuaXRlcmF0b3IubmV4dCgpKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2xldCBFdmVu
TnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PngqMik7CitmdW5jdGlvbiB2ZXJpZnlF
dmVuKHByZXYsIGN1cikgeworICAgIGFzc2VydChjdXIudmFsdWUgJSAyID09PSAwKTsKKyAgICBh
c3NlcnQoIXByZXYudmFsdWUgfHwgcHJldi52YWx1ZSsyID09PSBjdXIudmFsdWUpOworfQorCits
ZXQgU3RyaW5nTnVtYmVycyA9IHRyYW5zcG9zZShOdW1iZXJzLCAoeCk9PmAke3h9YCk7CitmdW5j
dGlvbiB2ZXJpZnlTdHJpbmcoXywgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSA9PT0gYCR7
Y3VyLnZhbHVlfWApOworfQorCitsZXQgaXRlcmF0b3JzID0gWworICAgIFtOdW1iZXJzLCBmdW5j
dGlvbigpIHt9XSwKKyAgICBbTnVtYmVycywgZnVuY3Rpb24oKSB7fV0sCisgICAgW1N0cmluZ051
bWJlcnMsIHZlcmlmeVN0cmluZ10sCisgICAgW0V2ZW5OdW1iZXJzLCB2ZXJpZnlFdmVuXSwKKyAg
ICBbRXZlbk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorXTsKKworZnVuY3Rpb24gZm9vKGkpIHt9Citu
b0lubGluZShmb28pOworCitmdW5jdGlvbiBydW5JdGVyYXRvcnMoKSB7CisgICAgZm9yIChsZXQg
W2l0ZXJhdG9yLCB2ZXJpZnldIG9mIGl0ZXJhdG9ycykgeworICAgICAgICBsZXQgaSA9IG5ldyBp
dGVyYXRvcjsKKyAgICAgICAgbGV0IHByZXYgPSB7fTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgIGxldCBjdXIgPSB7fTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAgICAgY3VyLnZhbHVlID0gaS5uZXh0KCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5KHByZXYs
IGN1cik7CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZSAh
PT0gImRvbmUiKQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZDogIiAr
IGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
cHJldiA9IGN1cjsKKyAgICAgICAgfQorICAgIH0KK30KKworeworICAgIGxldCBzdGFydCA9IERh
dGUubm93KCk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDAwOyArK2kpCisgICAgICAgIHJ1
bkl0ZXJhdG9ycygpOworICAgIGlmIChmYWxzZSkKKyAgICAgICAgcHJpbnQoRGF0ZS5ub3coKSAt
IHN0YXJ0KTsKK30KSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVj
dWxhdGlvbi1mYWlsdXJlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNl
dC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCShub25leGlzdGVudCkKKysrIEpTVGVz
dHMvc3RyZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKyJ1c2Ugc3RyaWN0IjsKKworbGV0IGZsYWcgPSB0
cnVlOworZnVuY3Rpb24gbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAgcmV0dXJuIHt4OjIw
fTsKKyAgICByZXR1cm4ge3k6MjAsIHg6MjB9OworfQorbm9JbmxpbmUobyk7CisKK2xldCBjb3Vu
dGVyID0gMDsKK2Z1bmN0aW9uIGUoKSB7CisgICAgaWYgKCgrK2NvdW50ZXIpICUgNTAgPT09IDAp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUpOworCitsZXQgY291bnRl
cjIgPSAwOworZnVuY3Rpb24gZTIoKSB7CisgICAgaWYgKCgrK2NvdW50ZXIyKSAlIDIgPT09IDAp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUyKTsKKworZnVuY3Rpb24g
ZXNjYXBlKCl7IH0KK25vSW5saW5lKGVzY2FwZSk7CisKK2Z1bmN0aW9uIGJheihvKSB7CisgICAg
dHJ5IHsKKyAgICAgICAgZSgpOworICAgICAgICBlc2NhcGUoby54KTsKKyAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgZXNjYXBlKG8ueCk7CisgICAgICAgIGUyKCk7CisgICAgfSBmaW5hbGx5IHsK
KyAgICAgICAgby54OworICAgIH0KK30KK25vSW5saW5lKGJheik7CisKK3sKKyAgICBsZXQgbyA9
IHt4OjIwfTsKKyAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGJheihv
KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgcnVuKCk7
CisgICAgbyA9IHt5OjQwLCB4OjIwfTsKKyAgICBydW4oKTsKK30KSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL29zci1lbnRlci10by1jYXRjaC13aXRoLXNldC1sb2NhbC10eXBlLWNoZWNrLWZhaWx1cmUu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb3NyLWVudGVyLXRvLWNhdGNoLXdpdGgt
c2V0LWxvY2FsLXR5cGUtY2hlY2stZmFpbHVyZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3Rz
L3N0cmVzcy9vc3ItZW50ZXItdG8tY2F0Y2gtd2l0aC1zZXQtbG9jYWwtdHlwZS1jaGVjay1mYWls
dXJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKK2xldCBmbGFnID0gdHJ1ZTsK
K2Z1bmN0aW9uIGZvbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAgcmV0dXJuIDIwOworICAg
IHJldHVybiB7fTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBzdGF0ZSA9IDA7CitmdW5jdGlv
biBlKCkgeworICAgIGlmICgoKytzdGF0ZSkgJSAyNSA9PT0gMCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCk7Cit9Citub0lubGluZShlKTsKKworZnVuY3Rpb24gYmF6KCkgeyB9Citub0lubGlu
ZShiYXopOworCitmdW5jdGlvbiBiYXIoKSB7CisgICAgbGV0IHggPSBmb28oKTsKKyAgICB0cnkg
eworICAgICAgICBlKCk7CisgICAgICAgIGJheigrK3gpOworICAgIH0gY2F0Y2goZSkgeworICAg
ICAgICBiYXooKyt4KTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBiYXooeCk7CisgICAgfQor
fQorbm9JbmxpbmUoYmFyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAwOyArK2kpIHsKKyAg
ICBiYXIoKTsKK30KKworZmxhZyA9IGZhbHNlOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyAr
K2kpCisgICAgYmFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
MTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNjggQEAKKzIwMTctMDgtMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb21waWxpbmcgY2F0Y2ggaW4gdGhlIERGRworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NTkwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBp
bXBsZW1lbnRzIE9TUiBlbnRyeSBpbnRvIG9wX2NhdGNoIGluIHRoZSBERkcuIFdlIHdpbGwgc3Vw
cG9ydCBPU1IgZW50cnkKKyAgICAgICAgaW50byB0aGUgRlRMIGluIGEgZm9sbG93dXAgYnVnOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIAor
ICAgICAgICBUbyBpbXBsZW1lbnQgY2F0Y2ggaW4gdGhlIERGRywgdGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIHRoZSBjb25jZXB0IG9mIG11bHRpcGxlCisgICAgICAgIGVudHJ5cG9pbnRzIGludG8gQ1BT
L0xvYWRTdG9yZSBERkcgSVIuIEEgbG90IG9mIHRoaXMgcGF0Y2ggaXMgc3RyaW5naW5nIHRoaXMg
Y29uY2VwdAorICAgICAgICB0aHJvdWdoIHRoZSBERkcuIE1hbnkgcGhhc2VzIGFzc3VtZSB0aGF0
IEdyYXBoOjpibG9jaygwKSBpcyB0aGUgb25seSByb290LCBhbmQgdGhpcworICAgICAgICBwYXRj
aCBjb250YWlucyBtYW55IHN0cmFpZ2h0IGZvcndhcmQgY2hhbmdlcyBnZW5lcmFsaXppbmcgdGhl
IGNvZGUgdG8gaGFuZGxlIG1vcmUgdGhhbgorICAgICAgICBvbmUgZW50cnlwb2ludC4KKyAgICAg
ICAgCisgICAgICAgIEEgbWFpbiBidWlsZGluZyBibG9jayBvZiB0aGlzIGlzIG1vdmluZyB0byB0
d28gQ0ZHIHR5cGVzOiBTU0FDRkcgYW5kIENQU0NGRy4gU1NBQ0ZHCisgICAgICAgIGlzIHRoZSBz
YW1lIENGRyB3ZSB1c2VkIHRvIGhhdmUuIENQU0NGRyBpcyBhIG5ldyB0eXBlIHRoYXQgaW50cm9k
dWNlcyBhIGZha2Ugcm9vdAorICAgICAgICB0aGF0IGhhcyBhbiBvdXRnb2luZyBlZGdlIHRvIGFs
bCB0aGUgZW50cnlwb2ludHMuIFRoaXMgYWxsb3dzIG91ciBleGlzdGluZyBncmFwaCBhbGdvcml0
aG1zCisgICAgICAgIHRvIEp1c3QgV29yayBvdmVyIENQU0NGRy4gRm9yIGV4YW1wbGUsIHRoZXJl
IGlzIG5vdyB0aGUgY29uY2VwdCBvZiBTU0FEb21pbmF0b3JzIHZzIENQU0RvbWluYXRvcnMsCisg
ICAgICAgIGFuZCBTU0FOYXR1cmFsTG9vcHMgdnMgQ1BTTmF0dXJhbExvb3BzLgorICAgICAgICAK
KyAgICAgICAgVGhlIHdheSB3ZSBjb21waWxlIHRoZSBjYXRjaCBlbnRyeXBvaW50IGlzIGJ5IGJv
b3RzdHJhcHBpbmcgdGhlIHN0YXRlCisgICAgICAgIG9mIHRoZSBwcm9ncmFtIGJ5IGxvYWRpbmcg
YWxsIGxpdmUgYnl0ZWNvZGUgbG9jYWxzIGZyb20gYSBidWZmZXIuIFRoZSBPU1IKKyAgICAgICAg
ZW50cnkgY29kZSB3aWxsIHN0b3JlIGFsbCBsaXZlIHZhbHVlcyBpbnRvIHRoYXQgYnVmZmVyIGJl
Zm9yZSBqdW1waW5nIHRvCisgICAgICAgIHRoZSBlbnRyeXBvaW50LiBUaGUgT1NSIGVudHJ5IGNv
ZGUgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgcGVyZm9ybWluZyB0eXBlCisgICAgICAgIHByb29m
cyBvZiB0aGUgYXJndW1lbnRzIGJlZm9yZSBkb2luZyBhbiBPU1IgZW50cnkuIElmIHRoZXJlIGlz
IGEgdHlwZQorICAgICAgICBtaXNtYXRjaCwgaXQncyBub3QgbGVnYWwgdG8gT1NSIGVudGVyIGlu
dG8gdGhlIERGRyBjb21waWxhdGlvbi4gQ3VycmVudGx5LAorICAgICAgICBlYWNoIGNhdGNoIGVu
dHJ5cG9pbnQga25vd3MgdGhlIGFyZ3VtZW50IHR5cGUgcHJvb2ZzIGl0IG11c3QgcGVyZm9ybSB0
byBlbnRlcgorICAgICAgICBpbnRvIHRoZSBERkcuIEN1cnJlbnRseSwgYWxsIGVudHJ5cG9pbnRz
JyBhcmd1bWVudHMgZmx1c2ggZm9ybXQgYXJlIHVuaWZpZWQKKyAgICAgICAgdmlhIEFyZ3VtZW50
UG9zaXRpb24sIGJ1dCB0aGlzIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiBUaGUg
Y29kZSBpcworICAgICAgICB3cml0dGVuIG1vcmUgZ2VuZXJhbGx5IHRvIGFzc3VtZSB0aGF0IGVh
Y2ggZW50cnlwb2ludCBtYXkgcGVyZm9ybSBpdHMgb3duIGRpc3RpbmN0CisgICAgICAgIHByb29m
LgorICAgICAgICAKKyAgICAgICAgb3BfY2F0Y2ggbm93IHBlcmZvcm1zIHZhbHVlIHByb2ZpbGlu
ZyBmb3IgYWxsIGxpdmUgYnl0ZWNvZGUgbG9jYWxzIGluIHRoZQorICAgICAgICBMTEludCBhbmQg
YmFzZWxpbmUgSklULiBUaGlzIGluZm9ybWF0aW9uIGlzIHRoZW4gZmVkIGludG8gdGhlIERGRyB2
aWEgdGhlCisgICAgICAgIEV4dHJhY3RDYXRjaExvY2FsIG5vZGUgaW4gdGhlIHByZWRpY3Rpb24g
cHJvcGFnYXRpb24gcGhhc2UuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGFsc28gY2hh
bmdlcyBob3cgd2UgZ2VuZXJhdGUgb3BfY2F0Y2ggaW4gYnl0ZWNvZGUuIEFsbCBvcF9jYXRjaGVz
CisgICAgICAgIGFyZSBub3cgc3BsaXQgb3V0IGF0IHRoZSBlbmQgb2YgdGhlIHByb2dyYW0gaW4g
Ynl0ZWNvZGUuIFRoaXMgZW5zdXJlcyB0aGF0CisgICAgICAgIG5vIG9wX2NhdGNoIGlzIGluc2lk
ZSBhIHRyeSBibG9jay4gVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIGNvcnJlY3RuZXNzIGluCisg
ICAgICAgIHRoZSBERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLiBUaGF0IHBo
YXNlIG9ubHkgaW5zZXJ0cyBmbHVzaGVzCisgICAgICAgIGJlZm9yZSBTZXRMb2NhbHMgaW5zaWRl
IGEgdHJ5IGJsb2NrLiBJZiBhbiBvcF9jYXRjaCB3ZXJlIGluIGEgdHJ5IGJsb2NrLCB0aGlzCisg
ICAgICAgIHdvdWxkIGNhdXNlIHRoZSBwaGFzZSB0byBpbnNlcnQgYSBGbHVzaCBiZWZvcmUgb25l
IG9mIHRoZSBzdGF0ZSBib290c3RyYXBwaW5nCisgICAgICAgIFNldExvY2Fscywgd2hpY2ggd291
bGQgZ2VuZXJhdGUgaW52YWxpZCBJUi4gTW92aW5nIG9wX2NhdGNoIHRvIGJlIGdlbmVyYXRlZCBv
bgorICAgICAgICBpdHMgb3duIGF0IHRoZSBlbmQgb2YgYSBDb2RlQmxvY2sgc2VlbWVkIGxpa2Ug
dGhlIG1vc3QgZWxlZ2FudCBzb2x1dGlvbiBzaW5jZQorICAgICAgICBpdCBiZXR0ZXIgcmVwcmVz
ZW50cyB0aGF0IHdlIHRyZWF0IG9wX2NhdGNoIGFzIGFuIGVudHJ5cG9pbnQuIFRoaXMgaXMgdHJ1
ZQorICAgICAgICBib3RoIGluIHRoZSBERkcgYW5kIGluIHRoZSBiYXNlbGluZSBhbmQgTExJbnQ6
IHdlIGRvbid0IHJlYWNoIGFuIG9wX2NhdGNoCisgICAgICAgIHZpYSBub3JtYWwgY29udHJvbCBm
bG93LiBCZWNhdXNlIG9wX2NhdGNoIGNhbm5vdCB0aHJvdywgdGhpcyB3aWxsIG5vdCBicmVhawor
ICAgICAgICBhbnkgcHJldmlvdXMgc2VtYW50aWNzIG9mIG9wX2NhdGNoLiBMb2dpY2FsbHksIGl0
J2QgYmUgdmFsaWQgdG8gc3BsaXQgdHJ5CisgICAgICAgIGJsb2NrcyBhcm91bmQgYW55IG5vbi10
aHJvd2luZyBieXRlY29kZSBvcGVyYXRpb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291
bnRMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmls
ZS5oOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OlZhbHVlUHJvZmlsZSk6CisgICAgICAg
IChKU0M6OlZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXI6OlZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXIpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyOjp+
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcik6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXI6OmZvckVhY2gpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEVudW1lcmF0aW9uKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNDRkcuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCYWNrd2FyZHNDRkc6OkJhY2t3YXJkc0NGRyk6CisgICAgICAgICogZGZnL0RGR0Jh
c2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OkJhc2ljQmxvY2sp
OgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6QmFz
aWNCbG9jazo6ZmluZFRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXREaXJlY3QpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OkRlbGF5ZWRTZXRMb2NhbDo6RGVsYXllZFNldExvY2FsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNldExvY2FsOjpleGVjdXRl
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDRkFQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnJ1bik6CisgICAgICAgICog
ZGZnL0RGR0NGRy5oOgorICAgICAgICAoSlNDOjpERkc6OkNGRzo6cm9vdCk6CisgICAgICAgIChK
U0M6OkRGRzo6Q0ZHOjpyb290cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q1BTQ0ZHOjpDUFNDRkcp
OgorICAgICAgICAoSlNDOjpERkc6OnNlbGVjdENGRyk6CisgICAgICAgICogZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNQU1JldGhyZWFkaW5nUGhh
c2U6OnNwZWNpYWxDYXNlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xv
YmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM6OkNvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdEaXNhc3Nl
bWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExp
c3QpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRv
ZXNHQyk6CisgICAgICAgICogZGZnL0RGR0RvbWluYXRvcnMuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpEb21pbmF0b3JzOjpEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjplbnN1cmVEb21p
bmF0b3JzRm9yQ0ZHKToKKyAgICAgICAgKiBkZmcvREZHRWRnZURvbWluYXRlcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OkVkZ2VEb21pbmF0ZXM6OkVkZ2VEb21pbmF0ZXMpOgorICAgICAgICAoSlND
OjpERkc6OkVkZ2VEb21pbmF0ZXM6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ2hlY2tzSW5CbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0Lmg6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OnVu
Ym94TG9vcE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wQmxvY2tIZWFkZXIp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
aW52YWxpZGF0ZUNGRyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmJsb2Nrc0luUHJlT3Jk
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpibG9ja3NJblBvc3RPcmRlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMpOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
ZW5zdXJlU1NBTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJl
QmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJlQmFja3dhcmRz
RG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6bWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmNsZWFyQ1BT
Q0ZHRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZURvbWluYXRvcnMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVQcmVQb3N0TnVtYmVyaW5n
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJlTmF0dXJhbExvb3Bz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6d2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUpOgorICAgICAgICAqIGRm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFj
ZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycyk6CisgICAgICAgICogZGZnL0RGR0pJVENv
ZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OnNocmlua1RvRml0KToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OmNhdGNo
T1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29k
ZTo6ZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRD
b2RlOjphcHBlbmRDYXRjaEVudHJ5cG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9pbnQpOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuaDoKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpMSUNNUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6TElDTVBoYXNl
OjphdHRlbXB0SG9pc3QpOgorICAgICAgICAqIGRmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNl
cnZhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVBy
ZXNlcnZhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkxpdmVDYXRjaFZhcmlh
YmxlUHJlc2VydmF0aW9uUGhhc2U6OmlzVmFsaWRGbHVzaExvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlOjpoYW5kbGVCbG9ja0Zv
clRyeUNhdGNoKToKKyAgICAgICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZh
dGlvblBoYXNlOjpuZXdWYXJpYWJsZUFjY2Vzc0RhdGEpOgorICAgICAgICAoSlNDOjpERkc6Okxp
dmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2U6OndpbGxDYXRjaEV4Y2VwdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6TGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25Q
aGFzZTo6aGFuZGxlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlUHJlSGVhZGVy
KToKKyAgICAgICAgKEpTQzo6REZHOjpMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKiBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjpydW4pOgorICAgICAgICAo
SlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjp0cmVhdFJlZ3VsYXJCbG9jayk6
CisgICAgICAgIChKU0M6OkRGRzo6TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2U6OnRyZWF0Um9v
dEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RG
R05hdHVyYWxMb29wcy5oOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wczo6TmF0dXJh
bExvb3BzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmlzU3dpdGNoKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdWNjZXNzb3IpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhdGNoT1NSRW50cnlJbmRleCk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Y2F0Y2hMb2NhbFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
VHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6cHJlcGFyZUNhdGNoT1NSRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeS5oOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6aGFu
ZGxlRXhpdENvdW50cyk6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKiBkZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlUG9zdE51bWJlcmluZzo6UHJlUG9z
dE51bWJlcmluZyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UHJlUG9zdE51bWJlcmlu
Zzo6flByZVBvc3ROdW1iZXJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVy
bmFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHUHJlUG9zdE51bWJlcmluZy5oOgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpQcmVQb3N0TnVtYmVyaW5nOjpw
cmVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3ROdW1iZXJpbmc6
OnBvc3ROdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3ROdW1iZXJp
bmc6OmlzU3RyaWN0QW5jZXN0b3JPZik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UHJl
UG9zdE51bWJlcmluZzo6aXNBbmNlc3Rvck9mKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpQcmVQb3N0TnVtYmVyaW5nOjppc1N0cmljdERlc2NlbmRhbnRPZik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkRGRzo6UHJlUG9zdE51bWJlcmluZzo6aXNEZXNjZW5kYW50T2YpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3ROdW1iZXJpbmc6OmVkZ2VLaW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICog
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
UHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTU0FDYWxjdWxhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5n
RGVmKToKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDYWxjdWxhdG9yOjpyZWFjaGluZ0RlZkF0VGFp
bCk6CisgICAgICAgICogZGZnL0RGR1NTQUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTU0FDYWxjdWxhdG9yOjpjb21wdXRlUGhpcyk6CisgICAgICAgICogZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ29udmVyc2lvblBoYXNlOjpy
dW4pOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TU0FDb252ZXJzaW9uKToKKyAgICAgICAg
KiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1
dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2spOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjcmVhdGVPU1JFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bGlua09TUkVudHJpZXMpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlN0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlOjpydW4pOgorICAgICAg
ICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVw
Q2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpUaWVyVXBDaGVj
a0luamVjdGlvblBoYXNlOjpidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcCk6CisgICAgICAg
ICogZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlR5cGVDaGVja0hvaXN0aW5nUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRl
LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGlu
ayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6c2FmZWx5SW52YWxpZGF0ZUFmdGVyVGVybWluYXRpb24pOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc1ZhbGlkKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjpjYWxs
T3BlcmF0aW9uKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgICogaml0L0pJVE9w
ZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorCiAyMDE3LTA4LTIyICBEZXZpbiBSb3Vzc28gIDx3
ZWJraXRAZGV2aW5yb3Vzc28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByb3ZpZGUg
d2F5IGZvciBTaGFkZXJQcm9ncmFtcyB0byBiZSBlbmFibGVkL2Rpc2FibGVkCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw3ICsz
OTEsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdQaGFzZS5jcHAK
ICAgICBkZmcvREZHUGhpQ2hpbGRyZW4uY3BwCiAgICAgZGZnL0RGR1BsYW4uY3BwCi0gICAgZGZn
L0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCiAgICAgZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25Q
aGFzZS5jcHAKICAgICBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCiAgICAg
ZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTQsOCArMzk0LDYgQEAKIAkJMEYzQkQxQjcxQjg5NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlv
blNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNCRDFCNjFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKIAkJ
MEYzQzFGMUExQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0MxRjE4MUI4NjhF
NzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgKi87IH07CiAJCTBGM0MxRjFC
MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQzFGMTkxQjg2OEU3OTAwQUJCMDhC
IC8qIERGR0Nsb2JiZXJzRXhpdFN0YXRlLmggKi87IH07Ci0JCTBGM0UwMUFBMTlEMzUzQTUwMEY2
MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0UwMUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQ
b3N0TnVtYmVyaW5nLmNwcCAqLzsgfTsKLQkJMEYzRTAxQUIxOUQzNTNBNTAwRjYxQjdGIC8qIERG
R1ByZVBvc3ROdW1iZXJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGM0UwMUE5MTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5n
LmggKi87IH07CiAJCTBGNDBFNEE3MUM0OTdGNzQwMEE1NzdGQSAvKiBBaXJPcGNvZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjE4MzMyMUM0NUYz
NUMwMDcyNDUwQiAvKiBBaXJPcGNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjQwRTRBODFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2Rl
R2VuZXJhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjYxODMzNDFDNDVGM0I2MDA3MjQ1MEIgLyogQWlyT3Bjb2RlR2VuZXJhdGVkLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MEU0QTkxQzQ5
N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZVV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMzNTFDNDVGM0I2MDA3MjQ1MEIgLyogQWlyT3Bj
b2RlVXRpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMjk5MSw4ICsyOTg5LDYgQEAKIAkJMEYzQkQxQjYxQjg5NkEwNzAwNTk4QUE2IC8qIERG
R0luc2VydGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdJbnNlcnRpb25TZXQuY3BwOyBwYXRoID0gZGZnL0RGR0luc2VydGlvblNldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGM0MxRjE4MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjNDMUYxOTFCODY4RTc5MDBB
QkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsgcGF0aCA9IGRmZy9ERkdDbG9iYmVyc0V4
aXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjNFMDFBODE5RDM1M0E1
MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdQcmVQb3N0TnVtYmVyaW5nLmNwcDsgcGF0aCA9IGRmZy9ERkdQ
cmVQb3N0TnVtYmVyaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYzRTAx
QTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUHJlUG9zdE51bWJlcmluZy5oOyBwYXRoID0gZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZB
NDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVmFsdWVSZWNvdmVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpcnR1YWxSZWdpc3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1h
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhRm9ybWF0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTAxLDggKzc0OTcsNiBAQAogCQkJCTBGQkUwRjZF
MTZDMURCMDEwMDgyQzVFOCAvKiBERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuaCAqLywKIAkJ
CQkwRkZGQzk1MTE0RUY5MDk1MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwICovLAogCQkJCTBGRkZDOTUyMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5oICovLAotCQkJCTBGM0UwMUE4MTlEMzUzQTUwMEY2MUI3RiAvKiBE
RkdQcmVQb3N0TnVtYmVyaW5nLmNwcCAqLywKLQkJCQkwRjNFMDFBOTE5RDM1M0E1MDBGNjFCN0Yg
LyogREZHUHJlUG9zdE51bWJlcmluZy5oICovLAogCQkJCTBGMkI5Q0UwMTlEMEJBN0QwMEIxRDFC
NSAvKiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAgKi8sCiAJCQkJMEYyQjlDRTExOUQwQkE3
RDAwQjFEMUI1IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggKi8sCiAJCQkJMEZGQzkyMTUx
Qjk0RkIzRTAwNzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oICovLApAQCAtODcxMSw3ICs4
NzA1LDYgQEAKIAkJCQlEQzAwMDM5MzE5RDhCRTZGMDAwMjNFQjAgLyogREZHUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCRTBGNzUxNkMxREIwQjAwODJDNUU4
IC8qIERGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
RkM5NUUxNEVGOTBCNzAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQkwRjNFMDFBQjE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9z
dE51bWJlcmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUQxOUQwQkE3RDAwQjFEMUI1
IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZDOTIx
NjFCOTRGQjNFMDA3MURENjYgLyogREZHUHJvcGVydHlUeXBlS2V5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkIxNzY2MzE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwNTAyLDcgKzEwNDk1LDYgQEAKIAkJCQlBNzhBOTc3QTE3OTczOEI4MDA5REY3
NDQgLyogREZHUGxhbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJFMEY3NDE2QzFEQjA5MDA4
MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRkZDOTVEMTRFRjkwQjMwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjNFMDFBQTE5RDM1M0E1MDBGNjFCN0YgLyog
REZHUHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCOUNFQzE5RDBC
QTdEMDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZCMTc2NjIxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjNBMUJGOTFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MzgsOCArMTUzOCw5IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUKICAgICBjYXNlIG9wX2NhdGNoOiB7CiAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgdm9pZCogcG9pbnRlciA9IGdldFBvaW50ZXIoKigrK2l0KSk7CiAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhdGNoIik7Ci0gICAgICAgIG91dC5w
cmludGYoIiVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSk7CisgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXAiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHBvaW50ZXIpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF90aHJvdzogewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkocmV2aXNpb24gMjIxMDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3B1c2hfd2l0aF9zY29wZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQiLCAibGVuZ3RoIiA6IDUgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wYXJlbnRfc2NvcGUiLCAibGVuZ3RoIiA6IDMg
fSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhdGNoIiwgImxlbmd0aCIgOiAzIH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfdGhyb3ciLCAibGVuZ3RoIiA6IDIgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3Rocm93X3N0YXRpY19lcnJvciIsICJsZW5ndGgiIDogMyB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVidWciLCAibGVuZ3RoIiA6IDMgfSwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCShyZXZp
c2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0
cnVjdGlvbj4KIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogewotICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2Rl
QmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCisgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYm
IChjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCkpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkK
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJs
b2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogCiAgICAgc3dpdGNoIChvcGNvZGVJRCkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNiArNTI5LDggQEAgYm9vbCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNv
ZGVPZmZzZXQgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKICAgICB9OwogCisgICAgVmVjdG9y
PHVuc2lnbmVkLCA0PiBjYXRjaEluZGljZXM7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAh
aW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5z
dHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC04MDUsMTAgKzgw
NywxNiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAg
ICAgICBtX251bWJlck9mQXJndW1lbnRzVG9Ta2lwID0gbnVtYmVyT2ZBcmd1bWVudHNUb1NraXA7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBv
cF9jYXRjaDogeworICAgICAgICAgICAgY2F0Y2hJbmRpY2VzLmFwcGVuZChpKTsKKyAgICAgICAg
ICAgIGJyZWFrOyAKKyAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQorCiAgICAgICAgIGkgKz0gb3BMZW5ndGg7CiAgICAgfQogCkBAIC04
MzAsMTAgKzgzOCw0MiBAQCBib29sIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEdlbmVyYXRlZEJ5dGVjb2RlcygpKQogICAgICAgICBk
dW1wQnl0ZWNvZGUoKTsKKworICAgIGlmIChjYXRjaEluZGljZXMuc2l6ZSgpKSB7CisgICAgICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgYnl0ZWNvZGVMaXZlbmVzcyA9IGxpdmVuZXNzQW5h
bHlzaXMoKTsKKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kQnVmZmVyPj4gY2F0Y2hQcm9maWxlczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBjYXRj
aEluZGV4IDogY2F0Y2hJbmRpY2VzKSB7CisgICAgICAgICAgICAvLyBXZSBnZXQgdGhlIGxpdmUt
b3V0IHNldCBvZiB2YXJpYWJsZXMgYXQgb3BfY2F0Y2gsIG5vdCB0aGUgbGl2ZS1pbi4gVGhpcwor
ICAgICAgICAgICAgLy8gaXMgYmVjYXVzZSB0aGUgdmFyaWFibGVzIHRoYXQgdGhlIG9wX2NhdGNo
IGRlZmluZXMgbWlnaHQgYmUgZGVhZCwgYW5kCisgICAgICAgICAgICAvLyB3ZSBjYW4gYXZvaWQg
cHJvZmlsaW5nIHRoZW0gYW5kIGV4dHJhY3RpbmcgdGhlbSB3aGVuIGRvaW5nIE9TUiBlbnRyeQor
ICAgICAgICAgICAgLy8gaW50byB0aGUgREZHLgorICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBs
aXZlTG9jYWxzID0gYnl0ZWNvZGVMaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KGNhdGNoSW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2NhdGNoKSk7CisgICAgICAgICAgICBW
ZWN0b3I8VmlydHVhbFJlZ2lzdGVyPiBsaXZlT3BlcmFuZHM7CisgICAgICAgICAgICBsaXZlT3Bl
cmFuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsaXZlTG9jYWxzLmJpdENvdW50KCkpOworICAg
ICAgICAgICAgbGl2ZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXSAodW5zaWduZWQgbGl2ZUxvY2Fs
KSB7CisgICAgICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLmFwcGVuZCh2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChsaXZlTG9jYWwpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnMoKTsgKytpKQorICAgICAgICAgICAgICAgIGxp
dmVPcGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkpOworCisgICAg
ICAgICAgICBhdXRvIHByb2ZpbGVzID0gc3RkOjptYWtlX3VuaXF1ZTxWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kQnVmZmVyPihsaXZlT3BlcmFuZHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHByb2ZpbGVzLT5tX3NpemUgPT0gbGl2ZU9wZXJhbmRzLnNpemUoKSk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZXMtPm1fc2l6ZTsgKytpKQorICAg
ICAgICAgICAgICAgIHByb2ZpbGVzLT5tX2J1ZmZlci5nZXQoKVtpXS5tX29wZXJhbmQgPSBsaXZl
T3BlcmFuZHNbaV0ub2Zmc2V0KCk7CisgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tjYXRjaElu
ZGV4ICsgM10udS5wb2ludGVyID0gcHJvZmlsZXMuZ2V0KCk7CisgICAgICAgICAgICBjYXRjaFBy
b2ZpbGVzLmFwcGVuZChXVEZNb3ZlKHByb2ZpbGVzKSk7CisgICAgICAgIH0KKworICAgICAgICB7
CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAg
ICAgICBtX2NhdGNoUHJvZmlsZXMgPSBXVEZNb3ZlKGNhdGNoUHJvZmlsZXMpOworICAgICAgICB9
CisgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLT5hZGQodGhpcyk7CiAgICAg
aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX2luc3RydWN0aW9ucy5zaXplKCkg
KiBzaXplb2YoSW5zdHJ1Y3Rpb24pKTsKLSAgICAKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0yNDg2LDkgKzI1MjYsMTAgQEAgY29uc3QgSWRlbnRpZmllciYgQ29kZUJsb2NrOjppZGVudGlm
aWVyKAogdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVz
cyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzLCB1bnNpZ25l
ZCYgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcykKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fbG9jayk7Ci0gICAgCisKICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVl
UHJvZmlsZXMgPSAwOwogICAgIG51bWJlck9mU2FtcGxlc0luUHJvZmlsZXMgPSAwOyAvLyBJZiB0
aGlzIGRpdmlkZWQgYnkgVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgZXF1YWxzIG51bWJl
ck9mVmFsdWVQcm9maWxlcygpIHRoZW4gdmFsdWUgcHJvZmlsZXMgYXJlIGZ1bGwuCisKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKTsgKytp
KSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IGdldEZyb21BbGxWYWx1ZVByb2Zp
bGVzKGkpOwogICAgICAgICB1bnNpZ25lZCBudW1TYW1wbGVzID0gcHJvZmlsZS50b3RhbE51bWJl
ck9mU2FtcGxlcygpOwpAQCAtMjUwMyw2ICsyNTQ0LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRh
dGVBbGxQcmVkaWN0aW9uc0FuZEMKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50
VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIpOwogICAgIH0KKworICAgIGZvciAoYXV0byYgcHJvZmlsZUJ1Y2tldCA6IG1fY2F0
Y2hQcm9maWxlcykgeworICAgICAgICBwcm9maWxlQnVja2V0LT5mb3JFYWNoKFsmXSAoVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgcHJvZmlsZS5tX3Byb2Zp
bGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgIH0pOworICAgIH0K
ICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBtX2xhenlPcGVyYW5kVmFsdWVQcm9maWxl
cy5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb25zKGxvY2tlcik7CkBAIC0yNzg2LDYgKzI4MzMsMjMg
QEAgdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25E
aWRGYWlsKCk7CiAgICAgICAgIH0KICAgICB9CisgICAgIAorICAgIGZvciAodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsg
KSB7CisgICAgICAgIE9wY29kZUlEIG9wY29kZSA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRCht
X2luc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF0pOworICAgICAgICBpZiAoISFiYXNlbGluZUFs
dGVybmF0aXZlKCktPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsK
KyAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gb3BfY2F0Y2ggfHwgb3Bjb2RlID09IG9wX2VudGVy
KSB7CisgICAgICAgICAgICAgICAgLy8gb3BfY2F0Y2gvb3BfZW50ZXIgbG9naWNhbGx5IHJlcHJl
c2VudCBhbiBlbnRyeXBvaW50LiBFbnRyeXBvaW50cyBhcmUgbm90IGFsbG93ZWQgdG8gYmUKKyAg
ICAgICAgICAgICAgICAvLyBpbnNpZGUgb2YgYSB0cnkgYmxvY2sgYmVjYXVzZSB0aGV5IGFyZSBy
ZXNwb25zaWJsZSBmb3IgYm9vdHN0cmFwcGluZyBzdGF0ZS4gQW5kIHRoZXkKKyAgICAgICAgICAg
ICAgICAvLyBhcmUgbmV2ZXIgYWxsb3dlZCB0aHJvdyBhbiBleGNlcHRpb24gYmVjYXVzZSBvZiB0
aGlzLiBXZSByZWx5IG9uIHRoaXMgd2hlbiBjb21waWxpbmcKKyAgICAgICAgICAgICAgICAvLyBp
biB0aGUgREZHLiBCZWNhdXNlIGFuIGVudHJ5cG9pbnQgbmV2ZXIgdGhyb3dzLCB0aGUgYnl0ZWNv
ZGUgZ2VuZXJhdG9yIHdpbGwgbmV2ZXIKKyAgICAgICAgICAgICAgICAvLyBhbGxvdyBvbmNlIGlu
c2lkZSBhIHRyeSBibG9jay4KKyAgICAgICAgICAgICAgICBiZWdpblZhbGlkYXRpb25EaWRGYWls
KCk7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIGVudHJ5cG9pbnQgbm90IGFsbG93ZWQg
aW5zaWRlIGEgdHJ5IGJsb2NrLiIpOworICAgICAgICAgICAgICAgIGVuZFZhbGlkYXRpb25EaWRG
YWlsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQg
Kz0gb3Bjb2RlTGVuZ3RoKG9wY29kZSk7CisgICAgfQogfQogCiB2b2lkIENvZGVCbG9jazo6YmVn
aW5WYWxpZGF0aW9uRGlkRmFpbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNiArMTAwMyw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxlPiBt
X2FyZ3VtZW50VmFsdWVQcm9maWxlczsKICAgICBSZWZDb3VudGVkQXJyYXk8VmFsdWVQcm9maWxl
PiBtX3ZhbHVlUHJvZmlsZXM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kQnVmZmVyPj4gbV9jYXRjaFByb2ZpbGVzOwogICAgIFNlZ21lbnRlZFZlY3Rv
cjxSYXJlQ2FzZVByb2ZpbGUsIDg+IG1fcmFyZUNhc2VQcm9maWxlczsKICAgICBSZWZDb3VudGVk
QXJyYXk8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZT4gbV9hcnJheUFsbG9jYXRpb25Qcm9maWxlczsK
ICAgICBBcnJheVByb2ZpbGVWZWN0b3IgbV9hcnJheVByb2ZpbGVzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkocmV2aXNpb24gMjIxMDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsOCArMTc0LDggQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldAogfTsKIAogc3RydWN0IFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBWYWx1ZVBy
b2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKLSAgICBWYWx1ZVByb2ZpbGUoKTogVmFs
dWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPigpIHsgfQotICAgIFZhbHVlUHJvZmls
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRz
PDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmls
ZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oKSB7IH0KKyAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5
dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0
ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTIwMiw0ICsy
MDIsMzggQEAgaW5saW5lIGludCBnZXRSYXJlQ2FzZVByb2ZpbGVCeXRlY29kZU9mZgogICAgIHJl
dHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7CiB9CiAKK3N0cnVjdCBWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kIHsKKyAgICBWYWx1ZVByb2ZpbGUgbV9wcm9maWxlOworICAgIGlu
dCBtX29wZXJhbmQ7Cit9OworCitzdHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciB7
CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcih1bnNpZ25lZCBzaXplKQorICAgICAg
ICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IFZhbHVlUHJvZmlsZSBo
YXMgbW9yZSBzdHVmZiB0aGFuIHdlIG5lZWQuIFdlIGNvdWxkIG9wdGltaXplIHRoZXNlIHZhbHVl
IHByb2ZpbGVzCisgICAgICAgIC8vIHRvIGJlIG1vcmUgc3BhY2UgZWZmaWNpZW50LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDEzCisgICAg
ICAgIG1fYnVmZmVyID0gTWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+OjptYWxsb2Mo
bV9zaXplICogc2l6ZW9mKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQpKTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmbV9idWZm
ZXIuZ2V0KClbaV0pIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQoKTsKKyAgICB9CisKKyAgICB+VmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcigpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBtX2J1ZmZlci5nZXQoKVtpXS5+
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4KKyAgICB2b2lkIGZvckVhY2goRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAg
ICBmdW5jdGlvbihtX2J1ZmZlci5nZXQoKVtpXSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9z
aXplOworICAgIE1hbGxvY1B0cjxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kPiBtX2J1ZmZlcjsKK307
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIy
MTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNiArMTUzLDE5IEBAIFBhcnNlckVycm9y
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgKICAgICAgICAgZW1pdFVucmVhY2hhYmxlKCk7
CiAgICAgfQogCisgICAgZm9yIChhdXRvJiB0dXBsZSA6IG1fY2F0Y2hlc1RvRW1pdCkgeworICAg
ICAgICBSZWY8TGFiZWw+IHJlYWxDYXRjaFRhcmdldCA9IG5ld0VtaXR0ZWRMYWJlbCgpOworICAg
ICAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHN0ZDo6Z2V0PDE+KHR1cGxlKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzdGQ6
OmdldDwyPih0dXBsZSkpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisKKyAg
ICAgICAgVHJ5RGF0YSogZGF0YSA9IHN0ZDo6Z2V0PDA+KHR1cGxlKTsKKyAgICAgICAgZW1pdEp1
bXAoZGF0YS0+dGFyZ2V0LmdldCgpKTsKKworICAgICAgICBkYXRhLT50YXJnZXQgPSBXVEZNb3Zl
KHJlYWxDYXRjaFRhcmdldCk7CisgICAgfQorCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVy
LmtpbGwoKTsKIAogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX3RyeVJhbmdlcykgewpAQCAtNzEw
LDcgKzcyMyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogdW51c2VkID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGVt
aXRDYXRjaCh1bnVzZWQsIHRocm93blZhbHVlLmdldCgpKTsKKyAgICAgICAgZW1pdENhdGNoKHVu
dXNlZCwgdGhyb3duVmFsdWUuZ2V0KCksIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhKTsKIAogICAg
ICAgICAvLyByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCh0aHJvd25WYWx1ZSkKICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFy
eSgpLCBwcm9taXNlQ2FwYWJpbGl0eVJlZ2lzdGVyKCksIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOwpAQCAtMzk2MywxMSArMzk3Niw5IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeShUcnlEYXRhKiAKICAgICBtX3RyeUNvbnRl
eHRTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YXRjaChSZWdpc3RlcklEKiBleGNlcHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhyb3duVmFs
dWVSZWdpc3RlcikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdpc3RlcklE
KiBleGNlcHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhyb3duVmFsdWVSZWdpc3RlciwgVHJ5
RGF0YSogZGF0YSkKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBtX2NhdGNoZXNU
b0VtaXQuYXBwZW5kKHsgZGF0YSwgZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCksIHRocm93blZh
bHVlUmVnaXN0ZXItPmluZGV4KCkgfSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJl
c3RvcmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKQEAgLTQyOTksNyArNDMx
MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbigKICAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1w
b3JhcnkoKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgp
OwogCi0gICAgICAgICAgICBlbWl0Q2F0Y2goY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51
c2VkKTsKKyAgICAgICAgICAgIGVtaXRDYXRjaChjb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpLCB1
bnVzZWQsIHRyeURhdGEpOwogICAgICAgICAgICAgZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBs
ZXRpb25UeXBlOjpUaHJvdyk7CiAgICAgICAgICAgICBlbWl0TW92ZShmaW5hbGx5RXhjZXB0aW9u
UmVnaXN0ZXIuZ2V0KCksIGNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOwogICAgICAgICAgICAg
ZW1pdEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CkBAIC00MzM5LDcgKzQzNTAsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oCiAgICAgICAgICAgICAgICAg
ZW1pdExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAg
ICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgICAg
IGVtaXRDYXRjaChleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdW51c2VkKTsKKyAgICAgICAgICAg
ICAgICBlbWl0Q2F0Y2goZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIHVudXNlZCwgcmV0dXJuQ2Fs
bFRyeURhdGEpOwogICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBzeW50aGVzaXpl
ZCBjYXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBuZWVkCiAgICAgICAg
ICAgICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBzY29wZSwgd2UgY2Fu
IHNraXAgcmVzdG9yaW5nIHRoZSBzY29wZQogICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGhl
cmUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc4Niw3ICs3ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSogcHVz
aFRyeShMYWJlbCYgc3RhcnQsIExhYmVsJiBoYW5kbGVyTGFiZWwsIEhhbmRsZXJUeXBlKTsKICAg
ICAgICAgLy8gRW5kIGEgdHJ5IGJsb2NrLiAnZW5kJyBtdXN0IGhhdmUgYmVlbiBlbWl0dGVkLgog
ICAgICAgICB2b2lkIHBvcFRyeShUcnlEYXRhKiwgTGFiZWwmIGVuZCk7Ci0gICAgICAgIHZvaWQg
ZW1pdENhdGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lzdGVyLCBSZWdpc3RlcklEKiB0aHJv
d25WYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0Q2F0Y2goUmVnaXN0ZXJJRCogZXhj
ZXB0aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0ZXIsIFRyeURhdGEq
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgQ3VycmVudExleGlj
YWxTY29wZUluZGV4ID0gLTI7CkBAIC0xMTg5LDYgKzExODksOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBt
X25lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAgRGVyaXZlZENvbnRl
eHRUeXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07
CisKKyAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VHJ5RGF0YSosIGludCwgaW50Pj4gbV9jYXRj
aGVzVG9FbWl0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2
aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAzLDYgKzM0MDMsOSBAQCB2b2lkIFRy
eU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAgICAgTGFiZWwmIHRyeUhhbmRsZXJM
YWJlbCA9IG1fY2F0Y2hCbG9jayA/ICpjYXRjaExhYmVsIDogKmZpbmFsbHlWaWFUaHJvd0xhYmVs
OwogICAgIEhhbmRsZXJUeXBlIHRyeUhhbmRsZXJUeXBlID0gbV9jYXRjaEJsb2NrID8gSGFuZGxl
clR5cGU6OkNhdGNoIDogSGFuZGxlclR5cGU6OkZpbmFsbHk7CiAgICAgVHJ5RGF0YSogdHJ5RGF0
YSA9IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIHRyeUhhbmRsZXJMYWJl
bCwgdHJ5SGFuZGxlclR5cGUpOworICAgIFRyeURhdGEqIGZpbmFsbHlUcnlEYXRhID0gbnVsbHB0
cjsKKyAgICBpZiAoIW1fY2F0Y2hCbG9jayAmJiBtX2ZpbmFsbHlCbG9jaykKKyAgICAgICAgZmlu
YWxseVRyeURhdGEgPSB0cnlEYXRhOwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV90
cnlCbG9jayk7CiAKQEAgLTM0MTksMTQgKzM0MjIsMTMgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKCpjYXRjaExh
YmVsKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlUmVnaXN0ZXIgPSBn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaCh1bnVz
ZWQsIHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENh
dGNoKHVudXNlZCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgdHJ5RGF0YSk7CiAgICAgICAg
IGdlbmVyYXRvci5yZXN0b3JlU2NvcGVSZWdpc3RlcigpOwogCi0gICAgICAgIFRyeURhdGEqIHRy
eURhdGEgPSBudWxscHRyOwogICAgICAgICBpZiAobV9maW5hbGx5QmxvY2spIHsKICAgICAgICAg
ICAgIC8vIElmIHRoZSBjYXRjaCBibG9jayB0aHJvd3MgYW4gZXhjZXB0aW9uIGFuZCB3ZSBoYXZl
IGEgZmluYWxseSBibG9jaywgdGhlbiB0aGUgZmluYWxseQogICAgICAgICAgICAgLy8gYmxvY2sg
c2hvdWxkICJjYXRjaCIgdGhhdCBleGNlcHRpb24uCi0gICAgICAgICAgICB0cnlEYXRhID0gZ2Vu
ZXJhdG9yLnB1c2hUcnkoKmNhdGNoTGFiZWwsICpmaW5hbGx5VmlhVGhyb3dMYWJlbCwgSGFuZGxl
clR5cGU6OkZpbmFsbHkpOworICAgICAgICAgICAgZmluYWxseVRyeURhdGEgPSBnZW5lcmF0b3Iu
cHVzaFRyeSgqY2F0Y2hMYWJlbCwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsLCBIYW5kbGVyVHlwZTo6
RmluYWxseSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jYXRjaFBhdHRlcm4pIHsKQEAg
LTM0NDcsNyArMzQ0OSw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXIKICAgICAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBlOjpOb3JtYWwpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKCpmaW5hbGx5TGFiZWwpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLnBvcFRyeSh0cnlEYXRhLCAqZmluYWxseVZpYVRocm93TGFiZWwpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLnBvcFRyeShmaW5hbGx5VHJ5RGF0YSwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoKmNhdGNoRW5kTGFiZWwp
OwpAQCAtMzQ2MCw3ICszNDYyLDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcgogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9jayBmb3IgQ29tcGxl
dGlvblR5cGU6OlRocm93LgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKCpmaW5hbGx5Vmlh
VGhyb3dMYWJlbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5lcmF0b3IuY29tcGxl
dGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRj
aChnZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkLCBmaW5hbGx5VHJ5
RGF0YSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0Q29tcGxldGlvblR5cGUoQ29tcGxldGlv
blR5cGU6OlRocm93KTsKIAogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9jayBm
b3IgQ29tcGxldGlvblR5cGVzIG90aGVyIHRoYW4gVGhyb3cuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBj
YXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5
dGVjb2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOSw3ICsxODQwLDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8g
c3BhcnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAg
ICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZh
bHNlKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0JhY2t3YXJkc0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzQ0ZHLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwx
MiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEJhY2t3YXJk
c0NGRyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxDRkc+IHsKK2NsYXNzIEJhY2t3YXJkc0NGRyA6
IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShCYWNrd2FyZHNDRkcpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIEJhY2t3YXJkc0NGRyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogQmFja3dhcmRzR3JhcGg8
Q0ZHPigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogQmFja3dhcmRzR3JhcGg8U1NBQ0ZHPihzZWxl
Y3RDRkc8U1NBQ0ZHPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygKICAgICA6IGJ5dGVj
b2RlQmVnaW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBpc09T
UlRhcmdldChmYWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBvaW50KGZhbHNlKQogICAgICwgY2Zh
SGFzVmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBj
ZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAg
c3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3Qg
aSA9IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAg
ICBjYXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2Ug
U3dpdGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxD
YWxsOgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2Ug
VGFpbENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdz
OgotICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5p
c1Rlcm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBp
KTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhl
IGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxs
IHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRo
ZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4u
CiAgICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91
ciB1bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiAr
MTc3LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJs
b2NrSW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlz
Q2F0Y2hFbnRyeXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNo
b3VsZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9ja1dp
dGhKSVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZH
QXJyYXlNb2RlLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJz
RXhpdFN0YXRlLmgiCkBAIC00MDEsMTQgKzQwMiwxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBX
ZSBjYW4ndCBleGl0IGFueW1vcmUgYmVjYXVzZSBvdXIgT1NSIGV4aXQgc3RhdGUgaGFzIGNoYW5n
ZWQuCiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7CiAKLSAgICAgICAgRGVsYXllZFNldExvY2Fs
IGRlbGF5ZWQoY3VycmVudENvZGVPcmlnaW4oKSwgb3BlcmFuZCwgdmFsdWUpOworICAgICAgICBE
ZWxheWVkU2V0TG9jYWwgZGVsYXllZChjdXJyZW50Q29kZU9yaWdpbigpLCBvcGVyYW5kLCB2YWx1
ZSwgc2V0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2V0TW9kZSA9PSBOb3JtYWxTZXQp
IHsKICAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBlbmQoZGVsYXllZCk7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMsIHNldE1vZGUpOwor
ICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMpOwogICAgIH0KICAgICAKICAgICB2
b2lkIHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCkKQEAgLTY0Miw2ICs2NDMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOwogICAgICAgICBpZiAoIWlubGlu
ZVN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lICYmIG1fZ3JhcGgubmVlZHNGbHVzaGVkVGhp
cygpKQogICAgICAgICAgICAgZmx1c2hEaXJlY3QodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
MCkpOworCiAgICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpKQogICAgICAg
ICAgICAgZmx1c2hEaXJlY3QobV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSk7CiAgICAgfQpA
QCAtMTEzMSw3ICsxMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2Nr
IGxpbmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAg
ICAgICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVj
b2RlQmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJn
ZXRzOwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9j
ayB3YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAgIC8vIHRoZSBo
ZWFkIG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2Vk
IHRvIHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRoZSBvdGhlciB3
YXkgYXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTEyMDAsMjEgKzEyMDIsMjMgQEAgcHJp
dmF0ZToKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG1fb3BlcmFuZDsKICAgICAgICAgTm9kZSogbV92YWx1ZTsKKyAgICAgICAgU2V0TW9kZSBt
X3NldE1vZGU7CiAgICAgICAgIAogICAgICAgICBEZWxheWVkU2V0TG9jYWwoKSB7IH0KLSAgICAg
ICAgRGVsYXllZFNldExvY2FsKGNvbnN0IENvZGVPcmlnaW4mIG9yaWdpbiwgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQsIE5vZGUqIHZhbHVlKQorICAgICAgICBEZWxheWVkU2V0TG9jYWwoY29uc3Qg
Q29kZU9yaWdpbiYgb3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUs
IFNldE1vZGUgc2V0TW9kZSkKICAgICAgICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQogICAgICAg
ICAgICAgLCBtX29wZXJhbmQob3BlcmFuZCkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkK
KyAgICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgTm9kZSogZXhlY3V0ZShCeXRlQ29kZVBhcnNlciogcGFyc2VyLCBTZXRNb2RlIHNl
dE1vZGUgPSBOb3JtYWxTZXQpCisgICAgICAgIE5vZGUqIGV4ZWN1dGUoQnl0ZUNvZGVQYXJzZXIq
IHBhcnNlcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fb3BlcmFuZC5pc0FyZ3VtZW50
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c2V0QXJndW1lbnQobV9vcmlnaW4s
IG1fb3BlcmFuZCwgbV92YWx1ZSwgc2V0TW9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2Vy
LT5zZXRMb2NhbChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3ZhbHVlLCBzZXRNb2RlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VyLT5zZXRBcmd1bWVudChtX29yaWdpbiwgbV9vcGVyYW5k
LCBtX3ZhbHVlLCBtX3NldE1vZGUpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c2V0TG9j
YWwobV9vcmlnaW4sIG1fb3BlcmFuZCwgbV92YWx1ZSwgbV9zZXRNb2RlKTsKICAgICAgICAgfQog
ICAgIH07CiAgICAgCkBAIC00MDc1LDcgKzQwNzksMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFy
Z3VtZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bw
b3NlZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJl
bnRCbG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAg
ICAgICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9j
dXJyZW50QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgVmVjdG9yPE5vZGUqLCA4PiYgZW50cnlw
b2ludEFyZ3VtZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIGVudHJ5
cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsKKwogICAgICAgICAvLyBXZSB3
aWxsIGVtaXQgU2V0QXJndW1lbnQgbm9kZXMuIFRoZXkgZG9uJ3QgZXhpdCwgYnV0IHdlJ3JlIGF0
IHRoZSB0b3Agb2YgYW4gb3BfZW50ZXIgc28KICAgICAgICAgLy8gZXhpdE9LID0gdHJ1ZS4KICAg
ICAgICAgbV9leGl0T0sgPSB0cnVlOwpAQCAtNDA4OCw3ICs0MDk2LDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZEluZGV4
aW5nVHlwZSkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRBcmd1bWVudCA9
IGFkZFRvR3JhcGgoU2V0QXJndW1lbnQsIE9wSW5mbyh2YXJpYWJsZSkpOwotICAgICAgICAgICAg
bV9ncmFwaC5tX2FyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAg
IGVudHJ5cG9pbnRBcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CiAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLnNldEFyZ3VtZW50Rmlyc3RUaW1lKGFy
Z3VtZW50LCBzZXRBcmd1bWVudCk7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTU4LDEwICs1MTY2
LDEzMCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFVucmVhY2hhYmxlKTsKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9w
X3Rocm93X3N0YXRpY19lcnJvcik7CiAKLSAgICAgICAgY2FzZSBvcF9jYXRjaDoKKyAgICAgICAg
Y2FzZSBvcF9jYXRjaDogewogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRs
ZXJzID0gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgZG8gYW55dGhpbmcgaGVyZSBmb3IgaW5saW5lZCBmcmFt
ZXMuIFdlIGRvbid0IHRyZWF0IHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBTdXBwb3J0IGNhdGNoIGluIHRoZSBGVEwuCisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2NhdGNoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fY3VycmVudEJsb2NrLT5zaXplKCkpOworCisgICAgICAgICAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9uWzNdLnUucG9pbnRlcik7CisKKyAg
ICAgICAgICAgIFZlY3RvcjxTcGVjdWxhdGVkVHlwZT4gYXJndW1lbnRQcmVkaWN0aW9ucyhtX251
bUFyZ3VtZW50cyk7CisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGxvY2FsUHJl
ZGljdGlvbnM7CisgICAgICAgICAgICBIYXNoU2V0PHVuc2lnbmVkLCBXVEY6OkludEhhc2g8dW5z
aWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gc2Vl
bkFyZ3VtZW50czsKKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2sp
OworCisgICAgICAgICAgICAgICAgYm9vbCBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBhbGxQcmVkaWN0aW9uc0FyZUVtcHR5ICY9
IHByZWRpY3Rpb24gPT0gU3BlY05vbmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5k
LmlzTG9jYWwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBw
ZW5kKHByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHVpbnQzMl90Pihv
cGVyYW5kLnRvQXJndW1lbnQoKSkgPCBhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWVuQXJndW1lbnRzLmFkZChvcGVyYW5kLnRvQXJndW1lbnQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudFByZWRpY3Rpb25zW29wZXJhbmQudG9B
cmd1bWVudCgpXSA9IHByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSAwOyBhcmd1bWVu
dCA8IG1fbnVtQXJndW1lbnRzOyArK2FyZ3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2VlbkFyZ3VtZW50cy5jb250YWlucyhhcmd1bWVudCkpOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhbGxQcmVkaWN0aW9uc0FyZUVtcHR5
ICYmIChhcmd1bWVudFByZWRpY3Rpb25zLnNpemUoKSB8fCBsb2NhbFByZWRpY3Rpb25zLnNpemUo
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgd2UgaGF2
ZW4ndCBleGVjdXRlZCB0aGlzIGNhdGNoIHlldC4gTGV0J3Mgbm90IGNvbXBpbGUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gaXQgYXMgYW4gZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY2F0Y2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gV2UncmUgbm93IGNvbW1pdHRlZCB0byBjb21waWxpbmcgdGhpcyBh
cyBhbiBlbnRyeXBvaW50LgorCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+aXNDYXRjaEVu
dHJ5cG9pbnQgPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzLmFwcGVu
ZChtX2N1cnJlbnRCbG9jayk7CisKKyAgICAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8VmlydHVh
bFJlZ2lzdGVyLCBOb2RlKj4+IGxvY2Fsc1RvU2V0OworICAgICAgICAgICAgbG9jYWxzVG9TZXQu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShidWZmZXItPm1fc2l6ZSk7IC8vIE5vdGU6IFRoaXMgd2ls
bCByZXNlcnZlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGxvY2FscyB3ZSBzZWUgYmVsb3cgYmVj
YXVzZSB0aGUgYnVmZmVyIGluY2x1ZGVzIGFyZ3VtZW50cy4KKworICAgICAgICAgICAgLy8gV2Un
cmUgbm90IGFsbG93ZWQgdG8gZXhpdCBoZXJlIHNpbmNlIHdlIHdvdWxkIG5vdCBwcm9wZXJseSBy
ZWNvdmVyIHZhbHVlcy4KKyAgICAgICAgICAgIC8vIFdlIGZpcnN0IG5lZWQgdG8gYm9vdHN0cmFw
IHRoZSBjYXRjaCBlbnRyeXBvaW50IHN0YXRlLgorICAgICAgICAgICAgbV9leGl0T0sgPSBmYWxz
ZTsgCisKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mTG9jYWxzID0gMDsKKyAgICAgICAg
ICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUp
IHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3Bl
cmFuZCk7CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNBcmd1bWVudCgpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgQVNTRVJUKG9wZXJhbmQuaXNM
b2NhbCgpKTsKKyAgICAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGFkZFRvR3JhcGgoRXh0cmFj
dENhdGNoTG9jYWwsIE9wSW5mbyhudW1iZXJPZkxvY2FscyksIE9wSW5mbyhsb2NhbFByZWRpY3Rp
b25zW251bWJlck9mTG9jYWxzXSkpOworICAgICAgICAgICAgICAgICsrbnVtYmVyT2ZMb2NhbHM7
CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChNb3ZIaW50LCBPcEluZm8ocHJvZmlsZS5tX29w
ZXJhbmQpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgbG9jYWxzVG9TZXQudW5jaGVja2VkQXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKG9wZXJhbmQsIHZhbHVlKSk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgaWYgKCFtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSkKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IDA7Cisg
ICAgICAgICAgICBtX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSA9IHN0ZDo6bWF4
KG51bWJlck9mTG9jYWxzLCAqbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkpOwor
CisgICAgICAgICAgICAvLyBXZSBjb3VsZCBub3QgZXhpdCBiZWZvcmUgdGhpcyBwb2ludCBpbiB0
aGUgcHJvZ3JhbSBiZWNhdXNlIHdlIHdvdWxkIG5vdCBrbm93IGhvdyB0byBkbyB2YWx1ZQorICAg
ICAgICAgICAgLy8gcmVjb3ZlcnkgZm9yIGxpdmUgbG9jYWxzLiBUaGUgYWJvdmUgSVIgc2V0cyB1
cCB0aGUgbmVjZXNzYXJ5IHN0YXRlIHNvIHdlIGNhbiByZWNvdmVyIHZhbHVlcworICAgICAgICAg
ICAgLy8gZHVyaW5nIE9TUiBleGl0LiAKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBU
aGUgbm9kZXMgdGhhdCBmb2xsb3cgaGVyZSBhbGwgZXhpdCB0byB0aGUgZm9sbG93aW5nIGJ5dGVj
b2RlIGluc3RydWN0aW9uLCBub3QKKyAgICAgICAgICAgIC8vIHRoZSBvcF9jYXRjaC4gRXhpdGlu
ZyB0byBvcF9jYXRjaCBpcyByZXNlcnZlZCBmb3Igd2hlbiBhbiBleGNlcHRpb24gaXMgdGhyb3du
LgorICAgICAgICAgICAgLy8gVGhlIFNldEFyZ3VtZW50IG5vZGVzIHRoYXQgZm9sbG93IGJlbG93
IG1heSBleGl0IGJlY2F1c2Ugd2UgbWF5IGhvaXN0IHR5cGUgY2hlY2tzCisgICAgICAgICAgICAv
LyB0byB0aGVtLiBUaGUgU2V0TG9jYWwgbm9kZXMgdGhhdCBmb2xsb3cgYmVsb3cgbWF5IGV4aXQg
YmVjYXVzZSB3ZSBtYXkgY2hvb3NlCisgICAgICAgICAgICAvLyBhIGZsdXNoIGZvcm1hdCB0aGF0
IHNwZWN1bGF0ZXMgb24gdGhlIHR5cGUgb2YgdGhlIGxvY2FsLgorICAgICAgICAgICAgbV9leGl0
T0sgPSB0cnVlOyAKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRXhpdE9LKTsKKworICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIC8vIFNldCB1cCBvdXIgYXJndW1lbnRzIG5vdyB0aGF0IGl0
J3Mgc2FmZSB0byBleGl0LiBUaGlzIGhhcHBlbnMgaGVyZSBiZWNhdXNlIHdlIG1heSBob2lzdCB0
eXBlIGNoZWNrcyB1cAorICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgcG9pbnQgaW4gdGhlIHBy
b2dyYW0sIHNvIGl0IG11c3QgYmUgc2FmZSB0byBleGl0LgorICAgICAgICAgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50
QmxvY2ssIFZlY3RvcjxOb2RlKiwgOD4oKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICAgICAgICAgIFZlY3RvcjxOb2RlKiwg
OD4mIGVudHJ5cG9pbnRBcmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnRBcmd1bWVudHMucmVzaXplKG1fbnVtQXJndW1lbnRzKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBh
cmd1bWVudFByZWRpY3Rpb25zLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICAgICAgICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRh
KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CisgICAgICAgICAgICAgICAg
ICAgIHZhcmlhYmxlLT5wcmVkaWN0KGFyZ3VtZW50UHJlZGljdGlvbnNbYXJndW1lbnRdKTsKKwor
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1Y3R1cmVDaGVja0hvaXN0aW5n
RmFpbGVkKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0
UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlQ2hlY2tBcnJheUhvaXN0aW5nRmFpbGVkKAorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dyYXBoKFNldEFyZ3VtZW50LCBPcElu
Zm8odmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0QXJndW1lbnQtPm9yaWdpbi5m
b3JFeGl0LmJ5dGVjb2RlSW5kZXggKz0gT1BDT0RFX0xFTkdUSChvcF9jYXRjaCk7CisgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwuc2V0QXJndW1lbnRG
aXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZW50
cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qgc3RkOjpwYWlyPFZp
cnR1YWxSZWdpc3RlciwgTm9kZSo+JiBwYWlyIDogbG9jYWxzVG9TZXQpIHsKKyAgICAgICAgICAg
ICAgICBEZWxheWVkU2V0TG9jYWwgZGVsYXllZCB7IGN1cnJlbnRDb2RlT3JpZ2luKCksIHBhaXIu
Zmlyc3QsIHBhaXIuc2Vjb25kLCBJbW1lZGlhdGVOYWtlZFNldCB9OworICAgICAgICAgICAgICAg
IG1fc2V0TG9jYWxRdWV1ZS5hcHBlbmQoZGVsYXllZCk7CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKLSAgICAgICAgICAgIAorICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5z
dHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudEluc3RydWN0aW9uLCAi
aGFuZGxlQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCB0cmFzaGVkIG1f
Y3VycmVudEluc3RydWN0aW9uIik7CkBAIC02MTU2LDggKzYyODQsMTAgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKGJsb2NrLnB0cigp
KSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxvY2tMaW5raW5n
VGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBUaGUg
Zmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlz
T1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShibG9jaykpOwogICAg
ICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAg
fQpAQCAtNjIxNCwxMCArNjM0NCwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2Fs
bCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtCbG9ja3MoaW5saW5l
U3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5Lm1fYmxvY2tMaW5r
aW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJpbGl0eSgpOwogICAg
IG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKKyAgICBtX2dyYXBoLm1fY3BzQ0ZH
ID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgpOwogICAgIAogICAgIGZvciAoQmxv
Y2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykg
ewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7
CkBAIC02MjI4LDcgKzYzNjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAg
ICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkgPT0gbV9n
cmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCkpOwogICAgICAg
ICBBU1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpID09IG1f
Z3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpKTsKICAg
ICB9Ci0gICAgCisKICAgICBtX2dyYXBoLm1fbG9jYWxWYXJzID0gbV9udW1Mb2NhbHM7CiAgICAg
bV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9wYXJhbWV0ZXJTbG90czsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkFQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLT5ieXRlY29kZUJlZ2luICE9IG1fZ3JhcGgu
bV9wbGFuLm9zckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAobV92ZXJib3NlKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICBGb3VuZCBtdXN0LWhhbmRsZSBibG9jazog
IiwgKmJsb2NrLCAiXG4iKTsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0ZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDRkcuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRGR0Jsb2NrTWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrU2V0LmgiCiAjaW5jbHVk
ZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtNDgsNyArNDksMTkgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBOb2RlIHJvb3QoKSB7IHJldHVybiBtX2dyYXBoLmJsb2NrKDAp
OyB9CisgICAgTm9kZSByb290KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9y
bSA9PSBTU0EgfHwgbV9ncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICAgICAgcmV0dXJu
IG1fZ3JhcGguYmxvY2soMCk7CisgICAgfQorCisgICAgTGlzdCByb290cygpCisgICAgeworICAg
ICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiByb290IDogbV9ncmFw
aC5tX2VudHJ5cG9pbnRzKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyb290KTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAg
IE1hcDxUPiBuZXdNYXAoKSB7IHJldHVybiBCbG9ja01hcDxUPihtX2dyYXBoKTsgfQpAQCAtNzEs
NiArODQsMzEgQEAgcHJpdmF0ZToKICAgICBHcmFwaCYgbV9ncmFwaDsKIH07CiAKK2NsYXNzIENQ
U0NGRyA6IHB1YmxpYyBTaW5nbGVSb290R3JhcGg8Q0ZHPiB7CitwdWJsaWM6CisgICAgQ1BTQ0ZH
KEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBTaW5nbGVSb290R3JhcGg8Q0ZHPigqZ3JhcGgubV9z
c2FDRkcpCisgICAgeworICAgICAgICBBU1NFUlQoZ3JhcGgubV9lbnRyeXBvaW50cy5zaXplKCkp
OworICAgIH0KK307CisKK3VzaW5nIFNTQUNGRyA9IENGRzsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQ
U0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0NGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX2Nwc0NGRyk7CisgICAgcmV0dXJuICpncmFwaC5t
X2Nwc0NGRzsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NT
QUNGRyYgc2VsZWN0Q0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChncmFw
aC5tX3NzYUNGRyk7CisgICAgcmV0dXJuICpncmFwaC5tX3NzYUNGRzsKK30KKwogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BT
UmV0aHJlYWRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gQnV0IHRob3NlIFNldEFyZ3VtZW50cyB1c2VkIGZvciB0aGUg
YWN0dWFsIGFyZ3VtZW50cyB0byB0aGUgbWFjaGluZSBDb2RlQmxvY2sgZ2V0CiAgICAgICAgIC8v
IHNwZWNpYWwtY2FzZWQuIFdlIGNvdWxkIGhhdmUgaW5zdGVhZCB1c2VkIHR3byBkaWZmZXJlbnQg
bm9kZSB0eXBlcyAtIG9uZSBmb3IgdGhlIGFyZ3VtZW50cwogICAgICAgICAvLyBhdCB0aGUgcHJv
bG9ndWUgY2FzZSwgYW5kIGFub3RoZXIgZm9yIHRoZSBvdGhlciB1c2VzLiBCdXQgdGhpcyBzZWVt
ZWQgbGlrZSBJUiBvdmVya2lsbC4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5t
X2FyZ3VtZW50cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBtX2dyYXBoLmJsb2NrKDApLT52
YXJpYWJsZXNBdEhlYWQuc2V0QXJndW1lbnRGaXJzdFRpbWUoaSwgbV9ncmFwaC5tX2FyZ3VtZW50
c1tpXSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogZW50cnlwb2ludCA9IHBhaXIu
a2V5OworICAgICAgICAgICAgY29uc3QgVmVjdG9yPE5vZGUqLCA4PiYgYXJndW1lbnRzID0gcGFp
ci52YWx1ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGFyZ3VtZW50cy5zaXplKCk7
IGktLTspCisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLnNldEFy
Z3VtZW50Rmlyc3RUaW1lKGksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgdGVtcGxhdGU8T3BlcmFuZEtpbmQgb3BlcmFuZEtpbmQ+CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5OCw3ICs1OTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9
PSBTU0EpOwogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5pbml0aWFsaXplTm9kZU93bmVycygp
OwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAogICAgICAgICBtX3ByZU9yZGVyID0gbV9n
cmFwaC5ibG9ja3NJblByZU9yZGVyKCk7CiAgICAgICAgIApAQCAtNjkwLDcgKzY5MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlKiBjYW5kaWRhdGUgPSBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21p
bmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRlLT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3du
ZXIsIG1fYmxvY2spKSB7CiAgICAgICAgICAgICAgICAgbV9ub2RlLT5yZXBsYWNlV2l0aChjYW5k
aWRhdGUpOwogICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNzc5LDcgKzc3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdl
IHJlcXVpcmUgc3RyaWN0IGRvbWluYXRpb24gYmVjYXVzZSB0aGlzIHdvdWxkIG9ubHkgc2VlIHRo
aW5ncyBpbiBvdXIgb3duIGJsb2NrIGlmCiAgICAgICAgICAgICAvLyB0aGV5IGNhbWUgKmFmdGVy
KiBvdXIgcG9zaXRpb24gaW4gdGhlIGJsb2NrLiBDbGVhcmx5LCB3aGlsZSBvdXIgYmxvY2sgZG9t
aW5hdGVzCiAgICAgICAgICAgICAvLyBpdHNlbGYsIHRoZSB0aGluZ3MgaW4gdGhlIGJsb2NrIGFm
dGVyIHVzIGRvbid0IGRvbWluYXRlIHVzLgotICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21p
bmF0b3JzLT5zdHJpY3RseURvbWluYXRlcyhibG9jaywgbV9ibG9jaykpIHsKKyAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1f
YmxvY2spKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIiAgICAgICAgSXQgc3RyaWN0bHkgZG9taW5hdGVzLlxuIik7CiAgICAgICAg
ICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIGRhdGEuZGlkVmlzaXQpOwpAQCAt
ODU2LDcgKzg1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBO
b2RlKiBjYW5kaWRhdGUgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlW2ldOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoY2FuZGlkYXRl
LT5vd25lciwgbV9ibG9jaykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBo
Lm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbmRpZGF0ZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtPnJlcGxhY2VXaXRoKGNhbmRpZGF0ZSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2guc2V0Tm9kZShjYW5kaWRhdGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIyMTAy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZQogICAgICAgICBBU1NFUlQoIW5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVD
YWxsRnJhbWUpOwogICAgICAgICByZWFkKEFic3RyYWN0SGVhcChTdGFjaywgZ3JhcGgubV9jb2Rl
QmxvY2stPnNjb3BlUmVnaXN0ZXIoKSkpOwogICAgIH0KLSAgICAgICAgCiAgICAgCiAgICAgc3dp
dGNoIChub2RlLT5vcCgpKSB7CiAgICAgY2FzZSBKU0NvbnN0YW50OgpAQCAtMTQxLDYgKzE0MCw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFBo
YW50b206CiAgICAgY2FzZSBDaGVjazoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgor
ICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVk
aWF0ZToKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJ
KHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29udHJv
bEVxdWl2YWxlbmNlQW5hbHlzaXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBj
bGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMoR3JhcGgmIGdy
YXBoKQotICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVEb21pbmF0b3JzKCkpCisg
ICAgICAgIDogbV9kb21pbmF0b3JzKGdyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMoKSkKICAgICAg
ICAgLCBtX2JhY2t3YXJkc0RvbWluYXRvcnMoZ3JhcGguZW5zdXJlQmFja3dhcmRzRG9taW5hdG9y
cygpKQogICAgIHsKICAgICB9CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgRG9taW5hdG9ycyYgbV9kb21pbmF0b3JzOworICAgIFNTQURvbWluYXRvcnMm
IG1fZG9taW5hdG9yczsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBtX2JhY2t3YXJkc0RvbWlu
YXRvcnM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNl
LmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
Q0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDggQEAgcHVibGljOgogICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkp
CiAgICAgICAgICAgICBmaXh1cEJsb2NrKGJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGNsZWFu
VmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOworICAgICAgICBmb3IgKGF1dG8mIGFyZ3Vt
ZW50c1ZlY3RvciA6IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMudmFsdWVzKCkpCisg
ICAgICAgICAgICBjbGVhblZhcmlhYmxlcyhhcmd1bWVudHNWZWN0b3IpOwogCiAgICAgICAgIC8v
IEp1c3QgZG8gYSBiYXNpYyBQaGFudG9tL0NoZWNrIGNsZWFuLXVwLgogICAgICAgICBmb3IgKEJs
b2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTsp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5j
cHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlz
YXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCBWZWN0b3I8RGlz
YXNzZW1ibGVyOjpEdW1wZWRPcD4gRGlzYXNzZW1iCiAgICAgZHVtcEhlYWRlcihvdXQsIGxpbmtC
dWZmZXIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIAot
ICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJh
bExvb3BzKCk7CisgICAgbV9ncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAgbV9ncmFw
aC5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAKICAgICBjb25zdCBjaGFyKiBwcmVmaXgg
PSAiICAgICI7CiAgICAgY29uc3QgY2hhciogZGlzYXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAi
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24g
MjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICBjYXNlIElzTm9u
RW1wdHlNYXBCdWNrZXQ6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAgY2FzZSBDaGVj
a1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvbWluYXRvcnMuaAkocmV2aXNpb24gMjIxMDI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3JzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0LCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzUsMTYgKzM1LDMyIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAotY2xhc3MgRG9taW5hdG9ycyA6IHB1YmxpYyBXVEY6OkRvbWluYXRvcnM8Q0ZH
PiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0ZHS2luZD4KK2NsYXNzIERvbWluYXRvcnMgOiBwdWJs
aWMgV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShE
b21pbmF0b3JzKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBE
b21pbmF0b3JzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6OkRvbWluYXRvcnM8Q0ZHPigq
Z3JhcGgubV9jZmcpCisgICAgICAgIDogV1RGOjpEb21pbmF0b3JzPENGR0tpbmQ+KHNlbGVjdENG
RzxDRkdLaW5kPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CiAKK3VzaW5nIFNTQURvbWluYXRv
cnMgPSBEb21pbmF0b3JzPFNTQUNGRz47Cit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9y
czxDUFNDRkc+OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BT
RG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9yc0ZvckNGRyhHcmFwaCYgZ3JhcGgpCit7CisgICAg
cmV0dXJuIGdyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQs
IFNTQUNGRz46OnZhbHVlPjo6dHlwZT4KK1NTQURvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNG
b3JDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVTU0FEb21pbmF0
b3JzKCk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9taW5h
dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlRG9t
aW5hdGVzLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRWRnZURvbWluYXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTIgQEAgcHVi
bGljOgogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAgICAgICwgbV9yZXN1bHQodHJ1ZSkK
ICAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICB9CiAgICAg
CiAgICAgdm9pZCBvcGVyYXRvcigpKE5vZGUqLCBFZGdlIGVkZ2UpCiAgICAgewotICAgICAgICBi
b29sIHJlc3VsdCA9IG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoZWRnZS5ub2RlKCkt
Pm93bmVyLCBtX2Jsb2NrKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fc3NhRG9t
aW5hdG9ycy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CiAgICAgICAg
IGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICBkYXRhTG9nKAogICAgICAgICAgICAgICAgICJD
aGVja2luZyBpZiAiLCBlZGdlLCAiIGluICIsICplZGdlLm5vZGUoKS0+b3duZXIsCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIy
MTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5OTksNiArMTk5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Q2hlY2tUcmFwczoKICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICAgICAgY2FzZSBFeHRy
YWN0T1NSRW50cnlMb2NhbDoKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICAg
ICAgY2FzZSBMb29wSGludDoKICAgICAgICAgY2FzZSBNb3ZIaW50OgogICAgICAgICBjYXNlIFpv
bWJpZUhpbnQ6CkBAIC0zMTk0LDYgKzMxOTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGVkZ2UtPmlzTnVtYmVyQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjQnl0ZWNvZGVEb3VibGUsIERv
dWJsZUNvbnN0YW50LCBvcmlnaW5Gb3JDaGVja3MsCkBAIC0zMjI0LDYgKzMyMjYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmhhc0ludDUyUmVzdWx0KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEZvckNoZWNrcyAhPSBVSU5UX01BWCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS0+aXNBbnlJbnRDb25zdGFudCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNw
ZWNBbnlJbnQsIEludDUyQ29uc3RhbnQsIG9yaWdpbkZvckNoZWNrcywKQEAgLTMyNTAsNiArMzI1
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVkZ2UtPmhhc0Rv
dWJsZVJlc3VsdCgpICYmICFlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGVkZ2UtPmhhc0RvdWJsZVJlc3VsdCgpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXhGb3JDaGVja3MsIFNwZWNCeXRlY29kZURvdWJsZSwg
VmFsdWVSZXAsIG9yaWdpbkZvckNoZWNrcywKQEAgLTMyOTEsNiArMzI5NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpbmRleEZvckNoZWNrcyAh
PSBVSU5UX01BWCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVj
Tm9uZSwgQ2hlY2ssIG9yaWdpbkZvckNoZWNrcywgZWRnZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWVu
dW0gRmx1c2hGb3JtYXQgeworZW51bSBGbHVzaEZvcm1hdCA6IHVpbnQ4X3QgewogICAgIERlYWRG
bHVzaCwKICAgICBGbHVzaGVkSW50MzIsCiAgICAgRmx1c2hlZEludDUyLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw2IEBACiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQu
aCIKICNpbmNsdWRlICJERkdOYXR1cmFsTG9vcHMuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVt
YmVyaW5nLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5oIgogI2luY2x1
ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxl
RHVtcC5oIgpAQCAtNzMsNyArNzIsNyBAQCBHcmFwaDo6R3JhcGgoVk0mIHZtLCBQbGFuJiBwbGFu
KQogICAgICwgbV9wbGFuKHBsYW4pCiAgICAgLCBtX2NvZGVCbG9jayhtX3BsYW4uY29kZUJsb2Nr
KQogICAgICwgbV9wcm9maWxlZEJsb2NrKG1fY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQotICAg
ICwgbV9jZmcoc3RkOjptYWtlX3VuaXF1ZTxDRkc+KCp0aGlzKSkKKyAgICAsIG1fc3NhQ0ZHKHN0
ZDo6bWFrZV91bmlxdWU8U1NBQ0ZHPigqdGhpcykpCiAgICAgLCBtX25leHRNYWNoaW5lTG9jYWwo
MCkKICAgICAsIG1fZml4cG9pbnRTdGF0ZShCZWZvcmVGaXhwb2ludCkKICAgICAsIG1fc3RydWN0
dXJlUmVnaXN0cmF0aW9uU3RhdGUoSGF2ZU5vdFN0YXJ0ZWRSZWdpc3RlcmluZykKQEAgLTQwOSw5
ICs0MDgsMTMgQEAgYm9vbCBHcmFwaDo6dGVybWluYWxzQXJlVmFsaWQoKQogICAgIHJldHVybiB0
cnVlOwogfQogCitzdGF0aWMgQmFzaWNCbG9jayogdW5ib3hMb29wTm9kZShjb25zdCBDUFNDRkc6
Ok5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUubm9kZSgpOyB9CitzdGF0aWMgQmFzaWNCbG9jayog
dW5ib3hMb29wTm9kZShCYXNpY0Jsb2NrKiBibG9jaykgeyByZXR1cm4gYmxvY2s7IH0KKwogdm9p
ZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHBy
ZWZpeCwgQmFzaWNCbG9jayogYmxvY2ssIFBoaU5vZGVEdW1wTW9kZSBwaGlOb2RlRHVtcE1vZGUs
IER1bXBDb250ZXh0KiBjb250ZXh0KQogewotICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAi
LCAqYmxvY2ssICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywg
Y29udGV4dCksICIpOiIsIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBi
bG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0
LnByaW50KHByZWZpeCwgIkJsb2NrICIsICpibG9jaywgIiAoIiwgaW5Db250ZXh0KGJsb2NrLT5h
dCgwKS0+b3JpZ2luLnNlbWFudGljLCBjb250ZXh0KSwgIik6IiwKKyAgICAgICAgYmxvY2stPmlz
UmVhY2hhYmxlID8gIiIgOiAiIChza2lwcGVkKSIsIGJsb2NrLT5pc09TUlRhcmdldCA/ICIgKE9T
UiB0YXJnZXQpIiA6ICIiLCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQgPyAiIChDYXRjaCBFbnRy
eXBvaW50KSIgOiAiIiwgIlxuIik7CiAgICAgaWYgKGJsb2NrLT5leGVjdXRpb25Db3VudCA9PSBi
bG9jay0+ZXhlY3V0aW9uQ291bnQpCiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIEV4ZWN1
dGlvbiBjb3VudDogIiwgYmxvY2stPmV4ZWN1dGlvbkNvdW50LCAiXG4iKTsKICAgICBvdXQucHJp
bnQocHJlZml4LCAiICBQcmVkZWNlc3NvcnM6Iik7CkBAIC00MjIsMTggKzQyNSwyNiBAQCB2b2lk
IEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAgaWYgKGJsb2NrLT50ZXJt
aW5hbCgpKSB7CiAgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1
Y2Nlc3NvcnMoKSkgewogICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKnN1Y2Nlc3Nvcik7Ci0g
ICAgICAgICAgICBpZiAobV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICAgICAgICAgIG91dC5w
cmludCgiICgiLCBtX3ByZVBvc3ROdW1iZXJpbmctPmVkZ2VLaW5kKGJsb2NrLCBzdWNjZXNzb3Ip
LCAiKSIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIG91dC5wcmludCgiIDxpbnZh
bGlkPiIpOwogICAgIG91dC5wcmludCgiXG4iKTsKLSAgICBpZiAobV9kb21pbmF0b3JzICYmIHRl
cm1pbmFsc0FyZVZhbGlkKCkpIHsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5h
dGVkIGJ5OiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwotICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBEb21pbmF0ZXM6ICIsIG1fZG9taW5hdG9ycy0+Ymxv
Y2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwg
IiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPmRvbWluYW5jZUZyb250aWVy
T2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQg
RG9taW5hbmNlIEZyb250aWVyOiAiLCBtX2RvbWluYXRvcnMtPml0ZXJhdGVkRG9taW5hbmNlRnJv
bnRpZXJPZihCbG9ja0xpc3QoMSwgYmxvY2spKSwgIlxuIik7CisKKyAgICBhdXRvIHByaW50RG9t
aW5hdG9ycyA9IFsmXSAoYXV0byYgZG9taW5hdG9ycykgeworICAgICAgICBvdXQucHJpbnQocHJl
Zml4LCAiICBEb21pbmF0ZWQgYnk6ICIsIGRvbWluYXRvcnMuZG9taW5hdG9yc09mKGJsb2NrKSwg
IlxuIik7CisgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlczogIiwgZG9taW5h
dG9ycy5ibG9ja3NEb21pbmF0ZWRCeShibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQo
cHJlZml4LCAiICBEb21pbmFuY2UgRnJvbnRpZXI6ICIsIGRvbWluYXRvcnMuZG9taW5hbmNlRnJv
bnRpZXJPZihibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBJdGVy
YXRlZCBEb21pbmFuY2UgRnJvbnRpZXI6ICIsCisgICAgICAgICAgICBkb21pbmF0b3JzLml0ZXJh
dGVkRG9taW5hbmNlRnJvbnRpZXJPZih0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8ZGVj
bHR5cGUoZG9taW5hdG9ycyk+Ojp0eXBlOjpMaXN0IHsgYmxvY2sgfSksICJcbiIpOworICAgIH07
CisKKyAgICBpZiAodGVybWluYWxzQXJlVmFsaWQoKSkgeworICAgICAgICBpZiAobV9zc2FEb21p
bmF0b3JzKQorICAgICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX3NzYURvbWluYXRvcnMpOwor
ICAgICAgICBlbHNlIGlmIChtX2Nwc0RvbWluYXRvcnMpCisgICAgICAgICAgICBwcmludERvbWlu
YXRvcnMoKm1fY3BzRG9taW5hdG9ycyk7CiAgICAgfQorCiAgICAgaWYgKG1fYmFja3dhcmRzRG9t
aW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7CiAgICAgICAgIG91dC5wcmludChwcmVm
aXgsICIgIEJhY2t3YXJkcyBkb21pbmF0ZXMgYnk6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+
ZG9taW5hdG9yc09mKGJsb2NrKSwgIlxuIik7CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIg
IEJhY2t3YXJkcyBkb21pbmF0ZXM6ICIsIG1fYmFja3dhcmRzRG9taW5hdG9ycy0+YmxvY2tzRG9t
aW5hdGVkQnkoYmxvY2spLCAiXG4iKTsKQEAgLTQ0NiwyOSArNDU3LDMzIEBAIHZvaWQgR3JhcGg6
OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYKICAgICAgICAgfQogICAgICAgICBvdXQucHJp
bnQoIlxuIik7CiAgICAgfQotICAgIGlmIChtX3ByZVBvc3ROdW1iZXJpbmcpCi0gICAgICAgIG91
dC5wcmludChwcmVmaXgsICIgIFByZS9Qb3N0IE51bWJlcmluZzogIiwgbV9wcmVQb3N0TnVtYmVy
aW5nLT5wcmVOdW1iZXIoYmxvY2spLCAiLyIsIG1fcHJlUG9zdE51bWJlcmluZy0+cG9zdE51bWJl
cihibG9jayksICJcbiIpOwotICAgIGlmIChtX25hdHVyYWxMb29wcykgewotICAgICAgICBpZiAo
Y29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX25hdHVyYWxMb29wcy0+aGVhZGVyT2YoYmxvY2sp
KSB7CisKKyAgICBhdXRvIHByaW50TmF0dXJhbExvb3BzID0gWyZdIChhdXRvJiBuYXR1cmFsTG9v
cHMpIHsKKyAgICAgICAgaWYgKGNvbnN0IGF1dG8qIGxvb3AgPSBuYXR1cmFsTG9vcHMtPmhlYWRl
ck9mKGJsb2NrKSkgewogICAgICAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgTG9vcCBoZWFk
ZXIsIGNvbnRhaW5zOiIpOwogICAgICAgICAgICAgVmVjdG9yPEJsb2NrSW5kZXg+IHNvcnRlZEJs
b2NrTGlzdDsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsb29wLT5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgICAgICBzb3J0ZWRCbG9ja0xpc3QuYXBwZW5kKGxvb3AtPmF0
KGkpLT5pbmRleCk7CisgICAgICAgICAgICAgICAgc29ydGVkQmxvY2tMaXN0LmFwcGVuZCh1bmJv
eExvb3BOb2RlKGxvb3AtPmF0KGkpKS0+aW5kZXgpOwogICAgICAgICAgICAgc3RkOjpzb3J0KHNv
cnRlZEJsb2NrTGlzdC5iZWdpbigpLCBzb3J0ZWRCbG9ja0xpc3QuZW5kKCkpOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvcnRlZEJsb2NrTGlzdC5zaXplKCk7ICsraSkK
ICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAjIiwgc29ydGVkQmxvY2tMaXN0W2ldKTsKICAg
ICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
VmVjdG9yPGNvbnN0IE5hdHVyYWxMb29wKj4gY29udGFpbmluZ0xvb3BzID0KLSAgICAgICAgICAg
IG1fbmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2NrKTsKKyAgICAgICAgYXV0byBjb250YWluaW5n
TG9vcHMgPSBuYXR1cmFsTG9vcHMtPmxvb3BzT2YoYmxvY2spOwogICAgICAgICBpZiAoIWNvbnRh
aW5pbmdMb29wcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIg
IENvbnRhaW5pbmcgbG9vcCBoZWFkZXJzOiIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvbnRhaW5pbmdMb29wcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIiAiLCAqY29udGFpbmluZ0xvb3BzW2ldLT5oZWFkZXIoKSk7CisgICAgICAgICAg
ICAgICAgb3V0LnByaW50KCIgIiwgKnVuYm94TG9vcE5vZGUoY29udGFpbmluZ0xvb3BzW2ldLT5o
ZWFkZXIoKSkpOwogICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgICAgICB9Ci0gICAg
fQorICAgIH07CisKKyAgICBpZiAobV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0
dXJhbExvb3BzKG1fc3NhTmF0dXJhbExvb3BzKTsKKyAgICBlbHNlIGlmIChtX2Nwc05hdHVyYWxM
b29wcykKKyAgICAgICAgcHJpbnROYXR1cmFsTG9vcHMobV9jcHNOYXR1cmFsTG9vcHMpOworCiAg
ICAgaWYgKCFibG9jay0+cGhpcy5pc0VtcHR5KCkpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZp
eCwgIiAgUGhpIE5vZGVzOiIpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2Nr
LT5waGlzLnNpemUoKTsgKytpKSB7CkBAIC01MDIsOCArNTE3LDEwIEBAIHZvaWQgR3JhcGg6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIiAgRml4cG9pbnQgc3Rh
dGU6ICIsIG1fZml4cG9pbnRTdGF0ZSwgIjsgRm9ybTogIiwgbV9mb3JtLCAiOyBVbmlmaWNhdGlv
biBzdGF0ZTogIiwgbV91bmlmaWNhdGlvblN0YXRlLCAiOyBSZWYgY291bnQgc3RhdGU6ICIsIG1f
cmVmQ291bnRTdGF0ZSwgIlxuIik7CiAgICAgaWYgKG1fZm9ybSA9PSBTU0EpCiAgICAgICAgIG91
dC5wcmludCgiICBBcmd1bWVudCBmb3JtYXRzOiAiLCBsaXN0RHVtcChtX2FyZ3VtZW50Rm9ybWF0
cyksICJcbiIpOwotICAgIGVsc2UKLSAgICAgICAgb3V0LnByaW50KCIgIEFyZ3VtZW50czogIiwg
bGlzdER1bXAobV9hcmd1bWVudHMpLCAiXG4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChh
dXRvIHBhaXIgOiBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cykKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiICBBcmd1bWVudHMgZm9yIGJsb2NrIyIsIHBhaXIua2V5LT5pbmRleCwgIjogIiwgbGlzdER1
bXAocGFpci52YWx1ZSksICJcbiIpOworICAgIH0KICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAg
CiAgICAgTm9kZSogbGFzdE5vZGUgPSBudWxscHRyOwpAQCAtNjQwLDggKzY1NywxMCBAQCB2b2lk
IEdyYXBoOjpoYW5kbGVTdWNjZXNzb3IoVmVjdG9yPEJhc2ljCiB2b2lkIEdyYXBoOjpkZXRlcm1p
bmVSZWFjaGFiaWxpdHkoKQogewogICAgIFZlY3RvcjxCYXNpY0Jsb2NrKiwgMTY+IHdvcmtsaXN0
OwotICAgIHdvcmtsaXN0LmFwcGVuZChibG9jaygwKSk7Ci0gICAgYmxvY2soMCktPmlzUmVhY2hh
YmxlID0gdHJ1ZTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9p
bnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmlzUmVhY2hhYmxlID0gdHJ1ZTsKKyAgICAgICAg
d29ya2xpc3QuYXBwZW5kKGVudHJ5cG9pbnQpOworICAgIH0KICAgICB3aGlsZSAoIXdvcmtsaXN0
LmlzRW1wdHkoKSkgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnRha2VM
YXN0KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5udW1TdWNjZXNzb3JzKCk7
IGktLTspCkBAIC03OTgsOSArODE3LDEwIEBAIHZvaWQgR3JhcGg6OmtpbGxVbnJlYWNoYWJsZUJs
b2NrcygpCiAKIHZvaWQgR3JhcGg6OmludmFsaWRhdGVDRkcoKQogewotICAgIG1fZG9taW5hdG9y
cyA9IG51bGxwdHI7Ci0gICAgbV9uYXR1cmFsTG9vcHMgPSBudWxscHRyOwotICAgIG1fcHJlUG9z
dE51bWJlcmluZyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAg
ICBtX3NzYURvbWluYXRvcnMgPSBudWxscHRyOworICAgIG1fY3BzTmF0dXJhbExvb3BzID0gbnVs
bHB0cjsKKyAgICBtX3NzYU5hdHVyYWxMb29wcyA9IG51bGxwdHI7CiAgICAgbV9jb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpcyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNEb21pbmF0b3JzID0g
bnVsbHB0cjsKICAgICBtX2JhY2t3YXJkc0NGRyA9IG51bGxwdHI7CkBAIC04NTAsMTIgKzg3MCwz
NyBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUHJlT3JkZXIoKQogewogICAgIEJsb2NrTGlz
dCByZXN1bHQ7CiAgICAgQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5wdXNo
KGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2VudHJ5cG9p
bnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQpOwogICAgIHdoaWxlIChCYXNp
Y0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
YmxvY2spOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+bnVtU3VjY2Vzc29ycygp
OyBpLS07KQogICAgICAgICAgICAgd29ya2xpc3QucHVzaChibG9jay0+c3VjY2Vzc29yKGkpKTsK
ICAgICB9CisKKyAgICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgeworICAgICAgICAvLyBXaGVu
IGl0ZXJhdGluZyBvdmVyIHByZSBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21pbmF0b3JzCisgICAg
ICAgIC8vIGJlZm9yZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgYXV0byB2YWxpZGF0
ZVJlc3VsdHMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9
PSBiKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGkgPCBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NB
Q29udmVyc2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0
b3JzKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJl
Q1BTRG9taW5hdG9ycygpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODYz
LDcgKzkwOCw4IEBAIEJsb2NrTGlzdCBHcmFwaDo6YmxvY2tzSW5Qb3N0T3JkZXIoKQogewogICAg
IEJsb2NrTGlzdCByZXN1bHQ7CiAgICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsK
LSAgICB3b3JrbGlzdC5wdXNoKGJsb2NrKDApKTsKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5
cG9pbnQgOiBtX2VudHJ5cG9pbnRzKQorICAgICAgICB3b3JrbGlzdC5wdXNoKGVudHJ5cG9pbnQp
OwogICAgIHdoaWxlIChCbG9ja1dpdGhPcmRlciBpdGVtID0gd29ya2xpc3QucG9wKCkpIHsKICAg
ICAgICAgc3dpdGNoIChpdGVtLm9yZGVyKSB7CiAgICAgICAgIGNhc2UgVmlzaXRPcmRlcjo6UHJl
OgpAQCAtODc2LDYgKzkyMiwzMSBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nrc0luUG9zdE9yZGVy
KCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHZhbGlk
YXRpb25FbmFibGVkKCkpIHsKKyAgICAgICAgYXV0byB2YWxpZGF0ZVJlc3VsdHMgPSBbJl0gKGF1
dG8mIGRvbWluYXRvcnMpIHsKKyAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIG92ZXIgcmV2
ZXJzZSBwb3N0IG9yZGVyLCB3ZSBzaG91bGQgc2VlIGRvbWluYXRvcnMKKyAgICAgICAgICAgIC8v
IGJlZm9yZSB0aGluZ3MgdGhleSBkb21pbmF0ZS4KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBhID0gcmVzdWx0W2ldOworICAgICAgICAgICAgICAgIGlmICghYSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IHJlc3VsdC5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBiID0gcmVzdWx0W2pdOworICAgICAgICAgICAgICAgICAgICBpZiAoIWIgfHwgYSA9PSBiKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGlm
IChkb21pbmF0b3JzLmRvbWluYXRlcyhhLCBiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKGkgPiBqKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVy
c2lvbikKKyAgICAgICAgICAgIHZhbGlkYXRlUmVzdWx0cyhlbnN1cmVTU0FEb21pbmF0b3JzKCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMoZW5zdXJlQ1BTRG9t
aW5hdG9ycygpKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDcyLDMw
ICsxNTQzLDQ0IEBAIHZvaWQgR3JhcGg6OmxvZ0Fzc2VydGlvbkZhaWx1cmUoCiAgICAgbG9nREZH
QXNzZXJ0aW9uRmFpbHVyZSgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGluZyBibG9jayAi
LCBwb2ludGVyRHVtcChibG9jayksICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3Nl
cnRpb24pOwogfQogCi1Eb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlRG9taW5hdG9ycygpCitDUFNE
b21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQ1BTRG9taW5hdG9ycygpCit7CisgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgaWYgKCFt
X2Nwc0RvbWluYXRvcnMpCisgICAgICAgIG1fY3BzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlx
dWU8Q1BTRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNEb21pbmF0b3JzOwor
fQorCitTU0FEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlU1NBRG9taW5hdG9ycygpCiB7Ci0gICAg
aWYgKCFtX2RvbWluYXRvcnMpCi0gICAgICAgIG1fZG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlx
dWU8RG9taW5hdG9ycz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9kb21pbmF0b3JzOworICAgIFJF
TEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EgfHwgbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAg
aWYgKCFtX3NzYURvbWluYXRvcnMpCisgICAgICAgIG1fc3NhRG9taW5hdG9ycyA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1NBRG9taW5hdG9ycz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FEb21pbmF0
b3JzOwogfQogCi1QcmVQb3N0TnVtYmVyaW5nJiBHcmFwaDo6ZW5zdXJlUHJlUG9zdE51bWJlcmlu
ZygpCitDUFNOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVDUFNOYXR1cmFsTG9vcHMoKQogewot
ICAgIGlmICghbV9wcmVQb3N0TnVtYmVyaW5nKQotICAgICAgICBtX3ByZVBvc3ROdW1iZXJpbmcg
PSBzdGQ6Om1ha2VfdW5pcXVlPFByZVBvc3ROdW1iZXJpbmc+KCp0aGlzKTsKLSAgICByZXR1cm4g
Km1fcHJlUG9zdE51bWJlcmluZzsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gIT0gU1NBICYm
ICFtX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBlbnN1cmVDUFNEb21pbmF0b3JzKCk7CisgICAg
aWYgKCFtX2Nwc05hdHVyYWxMb29wcykKKyAgICAgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPENQU05hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9jcHNO
YXR1cmFsTG9vcHM7CiB9CiAKLU5hdHVyYWxMb29wcyYgR3JhcGg6OmVuc3VyZU5hdHVyYWxMb29w
cygpCitTU0FOYXR1cmFsTG9vcHMmIEdyYXBoOjplbnN1cmVTU0FOYXR1cmFsTG9vcHMoKQogewot
ICAgIGVuc3VyZURvbWluYXRvcnMoKTsKLSAgICBpZiAoIW1fbmF0dXJhbExvb3BzKQotICAgICAg
ICBtX25hdHVyYWxMb29wcyA9IHN0ZDo6bWFrZV91bmlxdWU8TmF0dXJhbExvb3BzPigqdGhpcyk7
Ci0gICAgcmV0dXJuICptX25hdHVyYWxMb29wczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0g
PT0gU1NBKTsKKyAgICBlbnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgaWYgKCFtX3NzYU5hdHVy
YWxMb29wcykKKyAgICAgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNT
QU5hdHVyYWxMb29wcz4oKnRoaXMpOworICAgIHJldHVybiAqbV9zc2FOYXR1cmFsTG9vcHM7CiB9
CiAKIEJhY2t3YXJkc0NGRyYgR3JhcGg6OmVuc3VyZUJhY2t3YXJkc0NGRygpCiB7CisgICAgLy8g
V2UgY291bGQgZWFzaWx5IHJlbGF4IHRoaXMgaW4gdGhlIGZ1dHVyZSB0byB3b3JrIG92ZXIgQ1BT
LCBidXQgdG9kYXksIGl0J3Mgb25seSB1c2VkIGluIFNTQS4KKyAgICBSRUxFQVNFX0FTU0VSVCht
X2Zvcm0gPT0gU1NBKTsgCiAgICAgaWYgKCFtX2JhY2t3YXJkc0NGRykKICAgICAgICAgbV9iYWNr
d2FyZHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhY2t3YXJkc0NGRz4oKnRoaXMpOwogICAgIHJl
dHVybiAqbV9iYWNrd2FyZHNDRkc7CkBAIC0xNTAzLDYgKzE1ODgsNyBAQCBCYWNrd2FyZHNDRkcm
IEdyYXBoOjplbnN1cmVCYWNrd2FyZHNDRkcoCiAKIEJhY2t3YXJkc0RvbWluYXRvcnMmIEdyYXBo
OjplbnN1cmVCYWNrd2FyZHNEb21pbmF0b3JzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zv
cm0gPT0gU1NBKTsKICAgICBpZiAoIW1fYmFja3dhcmRzRG9taW5hdG9ycykKICAgICAgICAgbV9i
YWNrd2FyZHNEb21pbmF0b3JzID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2FyZHNEb21pbmF0b3Jz
PigqdGhpcyk7CiAgICAgcmV0dXJuICptX2JhY2t3YXJkc0RvbWluYXRvcnM7CkBAIC0xNTEwLDYg
KzE1OTYsNyBAQCBCYWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhCiAKIENv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzJiBHcmFwaDo6ZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXMoKQogeworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSA9PSBTU0EpOwogICAgIGlm
ICghbV9jb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcykKICAgICAgICAgbV9jb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7CkBA
IC0xNTI3LDcgKzE2MTQsOSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjpt
ZXRoCiAgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAg
ICAgICAgaW50IGFyZ3VtZW50ID0gbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fYXJndW1lbnRzW2FyZ3VtZW50XTsK
KyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtYXRjaCBTZXRBcmd1bWVu
dCBub2RlcyBhdCBvdGhlciBlbnRyeXBvaW50cyBhcyB3ZWxsOgorICAgICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODQxCisgICAg
ICAgICAgICAgICAgICAgIE5vZGUqIGFyZ3VtZW50Tm9kZSA9IG1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQoYmxvY2soMCkpLT52YWx1ZVthcmd1bWVudF07CiAgICAgICAgICAgICAgICAgICAg
IGlmICghYXJndW1lbnROb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAh
PSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKQpAQCAtMTY5OCw2ICsxNzg3LDEz
IEBAIGJvb2wgR3JhcGg6OmNhbkRvRmFzdFNwcmVhZChOb2RlKiBub2RlLCAKICAgICByZXR1cm4g
YWxsR29vZDsKIH0KIAordm9pZCBHcmFwaDo6Y2xlYXJDUFNDRkdEYXRhKCkKK3sKKyAgICBtX2Nw
c05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9jcHNEb21pbmF0b3JzID0gbnVsbHB0cjsK
KyAgICBtX2Nwc0NGRyA9IG51bGxwdHI7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFj
ZSBXVEYgewordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFNpbmdsZVJvb3RHcmFwaDsKK30K
KwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKQEAgLTU2LDEwICs2MCwxNyBA
QCBjbGFzcyBCYWNrd2FyZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3Mg
Q0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3Jz
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3Mg
TmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKKworY2xhc3MgQ1BTQ0ZHOwor
dXNpbmcgU1NBQ0ZHID0gQ0ZHOworCit1c2luZyBDUFNEb21pbmF0b3JzID0gRG9taW5hdG9yczxD
UFNDRkc+OwordXNpbmcgU1NBRG9taW5hdG9ycyA9IERvbWluYXRvcnM8U1NBQ0ZHPjsKK3VzaW5n
IENQU05hdHVyYWxMb29wcyA9IE5hdHVyYWxMb29wczxDUFNDRkc+OwordXNpbmcgU1NBTmF0dXJh
bExvb3BzID0gTmF0dXJhbExvb3BzPFNTQUNGRz47CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBjbGFz
cyBGbG93TWFwOwogCkBAIC05MDEsMjcgKzkxMiwzNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c0RlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkOyB9
CiAKLSAgICBEb21pbmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgUHJlUG9zdE51bWJl
cmluZyYgZW5zdXJlUHJlUG9zdE51bWJlcmluZygpOwotICAgIE5hdHVyYWxMb29wcyYgZW5zdXJl
TmF0dXJhbExvb3BzKCk7CisgICAgQ1BTRG9taW5hdG9ycyYgZW5zdXJlQ1BTRG9taW5hdG9ycygp
OworICAgIFNTQURvbWluYXRvcnMmIGVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICBDUFNOYXR1
cmFsTG9vcHMmIGVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgIFNTQU5hdHVyYWxMb29wcyYg
ZW5zdXJlU1NBTmF0dXJhbExvb3BzKCk7CiAgICAgQmFja3dhcmRzQ0ZHJiBlbnN1cmVCYWNrd2Fy
ZHNDRkcoKTsKICAgICBCYWNrd2FyZHNEb21pbmF0b3JzJiBlbnN1cmVCYWNrd2FyZHNEb21pbmF0
b3JzKCk7CiAgICAgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMmIGVuc3VyZUNvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKCk7CiAKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIG9ubHkgbWFrZXMgc2Vu
c2UgdG8gY2FsbCBhZnRlciBieXRlY29kZSBwYXJzaW5nCisgICAgLy8gVGhlc2UgZnVuY3Rpb25z
IG9ubHkgbWFrZXMgc2Vuc2UgdG8gY2FsbCBhZnRlciBieXRlY29kZSBwYXJzaW5nCiAgICAgLy8g
YmVjYXVzZSBpdCBxdWVyaWVzIHRoZSBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzIGJvb2xlYW4gd2hv
c2UgdmFsdWUKICAgICAvLyBpcyBvbmx5IGZ1bGx5IGRldGVybWluZWQgYWZ0ZXIgYnl0Y29kZSBw
YXJzaW5nLgorICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgQ29kZU9yaWdpbiBpZ25vcmVkOworICAg
ICAgICBIYW5kbGVySW5mbyogaWdub3JlZDI7CisgICAgICAgIHJldHVybiB3aWxsQ2F0Y2hFeGNl
cHRpb25Jbk1hY2hpbmVGcmFtZShjb2RlT3JpZ2luLCBpZ25vcmVkLCBpZ25vcmVkMik7CisgICAg
fQogICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoQ29kZU9yaWdpbiwg
Q29kZU9yaWdpbiYgb3BDYXRjaE9yaWdpbk91dCwgSGFuZGxlckluZm8qJiBjYXRjaEhhbmRsZXJP
dXQpOwogICAgIAogICAgIGJvb2wgbmVlZHNTY29wZVJlZ2lzdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNEZWJ1Z2dlckVuYWJsZWQgfHwgbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KICAgICBi
b29sIG5lZWRzRmx1c2hlZFRoaXMoKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+dXNlc0V2
YWwoKTsgfQogCisgICAgdm9pZCBjbGVhckNQU0NGR0RhdGEoKTsKKwogICAgIFZNJiBtX3ZtOwog
ICAgIFBsYW4mIG1fcGxhbjsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVC
bG9jayogbV9wcm9maWxlZEJsb2NrOwogICAgIAotICAgIFZlY3RvcjwgUmVmUHRyPEJhc2ljQmxv
Y2s+ICwgOD4gbV9ibG9ja3M7CisgICAgVmVjdG9yPFJlZlB0cjxCYXNpY0Jsb2NrPiwgOD4gbV9i
bG9ja3M7CisgICAgVmVjdG9yPEJhc2ljQmxvY2sqLCAxPiBtX2VudHJ5cG9pbnRzOwogICAgIFZl
Y3RvcjxFZGdlLCAxNj4gbV92YXJBcmdDaGlsZHJlbjsKIAogICAgIEhhc2hNYXA8RW5jb2RlZEpT
VmFsdWUsIEZyb3plblZhbHVlKiwgRW5jb2RlZEpTVmFsdWVIYXNoLCBFbmNvZGVkSlNWYWx1ZUhh
c2hUcmFpdHM+IG1fZnJvemVuVmFsdWVNYXA7CkBAIC05NTYsMTEgKzk3NywxMSBAQCBwdWJsaWM6
CiAgICAgLy8KICAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFuZCB3ZSByZW1vdmUgdGhl
IGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNpZGUKICAgICAvLyBlZmZl
Y3RzLgotICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7CisgICAgSGFzaE1hcDxCYXNp
Y0Jsb2NrKiwgVmVjdG9yPE5vZGUqLCA4Pj4gbV9lbnRyeXBvaW50VG9Bcmd1bWVudHM7CiAgICAg
CiAgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMgdGhl
IGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgogICAgIFZlY3RvcjxG
bHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Ci0gICAgCisKICAgICBTZWdtZW50ZWRWZWN0
b3I8VmFyaWFibGVBY2Nlc3NEYXRhLCAxNj4gbV92YXJpYWJsZUFjY2Vzc0RhdGE7CiAgICAgU2Vn
bWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24sIDg+IG1fYXJndW1lbnRQb3NpdGlvbnM7CiAg
ICAgQmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7CkBAIC05ODIsMTAgKzEwMDMsMTIgQEAg
cHVibGljOgogICAgIEhhc2hTZXQ8c3RkOjpwYWlyPEpTT2JqZWN0KiwgUHJvcGVydHlPZmZzZXQ+
PiBtX3NhZmVUb0xvYWQ7CiAgICAgSGFzaE1hcDxQcm9wZXJ0eVR5cGVLZXksIEluZmVycmVkVHlw
ZTo6RGVzY3JpcHRvcj4gbV9pbmZlcnJlZFR5cGVzOwogICAgIFZlY3RvcjxSZWY8U25pcHBldD4+
IG1fZG9tSklUU25pcHBldHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERvbWluYXRvcnM+IG1fZG9t
aW5hdG9yczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJlUG9zdE51bWJlcmluZz4gbV9wcmVQb3N0
TnVtYmVyaW5nOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXR1cmFsTG9vcHM+IG1fbmF0dXJhbExv
b3BzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDRkc+IG1fY2ZnOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxDUFNEb21pbmF0b3JzPiBtX2Nwc0RvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNT
QURvbWluYXRvcnM+IG1fc3NhRG9taW5hdG9yczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTTmF0
dXJhbExvb3BzPiBtX2Nwc05hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBTmF0
dXJhbExvb3BzPiBtX3NzYU5hdHVyYWxMb29wczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NBQ0ZH
PiBtX3NzYUNGRzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTQ0ZHPiBtX2Nwc0NGRzsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QmFja3dhcmRzQ0ZHPiBtX2JhY2t3YXJkc0NGRzsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QmFja3dhcmRzRG9taW5hdG9ycz4gbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcz4gbV9jb250cm9sRXF1
aXZhbGVuY2VBbmFseXNpczsKQEAgLTEwMDksNiArMTAzMiw4IEBAIHB1YmxpYzoKICAgICBSZWZD
b3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVk
OwogICAgIGJvb2wgbV9oYXNFeGNlcHRpb25IYW5kbGVycyB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2lzSW5TU0FDb252ZXJzaW9uIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90
PiBtX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dJ
bmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93TWFwPEFi
c3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCShy
ZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VB
YnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNTQgKzkzLDYxIEBAIHN0YXRp
YyB2b2lkIHNldExpdmVWYWx1ZXMoVmVjdG9yPE5vZGVBYnMKIAogdm9pZCBJblBsYWNlQWJzdHJh
Y3RTdGF0ZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQmFzaWNCbG9jayogcm9vdCA9IG1fZ3JhcGgu
YmxvY2soMCk7Ci0gICAgcm9vdC0+Y2ZhU2hvdWxkUmV2aXNpdCA9IHRydWU7Ci0gICAgcm9vdC0+
Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOwotICAgIHJvb3QtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRIZWFkID0gU3RydWN0dXJl
c0FyZVdhdGNoZWQ7Ci0gICAgcm9vdC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0g
U3RydWN0dXJlc0FyZVdhdGNoZWQ7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52
YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZh
bHVlc0F0VGFpbC5hcmd1bWVudChpKS5jbGVhcigpOwotCi0gICAgICAgIEZsdXNoRm9ybWF0IGZv
cm1hdDsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkKLSAgICAgICAgICAgIGZv
cm1hdCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07Ci0gICAgICAgICAg
ICBpZiAoIW5vZGUpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBT
ZXRBcmd1bWVudCk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50
IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYVNob3Vs
ZFJldmlzaXQgPSB0cnVlOworICAgICAgICBlbnRyeXBvaW50LT5jZmFIYXNWaXNpdGVkID0gZmFs
c2U7CisgICAgICAgIGVudHJ5cG9pbnQtPmNmYUZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CisgICAg
ICAgIGVudHJ5cG9pbnQtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVy
ZXNBcmVXYXRjaGVkOworICAgICAgICBlbnRyeXBvaW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3Rh
dGVBdFRhaWwgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsKKworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkFyZ3VtZW50cygpOyAr
K2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0VGFpbC5hcmd1bWVudChpKS5j
bGVhcigpOworCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgICAgICBp
ZiAobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdo
ZW4gc3VwcG9ydGluZyBtdWx0aXBsZSBlbnRyeXBvaW50cyBpbiB0aGUgRlRMLCB3ZSBuZWVkIHRv
IGNoYW5nZQorICAgICAgICAgICAgICAgIC8vIHdoYXQgd2UgZG8gaGVyZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTM5NgorICAgICAgICAgICAgICAgIGZvcm1h
dCA9IG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV07CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQoZW50cnlwb2ludCktPnZhbHVlW2ldOworICAgICAgICAgICAgICAgIGlmICghbm9k
ZSkKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisgICAgICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09
IFNldEFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gbm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFuOgorICAgICAg
ICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNw
ZWNCb29sZWFuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1
c2hlZENlbGw6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLmFyZ3Vt
ZW50KGkpLnNldFR5cGUobV9ncmFwaCwgU3BlY0NlbGwpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1l
bnQiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBGbHVzaGVk
SW50MzI6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShTcGVjSW50MzJPbmx5KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNo
ZWRCb29sZWFuOgotICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNl
dFR5cGUoU3BlY0Jvb2xlYW4pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1
c2hlZENlbGw6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0
VHlwZShtX2dyYXBoLCBTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBGbHVzaGVkSlNWYWx1ZToKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVu
dChpKS5tYWtlQnl0ZWNvZGVUb3AoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG51bGxwdHIsICJCYWQgZmx1c2gg
Zm9ybWF0IGZvciBhcmd1bWVudCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290LT52YWx1ZXNBdEhlYWQubnVtYmVy
T2ZMb2NhbHMoKTsgKytpKSB7Ci0gICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5j
bGVhcigpOwotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwubG9jYWwoaSkuY2xlYXIoKTsKLSAg
ICB9Ci0gICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAxIDsgYmxvY2tJbmRleCA8IG1f
Z3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewotICAgICAgICBCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2spCisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZW50cnlwb2ludC0+dmFsdWVzQXRIZWFkLm51
bWJlck9mTG9jYWxzKCk7ICsraSkgeworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRI
ZWFkLmxvY2FsKGkpLmNsZWFyKCk7CisgICAgICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRh
aWwubG9jYWwoaSkuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAgICAg
aWYgKG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250YWlucyhibG9jaykpIHsKKyAgICAgICAgICAg
IC8vIFdlIGhhbmRsZWQgdGhlIGVudHJ5cG9pbnRzIGFib3ZlLgogICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKwogICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKICAg
ICAgICAgYmxvY2stPmNmYVNob3VsZFJldmlzaXQgPSBmYWxzZTsKICAgICAgICAgYmxvY2stPmNm
YUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTM2NCw3ICszNzEsNyBAQCBpbmxpbmUgYm9vbCBJblBs
YWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUCiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlKGJh
c2ljQmxvY2ssIGRhdGEtPmNhc2VzW2ldLnRhcmdldC5ibG9jayk7CiAgICAgICAgIHJldHVybiBj
aGFuZ2VkOwogICAgIH0KLSAgICAgICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICBjYXNlIFRh
aWxDYWxsOgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYz
LDcgQEAgdm9pZCBKSVRDb2RlOjpzaHJpbmtUb0ZpdCgpCiAgICAgY29tbW9uLnNocmlua1RvRml0
KCk7CiAgICAgb3NyRW50cnkuc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFeGl0LnNocmlua1RvRml0
KCk7CisgICAgY2F0Y2hFbnRyeXBvaW50cy5zaHJpbmtUb0ZpdCgpOwogICAgIHNwZWN1bGF0aW9u
UmVjb3Zlcnkuc2hyaW5rVG9GaXQoKTsKICAgICBtaW5pZmllZERGRy5wcmVwYXJlQW5kU2hyaW5r
KCk7CiAgICAgdmFyaWFibGVFdmVudFN0cmVhbS5zaHJpbmtUb0ZpdCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2
ICs2OSwzMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvc3JFbnRyeSwgb3NyRW50cnkuc2l6ZSgp
LCBieXRlY29kZUluZGV4LAogICAgICAgICAgICAgZ2V0T1NSRW50cnlEYXRhQnl0ZWNvZGVJbmRl
eCk7CiAgICAgfQorCisgICAgQ2F0Y2hFbnRyeXBvaW50RGF0YSogY2F0Y2hPU1JFbnRyeURhdGFG
b3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPENhdGNoRW50cnlwb2ludERhdGEsIHVuc2lnbmVkPigKKyAg
ICAgICAgICAgIGNhdGNoRW50cnlwb2ludHMsIGNhdGNoRW50cnlwb2ludHMuc2l6ZSgpLCBieXRl
Y29kZUluZGV4LAorICAgICAgICAgICAgW10gKGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEqIGl0
ZW0pIHsgcmV0dXJuIGl0ZW0tPm1fYnl0ZWNvZGVJbmRleDsgfSk7CisgICAgfQorCisgICAgdm9p
ZCBmaW5hbGl6ZUNhdGNoT1NSRW50cnlwb2ludHMoKQorICAgIHsKKyAgICAgICAgc3RkOjpzb3J0
KGNhdGNoRW50cnlwb2ludHMuYmVnaW4oKSwgY2F0Y2hFbnRyeXBvaW50cy5lbmQoKSwgW10gKGNv
bnN0IENhdGNoRW50cnlwb2ludERhdGEmIGEsIGNvbnN0IENhdGNoRW50cnlwb2ludERhdGEmIGIp
IHsKKyAgICAgICAgICAgIHJldHVybiBhLm1fYnl0ZWNvZGVJbmRleCA8IGIubV9ieXRlY29kZUlu
ZGV4OworICAgICAgICB9KTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIHVuc2lnbmVk
IHByZXZpb3VzSW5kZXggPSAwOworICAgICAgICBmb3IgKGNvbnN0IENhdGNoRW50cnlwb2ludERh
dGEmIGVudHJ5cG9pbnQgOiBjYXRjaEVudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICBBU1NFUlQo
cHJldmlvdXNJbmRleCA8IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4KTsKKyAgICAgICAgICAg
IHByZXZpb3VzSW5kZXggPSBlbnRyeXBvaW50Lm1fYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgfQor
I2VuZGlmCisgICAgfQorCisgICAgdm9pZCBhcHBlbmRDYXRjaEVudHJ5cG9pbnQodW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbWFjaGluZUNvZGVPZmZzZXQsIFZlY3RvcjxGbHVzaEZv
cm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCisgICAgeworICAgICAgICBjYXRjaEVudHJ5cG9pbnRz
LmFwcGVuZChDYXRjaEVudHJ5cG9pbnREYXRhIHsgYnl0ZWNvZGVJbmRleCwgbWFjaGluZUNvZGVP
ZmZzZXQsIFdURk1vdmUoYXJndW1lbnRGb3JtYXRzKSB9KTsKKyAgICB9CiAgICAgCiAgICAgdW5z
aWduZWQgYXBwZW5kT1NSRXhpdChjb25zdCBPU1JFeGl0JiBleGl0KQogICAgIHsKQEAgLTEzMiwx
MCArMTU4LDEzIEBAIHByaXZhdGU6CiBwdWJsaWM6CiAgICAgQ29tbW9uRGF0YSBjb21tb247CiAg
ICAgVmVjdG9yPERGRzo6T1NSRW50cnlEYXRhPiBvc3JFbnRyeTsKKyAgICBWZWN0b3I8Q2F0Y2hF
bnRyeXBvaW50RGF0YT4gY2F0Y2hFbnRyeXBvaW50czsKICAgICBTZWdtZW50ZWRWZWN0b3I8REZH
OjpPU1JFeGl0LCA4PiBvc3JFeGl0OwogICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zl
cnk+IHNwZWN1bGF0aW9uUmVjb3Zlcnk7CiAgICAgREZHOjpWYXJpYWJsZUV2ZW50U3RyZWFtIHZh
cmlhYmxlRXZlbnRTdHJlYW07CiAgICAgREZHOjpNaW5pZmllZEdyYXBoIG1pbmlmaWVkREZHOwor
ICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50cnlCdWZmZXI7CisKICNpZiBFTkFCTEUoRlRM
X0pJVCkKICAgICB1aW50OF90IG5ldmVyRXhlY3V0ZWRFbnRyeSB7IDEgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDIy
MTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNjcsNiArMzY3LDggQEAgc3RhdGljIHZvaWQgZW1pdFN0YWNrT3Zl
cmZsb3dDaGVjayhKSVRDbwogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKIHsKKyAgICBt
YWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAgc2V0U3RhcnRPZkNvZGUoKTsKICAgICBj
b21waWxlRW50cnkoKTsKICAgICBtX3NwZWN1bGF0aXZlID0gc3RkOjptYWtlX3VuaXF1ZTxTcGVj
dWxhdGl2ZUpJVD4oKnRoaXMpOwpAQCAtNDI2LDYgKzQyOCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6
OmNvbXBpbGUoKQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogeworICAg
IG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAg
IGNvbXBpbGVFbnRyeSgpOwogCkBAIC01NTEsMTQgKzU1NSwyMyBAQCB2b2lkKiBKSVRDb21waWxl
cjo6YWRkcmVzc09mRG91YmxlQ29uc3RhCiB9CiAjZW5kaWYKIAordm9pZCBKSVRDb21waWxlcjo6
bm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxvY2smIGJhc2ljQmxvY2ssIEpJVENvbXBpbGVy
OjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIFZlY3RvcjxGbHVzaEZv
cm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9j
ay5pc0NhdGNoRW50cnlwb2ludCk7CisgICAgUkVMRUFTRV9BU1NFUlQoYmFzaWNCbG9jay5pbnRl
cnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpOyAvLyBBbiBlbnRyeXBvaW50IGlzIHJlYWNoYWJsZSBi
eSBkZWZpbml0aW9uLgorICAgIG1faml0Q29kZS0+YXBwZW5kQ2F0Y2hFbnRyeXBvaW50KGJhc2lj
QmxvY2suYnl0ZWNvZGVCZWdpbiwgbGlua0J1ZmZlci5vZmZzZXRPZihibG9ja0hlYWQpLCBXVEZN
b3ZlKGFyZ3VtZW50Rm9ybWF0cykpOworfQorCiB2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VPU1JF
bnRyeShCYXNpY0Jsb2NrJiBiYXNpY0Jsb2NrLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFk
LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIFJFTEVBU0VfQVNTRVJUKCFiYXNpY0Js
b2NrLmlzQ2F0Y2hFbnRyeXBvaW50KTsKKwogICAgIC8vIE9TUiBlbnRyeSBpcyBub3QgYWxsb3dl
ZCBpbnRvIGJsb2NrcyBkZWVtZWQgdW5yZWFjaGFibGUgYnkgY29udHJvbCBmbG93IGFuYWx5c2lz
LgogICAgIGlmICghYmFzaWNCbG9jay5pbnRlcnNlY3Rpb25PZkNGQUhhc1Zpc2l0ZWQpCiAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBPU1JFbnRyeURhdGEqIGVudHJ5ID0gbV9qaXRD
b2RlLT5hcHBlbmRPU1JFbnRyeURhdGEoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2luLCBsaW5rQnVm
ZmVyLm9mZnNldE9mKGJsb2NrSGVhZCkpOwotICAgIAorCiAgICAgZW50cnktPm1fZXhwZWN0ZWRW
YWx1ZXMgPSBiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mUGFzdFZhbHVlc0F0SGVhZDsKICAgICAg
ICAgCiAgICAgLy8gRml4IHRoZSBleHBlY3RlZCB2YWx1ZXM6IGluIG91ciBwcm90b2NvbCwgYSBk
ZWFkIHZhcmlhYmxlIHdpbGwgaGF2ZSBhbiBleHBlY3RlZApAQCAtNjcwLDYgKzY4MywxNCBAQCB2
b2lkIEpJVENvbXBpbGVyOjpzZXRFbmRPZkNvZGUoKQogICAgIG1fZGlzYXNzZW1ibGVyLT5zZXRF
bmRPZkNvZGUobGFiZWxJZ25vcmluZ1dhdGNocG9pbnRzKCkpOwogfQogCit2b2lkIEpJVENvbXBp
bGVyOjptYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpCit7CisgICAgaWYgKG1fZ3JhcGgubV9tYXhM
b2NhbHNGb3JDYXRjaE9TUkVudHJ5KSB7CisgICAgICAgIHVpbnQzMl90IG51bWJlck9mTGl2ZUxv
Y2FscyA9IHN0ZDo6bWF4KCptX2dyYXBoLm1fbWF4TG9jYWxzRm9yQ2F0Y2hPU1JFbnRyeSwgMXUp
OyAvLyBNYWtlIHN1cmUgd2UgYWx3YXlzIGFsbG9jYXRlIGEgbm9uLW51bGwgY2F0Y2hPU1JFbnRy
eUJ1ZmZlci4KKyAgICAgICAgbV9qaXRDb2RlLT5jYXRjaE9TUkVudHJ5QnVmZmVyID0gdm0oKS0+
c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKEpTVmFsdWUpICogbnVtYmVyT2ZMaXZlTG9jYWxz
KTsKKyAgICB9Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNiArMjU2LDcgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHZvaWQgbm90aWNlT1NSRW50cnkoQmFzaWNCbG9jayYsIEpJVENvbXBp
bGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImKTsKKyAgICB2b2lkIG5vdGljZUNhdGNo
RW50cnlwb2ludChCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwgTGlu
a0J1ZmZlciYsIFZlY3RvcjxGbHVzaEZvcm1hdD4mJiBhcmd1bWVudEZvcm1hdHMpOwogICAgIAog
ICAgIFJlZlB0cjxKSVRDb2RlPiBqaXRDb2RlKCkgeyByZXR1cm4gbV9qaXRDb2RlOyB9CiAgICAg
CkBAIC0yODQsNiArMjg1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5kRXhjZXB0aW9u
SGFuZGxpbmdPU1JFeGl0KEV4aXRLaW5kLCB1bnNpZ25lZCBldmVudFN0cmVhbUluZGV4LCBDb2Rl
T3JpZ2luLCBIYW5kbGVySW5mbyogZXhjZXB0aW9uSGFuZGxlciwgQ2FsbFNpdGVJbmRleCwgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGp1bXBzVG9GYWlsID0gTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0KCkpOwogCisgICAgdm9pZCBtYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpOworCiAgICAgLy8g
VGhlIGRhdGFmbG93IGdyYXBoIGN1cnJlbnRseSBiZWluZyBnZW5lcmF0ZWQuCiAgICAgR3JhcGgm
IG1fZ3JhcGg7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xJQ01QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TElDTVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIG5hbWVzcGFjZSB7CiAKK3VzaW5nIE5hdHVyYWxMb29w
ID0gU1NBTmF0dXJhbExvb3A7CisKIHN0cnVjdCBMb29wRGF0YSB7CiAgICAgTG9vcERhdGEoKQog
ICAgICAgICA6IHByZUhlYWRlcihudWxscHRyKQpAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9mb3Jt
ID09IFNTQSk7CiAgICAgICAgIAotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsK
LSAgICAgICAgbV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVTU0FEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExv
b3BzKCk7CiAgICAgICAgIG1fZ3JhcGguZW5zdXJlQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMo
KTsKIAogICAgICAgICBpZiAodmVyYm9zZSkgewpAQCAtODMsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
bV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsKKyAgICAg
ICAgbV9kYXRhLnJlc2l6ZShtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpKTsK
ICAgICAgICAgCiAgICAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHNldCBvZiB0aGluZ3MgZWFjaCBs
b29wIHdyaXRlcyB0bywgbm90IGluY2x1ZGluZyBibG9ja3MgdGhhdAogICAgICAgICAvLyBiZWxv
bmcgdG8gaW5uZXIgbG9vcHMuIFdlIGZpeCB0aGlzIGxhdGVyLgpAQCAtOTgsNyArMTAwLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhSGFzVmlzaXRlZCkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY29uc3QgTmF0dXJh
bExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxv
Y2spOworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGxvb3AgPSBtX2dyYXBoLm1fc3Nh
TmF0dXJhbExvb3BzLT5pbm5lck1vc3RMb29wT2YoYmxvY2spOwogICAgICAgICAgICAgaWYgKCFs
b29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgTG9vcERhdGEmIGRh
dGEgPSBtX2RhdGFbbG9vcC0+aW5kZXgoKV07CkBAIC0xMTYsMTQgKzExOCwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIEZvciBlYWNoIGxvb3A6CiAgICAgICAgIC8vIC0gSWRlbnRpZnkgaXRzIHBy
ZS1oZWFkZXIuCiAgICAgICAgIC8vIC0gTWFrZSBzdXJlIGl0cyBvdXRlciBsb29wcyBrbm93IHdo
YXQgaXQgY2xvYmJlcnMuCi0gICAgICAgIGZvciAodW5zaWduZWQgbG9vcEluZGV4ID0gbV9ncmFw
aC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4LS07KSB7Ci0gICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmxvb3Ao
bG9vcEluZGV4KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1f
c3NhTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAgICAgICAgICAg
IGNvbnN0IE5hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+bG9v
cChsb29wSW5kZXgpOwogICAgICAgICAgICAgTG9vcERhdGEmIGRhdGEgPSBtX2RhdGFbbG9vcC5p
bmRleCgpXTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9yICgKLSAgICAgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogb3V0ZXJMb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0T3V0ZXJMb29wKGxvb3ApOworICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRl
ckxvb3AobG9vcCk7CiAgICAgICAgICAgICAgICAgb3V0ZXJMb29wOwotICAgICAgICAgICAgICAg
IG91dGVyTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgq
b3V0ZXJMb29wKSkKKyAgICAgICAgICAgICAgICBvdXRlckxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0
dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKm91dGVyTG9vcCkpCiAgICAgICAgICAgICAg
ICAgbV9kYXRhW291dGVyTG9vcC0+aW5kZXgoKV0ud3JpdGVzLmFkZEFsbChkYXRhLndyaXRlcyk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGhlYWRlciA9IGxvb3AuaGVh
ZGVyKCk7CkBAIC0xMzcsNyArMTM5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBoZWFkZXItPnByZWRlY2Vzc29ycy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGhlYWRlci0+cHJl
ZGVjZXNzb3JzW2ldOwotICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+
ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgICAgIGlmIChtX2dy
YXBoLm1fc3NhRG9taW5hdG9ycy0+ZG9taW5hdGVzKGhlYWRlciwgcHJlZGVjZXNzb3IpKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHByZUhlYWRlciA9
IHByZWRlY2Vzc29yOwpAQCAtMTkxLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9y
PGNvbnN0IE5hdHVyYWxMb29wKj4gbG9vcFN0YWNrOwogICAgICAgICBib29sIGNoYW5nZWQgPSBm
YWxzZTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5Q
cmVPcmRlcigpKSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVy
TW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAKQEAgLTE5OSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBjdXJy
ZW50ID0gbG9vcDsKICAgICAgICAgICAgICAgICBjdXJyZW50OwotICAgICAgICAgICAgICAgIGN1
cnJlbnQgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJl
bnQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3Bz
LT5pbm5lck1vc3RPdXRlckxvb3AoKmN1cnJlbnQpKQogICAgICAgICAgICAgICAgIGxvb3BTdGFj
ay5hcHBlbmQoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJlbWVtYmVy
OiB0aGUgbG9vcCBzdGFjayBoYXMgdGhlIGlubmVyLW1vc3QgbG9vcCBhdCBpbmRleCAwLCBzbyBp
ZiB3ZSB3YW50CkBAIC0zMTgsNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYmVjYXVz
ZSBtb3N0IGxvb3BzIGFyZSBzbWFsbCBhbmQgbW9zdCBibG9ja3MgYmVsb25nIHRvIGZldyBsb29w
cy4KICAgICAgICAgZm9yICh1bnNpZ25lZCBib2R5SW5kZXggPSBsb29wLT5zaXplKCk7IGJvZHlJ
bmRleC0tOykgewogICAgICAgICAgICAgQmFzaWNCbG9jayogc3ViQmxvY2sgPSBsb29wLT5hdChi
b2R5SW5kZXgpOwotICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIHN1Ykxvb3AgPSBtX2dy
YXBoLm1fbmF0dXJhbExvb3BzLT5oZWFkZXJPZihzdWJCbG9jayk7CisgICAgICAgICAgICBjb25z
dCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmhlYWRl
ck9mKHN1YkJsb2NrKTsKICAgICAgICAgICAgIGlmICghc3ViTG9vcCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHN1YlByZUhlYWRlciA9IG1fZGF0
YVtzdWJMb29wLT5pbmRleCgpXS5wcmVIZWFkZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1
ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiREZHQmxvY2tTZXQuaCIKICNp
bmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgogI2luY2x1
ZGUgIkRGR1BoYXNlLmgiCkBAIC00NiwxMDkgKzQ3LDE4NSBAQCBwdWJsaWM6CiAKICAgICBib29s
IHJ1bigpCiAgICAgewotICAgICAgICBpZiAoIW1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVy
cykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gTG9hZFN0b3JlKTsKIAotICAgICAgICBtX2N1
cnJlbnRCbG9ja0xpdmVuZXNzLnJlc2l6ZShtX2dyYXBoLmJsb2NrKDApLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZMb2NhbHMoKSk7CisgICAgICAgIGlmICghbV9ncmFwaC5tX2hhc0V4Y2VwdGlv
bkhhbmRsZXJzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIEluc2VydGlv
blNldCBpbnNlcnRpb25TZXQobV9ncmFwaCk7Ci0gICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxv
Y2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKLSAgICAgICAgICAgIGhhbmRs
ZUJsb2NrKGJsb2NrLCBpbnNlcnRpb25TZXQpOwotICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4
ZWN1dGUoYmxvY2spOworICAgICAgICBpZiAobV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJz
KSB7CisgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJ
bk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlQmxvY2tGb3JUcnlDYXRj
aChibG9jaywgaW5zZXJ0aW9uU2V0KTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhl
Y3V0ZShibG9jayk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlvbihDb2RlT3JpZ2luIG9y
aWdpbikKKyAgICBib29sIGlzVmFsaWRGbHVzaExvY2F0aW9uKEJhc2ljQmxvY2sqIHN0YXJ0aW5n
QmxvY2ssIHVuc2lnbmVkIGluZGV4LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkKICAgICB7Ci0g
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXhUb0NoZWNrID0gb3JpZ2luLmJ5dGVjb2RlSW5k
ZXg7Ci0gICAgICAgIG1fY3VycmVudEJsb2NrTGl2ZW5lc3MuY2xlYXJBbGwoKTsKKyAgICAgICAg
VmVjdG9yPEJhc2ljQmxvY2sqLCA0PiB3b3JrbGlzdDsKKyAgICAgICAgQmxvY2tTZXQgc2VlbjsK
IAotICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKGlubGluZUNhbGxG
cmFtZSk7Ci0gICAgICAgICAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2st
PmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4VG9DaGVjaykpIHsKLSAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjYXRjaEJ5dGVjb2RlSW5kZXggPSBoYW5kbGVyLT50YXJnZXQ7
Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5mb3JBbGxMb2NhbHNMaXZlSW5CeXRlY29kZShDb2Rl
T3JpZ2luKGNhdGNoQnl0ZWNvZGVJbmRleCwgaW5saW5lQ2FsbEZyYW1lKSwgWyZdIChWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCkgewotICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9ja0xp
dmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGF1dG8gYWRkUHJlZGVjZXNzb3Jz
ID0gWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgeworICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKKyAgICAgICAgICAgICAgICBib29sIGlz
TmV3RW50cnkgPSBzZWVuLmFkZChibG9jayk7CisgICAgICAgICAgICAgICAgaWYgKGlzTmV3RW50
cnkpCisgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LmFwcGVuZChibG9jayk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBmbHVzaElzRGVmaW5pdGVseUludmFs
aWQgPSBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAg
ICAgYm9vbCBhbGxHb29kID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBp
bmRleDsgaS0tOyApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2stPmF0KGkpLT5hY2Nlc3Nl
c1N0YWNrKG1fZ3JhcGgpICYmIGJsb2NrLT5hdChpKS0+bG9jYWwoKSA9PSBvcGVyYW5kKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGFsbEdvb2QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgaWYgKGFsbEdvb2QpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBieXRlY29kZUluZGV4VG9DaGVjayA9
IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyLmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgICAg
ICBvcmlnaW4gPSBpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsKKyAgICAgICAgICAgIGlm
IChibG9jay0+cHJlZGVjZXNzb3JzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgYSByb290IGJsb2NrLiBXZSBwcm92ZWQgd2UgcmVhY2hlZCBoZXJlLCB0aGVyZWZvcmUg
d2UgY2FuJ3QgRmx1c2gsIGFzCisgICAgICAgICAgICAgICAgLy8gaXQnbGwgbWFrZSB0aGlzIGxv
Y2FsIGxpdmUgYXQgdGhlIHN0YXJ0IG9mIGEgcm9vdCBibG9jaywgd2hpY2ggaXMgaW52YWxpZCBJ
Ui4KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgYWRkUHJlZGVjZXNzb3JzKGJsb2NrKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfTsKKworICAgICAgICBpZiAoZmx1c2hJc0RlZmluaXRlbHlJbnZhbGlkKHN0YXJ0
aW5nQmxvY2ssIGluZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB3
aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKGZsdXNoSXNEZWZpbml0
ZWx5SW52YWxpZChibG9jaywgYmxvY2stPnNpemUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZv
aWQgaGFuZGxlQmxvY2soQmFzaWNCbG9jayogYmxvY2ssIEluc2VydGlvblNldCYgaW5zZXJ0aW9u
U2V0KQotICAgIHsKLSAgICAgICAgLy8gQmVjYXVzZSBwcmVjaXNlIGp1bXAgdGFyZ2V0cyBlbnN1
cmVzIHRoYXQgdGhlIHN0YXJ0IG9mIGEgInRyeSIgYmxvY2sgaXMgaXRzCi0gICAgICAgIC8vIG93
biBiYXNpYyBibG9jaywgd2Ugd2lsbCBuZXZlciBoYXZlIHR3byAidHJ5IiBzdGF0ZW1lbnRzIGlu
IHRoZSBzYW1lIERGRwotICAgICAgICAvLyBiYXNpYyBibG9jay4gVGhlcmVmb3JlLCBjaGVja2lu
ZyB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgYmxvY2sgaXMgc3VmZmljaWVudCAKLSAgICAgICAgLy8g
dG8gY2hlY2tpbmcgaWYgd2UncmUgaW4gYSB0cnkgYmxvY2suCi0gICAgICAgIGlmICghd2lsbENh
dGNoRXhjZXB0aW9uKGJsb2NrLT5hdCgwKS0+b3JpZ2luLnNlbWFudGljKSkKLSAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBPcGVyYW5kczxWYXJpYWJsZUFjY2Vzc0RhdGEqPiBjdXJyZW50
QmxvY2tBY2Nlc3NEYXRhKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZBcmd1bWVudHMo
KSwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpLCBudWxscHRyKTsKLSAg
ICAgICAgSGFzaFNldDxJbmxpbmVDYWxsRnJhbWUqPiBzZWVuSW5saW5lQ2FsbEZyYW1lczsKLQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnNp
emUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsK
LSAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZS0+b3Ao
KSA9PSBTZXRBcmd1bWVudCAmJiBub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSAmJiBub2RlID09
IG1fZ3JhcGgubV9hcmd1bWVudHNbbm9kZS0+bG9jYWwoKS50b0FyZ3VtZW50KCldOwotICAgICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoaW5saW5lQ2Fs
bEZyYW1lKQotICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1lcy5hZGQoaW5s
aW5lQ2FsbEZyYW1lKTsKKyAgICB2b2lkIGhhbmRsZUJsb2NrRm9yVHJ5Q2F0Y2goQmFzaWNCbG9j
ayogYmxvY2ssIEluc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0KQorICAgIHsKKyAgICAgICAgSGFu
ZGxlckluZm8qIGN1cnJlbnRFeGNlcHRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICAgICAgRmFz
dEJpdFZlY3RvciBsaXZlQXRDYXRjaEhlYWQ7CisgICAgICAgIGxpdmVBdENhdGNoSGVhZC5yZXNp
emUobV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCkpOwor
CisgICAgICAgIEhhbmRsZXJJbmZvKiBjYWNoZWRIYW5kbGVyUmVzdWx0OworICAgICAgICBDb2Rl
T3JpZ2luIGNhY2hlZENvZGVPcmlnaW47CisgICAgICAgIGF1dG8gY2F0Y2hIYW5kbGVyID0gWyZd
IChDb2RlT3JpZ2luIG9yaWdpbikgLT4gSGFuZGxlckluZm8qIHsKKyAgICAgICAgICAgIEFTU0VS
VChvcmlnaW4pOworICAgICAgICAgICAgaWYgKG9yaWdpbiA9PSBjYWNoZWRDb2RlT3JpZ2luKQor
ICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZWRIYW5kbGVyUmVzdWx0OworCisgICAgICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZUluZGV4VG9DaGVjayA9IG9yaWdpbi5ieXRlY29kZUluZGV4Owor
CisgICAgICAgICAgICBjYWNoZWRDb2RlT3JpZ2luID0gb3JpZ2luOworCisgICAgICAgICAgICB3
aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gb3JpZ2luLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1l
KTsKKyAgICAgICAgICAgICAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2st
PmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4VG9DaGVjaykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbGl2ZUF0Q2F0Y2hIZWFkLmNsZWFyQWxsKCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2F0Y2hCeXRlY29kZUluZGV4ID0gaGFuZGxlci0+dGFyZ2V0Owor
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKENv
ZGVPcmlnaW4oY2F0Y2hCeXRlY29kZUluZGV4LCBpbmxpbmVDYWxsRnJhbWUpLCBbJl0gKFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXZlQXRDYXRj
aEhlYWRbb3BlcmFuZC50b0xvY2FsKCldID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CiAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCAobm9kZS0+
b3AoKSA9PSBTZXRBcmd1bWVudCAmJiAhaXNQcmltb3JkaWFsU2V0QXJndW1lbnQpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9kZS0+bG9jYWwoKTsK
KyAgICAgICAgICAgICAgICAgICAgY2FjaGVkSGFuZGxlclJlc3VsdCA9IGhhbmRsZXI7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgICAgICBpbnQgc3RhY2tPZmZzZXQgPSBpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJh
bWUtPnN0YWNrT2Zmc2V0IDogMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlz
TG9jYWwoKSAmJiBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHx8IChvcGVyYW5kLm9mZnNldCgpID09IHN0YWNrT2Zmc2V0
ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkpIHsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBjdXJyZW50
QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vzc0RhdGEob3BlcmFuZCk7Ci0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKGksIFNwZWNOb25l
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbHVzaCwgbm9kZS0+b3JpZ2luLCBPcElu
Zm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgICAgICBjYWNo
ZWRIYW5kbGVyUmVzdWx0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3Rh
Y2sobV9ncmFwaCkpCi0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEu
b3BlcmFuZChub2RlLT5sb2NhbCgpKSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAg
ICAgICAgICAgICAgIGJ5dGVjb2RlSW5kZXhUb0NoZWNrID0gaW5saW5lQ2FsbEZyYW1lLT5kaXJl
Y3RDYWxsZXIuYnl0ZWNvZGVJbmRleDsKKyAgICAgICAgICAgICAgICBvcmlnaW4gPSBpbmxpbmVD
YWxsRnJhbWUtPmRpcmVjdENhbGxlcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0gICAg
ICAgIC8vIEluc2VydCBGbHVzaCBmb3IgZXZlcnl0aGluZyBhdCB0aGUgZW5kIG9mIHRoZSBibG9j
ay4KLSAgICAgICAgewotICAgICAgICAgICAgTm9kZU9yaWdpbiBvcmlnaW4gPSBibG9jay0+YXQo
YmxvY2stPnNpemUoKSAtIDEpLT5vcmlnaW47Ci0gICAgICAgICAgICBhdXRvIHByZXNlcnZlTGl2
ZW5lc3NBdEVuZE9mQmxvY2sgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kLCBib29sIGFs
d2F5c0luc2VydCkgewotICAgICAgICAgICAgICAgIGlmICgob3BlcmFuZC5pc0xvY2FsKCkgJiYg
bV9jdXJyZW50QmxvY2tMaXZlbmVzc1tvcGVyYW5kLnRvTG9jYWwoKV0pIAorICAgICAgICAgICAg
cmV0dXJuIGNhY2hlZEhhbmRsZXJSZXN1bHQ7CisgICAgICAgIH07CisKKyAgICAgICAgT3BlcmFu
ZHM8VmFyaWFibGVBY2Nlc3NEYXRhKj4gY3VycmVudEJsb2NrQWNjZXNzRGF0YShibG9jay0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mQXJndW1lbnRzKCksIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
bnVtYmVyT2ZMb2NhbHMoKSwgbnVsbHB0cik7CisgICAgICAgIEhhc2hTZXQ8SW5saW5lQ2FsbEZy
YW1lKj4gc2VlbklubGluZUNhbGxGcmFtZXM7CisKKyAgICAgICAgYXV0byBmbHVzaEV2ZXJ5dGhp
bmcgPSBbJl0gKE5vZGVPcmlnaW4gb3JpZ2luLCB1bnNpZ25lZCBpbmRleCkgeworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoY3VycmVudEV4Y2VwdGlvbkhhbmRsZXIpOworICAgICAgICAgICAg
YXV0byBmbHVzaCA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIGJvb2wgYWx3YXlzSW5z
ZXJ0KSB7CisgICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwoKSAmJiBsaXZlQXRD
YXRjaEhlYWRbb3BlcmFuZC50b0xvY2FsKCldKSAKICAgICAgICAgICAgICAgICAgICAgfHwgb3Bl
cmFuZC5pc0FyZ3VtZW50KCkKICAgICAgICAgICAgICAgICAgICAgfHwgYWx3YXlzSW5zZXJ0KSB7
CisKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWRGbHVzaExvY2F0aW9uKGJsb2Nr
LCBpbmRleCwgb3BlcmFuZCkpOworCiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogYWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5k
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhY2Nlc3NEYXRhKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKTsKIAog
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFu
ZCkgPSBhY2Nlc3NEYXRhOwogCi0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKGJsb2NrLT5zaXplKCksIFNwZWNOb25lLCAKKyAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXgsIFNwZWNOb25lLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgIEZsdXNoLCBvcmlnaW4sIE9wSW5mbyhhY2Nlc3NEYXRhKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfTsKKwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBsb2NhbCA9
IDA7IGxvY2FsIDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2FscygpOyBsb2Nh
bCsrKQotICAgICAgICAgICAgICAgIHByZXNlcnZlTGl2ZW5lc3NBdEVuZE9mQmxvY2sodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZmx1c2go
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLCBmYWxzZSk7CiAgICAgICAgICAgICBmb3Ig
KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lIDogc2VlbklubGluZUNhbGxGcmFtZXMp
Ci0gICAgICAgICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayhWaXJ0dWFsUmVn
aXN0ZXIoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3Vt
ZW50T2Zmc2V0KCkpLCB0cnVlKTsKLSAgICAgICAgICAgIHByZXNlcnZlTGl2ZW5lc3NBdEVuZE9m
QmxvY2soVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBmbHVzaChWaXJ0dWFsUmVnaXN0ZXIoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkpLCB0cnVl
KTsKKyAgICAgICAgICAgIGZsdXNoKFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWU6OnRoaXNBcmd1
bWVudE9mZnNldCgpKSwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVz
LmNsZWFyKCk7CisgICAgICAgIH07CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBub2RlSW5kZXgg
PSAwOyBub2RlSW5kZXggPCBibG9jay0+c2l6ZSgpOyBub2RlSW5kZXgrKykgeworICAgICAgICAg
ICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgpOworCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIG5ld0hhbmRsZXIgPSBjYXRjaEhhbmRsZXIobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3SGFuZGxlciAhPSBj
dXJyZW50RXhjZXB0aW9uSGFuZGxlciAmJiBjdXJyZW50RXhjZXB0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgICAgICAgICAgZmx1c2hFdmVyeXRoaW5nKG5vZGUtPm9yaWdpbiwgbm9kZUluZGV4KTsK
KyAgICAgICAgICAgICAgICBjdXJyZW50RXhjZXB0aW9uSGFuZGxlciA9IG5ld0hhbmRsZXI7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50RXhjZXB0aW9uSGFuZGxlciAm
JiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCB8fCBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50KSkg
eworICAgICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgICAgICAgICBzZWVuSW5saW5lQ2FsbEZyYW1l
cy5hZGQoaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7CisKKyAgICAgICAgICAgICAgICBpbnQgc3RhY2tPZmZz
ZXQgPSBpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0IDogMDsK
KyAgICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYmIGxpdmVBdENhdGNoSGVh
ZFtvcGVyYW5kLnRvTG9jYWwoKV0pCisgICAgICAgICAgICAgICAgICAgIHx8IG9wZXJhbmQuaXNB
cmd1bWVudCgpCisgICAgICAgICAgICAgICAgICAgIHx8IChvcGVyYW5kLm9mZnNldCgpID09IHN0
YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSkpIHsKKworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEZsdXNoTG9jYXRpb24oYmxvY2ssIG5vZGVJbmRl
eCwgb3BlcmFuZCkpOworCisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGVBY2Nlc3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNz
RGF0YShvcGVyYW5kKTsKKworICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZShub2RlSW5kZXgsIFNwZWNOb25lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNo
LCBub2RlLT5vcmlnaW4sIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChub2RlLT5hY2Nlc3Nlc1N0
YWNrKG1fZ3JhcGgpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3Bl
cmFuZChub2RlLT5sb2NhbCgpKSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gSW5zZXJ0IEZsdXNoIGZvciBldmVyeXRoaW5nIGF0IHRoZSBlbmQg
b2YgdGhlIGJsb2NrLgorICAgICAgICBpZiAoY3VycmVudEV4Y2VwdGlvbkhhbmRsZXIpIHsKKyAg
ICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gYmxvY2stPmF0KGJsb2NrLT5zaXplKCkgLSAx
KS0+b3JpZ2luOworICAgICAgICAgICAgZmx1c2hFdmVyeXRoaW5nKG9yaWdpbiwgYmxvY2stPnNp
emUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1OSw4ICsyMzYsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuYXBwZW5kKFZhcmlhYmxlQWNjZXNz
RGF0YShvcGVyYW5kKSk7CiAgICAgICAgIHJldHVybiAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNz
RGF0YS5sYXN0KCk7CiAgICAgfQotCi0gICAgRmFzdEJpdFZlY3RvciBtX2N1cnJlbnRCbG9ja0xp
dmVuZXNzOwogfTsKIAogYm9vbCBwZXJmb3JtTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25Q
aGFzZShHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xv
b3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3Jl
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3Jh
cGgmIGdyYXBoLCBCbG9ja0luc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBi
bG9jaykKIHsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFncmFwaC5tX2VudHJ5cG9pbnRzLmNv
bnRhaW5zKGJsb2NrKSwgIkFuIGVudHJ5cG9pbnQgc2hvdWxkIG5vdCBiZSBpbiBhIGxvb3AiKTsK
KwogICAgIC8vIEZJWE1FOiBJZiB3ZSBydW4gdGhpcyB1dGlsaXR5IG9uIFNTQSBJUiwgdGhlbiB3
ZSBtYXkgZW5kIHVwIHdpdGggYSBiaXphcnJlIGFycmFuZ2VtZW50IG9mCiAgICAgLy8gVXBzaWxv
bnMgYW5kIFBoaXMsIGxpa2U6CiAgICAgLy8KQEAgLTY5LDcgKzcxLDggQEAgQmFzaWNCbG9jayog
Y3JlYXRlUHJlSGVhZGVyKEdyYXBoJiBncmFwaAogICAgIC8vIEluc3RlYWQsIHdlIHVzZSB0aGUg
bWF4IG9mIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgbG9vcCBib2R5J3Mgbm9uLWxvb3AgcHJlZGVj
ZXNzb3JzLgogICAgIGZsb2F0IGZyZXF1ZW5jeSA9IDA7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBw
cmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKLSAgICAgICAgaWYgKGdyYXBoLm1f
ZG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCisgICAgICAgIEFTU0VS
VChncmFwaC5tX2Zvcm0gIT0gU1NBKTsKKyAgICAgICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9y
cy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgZnJlcXVlbmN5ID0gc3RkOjptYXgoZnJlcXVlbmN5LCBwcmVkZWNlc3Nvci0+ZXhl
Y3V0aW9uQ291bnQpOwogICAgIH0KQEAgLTEwMyw3ICsxMDYsNyBAQCBCYXNpY0Jsb2NrKiBjcmVh
dGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNl
c3NvckluZGV4ID0gMDsgcHJlZGVjZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6
ZSgpOyBwcmVkZWNlc3NvckluZGV4KyspIHsKICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNz
b3IgPSBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICBpZiAo
Z3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKKyAgICAg
ICAgaWYgKGdyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGJsb2NrLCBwcmVkZWNlc3Nv
cikpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29yc1tw
cmVkZWNlc3NvckluZGV4LS1dID0gYmxvY2stPnByZWRlY2Vzc29ycy5sYXN0KCk7CiAgICAgICAg
IGJsb2NrLT5wcmVkZWNlc3NvcnMucmVtb3ZlTGFzdCgpOwpAQCAtMTMwLDE2ICsxMzMsMTYgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5z
dXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwor
ICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5l
bnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQg
bG9vcEluZGV4ID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bnVtTG9vcHMoKTsgbG9vcEluZGV4
LS07KSB7Ci0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCYgbG9vcCA9IG1fZ3JhcGgubV9u
YXR1cmFsTG9vcHMtPmxvb3AobG9vcEluZGV4KTsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGV4
aXN0aW5nUHJlSGVhZGVyID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBt
X2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKKyAg
ICAgICAgICAgIGNvbnN0IENQU05hdHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX2Nwc05hdHVy
YWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3Rp
bmdQcmVIZWFkZXIgPSBudWxscHRyOwogICAgICAgICAgICAgYm9vbCBuZWVkc05ld1ByZUhlYWRl
ciA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0g
bG9vcC5oZWFkZXIoKS0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRleC0tOykg
ewotICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gbG9vcC5oZWFkZXIo
KS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOwotICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCksIHByZWRlY2Vzc29y
KSkKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IGxvb3AuaGVh
ZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7
CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigp
Lm5vZGUoKS0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXhdOworICAgICAgICAgICAgICAg
IGlmIChtX2dyYXBoLm1fY3BzRG9taW5hdG9ycy0+ZG9taW5hdGVzKGxvb3AuaGVhZGVyKCkubm9k
ZSgpLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIGlmICghZXhpc3RpbmdQcmVIZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
ZXhpc3RpbmdQcmVIZWFkZXIgPSBwcmVkZWNlc3NvcjsKQEAgLTE2NSwxNCArMTY4LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIC8vIEEgcHJlLWhlYWRlciBpcyBtb3N0IHVzZWZ1bCBpZiBpdCdz
IHBvc3NpYmxlIHRvIGV4aXQgZnJvbSBpdHMgdGVybWluYWwuIEhlbmNlCiAgICAgICAgICAgICAv
LyBpZiB0aGUgdGVybWluYWwgb2YgdGhlIGV4aXN0aW5nIHByZS1oZWFkZXIgZG9lc24ndCBhbGxv
dyBmb3IgZXhpdCwgYnV0IHRoZSBmaXJzdAogICAgICAgICAgICAgLy8gb3JpZ2luIG9mIHRoZSBs
b29wIGhlYWRlciBkb2VzLCB0aGVuIHdlIHNob3VsZCBjcmVhdGUgYSBuZXcgcHJlLWhlYWRlci4K
LSAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYgbG9vcC5oZWFkZXIoKS0+YXQo
MCktPm9yaWdpbi5leGl0T0sKKyAgICAgICAgICAgIGlmICghbmVlZHNOZXdQcmVIZWFkZXIgJiYg
bG9vcC5oZWFkZXIoKS5ub2RlKCktPmF0KDApLT5vcmlnaW4uZXhpdE9LCiAgICAgICAgICAgICAg
ICAgJiYgIWV4aXN0aW5nUHJlSGVhZGVyLT50ZXJtaW5hbCgpLT5vcmlnaW4uZXhpdE9LKQogICAg
ICAgICAgICAgICAgIG5lZWRzTmV3UHJlSGVhZGVyID0gdHJ1ZTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlcikKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1f
aW5zZXJ0aW9uU2V0LCBsb29wLmhlYWRlcigpKTsKKyAgICAgICAgICAgIGNyZWF0ZVByZUhlYWRl
cihtX2dyYXBoLCBtX2luc2VydGlvblNldCwgbG9vcC5oZWFkZXIoKS5ub2RlKCkpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhp
bWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw4ICs1MywxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuZXhlY3V0ZShibG9jayk7CiAgICAgICAgIH0KIAotICAgICAgICB0cmVhdFJvb3RCbG9j
ayhtX2dyYXBoLmJsb2NrKDApLCBpbnNlcnRpb25TZXQpOwotICAgICAgICBpbnNlcnRpb25TZXQu
ZXhlY3V0ZShtX2dyYXBoLmJsb2NrKDApKTsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRy
eXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9pbnRzKSB7CisgICAgICAgICAgICB0cmVhdFJvb3RC
bG9jayhlbnRyeXBvaW50LCBpbnNlcnRpb25TZXQpOworICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
LmV4ZWN1dGUoZW50cnlwb2ludCk7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CkBAIC02Nyw3ICs2OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAgICAgIGJvb2wg
aXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmIG5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2FyZ3VtZW50c1tu
b2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1v
cmRpYWxTZXRBcmd1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFNldEFyZ3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMu
ZmluZChibG9jayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVyICE9IG1fZ3JhcGgubV9l
bnRyeXBvaW50VG9Bcmd1bWVudHMuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpc1By
aW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUgPT0gaXRlci0+dmFsdWVbbm9kZS0+bG9jYWwoKS50
b0FyZ3VtZW50KCldOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFyZ3VtZW50ICYmICFp
c1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOwogICAgICAgICAgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIGZsdXNoQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEu
b3BlcmFuZChvcGVyYW5kKTsKQEAgLTEyOCwxMiArMTM2LDEyIEBAIHB1YmxpYzoKIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJP
ZkxvY2FscygpOyBpKyspIHsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0g
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSk7Ci0gICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIGFjY2Vzc0RhdGE7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIs
IGluaXRpYWxBY2Nlc3NOb2Rlcy5vcGVyYW5kKG9wZXJhbmQpLT5vcCgpID09IEZsdXNoKTsgLy8g
V2Ugc2hvdWxkIGhhdmUgaW5zZXJ0ZWQgYSBGbHVzaCBiZWZvcmUgYW55IFNldExvY2FsL1NldEFy
Z3VtZW50IGZvciB0aGUgbG9jYWwgdGhhdCB3ZSBhcmUgYW5hbHl6aW5nIG5vdy4KLSAgICAgICAg
ICAgIGFjY2Vzc0RhdGEgPSBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOworICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBhY2Nlc3NEYXRhID0gaW5pdGlhbEFjY2Vzc0Rh
dGEub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbnVs
bHB0ciwgYWNjZXNzRGF0YSk7CiAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgw
LCBTcGVjTm9uZSwgCiAgICAgICAgICAgICAgICAgU2V0TG9jYWwsIG9yaWdpbiwgT3BJbmZvKGFj
Y2Vzc0RhdGEpLCBFZGdlKHVuZGVmaW5lZCkpOworICAgICAgICAgICAgYWNjZXNzRGF0YS0+bWVy
Z2VTaG91bGROZXZlclVuYm94KHRydWUpOyAvLyBXZSBkb24ndCBrbm93IGlmIHdlIGNhbiBleGl0
IGhlcmUuCiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsNyBAQCBF
eGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBJbnQ1MlJl
cDoKICAgICBjYXNlIFZhbHVlUmVwOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6Cisg
ICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2Fz
ZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTmF0dXJhbExvb3BzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkocmV2aXNpb24gMjIxMDI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsMTggKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
IAotdHlwZWRlZiBXVEY6Ok5hdHVyYWxMb29wPENGRz4gTmF0dXJhbExvb3A7Ci0KLWNsYXNzIE5h
dHVyYWxMb29wcyA6IHB1YmxpYyBXVEY6Ok5hdHVyYWxMb29wczxDRkc+IHsKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDRkdLaW5kPgorY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJh
bExvb3BzPENGR0tpbmQ+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOYXR1cmFsTG9vcHMp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIE5hdHVyYWxMb29w
cyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHPigqZ3JhcGgu
bV9jZmcsIGdyYXBoLmVuc3VyZURvbWluYXRvcnMoKSwgdmFsaWRhdGlvbkVuYWJsZWQoKSkKKyAg
ICAgICAgOiBXVEY6Ok5hdHVyYWxMb29wczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3Jh
cGgpLCBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHPENGR0tpbmQ+KGdyYXBoKSwgdmFsaWRhdGlvbkVu
YWJsZWQoKSkKICAgICB7CiAgICAgfQogfTsKIAordXNpbmcgU1NBTmF0dXJhbExvb3AgPSBXVEY6
Ok5hdHVyYWxMb29wPFNTQUNGRz47Cit1c2luZyBDUFNOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJh
bExvb3A8Q1BTQ0ZHPjsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2
aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG9wKCkgPT0gQnJhbmNoOwogICAgIH0KICAgICAKLSAgICBib29sIGlzU3dpdGNoKCkKKyAgICBi
b29sIGlzU3dpdGNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBvcCgpID09IFN3aXRj
aDsKICAgICB9CkBAIC0xMzcyLDYgKzEzNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChpbmRleCA9PSBzd2l0Y2hEYXRhKCktPmNhc2VzLnNpemUoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gc3dpdGNoRGF0YSgpLT5mYWxsVGhyb3VnaC5ibG9jazsKICAgICAgICAgfQor
CiAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAg
aWYgKGlzSnVtcCgpKQpAQCAtMTU0MSw2ICsxNTQyLDE4IEBAIHB1YmxpYzoKICAgICAgICAgQVNT
RVJUKG9wKCkgPT0gSWRlbnRpdHlXaXRoUHJvZmlsZSk7CiAgICAgICAgIHJldHVybiBtX29wSW5m
by5hczxTcGVjdWxhdGVkVHlwZT4oKTsKICAgICB9CisKKyAgICB1aW50MzJfdCBjYXRjaE9TUkVu
dHJ5SW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENh
dGNoTG9jYWwpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CisgICAg
fQorCisgICAgU3BlY3VsYXRlZFR5cGUgY2F0Y2hMb2NhbFByZWRpY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gRXh0cmFjdENhdGNoTG9jYWwpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8yLmFzPFNwZWN1bGF0ZWRUeXBlPigpOworICAgIH0KICAgICAKICAgICBib29sIGhh
c0NlbGxPcGVyYW5kKCkKICAgICB7CkBAIC0xOTM2LDcgKzE5NDksNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIuaXNWYWxpZCgpOwogICAgIH0KLSAg
ICAKKwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogU3BlY2lhbCBub2RlIGZvciBPU1IgZW50
cnkgaW50byB0aGUgRlRMLiBJbmRpY2F0ZXMgdGhhdCB3ZSdyZSBsb2FkaW5nIGEgbG9jYWwgKi9c
CiAgICAgLyogdmFyaWFibGUgZnJvbSB0aGUgc2NyYXRjaCBidWZmZXIuICovXAogICAgIG1hY3Jv
KEV4dHJhY3RPU1JFbnRyeUxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhFeHRyYWN0
Q2F0Y2hMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIFRpZXItdXAgY2hlY2tz
IGZyb20gdGhlIERGRyB0byB0aGUgRlRMLiAqL1wKICAgICBtYWNybyhDaGVja1RpZXJVcEluTG9v
cCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUg
IkRGR05vZGUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1JbmxpbmVzLmgiCkBA
IC0zMzYsNiArMzM3LDcxIEBAIHZvaWQqIHByZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMs
IEMKICAgICByZXR1cm4gc2NyYXRjaDsKIH0KIAordm9pZCogcHJlcGFyZUNhdGNoT1NSRW50cnko
RXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKK3sKKyAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9ERkcoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisgICAgREZH
OjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2RlKCktPmRmZygpOworICAgIFJF
TEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRjaEVudHJ5cG9pbnREYXRhKiBj
YXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5k
ZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAg
Ly8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuIFRoZSBtb3N0IGNv
bW1vbiBpcyB0aGF0IHdlIGRpZG4ndAorICAgICAgICAvLyBjb21waWxlIHRoaXMgb3BfY2F0Y2gg
YXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhlY3V0ZWQgd2hlbiBzdGFydGlu
ZworICAgICAgICAvLyB0aGUgY29tcGlsYXRpb24uCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBPU1IgZW50ZXIgaWYgd2UndmUg
cHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBlcy4KKyAgICBmb3IgKHVuc2ln
bmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRG
b3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpLmpzVmFs
dWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRz
W2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEludDMyOgorICAgICAgICAg
ICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6OkZsdXNoZWRDZWxsOgorICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERGRzo6Rmx1c2hlZEJvb2xl
YW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpE
ZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRoZSBhcmd1bWVudCBpcyBub3Qg
YWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFueSB0eXBlLgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAg
IC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUuCisgICAgICAgICAgICBicmVh
azsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZnJhbWVTaXplRm9yQ2hl
Y2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5k
RXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmZXhl
Yy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVTaXplRm9yQ2hlY2sp
Lm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFTU0VSVChJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpW2V4
ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9jYXRjaCk7CisgICAgVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxl
QW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKVtleGVj
LT5ieXRlY29kZU9mZnNldCgpICsgM10udS5wb2ludGVyKTsKKyAgICBKU1ZhbHVlKiBkYXRhQnVm
ZmVyID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oaml0Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1
ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYnVmZmVy
LT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAg
ICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFuZCkuaXNMb2NhbCgpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBkYXRhQnVmZmVyW2luZGV4XSA9IGV4ZWMtPnVuY2hl
Y2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICAgICAgKytpbmRleDsKKyAg
ICB9KTsKKworICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXItPnNldEFjdGl2ZUxlbmd0
aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisKKyAgICByZXR1cm4gaml0Q29kZS0+ZXhlY3V0
YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5cG9pbnQtPm1fbWFjaGluZUNvZGVPZmZzZXQp
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmgJKHJldmlz
aW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnkuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1c2hGb3JtYXQuaCIKICNpbmNs
dWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIApAQCAtNjksOSAr
NzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0YUJ5dGVjb2RlSQogICAgIHJl
dHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0KIAorc3RydWN0IENhdGNoRW50
cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJbmRleDsKKyAgICB1bnNpZ25l
ZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8vIFdlIHVzZSB0aGlzIHdoZW4gZG9pbmcgT1NS
IGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUgYXJndW1lbnRzCisgICAgLy8gYXJlIG9mIHRo
ZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmluZyBhdCBhIGNhdGNoIGJsb2NrLgorICAgIFZl
Y3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Cit9OworCiAvLyBSZXR1cm5zIGEg
cG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQgdGhlIE9TUiBlbnRyeSB0aHVuayB3aWxsIHJl
Y29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlzIHJldHVybnMgbnVsbCwgaXQgbWVhbnMgCiB2
b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMgcmV0dXJuZWQsIHdlIGNhbid0IE9TUiBlbnRl
ci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUgUEMgdG8ganVtcCB0by4KK3ZvaWQqIHByZXBh
cmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwg
Q29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkRGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5j
bHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVJbmRleCAhPSBVSU5UX01BWCk7CiAgICAgICAg
IAogICAgICAgICAvLyBOZWVkZWQgYnkgY3JlYXRlUHJlSGVhZGVyKCkuCi0gICAgICAgIG1fZ3Jh
cGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU0RvbWluYXRv
cnMoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVCbG9jayogYmFzZWxpbmUgPSBtX2dyYXBoLm1f
cHJvZmlsZWRCbG9jazsKICAgICAgICAgCkBAIC0xMTIsMTYgKzExMywxNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhlcmUuCiAgICAgICAgIG9yaWdpbiA9IHRhcmdldC0+
YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisgICAgICAgIFZlY3RvcjxOb2RlKiwgOD4gbmV3QXJn
dW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxv
Y2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yIChpbnQgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8
IGJhc2VsaW5lLT5udW1QYXJhbWV0ZXJzKCk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgICAgIE5v
ZGUqIG9sZE5vZGUgPSB0YXJnZXQtPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChhcmd1bWVudCk7
CiAgICAgICAgICAgICBpZiAoIW9sZE5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBKdXN0IGZv
ciBzYW5pdHksIGFsd2F5cyBoYXZlIGEgU2V0QXJndW1lbnQgZXZlbiBpZiBpdCdzIG5vdCBuZWVk
ZWQuCi0gICAgICAgICAgICAgICAgb2xkTm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbYXJndW1l
bnRdOworICAgICAgICAgICAgICAgIG9sZE5vZGUgPSBuZXdBcmd1bWVudHNbYXJndW1lbnRdOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogbm9kZSA9IG5ld1Jvb3QtPmFwcGVuZE5v
ZGUoCiAgICAgICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIFNldEFyZ3VtZW50LCBvcmln
aW4sCiAgICAgICAgICAgICAgICAgT3BJbmZvKG9sZE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
KSk7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9IG5vZGU7Cisg
ICAgICAgICAgICBuZXdBcmd1bWVudHNbYXJndW1lbnRdID0gbm9kZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGZvciAoaW50IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNlbGluZS0+bV9udW1DYWxsZWVM
b2NhbHM7ICsrbG9jYWwpIHsKQEAgLTEzOSw4ICsxNDEsMTcgQEAgcHVibGljOgogICAgICAgICAg
ICAgT3BJbmZvKGNyZWF0ZVByZUhlYWRlcihtX2dyYXBoLCBpbnNlcnRpb25TZXQsIHRhcmdldCkp
KTsKICAgICAgICAgCiAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKCk7CisKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAg
ICAgbV9ncmFwaC5tX2VudHJ5cG9pbnRzWzBdID0gbmV3Um9vdDsKKyAgICAgICAgbV9ncmFwaC5t
X2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jbGVhcigpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlw
b2ludFRvQXJndW1lbnRzLmFkZChuZXdSb290LCBuZXdBcmd1bWVudHMpOworCisgICAgICAgIG1f
Z3JhcGgubV9jcHNDRkcgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0NGRz4obV9ncmFwaCk7CisKICAg
ICAgICAgbV9ncmFwaC5yZXNldFJlYWNoYWJpbGl0eSgpOwogICAgICAgICBtX2dyYXBoLmtpbGxV
bnJlYWNoYWJsZUJsb2NrcygpOworCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDEwICszOSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIHZvaWQgaGFu
ZGxlRXhpdENvdW50cyhDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgT1NSRXhpdEJhc2UmIGV4aXQp
CiB7Ci0gICAgaml0LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBBc3Nl
bWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50KSk7Ci0KLSAgICBpZiAo
IWV4aXRLaW5kTWF5SmV0dGlzb24oZXhpdC5tX2tpbmQpKQorICAgIGlmICghZXhpdEtpbmRNYXlK
ZXR0aXNvbihleGl0Lm1fa2luZCkpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRv
IG5vdGljZSB0aGF0IHdlJ3JlIGZyZXF1ZW50bHkgZXhpdGluZworICAgICAgICAvLyBhdCBhbiBv
cF9jYXRjaCB0aGF0IHdlIGRpZG4ndCBjb21waWxlIGFuIGVudHJ5cG9pbnQgZm9yLCBhbmQKKyAg
ICAgICAgLy8gdGhlbiB0cmlnZ2VyIGEgcmVvcHRpbWl6YXRpb24gb2YgdGhpcyBDb2RlQmxvY2s6
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU4
NDIKICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGppdC5hZGQzMihBc3NlbWJseUhlbHBl
cnM6OlRydXN0ZWRJbW0zMigxKSwgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmV4
aXQubV9jb3VudCkpOwogICAgIAogICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihqaXQuY29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyNyw3ICs3MjcsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9n
cmFwaC5jb21wdXRlUmVmQ291bnRzKCk7CiAgICAgICAgIG1fZ3JhcGguaW5pdGlhbGl6ZU5vZGVP
d25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1f
Z3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFs
eXNpcyhtX2dyYXBoKTsKICAgICAgICAgcGVyZm9ybU9TUkF2YWlsYWJpbGl0eUFuYWx5c2lzKG1f
Z3JhcGgpOwogICAgICAgICBtX2NvbWJpbmVkTGl2ZW5lc3MgPSBDb21iaW5lZExpdmVuZXNzKG1f
Z3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lv
biAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNjYsOSArMzY2LDggQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46
OmNvbXBpbGVJblRocgogICAgIC8vIElmIHdlJ3JlIGRvaW5nIHZhbGlkYXRpb24sIHRoZW4gcnVu
IHNvbWUgYW5hbHlzZXMsIHRvIGdpdmUgdGhlbSBhbiBvcHBvcnR1bml0eQogICAgIC8vIHRvIHNl
bGYtdmFsaWRhdGUuIE5vdyBpcyBhcyBnb29kIGEgdGltZSBhcyBhbnkgdG8gZG8gdGhpcy4KICAg
ICBpZiAodmFsaWRhdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBkZmcuZW5zdXJlRG9taW5hdG9y
cygpOwotICAgICAgICBkZmcuZW5zdXJlTmF0dXJhbExvb3BzKCk7Ci0gICAgICAgIGRmZy5lbnN1
cmVQcmVQb3N0TnVtYmVyaW5nKCk7CisgICAgICAgIGRmZy5lbnN1cmVDUFNEb21pbmF0b3JzKCk7
CisgICAgICAgIGRmZy5lbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsKICAgICB9CiAKICAgICBzd2l0
Y2ggKG1vZGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51
bWJlcmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVQb3N0TnVtYmVyaW5nLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw4
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdQcmVQb3N0TnVtYmVyaW5nLmgiCi0K
LSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jsb2NrTWFwSW5saW5lcy5oIgot
I2luY2x1ZGUgIkRGR0Jsb2NrV29ya2xpc3QuaCIKLSNpbmNsdWRlICJERkdHcmFwaC5oIgotCi1u
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLVByZVBvc3ROdW1iZXJpbmc6OlByZVBv
c3ROdW1iZXJpbmcoR3JhcGgmIGdyYXBoKQotewotICAgIG1fbWFwID0gQmxvY2tNYXA8TnVtYmVy
aW5nPihncmFwaCk7Ci0gICAgCi0gICAgUG9zdE9yZGVyQmxvY2tXb3JrbGlzdCB3b3JrbGlzdDsK
LSAgICB3b3JrbGlzdC5wdXNoKGdyYXBoLmJsb2NrKDApKTsKLSAgICB1bnNpZ25lZCBuZXh0UHJl
TnVtYmVyID0gMDsKLSAgICB1bnNpZ25lZCBuZXh0UG9zdE51bWJlciA9IDA7Ci0gICAgd2hpbGUg
KEJsb2NrV2l0aE9yZGVyIGl0ZW0gPSB3b3JrbGlzdC5wb3AoKSkgewotICAgICAgICBzd2l0Y2gg
KGl0ZW0ub3JkZXIpIHsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQcmU6Ci0gICAgICAgICAg
ICBtX21hcFtpdGVtLm5vZGVdLm1fcHJlTnVtYmVyID0gbmV4dFByZU51bWJlcisrOwotICAgICAg
ICAgICAgd29ya2xpc3QucHVzaFBvc3QoaXRlbS5ub2RlKTsKLSAgICAgICAgICAgIGZvciAoQmFz
aWNCbG9jayogc3VjY2Vzc29yIDogaXRlbS5ub2RlLT5zdWNjZXNzb3JzKCkpCi0gICAgICAgICAg
ICAgICAgd29ya2xpc3QucHVzaChzdWNjZXNzb3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVmlzaXRPcmRlcjo6UG9zdDoKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0u
bV9wb3N0TnVtYmVyID0gbmV4dFBvc3ROdW1iZXIrKzsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1QcmVQb3N0TnVtYmVyaW5nOjp+UHJlUG9zdE51bWJlcmluZygp
IHsgfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi11
c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBFZGdlS2luZCBraW5kKQotewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2Ug
Rm9yd2FyZEVkZ2U6Ci0gICAgICAgIG91dC5wcmludCgiRm9yd2FyZEVkZ2UiKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ3Jvc3NFZGdlOgotICAgICAgICBvdXQucHJpbnQoIkNyb3NzRWRn
ZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBCYWNrRWRnZToKLSAgICAgICAgb3V0LnBy
aW50KCJCYWNrRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlUG9zdE51bWJlcmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAi
REZHQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkRGR0Jsb2NrTWFwLmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLQotbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1lbnVtIEVkZ2VLaW5kIHsKLSAgICBGb3J3YXJkRWRn
ZSwKLSAgICBDcm9zc0VkZ2UsCi0gICAgQmFja0VkZ2UKLX07Ci0KLWNsYXNzIFByZVBvc3ROdW1i
ZXJpbmcgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFByZVBvc3ROdW1iZXJpbmcpOwotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFByZVBvc3ROdW1iZXJpbmco
R3JhcGgmKTsKLSAgICB+UHJlUG9zdE51bWJlcmluZygpOwotCi0gICAgdW5zaWduZWQgcHJlTnVt
YmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25zdCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wcmVO
dW1iZXI7IH0KLSAgICB1bnNpZ25lZCBwb3N0TnVtYmVyKEJhc2ljQmxvY2sqIGJsb2NrKSBjb25z
dCB7IHJldHVybiBtX21hcFtibG9ja10ubV9wb3N0TnVtYmVyOyB9Ci0gICAgCi0gICAgLy8gSXMg
ZnJvbSBhIHN0cmljdCBhbmNlc3RvciBvZiB0bz8KLSAgICBib29sIGlzU3RyaWN0QW5jZXN0b3JP
ZihCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBwcmVOdW1iZXIoZnJvbSkgPCBwcmVOdW1iZXIodG8pCi0gICAgICAgICAgICAmJiBw
b3N0TnVtYmVyKGZyb20pID4gcG9zdE51bWJlcih0byk7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
aXNBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGZyb20gPT0gdG8gfHwgaXNTdHJpY3RBbmNlc3Rvck9mKGZyb20s
IHRvKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1N0cmljdERlc2NlbmRhbnRPZihCYXNpY0Js
b2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
c1N0cmljdEFuY2VzdG9yT2YodG8sIGZyb20pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzRGVz
Y2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGlzQW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAgIAotICAg
IC8vIFRoaXMgd2lsbCBnaXZlIGEgYm9ndXMgYW5zd2VyIGlmIHRoZXJlIGlzIGFjdHVhbGx5IG5v
IHN1Y2ggZWRnZS4gSWYgeW91IHdhbnQgdG8gZGV0ZXJtaW5lCi0gICAgLy8gaWYgdGhlcmUgaXMg
YW55IHN1Y2ggZWRnZSwgeW91IGhhdmUgdG8gZG8gaXQgeW91cnNlbGYuCi0gICAgRWRnZUtpbmQg
ZWRnZUtpbmQoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayogdG8pIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoaXNTdHJpY3REZXNjZW5kYW50T2YodG8sIGZyb20pKQotICAgICAgICAgICAg
cmV0dXJuIEZvcndhcmRFZGdlOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzQW5jZXN0b3JPZih0
bywgZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gQmFja0VkZ2U7Ci0gICAgICAgIAotICAgICAg
ICByZXR1cm4gQ3Jvc3NFZGdlOwotICAgIH0KLSAgICAKLXByaXZhdGU6Ci0gICAgc3RydWN0IE51
bWJlcmluZyB7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJlTnVtYmVyOwotICAgICAgICB1bnNpZ25l
ZCBtX3Bvc3ROdW1iZXI7Ci0gICAgfTsKLQotICAgIEJsb2NrTWFwPE51bWJlcmluZz4gbV9tYXA7
Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLW5hbWVzcGFjZSBXVEYgewotCi12
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkRGRzo6RWRnZUtpbmQpOwotCi19
IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvbkluamVj
dGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MSw5ICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgZm9yIHRoZSBhcmd1bWVudHMgYXQgdGhlIGZp
cnN0IGJsb2NrLiBUaGUgYXJndW1lbnRzIGZyb20KKyAgICAgICAgICAgIC8vIG90aGVyIGVudHJ5
cG9pbnRzIGhhdmUgYWxyZWFkeSBiZWVuIHBvcHVsYXRlZCB3aXRoIHRoZWlyIHByZWRpY3Rpb25z
LgorICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKwogICAgICAgICAgICAgZm9y
IChzaXplX3QgYXJnID0gMDsgYXJnIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2soKS0+
bnVtUGFyYW1ldGVycygpKTsgKythcmcpIHsKICAgICAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUm
IHByb2ZpbGUgPSBwcm9maWxlZEJsb2NrKCktPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZyk7
Ci0gICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKS0+cHJlZGljdCgKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbYXJnXS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnByZWRpY3QoCiAgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUuY29t
cHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcyNSw2ICs3MjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDogeworICAg
ICAgICAgICAgc2V0UHJlZGljdGlvbihtX2N1cnJlbnROb2RlLT5jYXRjaExvY2FsUHJlZGljdGlv
bigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBSZXNv
bHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsOgogICAgICAgICBjYXNlIEdldER5bmFt
aWNWYXI6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5dGVjb2RlVG9wKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5r
aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyAr
NzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2dyYXBoLmR1bXAoKTsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVu
c3VyZVNTQURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIFNTQUNhbGN1bGF0b3Igc3Nh
Q2FsY3VsYXRvcihtX2dyYXBoKTsKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldCht
X2dyYXBoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDYWxj
dWxhdG9yLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTU0FDYWxjdWxhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTIgKzk1LDEyIEBA
IFNTQUNhbGN1bGF0b3I6OkRlZiogU1NBQ2FsY3VsYXRvcjo6bmV3RGUKIAogU1NBQ2FsY3VsYXRv
cjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpub25Mb2NhbFJlYWNoaW5nRGVmKEJhc2ljQmxvY2sqIGJs
b2NrLCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWls
KG1fZ3JhcGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOworICAgIHJldHVy
biByZWFjaGluZ0RlZkF0VGFpbChtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9jayks
IHZhcmlhYmxlKTsKIH0KIAogU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9yOjpyZWFj
aGluZ0RlZkF0VGFpbChCYXNpY0Jsb2NrKiBibG9jaywgVmFyaWFibGUqIHZhcmlhYmxlKQogewot
ICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+aWRvbShibG9j
aykpIHsKKyAgICBmb3IgKDsgYmxvY2s7IGJsb2NrID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMt
Pmlkb20oYmxvY2spKSB7CiAgICAgICAgIGlmIChEZWYqIGRlZiA9IG1fZGF0YVtibG9ja10ubV9k
ZWZzLmdldCh2YXJpYWJsZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVmOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCShyZXZpc2lv
biAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDEwICsxNzUsMTAgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFBoaUluc2VydGlvbkZ1bmN0b3I+CiAgICAgdm9pZCBjb21wdXRlUGhpcyhj
b25zdCBQaGlJbnNlcnRpb25GdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKLSAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBoLm1fZG9taW5hdG9ycyk7CisgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX3NzYURvbWluYXRvcnMpOwogICAg
ICAgICAKICAgICAgICAgZm9yIChWYXJpYWJsZSYgdmFyaWFibGUgOiBtX3ZhcmlhYmxlcykgewot
ICAgICAgICAgICAgbV9ncmFwaC5tX2RvbWluYXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRl
cmF0ZWREb21pbmFuY2VGcm9udGllck9mKAorICAgICAgICAgICAgbV9ncmFwaC5tX3NzYURvbWlu
YXRvcnMtPmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKAog
ICAgICAgICAgICAgICAgIHZhcmlhYmxlLm1fYmxvY2tzV2l0aERlZnMsCiAgICAgICAgICAgICAg
ICAgWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIHBoaU5vZGUgPSBmdW5jdG9yKCZ2YXJpYWJsZSwgYmxvY2spOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252
ZXJzaW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpOwog
ICAgICAgICAKICAgICAgICAgbV9ncmFwaC5jbGVhclJlcGxhY2VtZW50cygpOwotICAgICAgICBt
X2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5jbGVhckNQU0NGR0Rh
dGEoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxvZygiR3JhcGggYmVmb3Jl
IFNTQSB0cmFuc2Zvcm1hdGlvbjpcbiIpOwpAQCAtMTEwLDcgKzExMSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRGVjaWRlIHdoZXJlIFBoaXMgYXJlIHRvIGJl
IGluc2VydGVkLiBUaGlzIGNyZWF0ZXMgdGhlIFBoaSdzIGJ1dCBkb2Vzbid0IGluc2VydCB0aGVt
Ci0gICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCB0aGVt
IGJlY2F1c2UgU1NBQ2FsY3VsYXRvciBpcyBzdWNoIGEgYnJvLgorICAgICAgICAvLyB5ZXQuIFdl
IHdpbGwgbGF0ZXIga25vdyB3aGVyZSB0byBpbnNlcnQgYmFzZWQgb24gd2hlcmUgU1NBQ2FsY3Vs
YXRvciB0ZWxscyB1cyB0by4KICAgICAgICAgbV9jYWxjdWxhdG9yLmNvbXB1dGVQaGlzKAogICAg
ICAgICAgICAgWyZdIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogc3NhVmFyaWFibGUsIEJhc2lj
QmxvY2sqIGJsb2NrKSAtPiBOb2RlKiB7CiAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSA9IG1fdmFyaWFibGVGb3JTU0FJbmRleFtzc2FWYXJpYWJsZS0+aW5kZXgo
KV07CkBAIC0zODEsMTggKzM4MiwyMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+dmFs
dWVzQXRIZWFkLmNsZWFyKCk7CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3Vu
aXF1ZTxCYXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKG1fZ3JhcGgubV9hcmd1bWVu
dHMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50
cy5zaXplKCk7IGktLTspIHsKKworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtdWx0aXBsZSBl
bnRyeXBvaW50cyBpbiBERkcgU1NBOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Mzk2CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgu
bV9lbnRyeXBvaW50cy5zaXplKCkgPT0gMSk7CisgICAgICAgIGF1dG8mIGFyZ3VtZW50cyA9IG1f
Z3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2NrKDApKS0+dmFs
dWU7CisgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHMucmVzaXplKGFyZ3VtZW50cy5z
aXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07
KSB7CiAgICAgICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSBGbHVzaGVkSlNWYWx1ZTsKIAot
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dyYXBoLm1f
YXJndW1lbnRzW2ldKTsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGlu
Zy5nZXQoYXJndW1lbnRzW2ldKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobm9kZSk7CiAgICAgICAgICAgICBmb3JtYXQgPSBub2RlLT5zdGFja0FjY2Vzc0RhdGEo
KS0+Zm9ybWF0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRG
b3JtYXRzW2ldID0gZm9ybWF0OwotICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9
IG5vZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRo
ZSBiZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICAgICAgYXJndW1lbnRzW2ldID0g
bm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhl
IGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IG1fZ3JhcGgubV9mb3JtID0gU1NBOwpAQCAtNDE2LDcgKzQyMSwxMiBAQCBwcml2YXRlOgogCiBi
b29sIHBlcmZvcm1TU0FDb252ZXJzaW9uKEdyYXBoJiBncmFwaCkKIHsKLSAgICByZXR1cm4gcnVu
UGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihncmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWdy
YXBoLm1faXNJblNTQUNvbnZlcnNpb24pOworICAgIGdyYXBoLm1faXNJblNTQUNvbnZlcnNpb24g
PSB0cnVlOworICAgIGJvb2wgcmVzdWx0ID0gcnVuUGhhc2U8U1NBQ29udmVyc2lvblBoYXNlPihn
cmFwaCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7Cisg
ICAgZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzI1LDYgKzMyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYg
c3QKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBj
YXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9jYWw6CiAg
ICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46
CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lv
biAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjM3LDYgKzU2MzcsMjMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB1bnJlYWNoYWJsZShub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgdGFnKHRo
aXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcGF5bG9hZCh0aGlzKTsKKworICAgICAgICBHUFJS
ZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB0YWdHUFIgPSB0YWcuZ3By
KCk7CisgICAgICAgIEdQUlJlZyBwYXlsb2FkR1BSID0gcGF5bG9hZC5ncHIoKTsKKworICAgICAg
ICBKU1ZhbHVlKiBwdHIgPSAmcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4obV9qaXQuaml0Q29k
ZSgpLT5jYXRjaE9TUkVudHJ5QnVmZmVyLT5kYXRhQnVmZmVyKCkpW25vZGUtPmNhdGNoT1NSRW50
cnlJbmRleCgpXTsKKyAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIocHRyKSwgdGVtcEdQUik7CisgICAgICAgIG1faml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3ModGVtcEdQUiwgVGFnT2Zmc2V0KSwgdGFnR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMy
KENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBQYXlsb2FkT2Zmc2V0KSwgcGF5bG9hZEdQ
Uik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGFnR1BSLCBwYXlsb2FkR1BSLCBub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQ
aGk6CiAgICAgY2FzZSBVcHNpbG9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01OTk3LDYgKzU5OTcsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBjb21waWxlQ2hlY2tTdWJDbGFzcyhub2RlKTsKICAgICAgICAg
YnJlYWs7CiAKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOiB7CisgICAgICAgIEpTVmFsdWUq
IHB0ciA9ICZyZWludGVycHJldF9jYXN0PEpTVmFsdWUqPihtX2ppdC5qaXRDb2RlKCktPmNhdGNo
T1NSRW50cnlCdWZmZXItPmRhdGFCdWZmZXIoKSlbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCld
OworICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDY0KENDYWxsSGVscGVy
czo6QWRkcmVzcyh0ZW1wR1BSKSwgdGVtcEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGVt
cEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogI2lmIEVOQUJMRShGVExfSklU
KSAgICAgICAgCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDogewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBjYWxsVGllclVwID0gbV9qaXQuYnJhbmNoQWRkMzIoCkBAIC02MDg1LDYg
KzYwOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIH0pOwogICAgICAgICBicmVhazsKICAgICB9CisKICNlbHNlIC8vIEVOQUJMRShGVExfSklU
KQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0
dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzA2LDYgKzE3MDYsMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jawogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgaWYgKG1fYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAg
ICAgIG1faml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgp
LnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCAgQ0NhbGxIZWxwZXJzOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAg
ICAgIG1faml0LmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKKyAgICAgICAgbV9qaXQuZW1pdE1hdGVy
aWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyAgICAgICAgbV9qaXQuZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKG1faml0LmNvZGVCbG9jaygpLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwor
ICAgIH0KKwogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQo
KSk7CiAgICAgCiAgICAgbV9qaXQuaml0QXNzZXJ0SGFzVmFsaWRDYWxsRnJhbWUoKTsKQEAgLTE4
MDAsOCArMTgwNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygK
ICAgICBBU1NFUlQoIW1fY3VycmVudE5vZGUpOwogICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihD
b2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDApLCB0cnVlKTsKIAorICAgIGF1dG8mIGFyZ3VtZW50
cyA9IG1faml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2ppdC5ncmFw
aCgpLmJsb2NrKDApKS0+dmFsdWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2ppdC5jb2Rl
QmxvY2soKS0+bnVtUGFyYW1ldGVycygpOyArK2kpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1f
aml0LmdyYXBoKCkubV9hcmd1bWVudHNbaV07CisgICAgICAgIE5vZGUqIG5vZGUgPSBhcmd1bWVu
dHNbaV07CiAgICAgICAgIGlmICghbm9kZSkgewogICAgICAgICAgICAgLy8gVGhlIGFyZ3VtZW50
IGlzIGRlYWQuIFdlIGRvbid0IGRvIGFueSBjaGVja3MgZm9yIHN1Y2ggYXJndW1lbnRzLgogICAg
ICAgICAgICAgY29udGludWU7CkBAIC0xODg1LDEyICsxODkzLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNyZWF0ZU9TUkVudHJpZXMoKQogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1f
aml0LmdyYXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24n
dCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KLSAgICAgICAg
Ly8gaGVyZSBpZiBuZWVkIGJlLgotICAgICAgICBtX29zckVudHJ5SGVhZHMuYXBwZW5kKG1faml0
LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIGlmIChibG9jay0+aXNPU1JUYXJn
ZXQgfHwgYmxvY2stPmlzQ2F0Y2hFbnRyeXBvaW50KSB7CisgICAgICAgICAgICAvLyBDdXJyZW50
bHkgd2UgZG9uJ3QgaGF2ZSBPU1IgZW50cnkgdHJhbXBvbGluZXMuIFdlIGNvdWxkIGFkZCB0aGVt
CisgICAgICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCisgICAgICAgICAgICBtX29zckVudHJ5
SGVhZHMuYXBwZW5kKG1faml0LmJsb2NrSGVhZHMoKVtibG9ja0luZGV4XSk7CisgICAgICAgIH0K
ICAgICB9CiB9CiAKQEAgLTE5MDEsMTAgKzE5MDgsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bGlua09TUkVudHJpZXMoTGluawogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1faml0Lmdy
YXBoKCkuYmxvY2soYmxvY2tJbmRleCk7CiAgICAgICAgIGlmICghYmxvY2spCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQpCisgICAgICAgIGlm
ICghYmxvY2stPmlzT1NSVGFyZ2V0ICYmICFibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBt
X29zckVudHJ5SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIGlm
IChibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IG1f
aml0LmdyYXBoKCkubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChibG9jayk7CisgICAgICAg
ICAgICBhdXRvJiBhcmd1bWVudHNWZWN0b3IgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgIFZl
Y3RvcjxGbHVzaEZvcm1hdD4gYXJndW1lbnRGb3JtYXRzOworICAgICAgICAgICAgYXJndW1lbnRG
b3JtYXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1lbnRzVmVjdG9yLnNpemUoKSk7Cisg
ICAgICAgICAgICBmb3IgKE5vZGUqIHNldEFyZ3VtZW50IDogYXJndW1lbnRzVmVjdG9yKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHNldEFyZ3VtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIEZs
dXNoRm9ybWF0IGZsdXNoRm9ybWF0ID0gc2V0QXJndW1lbnQtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZmx1c2hGb3JtYXQg
PT0gRmx1c2hlZEludDMyIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRDZWxsIHx8IGZsdXNoRm9y
bWF0ID09IEZsdXNoZWRCb29sZWFuIHx8IGZsdXNoRm9ybWF0ID09IEZsdXNoZWRKU1ZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRGb3JtYXRzLnVuY2hlY2tlZEFwcGVuZChmbHVz
aEZvcm1hdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFy
Z3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoRGVhZEZsdXNoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1faml0Lm5vdGljZUNhdGNoRW50cnlwb2ludCgqYmxvY2ssIG1fb3NyRW50
cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyLCBXVEZNb3ZlKGFyZ3VtZW50Rm9y
bWF0cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc09T
UlRhcmdldCk7CisgICAgICAgICAgICBtX2ppdC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3Ny
RW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBsaW5rQnVmZmVyKTsKKyAgICAgICAgfQogICAg
IH0KKworICAgIG1faml0LmppdENvZGUoKS0+ZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKCk7
CisKICAgICBBU1NFUlQob3NyRW50cnlJbmRleCA9PSBtX29zckVudHJ5SGVhZHMuc2l6ZSgpKTsK
ICAgICAKICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5hYmxlZCgpKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlTmF0dXJhbExv
b3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgICAg
IAogICAgICAgICAvLyBFc3RpbWF0ZSBiYXNpYyBibG9jayBleGVjdXRpb24gY291bnRzIGJhc2Vk
IG9uIGxvb3AgZGVwdGguCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9n
cmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewpAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgICAgICBibG9jay0+ZXhlY3V0aW9uQ291bnQgPSBwb3coMTAsIG1fZ3JhcGgubV9u
YXR1cmFsTG9vcHMtPmxvb3BEZXB0aChibG9jaykpOworICAgICAgICAgICAgYmxvY2stPmV4ZWN1
dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5sb29wRGVwdGgo
YmxvY2spKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRXN0aW1hdGUgYnJhbmNo
IHdlaWdodHMgYmFzZWQgb24gZXhlY3V0aW9uIGNvdW50cy4gVGhpcyBpc24ndCBxdWl0ZSBjb3Jy
ZWN0LiBJdCdsbApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgYXBw
bHlDb3VudHMoZGF0YS0+ZmFsbFRocm91Z2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsMTggKzI2OCwyNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgRmx1c2g6IHsKICAgICAgICAgICAg
IEFTU0VSVChtX2dyYXBoLm1fZm9ybSAhPSBTU0EpOworCisgICAgICAgICAgICBpZiAobV9ncmFw
aC53aWxsQ2F0Y2hFeGNlcHRpb25Jbk1hY2hpbmVGcmFtZShtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YykpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVs
YXggdGhpczoKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwODI0CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUqIHNldExvY2FsID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBsb2NhbCA9IG1fbm9kZS0+bG9jYWwoKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ub2RlSW5kZXg7IGktLTsp
IHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gbV9ibG9jay0+YXQoaSk7CisKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBTZXRMb2NhbCAmJiBub2RlLT5sb2NhbCgpID09
IGxvY2FsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNldExvY2FsID0gbm9kZTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAg
aWYgKGFjY2Vzc2VzT3ZlcmxhcChtX2dyYXBoLCBub2RlLCBBYnN0cmFjdEhlYXAoU3RhY2ssIGxv
Y2FsKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmICghc2V0TG9jYWwpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDggQEAgc3RhdGljIEZ1bmN0aW9uV2hpdGVsaXN0JiBlbnN1cmVHbG9iYWxGVAogICAgIHJldHVy
biBmdGxXaGl0ZWxpc3Q7CiB9CiAKK3VzaW5nIE5hdHVyYWxMb29wID0gQ1BTTmF0dXJhbExvb3A7
CisKIGNsYXNzIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogcHVi
bGljOgogICAgIFRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UoR3JhcGgmIGdyYXBoKQpAQCAtODEs
OCArODMsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlT1NSRW50cnlUb0ZU
TCgpKQogICAgICAgICAgICAgbGV2ZWwgPSBGVEw6OkNhbkNvbXBpbGU7CiAgICAgICAgIAotICAg
ICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwotICAgICAgICBOYXR1cmFsTG9vcHMm
IG5hdHVyYWxMb29wcyA9ICptX2dyYXBoLm1fbmF0dXJhbExvb3BzOworICAgICAgICBtX2dyYXBo
LmVuc3VyZUNQU05hdHVyYWxMb29wcygpOworICAgICAgICBDUFNOYXR1cmFsTG9vcHMmIG5hdHVy
YWxMb29wcyA9ICptX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzOwogICAgICAgICBIYXNoTWFwPGNv
bnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IG5hdHVyYWxMb29wVG9Mb29wSGludCA9IGJ1aWxk
TmF0dXJhbExvb3BUb0xvb3BIaW50TWFwKG5hdHVyYWxMb29wcyk7CiAKICAgICAgICAgSGFzaE1h
cDx1bnNpZ25lZCwgTG9vcEhpbnREZXNjcmlwdG9yPiB0aWVyVXBIaWVyYXJjaHk7CkBAIC0xODIs
NyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
SGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxMb29wVG9M
b29wSGludE1hcChjb25zdCBOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKKyAgICBIYXNoTWFw
PGNvbnN0IE5hdHVyYWxMb29wKiwgdW5zaWduZWQ+IGJ1aWxkTmF0dXJhbExvb3BUb0xvb3BIaW50
TWFwKGNvbnN0IENQU05hdHVyYWxMb29wcyYgbmF0dXJhbExvb3BzKQogICAgIHsKICAgICAgICAg
SGFzaE1hcDxjb25zdCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcHNUb0xvb3BI
aW50OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNCwxMCArMTM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAmJiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJ
c1ZhbGlkKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAg
ICAgICAgLy8gQ3VycmVudGx5IHdlIHNob3VsZCBvbmx5IGJlIGRvaW5nIHRoaXMgaG9pc3Rpbmcg
Zm9yIFNldEFyZ3VtZW50cyBhdCB0aGUgcHJvbG9ndWUuCi0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBz
aG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRBcmd1bWVudHMgYXQgYW4g
ZW50cnlwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9lbnRyeXBv
aW50cy5jb250YWlucyhibG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4g
b3JpZ2luID0gbm9kZS0+b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChvcmlnaW4uZXhpdE9LKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBH
ZXRMb2NhbCwgb3JpZ2luLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxp
ZGF0ZS5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFsaWRhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywxMCArODMsMTMgQEAgcHVibGlj
OgogICAgICAgICAvLyBOQi4gVGhpcyBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciBwZXJmb3JtYW5j
ZSwgc2luY2UgaXQgaXMgbm90IGludGVuZGVkIHRvIHJ1bgogICAgICAgICAvLyBpbiByZWxlYXNl
IGJ1aWxkcy4KIAotICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2YXJpYWJsZXMg
YXQgdGhlIGhlYWQgb2YgdGhlIHJvb3QgYmxvY2sgYXJlIGRlYWQuCi0gICAgICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcm9vdC0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAg
ICAgICAgIFZfRVFVQUwoKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCByb290KSwgc3RhdGlj
X2Nhc3Q8Tm9kZSo+KDApLCByb290LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkpOworICAgICAg
ICBWQUxJREFURSgobV9ncmFwaC5ibG9jaygwKSksIG1fZ3JhcGgubV9lbnRyeXBvaW50cy5jb250
YWlucyhtX2dyYXBoLmJsb2NrKDApKSk7CisKKyAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCBhbGwg
bG9jYWwgdmFyaWFibGVzIGF0IHRoZSBoZWFkIG9mIGFsbCBlbnRyeXBvaW50cyBhcmUgZGVhZC4K
KyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9ncmFwaC5tX2VudHJ5cG9p
bnRzKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50cnlwb2ludC0+
dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKKyAgICAgICAgICAgICAgICBW
X0VRVUFMKCh2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKSwgZW50cnlwb2ludCksIHN0YXRpY19j
YXN0PE5vZGUqPihudWxscHRyKSwgZW50cnlwb2ludC0+dmFyaWFibGVzQXRIZWFkLmxvY2FsKGkp
KTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gVmFsaWRhdGUgcmVmIGNvdW50cyBh
bmQgdXNlcy4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0lu
ZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDggKzc0
LDggQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIFByb2ZpbGVyOjpPcmln
aW5TdGFjaygpLAogICAgICAgICAgICAgdG9DU3RyaW5nKCJHZW5lcmF0ZWQgRlRMIEpJVCBjb2Rl
IGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShjb2RlQmxvY2ssIEpJVENvZGU6OkZUTEpJVCks
ICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgZ3JhcGgubV9jb2RlQmxvY2stPmluc3RydWN0aW9u
Q291bnQoKSwgIjpcbiIpKTsKICAgICAgICAgCi0gICAgICAgIGdyYXBoLmVuc3VyZURvbWluYXRv
cnMoKTsKLSAgICAgICAgZ3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIGdyYXBo
LmVuc3VyZVNTQURvbWluYXRvcnMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBTmF0dXJhbExv
b3BzKCk7CiAgICAgICAgIAogICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVi
bGljOgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG5hbWUgPSAianNCb2R5IjsKICAgICAg
ICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZVNTQURvbWluYXRvcnMoKTsKIAogICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9u
RW5hYmxlZCgpKQogICAgICAgICAgICAgZGF0YUxvZygiRnVuY3Rpb24gcmVhZHksIGJlZ2lubmlu
ZyBsb3dlcmluZy5cbiIpOwpAQCAtMjY2LDggKzI2Niw5IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgICAgICBtX25vZGUgPSBudWxscHRyOwogICAgICAgICBtX29yaWdpbiA9IE5vZGVPcmlnaW4o
Q29kZU9yaWdpbigwKSwgQ29kZU9yaWdpbigwKSwgdHJ1ZSk7CisgICAgICAgIGF1dG8mIGFyZ3Vt
ZW50cyA9IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuZmluZChtX2dyYXBoLmJsb2Nr
KDApKS0+dmFsdWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCk7IGktLTspIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1f
YXJndW1lbnRzW2ldOworICAgICAgICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAg
ICAgICAgICAgIG1fb3V0LnNldE9yaWdpbihub2RlKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSk7CiAgICAgICAgICAg
ICAKQEAgLTQ0Myw3ICs0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgREZHOjpCYXNpY0Js
b2NrKiB0YXJnZXQgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAobV9n
cmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgeworICAg
ICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXMobV9oaWdoQmxv
Y2ssIHRhcmdldCkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZUNvbXBpbGF0aW9uRW5h
YmxlZCgpKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJCbG9jayAiLCAqdGFyZ2V0LCAi
IHdpbGwgYmFpbCBhbHNvLlxuIik7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jZmFIYXNWaXNp
dGVkID0gZmFsc2U7CkBAIC0xNDQzMyw3ICsxNDQzNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAg
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAo
IW1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXModmFsdWUuYmxvY2soKSwgbV9oaWdoQmxv
Y2spKQorICAgICAgICBpZiAoIW1fZ3JhcGgubV9zc2FEb21pbmF0b3JzLT5kb21pbmF0ZXModmFs
dWUuYmxvY2soKSwgbV9oaWdoQmxvY2spKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJl
dmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTc5Niw2ICs3OTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FWlosIGludCwg
aW50MzJfdCwgaW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oUF9KSVRPcGVyYXRpb25fRSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRUpTLCBHUFJSZWcsIHNpemVfdCk7CisgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVVpLCB1
aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19K
SVRPcGVyYXRpb25fRUNDLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSiwgUmVnaXN0ZXJJ
RCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVy
YXRpb25fRUpJLCBHUFJSZWcsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Myw2ICs0
NjMsMTMgQEAgQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogICAgIHJl
dHVybiBjYWxsOwogfQogCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWkgb3BlcmF0aW9uLCB1aW50MzJfdCBhcmcx
KQoreworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIoYXJnMSkp
OworICAgIHVwZGF0ZVRvcENhbGxGcmFtZSgpOworICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7Cit9CisKICNpZiBVU0UoSlNWQUxVRTY0KQogQUxXQVlTX0lOTElORSBNYWNyb0Fzc2Vt
Ymxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRp
b24sIEdQUlJlZyBhcmcxLCBpbnQzMl90IGFyZzIsIGludDMyX3QgYXJnMykKIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9u
IDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODU2LDYgKzg1NiwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9j
YXRjaChJbnN0cnVjdGlvbiogY3VyCiAKICAgICB1bnNpZ25lZCB0aHJvd25WYWx1ZSA9IGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgZW1pdFN0b3JlKHRocm93blZhbHVlLCBy
ZWdUMSwgcmVnVDApOworCisgICAgLy8gRklYTUU6IGNvbnNpZGVyIGlubGluZSBjYWNoaW5nIHRo
ZSBwcm9jZXNzIG9mIGRvaW5nIE9TUiBlbnRyeSwgaW5jbHVkaW5nCisgICAgLy8gYXJndW1lbnQg
dHlwZSBwcm9vZnMsIHN0b3JpbmcgbG9jYWxzIHRvIHRoZSBidWZmZXIsIGV0YworICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTgKKworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBtX2J5dGVjb2RlT2Zmc2V0KTsK
KyAgICBhdXRvIHNraXBPU1JFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVH
UFIpOworICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICBqdW1wKHJldHVyblZhbHVl
R1BSKTsKKyAgICBza2lwT1NSRW50cnkubGluayh0aGlzKTsKKyAgICBpZiAoc2hvdWxkRW1pdFBy
b2ZpbGluZygpKSB7CisgICAgICAgIFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZl
ciA9IHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5wb2ludGVyKTsKKyAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVncyhyZWdUMSwgcmVnVDApOworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihw
cm9maWxlLm1fb3BlcmFuZCwgcmVncyk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKHByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMjIxMDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTU0LDYgKzU1NCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChJbnN0cnVj
dGlvbiogY3VyCiAKICAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMCwgRXhjZXB0aW9uOjp2YWx1ZU9m
ZnNldCgpKSwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCk7CisKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNh
Y2hpbmcgdGhlIHByb2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKKyAgICAvLyBh
cmd1bWVudCB0eXBlIHByb29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZlciwgZXRjCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTU5OAorCisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVP
ZmZzZXQpOworICAgIGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1
cm5WYWx1ZUdQUik7CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0
dXJuVmFsdWVHUFIpOworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIGlmIChzaG91
bGRFbWl0UHJvZmlsaW5nKCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
ciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyByZWdzKHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
cHJvZmlsZS5tX29wZXJhbmQsIHJlZ3MpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5n
U2l0ZShwcm9maWxlLm1fcHJvZmlsZSk7CisgICAgICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBK
SVQ6OmVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDIyMTAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MTUsNiArMTUxNSwxOSBAQCBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChjb2RlQmxvY2ss
ICJkZWxheU9wdGltaXplVG9ERkciLCAoIk9TUiBmYWlsZWQiKSk7CiAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdCgwLCAwKTsKIH0KKworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JF
bnRlckF0Q2F0Y2goRXhlY1N0YXRlKiBleGVjLCB1aW50MzJfdCBieXRlY29kZUluZGV4KQorewor
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cigmdm0sIGV4ZWMpOworCisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBsYWNlbWVudCA9IGV4
ZWMtPmNvZGVCbG9jaygpLT5yZXBsYWNlbWVudCgpOworICAgIGlmIChvcHRpbWl6ZWRSZXBsYWNl
bWVudC0+aml0VHlwZSgpICE9IEpJVENvZGU6OkRGR0pJVCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KERGRzo6cHJlcGFyZUNhdGNoT1NS
RW50cnkoZXhlYywgb3B0aW1pemVkUmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwog
I2VuZGlmCiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFycmF5VmFsdWUsIGludDMyX3QgaW5kZXgs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDYgKzMx
OCw3IEBAIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmEKIHR5cGVkZWYg
Y2hhciogKEpJVF9PUEVSQVRJT04gKlBfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50
MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJh
dGlvbl9FUVopKEV4ZWNTdGF0ZSosIGludDY0X3QsIGludDMyX3QpOwogdHlwZWRlZiBjaGFyKiAo
SklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRURaKShFeGVjU3RhdGUqLCBkb3VibGUsIGlu
dDMyX3QpOwordHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVVp
KShFeGVjU3RhdGUqLCB1aW50MzJfdCk7CiB0eXBlZGVmIFNsb3dQYXRoUmV0dXJuVHlwZSAoSklU
X09QRVJBVElPTiAqU3BydF9KSVRPcGVyYXRpb25fRUNsaSkoRXhlY1N0YXRlKiwgQ2FsbExpbmtJ
bmZvKik7CiB0eXBlZGVmIFN0cmluZ0ltcGwqIChKSVRfT1BFUkFUSU9OICpUX0pJVE9wZXJhdGlv
bl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogdHlwZWRlZiBKU1N0cmluZyogKEpJVF9P
UEVSQVRJT04gKkpzc19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwpAQCAt
Mzk4LDYgKzM5OSw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvdyhFeGVjU3QK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZWJ1ZyhFeGVjU3RhdGUqLCBpbnQzMl90KSBX
VEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBTbG93UGF0aFJldHVyblR5cGUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShFeGVjU3RhdGUqLCBpbnQzMl90KSBXVEZfSU5U
RVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChF
eGVjU3RhdGUqLCB1aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJbmRleChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50
MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEdl
dHRlckJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90
IG9wdGlvbnMsIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjIxMDI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYzOCw2ICsxNjM4LDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9sb2dfc2hhZG8KICAgICBMTElOVF9FTkQoKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmRCdWZmZXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmRCdWZmZXIqPihwY1szXS51LnBvaW50ZXIpOworICAgIGJ1ZmZlci0+Zm9y
RWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgcHJv
ZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hl
Y2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgfSk7CisKKyAgICBMTElO
VF9FTkQoKTsKK30KKwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdGhyb3df
c3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qIHZtLCBQcm90b0NhbGxGcmFtZSogcHJvdG9GcmFtZSkK
IHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB2bS0+dG9wQ2FsbEZyYW1lOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDIyMTAy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9oYQogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
ZnJvbV9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF90
b19zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NoZWNrX2lm
X2V4Y2VwdGlvbl9pc191bmNhdGNoYWJsZV9hbmRfbm90aWZ5X3Byb2ZpbGVyKTsKK0xMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRjaCk7CiBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkb3dfY2hpY2tl
bl90YWlsKTsKIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNr
X292ZXJmbG93X2Vycm9yKFZNKiwgUHJvdG9DYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTE5OTcsNyArMTk5NywxMCBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KIAogICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0
byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQz
IGFib3ZlLgotICAgIGRpc3BhdGNoKDMpCisKKyAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQorCisgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX2Nh
dGNoX2xlbmd0aCkKIAogX2xsaW50X29wX2VuZDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQkocmV2aXNpb24gMjIxMDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTE5NzQsNiAr
MTk3NCw5IEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBzdG9yZXEgdDMsIFtjZnIsIHQyLCA4XQog
CiAgICAgdHJhY2VFeGVjdXRpb24oKQorCisgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKKwogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9jYXRj
aF9sZW5ndGgpCiAKIApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTAyOCkKKysrIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTctMDgtMjIgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb21waWxpbmcg
Y2F0Y2ggaW4gdGhlIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0NTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBnZW5lcmFsaXplcyB0aGUgQmFja3dhcmRzR3JhcGggZmFrZSBy
b290IGludG8gYSBtb3JlIGdlbmVyYWxpemFibGUKKyAgICAgICAgY2xhc3MgY2FsbGVkIFNpbmds
ZVJvb3RHcmFwaC4gU2luZ2xlUm9vdEdyYXBoIGV4cG9zZXMgdGhlIGdlbmVyYWwgZ3JhcGggaW50
ZXJmYWNlCisgICAgICAgIHVzZWQgaW4gRG9taW5hdG9ycyBhbmQgTmF0dXJhbExvb3BzLiBTaW5n
bGVSb290R3JhcGggdGFrZXMgYXMgaW5wdXQgYSBncmFwaCB3aXRoCisgICAgICAgIHRoZSBub3Jt
YWwgZ3JhcGggaW50ZXJmYWNlLCBidXQgYWxzbyBhbGxvd3MgdGhlIGlucHV0IGdyYXBoIHRvIGNv
bnRhaW4gbW9yZSB0aGFuCisgICAgICAgIG9uZSByb290LiBTaW5nbGVSb290R3JhcGggdGhlbiBl
eHBvc2VzIGEgc2luZ2xlIHJvb3QsIHdoaWNoIGl0IGNyZWF0ZXMsIHRoYXQgaGFzCisgICAgICAg
IGFuIG91dGdvaW5nIGVkZ2UgdG8gYWxsIHRoZSByb290cyBpbiB0aGUgb3JpZ2luYWwgZ3JhcGgu
CisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3
dGYvQmFja3dhcmRzR3JhcGguaDoKKyAgICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6OmR1bXAp
OgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNHcmFwaDo6cm9vdE5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpCYWNrd2FyZHNHcmFwaDo6Tm9kZTo6Tm9kZSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OkJhY2t3YXJkc0dyYXBoOjpOb2RlOjpyb290KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6QmFja3dhcmRzR3JhcGg6Ok5vZGU6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpCYWNrd2FyZHNHcmFwaDo6Tm9kZTo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OkJhY2t3YXJkc0dyYXBoOjpOb2RlOjpvcGVyYXRvciBib29sKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6Ok5vZGU6OmlzUm9vdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpOb2RlOjpub2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpTZXQ6OlNldCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpTZXQ6OmFkZCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpTZXQ6OnJlbW92ZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpTZXQ6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6OlNldDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OkJhY2t3YXJkc0dyYXBoOjpNYXA6Ok1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OkJhY2t3YXJkc0dyYXBoOjpNYXA6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFj
a3dhcmRzR3JhcGg6Ok1hcDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJk
c0dyYXBoOjpNYXA6Om9wZXJhdG9yW10pOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9Eb21pbmF0
b3JzLmg6CisgICAgICAgIChXVEY6OkRvbWluYXRvcnM6OkRvbWluYXRvcnMpOgorICAgICAgICAo
V1RGOjpEb21pbmF0b3JzOjpmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJP
Zik6CisgICAgICAgIChXVEY6OkRvbWluYXRvcnM6OmZvckFsbEJsb2Nrc0luUHJ1bmVkSXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKToKKyAgICAgICAgKFdURjo6RG9taW5hdG9yczo6aXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKToKKyAgICAgICAgKFdURjo6RG9taW5hdG9yczo6Zm9yQWxs
QmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKToKKyAgICAgICAgKiB3dGYv
U2luZ2xlUm9vdEdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGhO
b2RlOjpyb290TmFtZSk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaE5vZGU6OlNpbmds
ZVJvb3RHcmFwaE5vZGUpOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGhOb2RlOjpyb290
KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoTm9kZTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaE5vZGU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV1RG
OjpTaW5nbGVSb290R3JhcGhOb2RlOjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKFdURjo6U2lu
Z2xlUm9vdEdyYXBoTm9kZTo6aXNSb290KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBo
Tm9kZTo6bm9kZSk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaFNldDo6YWRkKToKKyAg
ICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoU2V0OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpT
aW5nbGVSb290R3JhcGhTZXQ6OmNvbnRhaW5zKToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdy
YXBoU2V0OjpkdW1wKToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdE1hcDo6U2luZ2xlUm9vdE1h
cCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RNYXA6OmNsZWFyKToKKyAgICAgICAgKFdURjo6
U2luZ2xlUm9vdE1hcDo6c2l6ZSk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RNYXA6Om9wZXJh
dG9yW10pOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGg6OlNpbmdsZVJvb3RHcmFwaCk6
CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6cm9vdCk6CisgICAgICAgIChXVEY6OlNp
bmdsZVJvb3RHcmFwaDo6bmV3TWFwKToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjpz
dWNjZXNzb3JzKToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjpwcmVkZWNlc3NvcnMp
OgorICAgICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGg6OmluZGV4KToKKyAgICAgICAgKFdURjo6
U2luZ2xlUm9vdEdyYXBoOjpub2RlKToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjpu
dW1Ob2Rlcyk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6ZHVtcCk6CisgICAgICAg
IChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6YXNzZXJ0SXNDb25zaXN0ZW50KToKKwogMjAxNy0wOC0y
MSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZvbGxvdyB1cF06
IEFkZCBiYWNrIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgTUFTTV9QUk9CRSBmcm9tIHRoZSBidWls
ZC4KSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjIxMDI4KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzM0LDYgKzMzNCw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0
OTczOSAvKiBTeW1ib2xJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5
bWJvbEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2
ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJ
RC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTM5LDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRF
MTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUx
NDYgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQy
MSAvKiBTaW5nbGVSb290R3JhcGguaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIg
LyogU2NvcGUuaCAqLywKIAkJCQkwRkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFt
YmRhLmggKi8sCiAJCQkJMEY2NkIyODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICov
LApJbmRleDogU291cmNlL1dURi93dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCShyZXZpc2lvbiAyMjEwMjgpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2Rl
V29ya2xpc3QuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
U2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTM4LDEzMyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8g
dGhlIHN5bnRoZXRpYyByb290IHdlIGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogcm9vdE5hbWUoKSB7IHJldHVybiAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVu
YW1lIEdyYXBoOjpOb2RlKCkpCi0gICAgICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgTm9kZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAg
ICAgICAgICAgIHJlc3VsdC5tX2lzUm9vdCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVy
Lm1fbm9kZQotICAgICAgICAgICAgICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290Owot
ICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgICAgIH0KLQotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAg
ICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAg
ICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgU2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRT
ZXQobV9oYXNSb290LCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5u
b2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAg
cmV0dXJuIG1fc2V0LnJlbW92ZShub2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChub2RlLmlzUm9vdCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9zZXQuY29udGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChtX2hhc1Jvb3QpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3RO
YW1lKCksICIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7
Ci0gICAgICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFw
KEdyYXBoJiBncmFwaCkKLSAgICAgICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFw
PFQ+KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBtX21hcC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0g
VCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X21hcC5zaXplKCkgKyAxOyB9Ci0KLSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAg
ICB9Ci0KLSAgICAgICAgY29uc3QgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2lu
ZGV4XTsKLSAgICAgICAgfQotCi0gICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUo
KV07Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUm
IG5vZGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8
TWFwKj4odGhpcykpW25vZGVdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQg
bV9yb290OwotICAgIH07Ci0KKyAgICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxH
cmFwaD47CisgICAgdXNpbmcgU2V0ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47
CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBo
KEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
bm9kZSkKICAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYg
KG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0
dXJuIG91dC50b0NTdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMTAy
OCkKKysrIFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFw
aD4KIGNsYXNzIERvbWluYXRvcnMgewogcHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFt
ZSBHcmFwaDo6TGlzdDsKKwogICAgIERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZD
aGVjayA9IGZhbHNlKQogICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRh
KGdyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1
YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAg
ICAgICAgIGxlbmdhdWVyVGFyamFuLmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dy
YXBoLnRlbXBsYXRlIG5ld01hcDxCbG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20g
aGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFu
ZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBv
dmVyIHRoaXMgdHJlZSB0byBjb21wdXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJl
IHVzZWQgZm9yIGRvbWluYW5jZQogICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0g
ICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0
eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2
b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3Qm
IGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9j
a3NJblBydW5lZEl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20s
CkBAIC0yNTUsNyArMjU1LDcgQEAgcHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5n
IHBydW5lZCBTU0EgZm9ybS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZv
aWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAg
ICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQorICAgICAgICBjb25zdCBMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ICAgIHsKICAgICAgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJs
b2Nrc0luSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3Jh
cGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6
Okxpc3QmIGZyb20pIGNvbnN0CisgICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YoY29uc3QgTGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5
cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVk
RG9taW5hbmNlRnJvbnRpZXJPZkltcGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAg
ICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tz
SW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFt
ZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAg
ICAgY29uc3QgTGlzdCYgZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7
Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAg
TGlzdCB3b3JrbGlzdCA9IGZyb207CiAgICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRh
a2VMYXN0KCk7CiAgICAgICAgICAgICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJ
bXBsKApJbmRleDogU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9o
CisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVX
b3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBH
cmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVz
ZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQu
CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsK
KworICAgIFNpbmdsZVJvb3RHcmFwaE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5
cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAg
IH0KKworICAgIHN0YXRpYyBTaW5nbGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAg
ICAgU2luZ2xlUm9vdEdyYXBoTm9kZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAw
OworICAgICAgICByZXN1bHQubV9pc1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2Rl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9u
b2RlCisgICAgICAgICAgICAmJiBtX2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmds
ZVJvb3RHcmFwaE5vZGUoKTsgfQorCisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faXNSb290OworICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2Rl
IG5vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAg
IHJldHVybiBtX25vZGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpO
b2RlIG1fbm9kZTsKKyAgICBib29sIG1faXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJv
b3RHcmFwaFNldCgpID0gZGVmYXVsdDsKKyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBu
b2RlKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1
cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFk
ZChub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9k
ZSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IGNoZWNrQW5kU2V0KG1faGFzUm9vdCwgZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVt
b3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUm
IG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJl
dHVybiBtX2hhc1Jvb3Q7CisgICAgICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUo
KSk7CisgICAgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAobV9oYXNSb290KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJv
b3ROYW1lKCksICIgIik7CisgICAgICAgIG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNS
b290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBo
PgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFw
aE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQor
ICAgICAgICA6IG1fbWFwKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9
CisKKyAgICBTaW5nbGVSb290TWFwKFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBt
X21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhl
ci5tX3Jvb3QpKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAg
ICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAg
ICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFd
OworICAgIH0KKworICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykp
W2luZGV4XTsKKyAgICB9CisKKyAgICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisg
ICAgeworICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jv
b3Q7CisgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29u
c3QgVCYgb3BlcmF0b3JbXShjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0K
KyAgICAKK3ByaXZhdGU6CisgICAgdHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21h
cDsKKyAgICBUIG1fcm9vdDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3Mg
U2luZ2xlUm9vdEdyYXBoIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3Jh
cGgpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcg
Tm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmds
ZVJvb3RHcmFwaFNldDxHcmFwaD47CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1h
cCA9IFNpbmdsZVJvb3RNYXA8VCwgR3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9k
ZSwgND47CisKKyAgICBTaW5nbGVSb290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1f
Z3JhcGgoZ3JhcGgpCisgICAgeworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJl
YWxSb290IDogbV9ncmFwaC5yb290cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5w
cmVkZWNlc3NvcnMocmVhbFJvb3QpLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNj
ZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JT
ZXQuYWRkKHJlYWxSb290KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vz
c29yTGlzdC5zaXplKCkpOworICAgIH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJu
IE5vZGU6OnJvb3QoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4g
bmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3Nv
cnMoY29uc3QgTm9kZSYgbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lz
dGVudCgpOworCisgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJu
IG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3Ig
KHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2Rl
KCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBMaXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBj
b25zdAorICAgIHsKKyAgICAgICAgYXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAg
aWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIHJldHVybiBMaXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAg
ICBMaXN0IHJlc3VsdDsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDog
bV9ncmFwaC5wcmVkZWNlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBpbmRleChjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUu
aXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgu
aW5kZXgobm9kZS5ub2RlKCkpICsgMTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQg
aW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0
dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAg
IH0KKworICAgIHVuc2lnbmVkIG51bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2dyYXBoLm51bU5vZGVzKCkgKyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2Rl
IG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAg
ICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAg
IGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9v
dE5hbWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1
bXAobm9kZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9
CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAg
IE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwg
IjpcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAg
ICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29y
IDogcHJlZGVjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwg
ZHVtcChwcmVkZWNlc3NvcikpOworICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAg
ICAgICAgb3V0LnByaW50KCIgICAgU3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21t
YVByaW50ZXIoKTsKKyAgICAgICAgICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3Jz
KG5vZGUpKQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3Ip
KTsKKyAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJp
dmF0ZToKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QK
KyAgICB7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJv
b3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBj
YW4gY2FjaGUKKyAgICAgICAgLy8gdGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEg
dXNlciBvZiB0aGlzIGNoYW5nZXMgdGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAv
LyBmdW5jdGlvbiwgaXQncyBleHBlY3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3
IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7
CisgICAgICAgIGZvciAodHlwZW5hbWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJv
b3RzKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9v
dCkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFs
Um9vdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUo
KSk7CisgICAgICAgIEFTU0VSVChyb290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JM
aXN0KTsKKyNlbmRpZgorICAgIH0KKworICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9y
b290U3VjY2Vzc29yTGlzdDsKKyAgICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3Nv
clNldDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RH
cmFwaDsKKworI2VuZGlmIC8vIFdURl9TaW5nbGVSb290R3JhcGhfaAorCg==
</data>
<flag name="review"
          id="339198"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318930</attachid>
            <date>2017-08-23 15:22:37 -0700</date>
            <delta_ts>2017-08-23 16:15:17 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>246032</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjExMDkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzNiBAQAorMjAxNy0wOC0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbXBpbGluZyBjYXRjaCBpbiB0aGUgREZHCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ1OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2ht
YXJrcy9kZWx0YS1ibHVlLXRyeS1jYXRjaC5qczogQWRkZWQuCisgICAgICAgIChleGNlcHRpb24p
OgorICAgICAgICAodmFsdWUpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24pOgorICAgICAg
ICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmFkZCk6CisgICAgICAgIChPcmRlcmVkQ29s
bGVjdGlvbi5wcm90b3R5cGUuYXQpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnNpemUpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLnJlbW92ZUZp
cnN0KToKKyAgICAgICAgKE9yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmUpOgorICAg
ICAgICAoU3RyZW5ndGgpOgorICAgICAgICAoU3RyZW5ndGguc3Ryb25nZXIpOgorICAgICAgICAo
U3RyZW5ndGgud2Vha2VyKToKKyAgICAgICAgKFN0cmVuZ3RoLndlYWtlc3RPZik6CisgICAgICAg
IChTdHJlbmd0aC5zdHJvbmdlc3QpOgorICAgICAgICAoU3RyZW5ndGgucHJvdG90eXBlLm5leHRX
ZWFrZXIpOgorICAgICAgICAoQ29uc3RyYWludCk6CisgICAgICAgIChDb25zdHJhaW50LnByb3Rv
dHlwZS5hZGRDb25zdHJhaW50KToKKyAgICAgICAgKENvbnN0cmFpbnQucHJvdG90eXBlLnNhdGlz
ZnkpOgorICAgICAgICAoQ29uc3RyYWludC5wcm90b3R5cGUuZGVzdHJveUNvbnN0cmFpbnQpOgor
ICAgICAgICAoQ29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1dCk6CisgICAgICAgIChVbmFyeUNv
bnN0cmFpbnQpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRUb0dyYXBo
KToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuY2hvb3NlTWV0aG9kKToKKyAg
ICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQpOgorICAgICAgICAo
VW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzKToKKyAgICAgICAgKFVuYXJ5Q29u
c3RyYWludC5wcm90b3R5cGUub3V0cHV0KToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90
b3R5cGUucmVjYWxjdWxhdGUpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5t
YXJrVW5zYXRpc2ZpZWQpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pbnB1
dHNLbm93bik6CisgICAgICAgIChVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21H
cmFwaCk6CisgICAgICAgIChTdGF5Q29uc3RyYWludCk6CisgICAgICAgIChTdGF5Q29uc3RyYWlu
dC5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChFZGl0Q29uc3RyYWludC5wcm90b3R5cGUu
aXNJbnB1dCk6CisgICAgICAgIChFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSk6Cisg
ICAgICAgIChCaW5hcnlDb25zdHJhaW50KToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJv
dG90eXBlLmNob29zZU1ldGhvZCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlw
ZS5hZGRUb0dyYXBoKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlzU2F0
aXNmaWVkKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMp
OgorICAgICAgICAoQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXQpOgorICAgICAgICAo
QmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUub3V0cHV0KToKKyAgICAgICAgKEJpbmFyeUNvbnN0
cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQu
cHJvdG90eXBlLm1hcmtVbnNhdGlzZmllZCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnBy
b3RvdHlwZS5pbnB1dHNLbm93bik6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlw
ZS5yZW1vdmVGcm9tR3JhcGgpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50KToKKyAgICAgICAg
KFNjYWxlQ29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCk6CisgICAgICAgIChTY2FsZUNv
bnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCk6CisgICAgICAgIChTY2FsZUNvbnN0
cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50LnBy
b3RvdHlwZS5leGVjdXRlKToKKyAgICAgICAgKFNjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVj
YWxjdWxhdGUpOgorICAgICAgICAoRXF1YWxpdHlDb25zdHJhaW50KToKKyAgICAgICAgKEVxdWFs
aXR5Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChWYXJpYWJsZSk6Cisg
ICAgICAgIChWYXJpYWJsZS5wcm90b3R5cGUuYWRkQ29uc3RyYWludCk6CisgICAgICAgIChWYXJp
YWJsZS5wcm90b3R5cGUucmVtb3ZlQ29uc3RyYWludCk6CisgICAgICAgIChQbGFubmVyKToKKyAg
ICAgICAgKFBsYW5uZXIucHJvdG90eXBlLmluY3JlbWVudGFsQWRkKToKKyAgICAgICAgKFBsYW5u
ZXIucHJvdG90eXBlLmluY3JlbWVudGFsUmVtb3ZlKToKKyAgICAgICAgKFBsYW5uZXIucHJvdG90
eXBlLm5ld01hcmspOgorICAgICAgICAoUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4pOgorICAg
ICAgICAoUGxhbm5lci5wcm90b3R5cGUuZXh0cmFjdFBsYW5Gcm9tQ29uc3RyYWludHMpOgorICAg
ICAgICAoUGxhbm5lci5wcm90b3R5cGUuYWRkUHJvcGFnYXRlKToKKyAgICAgICAgKFBsYW5uZXIu
cHJvdG90eXBlLnJlbW92ZVByb3BhZ2F0ZUZyb20pOgorICAgICAgICAoUGxhbm5lci5wcm90b3R5
cGUuYWRkQ29uc3RyYWludHNDb25zdW1pbmdUbyk6CisgICAgICAgIChQbGFuKToKKyAgICAgICAg
KFBsYW4ucHJvdG90eXBlLmFkZENvbnN0cmFpbnQpOgorICAgICAgICAoUGxhbi5wcm90b3R5cGUu
c2l6ZSk6CisgICAgICAgIChQbGFuLnByb3RvdHlwZS5jb25zdHJhaW50QXQpOgorICAgICAgICAo
UGxhbi5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChjaGFpblRlc3QpOgorICAgICAgICAo
cHJvamVjdGlvblRlc3QpOgorICAgICAgICAoY2hhbmdlKToKKyAgICAgICAgKGRlbHRhQmx1ZSk6
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2Zha2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hl
bi1maW5pc2hlZC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoTnVtYmVy
cyk6CisgICAgICAgIChOdW1iZXJzLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKHJldHVybi5U
cmFuc3Bvc2UpOgorICAgICAgICAocmV0dXJuLlRyYW5zcG9zZS5wcm90b3R5cGUubmV4dCk6Cisg
ICAgICAgICh0cmFuc3Bvc2UpOgorICAgICAgICAodmVyaWZ5RXZlbik6CisgICAgICAgICh2ZXJp
ZnlTdHJpbmcpOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHJ1bkl0ZXJhdG9ycyk6CisgICAg
ICAgICogbWljcm9iZW5jaG1hcmtzL3RyeS1jYXRjaC13b3JkLWNvdW50LmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC5hc3NlcnQpOgorICAgICAgICAoRU9GKToKKyAgICAgICAgKGxldC50ZXh0cyk6
CisgICAgICAgIChsZXQuby5hcHBseSk6CisgICAgICAgIChmb28pOgorICAgICAgICAoYmFyKToK
KyAgICAgICAgKGYpOgorICAgICAgICAocnVuKToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAg
KHRlc3QyKToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKGZuKToKKyAgICAgICAgKEEpOgor
ICAgICAgICAoQik6CisgICAgICAgIChBLnByb3RvdHlwZS5nZXRWYWx1ZSk6CisgICAgICAgIChC
LnByb3RvdHlwZS5nZXRQYXJlbnRWYWx1ZSk6CisgICAgICAgIChzdHJsZW4pOgorICAgICAgICAo
c3VtLjApOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChyZXN1bHQudGVzdC5vKToKKyAgICAg
ICAgKHNldCBhZGQuc2V0IGFkZCk6CisgICAgICAgIChzZXQgZm9yRWFjaCk6CisgICAgICAgIChz
dHJpbmdIYXNoKToKKyAgICAgICAgKHNldCBpZik6CisgICAgICAgICh0ZXN0RnVuY3Rpb24pOgor
ICAgICAgICAoc2V0IGRlbGV0ZS5zZXQgaGFzLnNldCBhZGQpOgorICAgICAgICAqIHN0cmVzcy9j
YXRjaC1zZXQtYXJndW1lbnQtc3BlY3VsYXRpb24tZmFpbHVyZS5qczogQWRkZWQuCisgICAgICAg
IChvKToKKyAgICAgICAgKGUpOgorICAgICAgICAoZTIpOgorICAgICAgICAoZXNjYXBlKToKKyAg
ICAgICAgKGJheik6CisgICAgICAgIChub0lubGluZS5ydW4pOgorICAgICAgICAobm9JbmxpbmUp
OgorICAgICAgICAqIHN0cmVzcy9vc3ItZW50ZXItdG8tY2F0Y2gtd2l0aC1zZXQtbG9jYWwtdHlw
ZS1jaGVjay1mYWlsdXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChlKToK
KyAgICAgICAgKGJheik6CisgICAgICAgIChiYXIpOgorCiAyMDE3LTA4LTIzICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbWljcm8tYmVuY2ht
YXJrIGZvciBjaGVja2luZyB0aGF0IGFjY2Vzc2luZyBhIHZhcmlhYmxlIHdpdGhpbiBhICd3aXRo
JwpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsdGEtYmx1ZS10cnktY2F0Y2guanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsdGEtYmx1ZS10cnktY2F0
Y2guanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsdGEtYmx1
ZS10cnktY2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MDUgQEAKKy8vIENvcHly
aWdodCAyMDA4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBDb3B5cmlnaHQgMTk5NiBKb2huIE1hbG9uZXkgYW5kIE1hcmlvIFdvbGN6a28uCisKKy8vIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy8vIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisvLworLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor
Ly8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKy8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKworCisvLyBUaGlzIGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBEZWx0YUJsdWUgYmVuY2htYXJrIGlzIGRlcml2ZWQKKy8vIGZyb20gdGhl
IFNtYWxsdGFsayBpbXBsZW1lbnRhdGlvbiBieSBKb2huIE1hbG9uZXkgYW5kIE1hcmlvCisvLyBX
b2xjemtvLiBTb21lIHBhcnRzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGRpcmVjdGx5LCB3aGVyZWFz
CisvLyBvdGhlcnMgaGF2ZSBiZWVuIG1vZGlmaWVkIG1vcmUgYWdncmVzaXZlbHkgdG8gbWFrZSBp
dCBmZWVsCisvLyBtb3JlIGxpa2UgYSBKYXZhU2NyaXB0IHByb2dyYW0uCisKK2xldCBfX2V4Y2Vw
dGlvbkNvdW50ZXIgPSAwOworZnVuY3Rpb24gZXhjZXB0aW9uKCkgeworICAgIGlmIChfX2V4Y2Vw
dGlvbkNvdW50ZXIrKyAlIDM1ID09PSAwKQorICAgICAgICB0aHJvdyBfX2V4Y2VwdGlvbkNvdW50
ZXI7Cit9CisKKworLyoqCisgKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIERl
bHRhQmx1ZSBjb25zdHJhaW50LXNvbHZpbmcKKyAqIGFsZ29yaXRobSwgYXMgZGVzY3JpYmVkIGlu
OgorICoKKyAqICJUaGUgRGVsdGFCbHVlIEFsZ29yaXRobTogQW4gSW5jcmVtZW50YWwgQ29uc3Ry
YWludCBIaWVyYXJjaHkgU29sdmVyIgorICogICBCam9ybiBOLiBGcmVlbWFuLUJlbnNvbiBhbmQg
Sm9obiBNYWxvbmV5CisgKiAgIEphbnVhcnkgMTk5MCBDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNN
LAorICogICBhbHNvIGF2YWlsYWJsZSBhcyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24gVFIgODkt
MDgtMDYuCisgKgorICogQmV3YXJlOiB0aGlzIGJlbmNobWFyayBpcyB3cml0dGVuIGluIGEgZ3Jv
dGVzcXVlIHN0eWxlIHdoZXJlCisgKiB0aGUgY29uc3RyYWludCBtb2RlbCBpcyBidWlsdCBieSBz
aWRlLWVmZmVjdHMgZnJvbSBjb25zdHJ1Y3RvcnMuCisgKiBJJ3ZlIGtlcHQgaXQgdGhpcyB3YXkg
dG8gYXZvaWQgZGV2aWF0aW5nIHRvbyBtdWNoIGZyb20gdGhlIG9yaWdpbmFsCisgKiBpbXBsZW1l
bnRhdGlvbi4KKyAqLworCisKKy8qIC0tLSBPIGIgaiBlIGMgdCAgIE0gbyBkIGUgbCAtLS0gKi8K
KworT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJpbmhlcml0c0Zyb20i
LCB7CisgIAorICB2YWx1ZTogZnVuY3Rpb24gKHNodXBlcikgeworICAgIGZ1bmN0aW9uIEluaGVy
aXRlcigpIHsgfQorICAgIEluaGVyaXRlci5wcm90b3R5cGUgPSBzaHVwZXIucHJvdG90eXBlOwor
ICAgIHRoaXMucHJvdG90eXBlID0gbmV3IEluaGVyaXRlcigpOworICAgIHRoaXMuc3VwZXJDb25z
dHJ1Y3RvciA9IHNodXBlcjsKKyAgfQorfSk7CisKK2Z1bmN0aW9uIE9yZGVyZWRDb2xsZWN0aW9u
KCkgeworICB0aGlzLmVsbXMgPSBuZXcgQXJyYXkoKTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24u
cHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChlbG0pIHsKKyAgdGhpcy5lbG1zLnB1c2goZWxtKTsK
K30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKGluZGV4KSB7
CisgIHJldHVybiB0aGlzLmVsbXNbaW5kZXhdOworfQorCitPcmRlcmVkQ29sbGVjdGlvbi5wcm90
b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuZWxtcy5sZW5ndGg7Cit9
CisKK09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmVGaXJzdCA9IGZ1bmN0aW9uICgp
IHsKKyAgcmV0dXJuIHRoaXMuZWxtcy5wb3AoKTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJv
dG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChlbG0pIHsKKyAgdmFyIGluZGV4ID0gMCwgc2tpcHBl
ZCA9IDA7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5lbG1zLmxlbmd0aDsgaSsrKSB7Cisg
ICAgdmFyIHZhbHVlID0gdGhpcy5lbG1zW2ldOworICAgIGlmICh2YWx1ZSAhPSBlbG0pIHsKKyAg
ICAgIHRoaXMuZWxtc1tpbmRleF0gPSB2YWx1ZTsKKyAgICAgIGluZGV4Kys7CisgICAgfSBlbHNl
IHsKKyAgICAgIHNraXBwZWQrKzsKKyAgICB9CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0
Y2goZSkgeyB9CisgIH0KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBza2lwcGVkOyBpKyspIHsKKyAg
ICB0aGlzLmVsbXMucG9wKCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9
CisgIH0KK30KKworLyogLS0tICoKKyAqIFMgdCByIGUgbiBnIHQgaAorICogLS0tICovCisKKy8q
KgorICogU3RyZW5ndGhzIGFyZSB1c2VkIHRvIG1lYXN1cmUgdGhlIHJlbGF0aXZlIGltcG9ydGFu
Y2Ugb2YgY29uc3RyYWludHMuCisgKiBOZXcgc3RyZW5ndGhzIG1heSBiZSBpbnNlcnRlZCBpbiB0
aGUgc3RyZW5ndGggaGllcmFyY2h5IHdpdGhvdXQKKyAqIGRpc3J1cHRpbmcgY3VycmVudCBjb25z
dHJhaW50cy4gIFN0cmVuZ3RocyBjYW5ub3QgYmUgY3JlYXRlZCBvdXRzaWRlCisgKiB0aGlzIGNs
YXNzLCBzbyBwb2ludGVyIGNvbXBhcmlzb24gY2FuIGJlIHVzZWQgZm9yIHZhbHVlIGNvbXBhcmlz
b24uCisgKi8KK2Z1bmN0aW9uIFN0cmVuZ3RoKHN0cmVuZ3RoVmFsdWUsIG5hbWUpIHsKKyAgdGhp
cy5zdHJlbmd0aFZhbHVlID0gc3RyZW5ndGhWYWx1ZTsKKyAgdGhpcy5uYW1lID0gbmFtZTsKK30K
KworU3RyZW5ndGguc3Ryb25nZXIgPSBmdW5jdGlvbiAoczEsIHMyKSB7CisgIHJldHVybiBzMS5z
dHJlbmd0aFZhbHVlIDwgczIuc3RyZW5ndGhWYWx1ZTsKK30KKworU3RyZW5ndGgud2Vha2VyID0g
ZnVuY3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3RyZW5ndGhWYWx1ZSA+IHMyLnN0cmVu
Z3RoVmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlc3RPZiA9IGZ1bmN0aW9uIChzMSwgczIpIHsK
KyAgcmV0dXJuIHRoaXMud2Vha2VyKHMxLCBzMikgPyBzMSA6IHMyOworfQorCitTdHJlbmd0aC5z
dHJvbmdlc3QgPSBmdW5jdGlvbiAoczEsIHMyKSB7CisgIHJldHVybiB0aGlzLnN0cm9uZ2VyKHMx
LCBzMikgPyBzMSA6IHMyOworfQorCitTdHJlbmd0aC5wcm90b3R5cGUubmV4dFdlYWtlciA9IGZ1
bmN0aW9uICgpIHsKKyAgc3dpdGNoICh0aGlzLnN0cmVuZ3RoVmFsdWUpIHsKKyAgICBjYXNlIDA6
IHJldHVybiBTdHJlbmd0aC5XRUFLRVNUOworICAgIGNhc2UgMTogcmV0dXJuIFN0cmVuZ3RoLldF
QUtfREVGQVVMVDsKKyAgICBjYXNlIDI6IHJldHVybiBTdHJlbmd0aC5OT1JNQUw7CisgICAgY2Fz
ZSAzOiByZXR1cm4gU3RyZW5ndGguU1RST05HX0RFRkFVTFQ7CisgICAgY2FzZSA0OiByZXR1cm4g
U3RyZW5ndGguUFJFRkVSUkVEOworICAgIGNhc2UgNTogcmV0dXJuIFN0cmVuZ3RoLlJFUVVJUkVE
OworICB9Cit9CisKKy8vIFN0cmVuZ3RoIGNvbnN0YW50cy4KK1N0cmVuZ3RoLlJFUVVJUkVEICAg
ICAgICA9IG5ldyBTdHJlbmd0aCgwLCAicmVxdWlyZWQiKTsKK1N0cmVuZ3RoLlNUT05HX1BSRUZF
UlJFRCA9IG5ldyBTdHJlbmd0aCgxLCAic3Ryb25nUHJlZmVycmVkIik7CitTdHJlbmd0aC5QUkVG
RVJSRUQgICAgICAgPSBuZXcgU3RyZW5ndGgoMiwgInByZWZlcnJlZCIpOworU3RyZW5ndGguU1RS
T05HX0RFRkFVTFQgID0gbmV3IFN0cmVuZ3RoKDMsICJzdHJvbmdEZWZhdWx0Iik7CitTdHJlbmd0
aC5OT1JNQUwgICAgICAgICAgPSBuZXcgU3RyZW5ndGgoNCwgIm5vcm1hbCIpOworU3RyZW5ndGgu
V0VBS19ERUZBVUxUICAgID0gbmV3IFN0cmVuZ3RoKDUsICJ3ZWFrRGVmYXVsdCIpOworU3RyZW5n
dGguV0VBS0VTVCAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDYsICJ3ZWFrZXN0Iik7CisKKy8qIC0t
LSAqCisgKiBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBBbiBhYnN0
cmFjdCBjbGFzcyByZXByZXNlbnRpbmcgYSBzeXN0ZW0tbWFpbnRhaW5hYmxlIHJlbGF0aW9uc2hp
cAorICogKG9yICJjb25zdHJhaW50IikgYmV0d2VlbiBhIHNldCBvZiB2YXJpYWJsZXMuIEEgY29u
c3RyYWludCBzdXBwbGllcworICogYSBzdHJlbmd0aCBpbnN0YW5jZSB2YXJpYWJsZTsgY29uY3Jl
dGUgc3ViY2xhc3NlcyBwcm92aWRlIGEgbWVhbnMKKyAqIG9mIHN0b3JpbmcgdGhlIGNvbnN0cmFp
bmVkIHZhcmlhYmxlcyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQKKyAqIHRvIHJlcHJl
c2VudCBhIGNvbnN0cmFpbnQuCisgKi8KK2Z1bmN0aW9uIENvbnN0cmFpbnQoc3RyZW5ndGgpIHsK
KyAgdGhpcy5zdHJlbmd0aCA9IHN0cmVuZ3RoOworfQorCisvKioKKyAqIEFjdGl2YXRlIHRoaXMg
Y29uc3RyYWludCBhbmQgYXR0ZW1wdCB0byBzYXRpc2Z5IGl0LgorICovCitDb25zdHJhaW50LnBy
b3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmFkZFRvR3JhcGgo
KTsKKyAgcGxhbm5lci5pbmNyZW1lbnRhbEFkZCh0aGlzKTsKK30KKworLyoqCisgKiBBdHRlbXB0
IHRvIGZpbmQgYSB3YXkgdG8gZW5mb3JjZSB0aGlzIGNvbnN0cmFpbnQuIElmIHN1Y2Nlc3NmdWws
CisgKiByZWNvcmQgdGhlIHNvbHV0aW9uLCBwZXJoYXBzIG1vZGlmeWluZyB0aGUgY3VycmVudCBk
YXRhZmxvdworICogZ3JhcGguIEFuc3dlciB0aGUgY29uc3RyYWludCB0aGF0IHRoaXMgY29uc3Ry
YWludCBvdmVycmlkZXMsIGlmCisgKiB0aGVyZSBpcyBvbmUsIG9yIG5pbCwgaWYgdGhlcmUgaXNu
J3QuCisgKiBBc3N1bWU6IEkgYW0gbm90IGFscmVhZHkgc2F0aXNmaWVkLgorICovCitDb25zdHJh
aW50LnByb3RvdHlwZS5zYXRpc2Z5ID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgdGhpcy5jaG9vc2VN
ZXRob2QobWFyayk7CisgIGlmICghdGhpcy5pc1NhdGlzZmllZCgpKSB7CisgICAgaWYgKHRoaXMu
c3RyZW5ndGggPT0gU3RyZW5ndGguUkVRVUlSRUQpCisgICAgICBhbGVydCgiQ291bGQgbm90IHNh
dGlzZnkgYSByZXF1aXJlZCBjb25zdHJhaW50ISIpOworICAgIHJldHVybiBudWxsOworICB9Cisg
IHRoaXMubWFya0lucHV0cyhtYXJrKTsKKyAgdmFyIG91dCA9IHRoaXMub3V0cHV0KCk7CisgIHZh
ciBvdmVycmlkZGVuID0gb3V0LmRldGVybWluZWRCeTsKKyAgaWYgKG92ZXJyaWRkZW4gIT0gbnVs
bCkgb3ZlcnJpZGRlbi5tYXJrVW5zYXRpc2ZpZWQoKTsKKyAgb3V0LmRldGVybWluZWRCeSA9IHRo
aXM7CisgIGlmICghcGxhbm5lci5hZGRQcm9wYWdhdGUodGhpcywgbWFyaykpCisgICAgYWxlcnQo
IkN5Y2xlIGVuY291bnRlcmVkIik7CisgIG91dC5tYXJrID0gbWFyazsKKyAgcmV0dXJuIG92ZXJy
aWRkZW47Cit9CisKK0NvbnN0cmFpbnQucHJvdG90eXBlLmRlc3Ryb3lDb25zdHJhaW50ID0gZnVu
Y3Rpb24gKCkgeworICBpZiAodGhpcy5pc1NhdGlzZmllZCgpKSBwbGFubmVyLmluY3JlbWVudGFs
UmVtb3ZlKHRoaXMpOworICBlbHNlIHRoaXMucmVtb3ZlRnJvbUdyYXBoKCk7Cit9CisKKy8qKgor
ICogTm9ybWFsIGNvbnN0cmFpbnRzIGFyZSBub3QgaW5wdXQgY29uc3RyYWludHMuICBBbiBpbnB1
dCBjb25zdHJhaW50CisgKiBpcyBvbmUgdGhhdCBkZXBlbmRzIG9uIGV4dGVybmFsIHN0YXRlLCBz
dWNoIGFzIHRoZSBtb3VzZSwgdGhlCisgKiBrZXlib3JkLCBhIGNsb2NrLCBvciBzb21lIGFyYml0
cmF0eSBwaWVjZSBvZiBpbXBlcmF0aXZlIGNvZGUuCisgKi8KK0NvbnN0cmFpbnQucHJvdG90eXBl
LmlzSW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiBmYWxzZTsKK30KKworLyogLS0tICoK
KyAqIFUgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAq
IEFic3RyYWN0IHN1cGVyY2xhc3MgZm9yIGNvbnN0cmFpbnRzIGhhdmluZyBhIHNpbmdsZSBwb3Nz
aWJsZSBvdXRwdXQKKyAqIHZhcmlhYmxlLgorICovCitmdW5jdGlvbiBVbmFyeUNvbnN0cmFpbnQo
diwgc3RyZW5ndGgpIHsKKyAgVW5hcnlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0
aGlzLCBzdHJlbmd0aCk7CisgIHRoaXMubXlPdXRwdXQgPSB2OworICB0aGlzLnNhdGlzZmllZCA9
IGZhbHNlOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsKK30KKworVW5hcnlDb25zdHJhaW50Lmlu
aGVyaXRzRnJvbShDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29uc3RyYWludCB0
byB0aGUgY29uc3RyYWludCBncmFwaAorICovCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmFk
ZFRvR3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQuYWRkQ29uc3RyYWludCh0
aGlzKTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyoqCisgKiBEZWNpZGVzIGlm
IHRoaXMgY29uc3RyYWludCBjYW4gYmUgc2F0aXNmaWVkIGFuZCByZWNvcmRzIHRoYXQKKyAqIGRl
Y2lzaW9uLgorICovCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmNob29zZU1ldGhvZCA9IGZ1
bmN0aW9uIChtYXJrKSB7CisgIHRoaXMuc2F0aXNmaWVkID0gKHRoaXMubXlPdXRwdXQubWFyayAh
PSBtYXJrKQorICAgICYmIFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMubXlP
dXRwdXQud2Fsa1N0cmVuZ3RoKTsKK30KKworLyoqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBj
b25zdHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVudCBzb2x1dGlvbi4KKyAqLworVW5h
cnlDb25zdHJhaW50LnByb3RvdHlwZS5pc1NhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0
dXJuIHRoaXMuc2F0aXNmaWVkOworfQorCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtJ
bnB1dHMgPSBmdW5jdGlvbiAobWFyaykgeworICAvLyBoYXMgbm8gaW5wdXRzCit9CisKKy8qKgor
ICogUmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUuCisgKi8KK1VuYXJ5Q29uc3Ry
YWludC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5teU91
dHB1dDsKK30KKworLyoqCisgKiBDYWxjdWxhdGUgdGhlIHdhbGthYm91dCBzdHJlbmd0aCwgdGhl
IHN0YXkgZmxhZywgYW5kLCBpZiBpdCBpcworICogJ3N0YXknLCB0aGUgdmFsdWUgZm9yIHRoZSBj
dXJyZW50IG91dHB1dCBvZiB0aGlzIGNvbnN0cmFpbnQuIEFzc3VtZQorICogdGhpcyBjb25zdHJh
aW50IGlzIHNhdGlzZmllZC4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1
bGF0ZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5teU91dHB1dC53YWxrU3RyZW5ndGggPSB0aGlz
LnN0cmVuZ3RoOworICB0aGlzLm15T3V0cHV0LnN0YXkgPSAhdGhpcy5pc0lucHV0KCk7CisgIGlm
ICh0aGlzLm15T3V0cHV0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOyAvLyBTdGF5IG9wdGltaXphdGlv
bgorfQorCisvKioKKyAqIFJlY29yZHMgdGhhdCB0aGlzIGNvbnN0cmFpbnQgaXMgdW5zYXRpc2Zp
ZWQKKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrVW5zYXRpc2ZpZWQgPSBmdW5j
dGlvbiAoKSB7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKK1VuYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUuaW5wdXRzS25vd24gPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0cnVlOwor
fQorCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCA9IGZ1bmN0aW9u
ICgpIHsKKyAgaWYgKHRoaXMubXlPdXRwdXQgIT0gbnVsbCkgdGhpcy5teU91dHB1dC5yZW1vdmVD
b25zdHJhaW50KHRoaXMpOworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCisvKiAtLS0g
KgorICogUyB0IGEgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAq
IFZhcmlhYmxlcyB0aGF0IHNob3VsZCwgd2l0aCBzb21lIGxldmVsIG9mIHByZWZlcmVuY2UsIHN0
YXkgdGhlIHNhbWUuCisgKiBQbGFubmVycyBtYXkgZXhwbG9pdCB0aGUgZmFjdCB0aGF0IGluc3Rh
bmNlcywgaWYgc2F0aXNmaWVkLCB3aWxsIG5vdAorICogY2hhbmdlIHRoZWlyIG91dHB1dCBkdXJp
bmcgcGxhbiBleGVjdXRpb24uICBUaGlzIGlzIGNhbGxlZCAic3RheQorICogb3B0aW1pemF0aW9u
Ii4KKyAqLworZnVuY3Rpb24gU3RheUNvbnN0cmFpbnQodiwgc3RyKSB7CisgIFN0YXlDb25zdHJh
aW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCB2LCBzdHIpOworfQorCitTdGF5Q29uc3Ry
YWludC5pbmhlcml0c0Zyb20oVW5hcnlDb25zdHJhaW50KTsKKworU3RheUNvbnN0cmFpbnQucHJv
dG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7CisgIC8vIFN0YXkgY29uc3RyYWludHMgZG8g
bm90aGluZworfQorCisvKiAtLS0gKgorICogRSBkIGkgdCAgIEMgbyBuIHMgdCByIGEgaSBuIHQK
KyAqIC0tLSAqLworCisvKioKKyAqIEEgdW5hcnkgaW5wdXQgY29uc3RyYWludCB1c2VkIHRvIG1h
cmsgYSB2YXJpYWJsZSB0aGF0IHRoZSBjbGllbnQKKyAqIHdpc2hlcyB0byBjaGFuZ2UuCisgKi8K
K2Z1bmN0aW9uIEVkaXRDb25zdHJhaW50KHYsIHN0cikgeworICBFZGl0Q29uc3RyYWludC5zdXBl
ckNvbnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworRWRpdENvbnN0cmFpbnQuaW5o
ZXJpdHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRWRpdHMgaW5kaWNhdGUgdGhh
dCBhIHZhcmlhYmxlIGlzIHRvIGJlIGNoYW5nZWQgYnkgaW1wZXJhdGl2ZSBjb2RlLgorICovCitF
ZGl0Q29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJu
IHRydWU7Cit9CisKK0VkaXRDb25zdHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24g
KCkgeworICAvLyBFZGl0IGNvbnN0cmFpbnRzIGRvIG5vdGhpbmcKK30KKworLyogLS0tICoKKyAq
IEIgaSBuIGEgciB5ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKK3ZhciBEaXJl
Y3Rpb24gPSBuZXcgT2JqZWN0KCk7CitEaXJlY3Rpb24uTk9ORSAgICAgPSAwOworRGlyZWN0aW9u
LkZPUldBUkQgID0gMTsKK0RpcmVjdGlvbi5CQUNLV0FSRCA9IC0xOworCisvKioKKyAqIEFic3Ry
YWN0IHN1cGVyY2xhc3MgZm9yIGNvbnN0cmFpbnRzIGhhdmluZyB0d28gcG9zc2libGUgb3V0cHV0
CisgKiB2YXJpYWJsZXMuCisgKi8KK2Z1bmN0aW9uIEJpbmFyeUNvbnN0cmFpbnQodmFyMSwgdmFy
Miwgc3RyZW5ndGgpIHsKKyAgQmluYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwo
dGhpcywgc3RyZW5ndGgpOworICB0aGlzLnYxID0gdmFyMTsKKyAgdGhpcy52MiA9IHZhcjI7Cisg
IHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7CisgIHRoaXMuYWRkQ29uc3RyYWludCgp
OworfQorCitCaW5hcnlDb25zdHJhaW50LmluaGVyaXRzRnJvbShDb25zdHJhaW50KTsKKworLyoq
CisgKiBEZWNpZGVzIGlmIHRoaXMgY29uc3RyYWludCBjYW4gYmUgc2F0aXNmaWVkIGFuZCB3aGlj
aCB3YXkgaXQKKyAqIHNob3VsZCBmbG93IGJhc2VkIG9uIHRoZSByZWxhdGl2ZSBzdHJlbmd0aCBv
ZiB0aGUgdmFyaWFibGVzIHJlbGF0ZWQsCisgKiBhbmQgcmVjb3JkIHRoYXQgZGVjaXNpb24uCisg
Ki8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmNob29zZU1ldGhvZCA9IGZ1bmN0aW9uICht
YXJrKSB7CisgIGlmICh0aGlzLnYxLm1hcmsgPT0gbWFyaykgeworICAgIHRoaXMuZGlyZWN0aW9u
ID0gKHRoaXMudjIubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5n
dGgsIHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGlyZWN0aW9uLkZPUldBUkQKKyAg
ICAgIDogRGlyZWN0aW9uLk5PTkU7CisgIH0KKyAgaWYgKHRoaXMudjIubWFyayA9PSBtYXJrKSB7
CisgICAgdGhpcy5kaXJlY3Rpb24gPSAodGhpcy52MS5tYXJrICE9IG1hcmsgJiYgU3RyZW5ndGgu
c3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy52MS53YWxrU3RyZW5ndGgpKQorICAgICAgPyBE
aXJlY3Rpb24uQkFDS1dBUkQKKyAgICAgIDogRGlyZWN0aW9uLk5PTkU7CisgIH0KKyAgaWYgKFN0
cmVuZ3RoLndlYWtlcih0aGlzLnYxLndhbGtTdHJlbmd0aCwgdGhpcy52Mi53YWxrU3RyZW5ndGgp
KSB7CisgICAgdGhpcy5kaXJlY3Rpb24gPSBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3Ro
LCB0aGlzLnYxLndhbGtTdHJlbmd0aCkKKyAgICAgID8gRGlyZWN0aW9uLkJBQ0tXQVJECisgICAg
ICA6IERpcmVjdGlvbi5OT05FOworICB9IGVsc2UgeworICAgIHRoaXMuZGlyZWN0aW9uID0gU3Ry
ZW5ndGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy52Mi53YWxrU3RyZW5ndGgpCisgICAg
ICA/IERpcmVjdGlvbi5GT1JXQVJECisgICAgICA6IERpcmVjdGlvbi5CQUNLV0FSRAorICB9Cit9
CisKKy8qKgorICogQWRkIHRoaXMgY29uc3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaAor
ICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLnYxLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMudjIuYWRkQ29uc3RyYWlu
dCh0aGlzKTsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKK30KKworLyoqCisg
KiBBbnN3ZXIgdHJ1ZSBpZiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVkIGluIHRoZSBjdXJy
ZW50IHNvbHV0aW9uLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pc1NhdGlzZmll
ZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uICE9IERpcmVjdGlvbi5O
T05FOworfQorCisvKioKKyAqIE1hcmsgdGhlIGlucHV0IHZhcmlhYmxlIHdpdGggdGhlIGdpdmVu
IG1hcmsuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMgPSBmdW5j
dGlvbiAobWFyaykgeworICB0aGlzLmlucHV0KCkubWFyayA9IG1hcms7Cit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBpbnB1dCB2YXJpYWJsZQorICovCitCaW5hcnlDb25zdHJhaW50
LnByb3RvdHlwZS5pbnB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLmRpcmVjdGlv
biA9PSBEaXJlY3Rpb24uRk9SV0FSRCkgPyB0aGlzLnYxIDogdGhpcy52MjsKK30KKworLyoqCisg
KiBSZXR1cm5zIHRoZSBjdXJyZW50IG91dHB1dCB2YXJpYWJsZQorICovCitCaW5hcnlDb25zdHJh
aW50LnByb3RvdHlwZS5vdXRwdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJl
Y3Rpb24gPT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MiA6IHRoaXMudjE7Cit9CisKKy8q
KgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBzdGF5IGZsYWcsIGFu
ZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3VycmVudCBvdXRwdXQg
b2YgdGhpcworICogY29uc3RyYWludC4gQXNzdW1lIHRoaXMgY29uc3RyYWludCBpcyBzYXRpc2Zp
ZWQuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rp
b24gKCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOwor
ICBvdXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlo
bi53YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5OworICBpZiAob3V0LnN0YXkp
IHRoaXMuZXhlY3V0ZSgpOworfQorCisvKioKKyAqIFJlY29yZCB0aGUgZmFjdCB0aGF0IHRoaXMg
Y29uc3RyYWludCBpcyB1bnNhdGlzZmllZC4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5
cGUubWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmRpcmVjdGlvbiA9IERp
cmVjdGlvbi5OT05FOworfQorCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pbnB1dHNLbm93
biA9IGZ1bmN0aW9uIChtYXJrKSB7CisgIHZhciBpID0gdGhpcy5pbnB1dCgpOworICByZXR1cm4g
aS5tYXJrID09IG1hcmsgfHwgaS5zdGF5IHx8IGkuZGV0ZXJtaW5lZEJ5ID09IG51bGw7Cit9CisK
K0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCA9IGZ1bmN0aW9uICgp
IHsKKyAgaWYgKHRoaXMudjEgIT0gbnVsbCkgdGhpcy52MS5yZW1vdmVDb25zdHJhaW50KHRoaXMp
OworICBpZiAodGhpcy52MiAhPSBudWxsKSB0aGlzLnYyLnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7
CisgIHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qIC0tLSAqCisgKiBT
IGMgYSBsIGUgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBSZWxh
dGVzIHR3byB2YXJpYWJsZXMgYnkgdGhlIGxpbmVhciBzY2FsaW5nIHJlbGF0aW9uc2hpcDogInYy
ID0KKyAqICh2MSAqIHNjYWxlKSArIG9mZnNldCIuIEVpdGhlciB2MSBvciB2MiBtYXkgYmUgY2hh
bmdlZCB0byBtYWludGFpbgorICogdGhpcyByZWxhdGlvbnNoaXAgYnV0IHRoZSBzY2FsZSBmYWN0
b3IgYW5kIG9mZnNldCBhcmUgY29uc2lkZXJlZAorICogcmVhZC1vbmx5LgorICovCitmdW5jdGlv
biBTY2FsZUNvbnN0cmFpbnQoc3JjLCBzY2FsZSwgb2Zmc2V0LCBkZXN0LCBzdHJlbmd0aCkgewor
ICB0aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLnNjYWxlID0gc2NhbGU7
CisgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0OworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1
Y3Rvci5jYWxsKHRoaXMsIHNyYywgZGVzdCwgc3RyZW5ndGgpOworfQorCitTY2FsZUNvbnN0cmFp
bnQuaW5oZXJpdHNGcm9tKEJpbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEFkZHMgdGhpcyBj
b25zdHJhaW50IHRvIHRoZSBjb25zdHJhaW50IGdyYXBoLgorICovCitTY2FsZUNvbnN0cmFpbnQu
cHJvdG90eXBlLmFkZFRvR3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIFNjYWxlQ29uc3RyYWludC5z
dXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5hZGRUb0dyYXBoLmNhbGwodGhpcyk7CisgIHRoaXMu
c2NhbGUuYWRkQ29uc3RyYWludCh0aGlzKTsKKyAgdGhpcy5vZmZzZXQuYWRkQ29uc3RyYWludCh0
aGlzKTsKK30KKworU2NhbGVDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBm
dW5jdGlvbiAoKSB7CisgIFNjYWxlQ29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlw
ZS5yZW1vdmVGcm9tR3JhcGguY2FsbCh0aGlzKTsKKyAgaWYgKHRoaXMuc2NhbGUgIT0gbnVsbCkg
dGhpcy5zY2FsZS5yZW1vdmVDb25zdHJhaW50KHRoaXMpOworICBpZiAodGhpcy5vZmZzZXQgIT0g
bnVsbCkgdGhpcy5vZmZzZXQucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKK30KKworU2NhbGVDb25z
dHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgU2NhbGVD
b25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlLm1hcmtJbnB1dHMuY2FsbCh0aGlz
LCBtYXJrKTsKKyAgdGhpcy5zY2FsZS5tYXJrID0gdGhpcy5vZmZzZXQubWFyayA9IG1hcms7Cit9
CisKKy8qKgorICogRW5mb3JjZSB0aGlzIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNh
dGlzZmllZC4KKyAqLworU2NhbGVDb25zdHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rp
b24gKCkgeworICBpZiAodGhpcy5kaXJlY3Rpb24gPT0gRGlyZWN0aW9uLkZPUldBUkQpIHsKKyAg
ICB0aGlzLnYyLnZhbHVlID0gdGhpcy52MS52YWx1ZSAqIHRoaXMuc2NhbGUudmFsdWUgKyB0aGlz
Lm9mZnNldC52YWx1ZTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxLnZhbHVlID0gKHRoaXMudjIu
dmFsdWUgLSB0aGlzLm9mZnNldC52YWx1ZSkgLyB0aGlzLnNjYWxlLnZhbHVlOworICB9Cit9CisK
Ky8qKgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBzdGF5IGZsYWcs
IGFuZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3VycmVudCBvdXRw
dXQgb2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWludCBpcyBzYXRp
c2ZpZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxhdGUgPSBmdW5j
dGlvbiAoKSB7CisgIHZhciBpaG4gPSB0aGlzLmlucHV0KCksIG91dCA9IHRoaXMub3V0cHV0KCk7
CisgIG91dC53YWxrU3RyZW5ndGggPSBTdHJlbmd0aC53ZWFrZXN0T2YodGhpcy5zdHJlbmd0aCwg
aWhuLndhbGtTdHJlbmd0aCk7CisgIG91dC5zdGF5ID0gaWhuLnN0YXkgJiYgdGhpcy5zY2FsZS5z
dGF5ICYmIHRoaXMub2Zmc2V0LnN0YXk7CisgIGlmIChvdXQuc3RheSkgdGhpcy5leGVjdXRlKCk7
Cit9CisKKy8qIC0tLSAqCisgKiBFIHEgdSBhIGwgaSB0ICB5ICAgQyBvIG4gcyB0IHIgYSBpIG4g
dAorICogLS0tICovCisKKy8qKgorICogQ29uc3RyYWlucyB0d28gdmFyaWFibGVzIHRvIGhhdmUg
dGhlIHNhbWUgdmFsdWUuCisgKi8KK2Z1bmN0aW9uIEVxdWFsaXR5Q29uc3RyYWludCh2YXIxLCB2
YXIyLCBzdHJlbmd0aCkgeworICBFcXVhbGl0eUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5j
YWxsKHRoaXMsIHZhcjEsIHZhcjIsIHN0cmVuZ3RoKTsKK30KKworRXF1YWxpdHlDb25zdHJhaW50
LmluaGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBFbmZvcmNlIHRoaXMg
Y29uc3RyYWludC4gQXNzdW1lIHRoYXQgaXQgaXMgc2F0aXNmaWVkLgorICovCitFcXVhbGl0eUNv
bnN0cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMub3V0cHV0
KCkudmFsdWUgPSB0aGlzLmlucHV0KCkudmFsdWU7Cit9CisKKy8qIC0tLSAqCisgKiBWIGEgciBp
IGEgYiBsIGUKKyAqIC0tLSAqLworCisvKioKKyAqIEEgY29uc3RyYWluZWQgdmFyaWFibGUuIElu
IGFkZGl0aW9uIHRvIGl0cyB2YWx1ZSwgaXQgbWFpbnRhaW4gdGhlCisgKiBzdHJ1Y3R1cmUgb2Yg
dGhlIGNvbnN0cmFpbnQgZ3JhcGgsIHRoZSBjdXJyZW50IGRhdGFmbG93IGdyYXBoLCBhbmQKKyAq
IHZhcmlvdXMgcGFyYW1ldGVycyBvZiBpbnRlcmVzdCB0byB0aGUgRGVsdGFCbHVlIGluY3JlbWVu
dGFsCisgKiBjb25zdHJhaW50IHNvbHZlci4KKyAqKi8KK2Z1bmN0aW9uIFZhcmlhYmxlKG5hbWUs
IGluaXRpYWxWYWx1ZSkgeworICB0aGlzLnZhbHVlID0gaW5pdGlhbFZhbHVlIHx8IDA7CisgIHRo
aXMuY29uc3RyYWludHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgdGhpcy5kZXRlcm1p
bmVkQnkgPSBudWxsOworICB0aGlzLm1hcmsgPSAwOworICB0aGlzLndhbGtTdHJlbmd0aCA9IFN0
cmVuZ3RoLldFQUtFU1Q7CisgIHRoaXMuc3RheSA9IHRydWU7CisgIHRoaXMubmFtZSA9IG5hbWU7
Cit9CisKKy8qKgorICogQWRkIHRoZSBnaXZlbiBjb25zdHJhaW50IHRvIHRoZSBzZXQgb2YgYWxs
IGNvbnN0cmFpbnRzIHRoYXQgcmVmZXIKKyAqIHRoaXMgdmFyaWFibGUuCisgKi8KK1ZhcmlhYmxl
LnByb3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVuY3Rpb24gKGMpIHsKKyAgdGhpcy5jb25zdHJh
aW50cy5hZGQoYyk7Cit9CisKKy8qKgorICogUmVtb3ZlcyBhbGwgdHJhY2VzIG9mIGMgZnJvbSB0
aGlzIHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5wcm90b3R5cGUucmVtb3ZlQ29uc3RyYWludCA9
IGZ1bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWludHMucmVtb3ZlKGMpOworICBpZiAodGhp
cy5kZXRlcm1pbmVkQnkgPT0gYykgdGhpcy5kZXRlcm1pbmVkQnkgPSBudWxsOworfQorCisvKiAt
LS0gKgorICogUCBsIGEgbiBuIGUgcgorICogLS0tICovCisKKy8qKgorICogVGhlIERlbHRhQmx1
ZSBwbGFubmVyCisgKi8KK2Z1bmN0aW9uIFBsYW5uZXIoKSB7CisgIHRoaXMuY3VycmVudE1hcmsg
PSAwOworfQorCisvKioKKyAqIEF0dGVtcHQgdG8gc2F0aXNmeSB0aGUgZ2l2ZW4gY29uc3RyYWlu
dCBhbmQsIGlmIHN1Y2Nlc3NmdWwsCisgKiBpbmNyZW1lbnRhbGx5IHVwZGF0ZSB0aGUgZGF0YWZs
b3cgZ3JhcGguICBEZXRhaWxzOiBJZiBzYXRpZnlpbmcKKyAqIHRoZSBjb25zdHJhaW50IGlzIHN1
Y2Nlc3NmdWwsIGl0IG1heSBvdmVycmlkZSBhIHdlYWtlciBjb25zdHJhaW50CisgKiBvbiBpdHMg
b3V0cHV0LiBUaGUgYWxnb3JpdGhtIGF0dGVtcHRzIHRvIHJlc2F0aXNmeSB0aGF0CisgKiBjb25z
dHJhaW50IHVzaW5nIHNvbWUgb3RoZXIgbWV0aG9kLiBUaGlzIHByb2Nlc3MgaXMgcmVwZWF0ZWQK
KyAqIHVudGlsIGVpdGhlciBhKSBpdCByZWFjaGVzIGEgdmFyaWFibGUgdGhhdCB3YXMgbm90IHBy
ZXZpb3VzbHkKKyAqIGRldGVybWluZWQgYnkgYW55IGNvbnN0cmFpbnQgb3IgYikgaXQgcmVhY2hl
cyBhIGNvbnN0cmFpbnQgdGhhdAorICogaXMgdG9vIHdlYWsgdG8gYmUgc2F0aXNmaWVkIHVzaW5n
IGFueSBvZiBpdHMgbWV0aG9kcy4gVGhlCisgKiB2YXJpYWJsZXMgb2YgY29uc3RyYWludHMgdGhh
dCBoYXZlIGJlZW4gcHJvY2Vzc2VkIGFyZSBtYXJrZWQgd2l0aAorICogYSB1bmlxdWUgbWFyayB2
YWx1ZSBzbyB0aGF0IHdlIGtub3cgd2hlcmUgd2UndmUgYmVlbi4gVGhpcyBhbGxvd3MKKyAqIHRo
ZSBhbGdvcml0aG0gdG8gYXZvaWQgZ2V0dGluZyBpbnRvIGFuIGluZmluaXRlIGxvb3AgZXZlbiBp
ZiB0aGUKKyAqIGNvbnN0cmFpbnQgZ3JhcGggaGFzIGFuIGluYWR2ZXJ0ZW50IGN5Y2xlLgorICov
CitQbGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbEFkZCA9IGZ1bmN0aW9uIChjKSB7CisgIHZh
ciBtYXJrID0gdGhpcy5uZXdNYXJrKCk7CisgIHZhciBvdmVycmlkZGVuID0gYy5zYXRpc2Z5KG1h
cmspOworICB3aGlsZSAob3ZlcnJpZGRlbiAhPSBudWxsKQorICAgIG92ZXJyaWRkZW4gPSBvdmVy
cmlkZGVuLnNhdGlzZnkobWFyayk7Cit9CisKKy8qKgorICogRW50cnkgcG9pbnQgZm9yIHJldHJh
Y3RpbmcgYSBjb25zdHJhaW50LiBSZW1vdmUgdGhlIGdpdmVuCisgKiBjb25zdHJhaW50IGFuZCBp
bmNyZW1lbnRhbGx5IHVwZGF0ZSB0aGUgZGF0YWZsb3cgZ3JhcGguCisgKiBEZXRhaWxzOiBSZXRy
YWN0aW5nIHRoZSBnaXZlbiBjb25zdHJhaW50IG1heSBhbGxvdyBzb21lIGN1cnJlbnRseQorICog
dW5zYXRpc2ZpYWJsZSBkb3duc3RyZWFtIGNvbnN0cmFpbnQgdG8gYmUgc2F0aXNmaWVkLiBXZSB0
aGVyZWZvcmUgY29sbGVjdAorICogYSBsaXN0IG9mIHVuc2F0aXNmaWVkIGRvd25zdHJlYW0gY29u
c3RyYWludHMgYW5kIGF0dGVtcHQgdG8KKyAqIHNhdGlzZnkgZWFjaCBvbmUgaW4gdHVybi4gVGhp
cyBsaXN0IGlzIHRyYXZlcnNlZCBieSBjb25zdHJhaW50CisgKiBzdHJlbmd0aCwgc3Ryb25nZXN0
IGZpcnN0LCBhcyBhIGhldXJpc3RpYyBmb3IgYXZvaWRpbmcKKyAqIHVubmVjZXNzYXJpbHkgYWRk
aW5nIGFuZCB0aGVuIG92ZXJyaWRpbmcgd2VhayBjb25zdHJhaW50cy4KKyAqIEFzc3VtZTogYyBp
cyBzYXRpc2ZpZWQuCisgKi8KK1BsYW5uZXIucHJvdG90eXBlLmluY3JlbWVudGFsUmVtb3ZlID0g
ZnVuY3Rpb24gKGMpIHsKKyAgdmFyIG91dCA9IGMub3V0cHV0KCk7CisgIGMubWFya1Vuc2F0aXNm
aWVkKCk7CisgIGMucmVtb3ZlRnJvbUdyYXBoKCk7CisgIHZhciB1bnNhdGlzZmllZCA9IHRoaXMu
cmVtb3ZlUHJvcGFnYXRlRnJvbShvdXQpOworICB2YXIgc3RyZW5ndGggPSBTdHJlbmd0aC5SRVFV
SVJFRDsKKyAgZG8geworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5zYXRpc2ZpZWQuc2l6ZSgp
OyBpKyspIHsKKyAgICAgIHZhciB1ID0gdW5zYXRpc2ZpZWQuYXQoaSk7CisgICAgICBpZiAodS5z
dHJlbmd0aCA9PSBzdHJlbmd0aCkKKyAgICAgICAgdGhpcy5pbmNyZW1lbnRhbEFkZCh1KTsKKyAg
ICB9CisgICAgc3RyZW5ndGggPSBzdHJlbmd0aC5uZXh0V2Vha2VyKCk7CisgIH0gd2hpbGUgKHN0
cmVuZ3RoICE9IFN0cmVuZ3RoLldFQUtFU1QpOworfQorCisvKioKKyAqIFNlbGVjdCBhIHByZXZp
b3VzbHkgdW51c2VkIG1hcmsgdmFsdWUuCisgKi8KK1BsYW5uZXIucHJvdG90eXBlLm5ld01hcmsg
PSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiArK3RoaXMuY3VycmVudE1hcms7Cit9CisKKy8qKgor
ICogRXh0cmFjdCBhIHBsYW4gZm9yIHJlc2F0aXNmYWN0aW9uIHN0YXJ0aW5nIGZyb20gdGhlIGdp
dmVuIHNvdXJjZQorICogY29uc3RyYWludHMsIHVzdWFsbHkgYSBzZXQgb2YgaW5wdXQgY29uc3Ry
YWludHMuIFRoaXMgbWV0aG9kCisgKiBhc3N1bWVzIHRoYXQgc3RheSBvcHRpbWl6YXRpb24gaXMg
ZGVzaXJlZDsgdGhlIHBsYW4gd2lsbCBjb250YWluCisgKiBvbmx5IGNvbnN0cmFpbnRzIHdob3Nl
IG91dHB1dCB2YXJpYWJsZXMgYXJlIG5vdCBzdGF5LiBDb25zdHJhaW50cworICogdGhhdCBkbyBu
byBjb21wdXRhdGlvbiwgc3VjaCBhcyBzdGF5IGFuZCBlZGl0IGNvbnN0cmFpbnRzLCBhcmUKKyAq
IG5vdCBpbmNsdWRlZCBpbiB0aGUgcGxhbi4KKyAqIERldGFpbHM6IFRoZSBvdXRwdXRzIG9mIGEg
Y29uc3RyYWludCBhcmUgbWFya2VkIHdoZW4gaXQgaXMgYWRkZWQKKyAqIHRvIHRoZSBwbGFuIHVu
ZGVyIGNvbnN0cnVjdGlvbi4gQSBjb25zdHJhaW50IG1heSBiZSBhcHBlbmRlZCB0bworICogdGhl
IHBsYW4gd2hlbiBhbGwgaXRzIGlucHV0IHZhcmlhYmxlcyBhcmUga25vd24uIEEgdmFyaWFibGUg
aXMKKyAqIGtub3duIGlmIGVpdGhlciBhKSB0aGUgdmFyaWFibGUgaXMgbWFya2VkIChpbmRpY2F0
aW5nIHRoYXQgaGFzCisgKiBiZWVuIGNvbXB1dGVkIGJ5IGEgY29uc3RyYWludCBhcHBlYXJpbmcg
ZWFybGllciBpbiB0aGUgcGxhbiksIGIpCisgKiB0aGUgdmFyaWFibGUgaXMgJ3N0YXknIChpLmUu
IGl0IGlzIGEgY29uc3RhbnQgYXQgcGxhbiBleGVjdXRpb24KKyAqIHRpbWUpLCBvciBjKSB0aGUg
dmFyaWFibGUgaXMgbm90IGRldGVybWluZWQgYnkgYW55CisgKiBjb25zdHJhaW50LiBUaGUgbGFz
dCBwcm92aXNpb24gaXMgZm9yIHBhc3Qgc3RhdGVzIG9mIGhpc3RvcnkKKyAqIHZhcmlhYmxlcywg
d2hpY2ggYXJlIG5vdCBzdGF5IGJ1dCB3aGljaCBhcmUgYWxzbyBub3QgY29tcHV0ZWQgYnkKKyAq
IGFueSBjb25zdHJhaW50LgorICogQXNzdW1lOiBzb3VyY2VzIGFyZSBhbGwgc2F0aXNmaWVkLgor
ICovCitQbGFubmVyLnByb3RvdHlwZS5tYWtlUGxhbiA9IGZ1bmN0aW9uIChzb3VyY2VzKSB7Cisg
IHZhciBtYXJrID0gdGhpcy5uZXdNYXJrKCk7CisgIHZhciBwbGFuID0gbmV3IFBsYW4oKTsKKyAg
dmFyIHRvZG8gPSBzb3VyY2VzOworICB3aGlsZSAodG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFy
IGMgPSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAgaWYgKGMub3V0cHV0KCkubWFyayAhPSBtYXJr
ICYmIGMuaW5wdXRzS25vd24obWFyaykpIHsKKyAgICAgIHBsYW4uYWRkQ29uc3RyYWludChjKTsK
KyAgICAgIGMub3V0cHV0KCkubWFyayA9IG1hcms7CisgICAgICB0aGlzLmFkZENvbnN0cmFpbnRz
Q29uc3VtaW5nVG8oYy5vdXRwdXQoKSwgdG9kbyk7CisgICAgfQorICB9CisgIHJldHVybiBwbGFu
OworfQorCisvKioKKyAqIEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZnlpbmcgc3RhcnRpbmcg
ZnJvbSB0aGUgb3V0cHV0IG9mIHRoZQorICogZ2l2ZW4gY29uc3RyYWludHMsIHVzdWFsbHkgYSBz
ZXQgb2YgaW5wdXQgY29uc3RyYWludHMuCisgKi8KK1BsYW5uZXIucHJvdG90eXBlLmV4dHJhY3RQ
bGFuRnJvbUNvbnN0cmFpbnRzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnRzKSB7CisgIHZhciBzb3Vy
Y2VzID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgY29u
c3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChl
KSB7IH0KKyAgICB2YXIgYyA9IGNvbnN0cmFpbnRzLmF0KGkpOworICAgIHRyeSB7IGV4Y2VwdGlv
bigpOyB9IGNhdGNoKGUpIHsgfQorICAgIGlmIChjLmlzSW5wdXQoKSAmJiBjLmlzU2F0aXNmaWVk
KCkpCisgICAgICAvLyBub3QgaW4gcGxhbiBhbHJlYWR5IGFuZCBlbGlnaWJsZSBmb3IgaW5jbHVz
aW9uCisgICAgICBzb3VyY2VzLmFkZChjKTsKKyAgfQorICByZXR1cm4gdGhpcy5tYWtlUGxhbihz
b3VyY2VzKTsKK30KKworLyoqCisgKiBSZWNvbXB1dGUgdGhlIHdhbGthYm91dCBzdHJlbmd0aHMg
YW5kIHN0YXkgZmxhZ3Mgb2YgYWxsIHZhcmlhYmxlcworICogZG93bnN0cmVhbSBvZiB0aGUgZ2l2
ZW4gY29uc3RyYWludCBhbmQgcmVjb21wdXRlIHRoZSBhY3R1YWwKKyAqIHZhbHVlcyBvZiBhbGwg
dmFyaWFibGVzIHdob3NlIHN0YXkgZmxhZyBpcyB0cnVlLiBJZiBhIGN5Y2xlIGlzCisgKiBkZXRl
Y3RlZCwgcmVtb3ZlIHRoZSBnaXZlbiBjb25zdHJhaW50IGFuZCBhbnN3ZXIKKyAqIGZhbHNlLiBP
dGhlcndpc2UsIGFuc3dlciB0cnVlLgorICogRGV0YWlsczogQ3ljbGVzIGFyZSBkZXRlY3RlZCB3
aGVuIGEgbWFya2VkIHZhcmlhYmxlIGlzCisgKiBlbmNvdW50ZXJlZCBkb3duc3RyZWFtIG9mIHRo
ZSBnaXZlbiBjb25zdHJhaW50LiBUaGUgc2VuZGVyIGlzCisgKiBhc3N1bWVkIHRvIGhhdmUgbWFy
a2VkIHRoZSBpbnB1dHMgb2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQgd2l0aAorICogdGhlIGdpdmVu
IG1hcmsuIFRodXMsIGVuY291bnRlcmluZyBhIG1hcmtlZCBub2RlIGRvd25zdHJlYW0gb2YKKyAq
IHRoZSBvdXRwdXQgY29uc3RyYWludCBtZWFucyB0aGF0IHRoZXJlIGlzIGEgcGF0aCBmcm9tIHRo
ZQorICogY29uc3RyYWludCdzIG91dHB1dCB0byBvbmUgb2YgaXRzIGlucHV0cy4KKyAqLworUGxh
bm5lci5wcm90b3R5cGUuYWRkUHJvcGFnYXRlID0gZnVuY3Rpb24gKGMsIG1hcmspIHsKKyAgdmFy
IHRvZG8gPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgdG9kby5hZGQoYyk7CisgIHdoaWxl
ICh0b2RvLnNpemUoKSA+IDApIHsKKyAgICB2YXIgZCA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAg
ICBpZiAoZC5vdXRwdXQoKS5tYXJrID09IG1hcmspIHsKKyAgICAgIHRoaXMuaW5jcmVtZW50YWxS
ZW1vdmUoYyk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGQucmVjYWxjdWxhdGUo
KTsKKyAgICB0aGlzLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8oZC5vdXRwdXQoKSwgdG9kbyk7
CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKworLyoqCisgKiBVcGRhdGUgdGhlIHdhbGthYm91
dCBzdHJlbmd0aHMgYW5kIHN0YXkgZmxhZ3Mgb2YgYWxsIHZhcmlhYmxlcworICogZG93bnN0cmVh
bSBvZiB0aGUgZ2l2ZW4gY29uc3RyYWludC4gQW5zd2VyIGEgY29sbGVjdGlvbiBvZgorICogdW5z
YXRpc2ZpZWQgY29uc3RyYWludHMgc29ydGVkIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcgc3RyZW5n
dGguCisgKi8KK1BsYW5uZXIucHJvdG90eXBlLnJlbW92ZVByb3BhZ2F0ZUZyb20gPSBmdW5jdGlv
biAob3V0KSB7CisgIG91dC5kZXRlcm1pbmVkQnkgPSBudWxsOworICBvdXQud2Fsa1N0cmVuZ3Ro
ID0gU3RyZW5ndGguV0VBS0VTVDsKKyAgb3V0LnN0YXkgPSB0cnVlOworICB2YXIgdW5zYXRpc2Zp
ZWQgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgdmFyIHRvZG8gPSBuZXcgT3JkZXJlZENv
bGxlY3Rpb24oKTsKKyAgdG9kby5hZGQob3V0KTsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkg
eworICAgIHZhciB2ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdi5jb25zdHJhaW50cy5zaXplKCk7IGkrKykgeworICAgICAgdmFyIGMgPSB2LmNvbnN0cmFp
bnRzLmF0KGkpOworICAgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgICAg
ICBpZiAoIWMuaXNTYXRpc2ZpZWQoKSkKKyAgICAgICAgdW5zYXRpc2ZpZWQuYWRkKGMpOworICAg
IH0KKyAgICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBuZXh0ID0g
di5jb25zdHJhaW50cy5hdChpKTsKKyAgICAgIGlmIChuZXh0ICE9IGRldGVybWluaW5nICYmIG5l
eHQuaXNTYXRpc2ZpZWQoKSkgeworICAgICAgICBuZXh0LnJlY2FsY3VsYXRlKCk7CisgICAgICAg
IHRvZG8uYWRkKG5leHQub3V0cHV0KCkpOworICAgICAgfQorICAgICAgdHJ5IHsgZXhjZXB0aW9u
KCk7IH0gY2F0Y2goZSkgeyB9CisgICAgfQorICB9CisgIHJldHVybiB1bnNhdGlzZmllZDsKK30K
KworUGxhbm5lci5wcm90b3R5cGUuYWRkQ29uc3RyYWludHNDb25zdW1pbmdUbyA9IGZ1bmN0aW9u
ICh2LCBjb2xsKSB7CisgIHZhciBkZXRlcm1pbmluZyA9IHYuZGV0ZXJtaW5lZEJ5OworICB2YXIg
Y2MgPSB2LmNvbnN0cmFpbnRzOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNjLnNpemUoKTsgaSsr
KSB7CisgICAgdmFyIGMgPSBjYy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRj
aChlKSB7IH0KKyAgICBpZiAoYyAhPSBkZXRlcm1pbmluZyAmJiBjLmlzU2F0aXNmaWVkKCkpCisg
ICAgICBjb2xsLmFkZChjKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogUCBsIGEgbgorICogLS0t
ICovCisKKy8qKgorICogQSBQbGFuIGlzIGFuIG9yZGVyZWQgbGlzdCBvZiBjb25zdHJhaW50cyB0
byBiZSBleGVjdXRlZCBpbiBzZXF1ZW5jZQorICogdG8gcmVzYXRpc2Z5IGFsbCBjdXJyZW50bHkg
c2F0aXNmaWFibGUgY29uc3RyYWludHMgaW4gdGhlIGZhY2Ugb2YKKyAqIG9uZSBvciBtb3JlIGNo
YW5naW5nIGlucHV0cy4KKyAqLworZnVuY3Rpb24gUGxhbigpIHsKKyAgdGhpcy52ID0gbmV3IE9y
ZGVyZWRDb2xsZWN0aW9uKCk7Cit9CisKK1BsYW4ucHJvdG90eXBlLmFkZENvbnN0cmFpbnQgPSBm
dW5jdGlvbiAoYykgeworICB0aGlzLnYuYWRkKGMpOworfQorCitQbGFuLnByb3RvdHlwZS5zaXpl
ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy52LnNpemUoKTsKK30KKworUGxhbi5wcm90
b3R5cGUuY29uc3RyYWludEF0ID0gZnVuY3Rpb24gKGluZGV4KSB7CisgIHJldHVybiB0aGlzLnYu
YXQoaW5kZXgpOworfQorCitQbGFuLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgewor
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2l6ZSgpOyBpKyspIHsKKyAgICB2YXIgYyA9IHRo
aXMuY29uc3RyYWludEF0KGkpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsg
fQorICAgIGMuZXhlY3V0ZSgpOworICB9Cit9CisKKy8qIC0tLSAqCisgKiBNIGEgaSBuCisgKiAt
LS0gKi8KKworLyoqCisgKiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBEZWx0YUJsdWUgYmVuY2htYXJr
LiBBIGxvbmcgY2hhaW4gb2YgZXF1YWxpdHkKKyAqIGNvbnN0cmFpbnRzIGlzIGNvbnN0cnVjdGVk
IHdpdGggYSBzdGF5IGNvbnN0cmFpbnQgb24gb25lIGVuZC4gQW4KKyAqIGVkaXQgY29uc3RyYWlu
dCBpcyB0aGVuIGFkZGVkIHRvIHRoZSBvcHBvc2l0ZSBlbmQgYW5kIHRoZSB0aW1lIGlzCisgKiBt
ZWFzdXJlZCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB0aGlzIGNvbnN0cmFpbnQsIGFuZCBleHRy
YWN0aW5nCisgKiBhbmQgZXhlY3V0aW5nIGEgY29uc3RyYWludCBzYXRpc2ZhY3Rpb24gcGxhbi4g
VGhlcmUgYXJlIHR3byBjYXNlcy4KKyAqIEluIGNhc2UgMSwgdGhlIGFkZGVkIGNvbnN0cmFpbnQg
aXMgc3Ryb25nZXIgdGhhbiB0aGUgc3RheQorICogY29uc3RyYWludCBhbmQgdmFsdWVzIG11c3Qg
cHJvcGFnYXRlIGRvd24gdGhlIGVudGlyZSBsZW5ndGggb2YgdGhlCisgKiBjaGFpbi4gSW4gY2Fz
ZSAyLCB0aGUgYWRkZWQgY29uc3RyYWludCBpcyB3ZWFrZXIgdGhhbiB0aGUgc3RheQorICogY29u
c3RyYWludCBzbyBpdCBjYW5ub3QgYmUgYWNjb21vZGF0ZWQuIFRoZSBjb3N0IGluIHRoaXMgY2Fz
ZSBpcywKKyAqIG9mIGNvdXJzZSwgdmVyeSBsb3cuIFR5cGljYWwgc2l0dWF0aW9ucyBsaWUgc29t
ZXdoZXJlIGJldHdlZW4gdGhlc2UKKyAqIHR3byBleHRyZW1lcy4KKyAqLworZnVuY3Rpb24gY2hh
aW5UZXN0KG4pIHsKKyAgcGxhbm5lciA9IG5ldyBQbGFubmVyKCk7CisgIHZhciBwcmV2ID0gbnVs
bCwgZmlyc3QgPSBudWxsLCBsYXN0ID0gbnVsbDsKKworICAvLyBCdWlsZCBjaGFpbiBvZiBuIGVx
dWFsaXR5IGNvbnN0cmFpbnRzCisgIGZvciAodmFyIGkgPSAwOyBpIDw9IG47IGkrKykgeworICAg
IHZhciBuYW1lID0gInYiICsgaTsKKyAgICB2YXIgdiA9IG5ldyBWYXJpYWJsZShuYW1lKTsKKyAg
ICBpZiAocHJldiAhPSBudWxsKQorICAgICAgbmV3IEVxdWFsaXR5Q29uc3RyYWludChwcmV2LCB2
LCBTdHJlbmd0aC5SRVFVSVJFRCk7CisgICAgaWYgKGkgPT0gMCkgZmlyc3QgPSB2OworICAgIGlm
IChpID09IG4pIGxhc3QgPSB2OworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsg
fQorICAgIHByZXYgPSB2OworICB9CisKKyAgbmV3IFN0YXlDb25zdHJhaW50KGxhc3QsIFN0cmVu
Z3RoLlNUUk9OR19ERUZBVUxUKTsKKyAgdmFyIGVkaXQgPSBuZXcgRWRpdENvbnN0cmFpbnQoZmly
c3QsIFN0cmVuZ3RoLlBSRUZFUlJFRCk7CisgIHZhciBlZGl0cyA9IG5ldyBPcmRlcmVkQ29sbGVj
dGlvbigpOworICBlZGl0cy5hZGQoZWRpdCk7CisgIHZhciBwbGFuID0gcGxhbm5lci5leHRyYWN0
UGxhbkZyb21Db25zdHJhaW50cyhlZGl0cyk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyBp
KyspIHsKKyAgICBmaXJzdC52YWx1ZSA9IGk7CisgICAgcGxhbi5leGVjdXRlKCk7CisgICAgaWYg
KGxhc3QudmFsdWUgIT0gaSkKKyAgICAgIGFsZXJ0KCJDaGFpbiB0ZXN0IGZhaWxlZC4iKTsKKyAg
ICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0KKyAgfQorfQorCisvKioKKyAqIFRo
aXMgdGVzdCBjb25zdHJ1Y3RzIGEgdHdvIHNldHMgb2YgdmFyaWFibGVzIHJlbGF0ZWQgdG8gZWFj
aAorICogb3RoZXIgYnkgYSBzaW1wbGUgbGluZWFyIHRyYW5zZm9ybWF0aW9uIChzY2FsZSBhbmQg
b2Zmc2V0KS4gVGhlCisgKiB0aW1lIGlzIG1lYXN1cmVkIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9u
IGVpdGhlciBzaWRlIG9mIHRoZQorICogbWFwcGluZyBhbmQgdG8gY2hhbmdlIHRoZSBzY2FsZSBh
bmQgb2Zmc2V0IGZhY3RvcnMuCisgKi8KK2Z1bmN0aW9uIHByb2plY3Rpb25UZXN0KG4pIHsKKyAg
cGxhbm5lciA9IG5ldyBQbGFubmVyKCk7CisgIHZhciBzY2FsZSA9IG5ldyBWYXJpYWJsZSgic2Nh
bGUiLCAxMCk7CisgIHZhciBvZmZzZXQgPSBuZXcgVmFyaWFibGUoIm9mZnNldCIsIDEwMDApOwor
ICB2YXIgc3JjID0gbnVsbCwgZHN0ID0gbnVsbDsKKworICB2YXIgZGVzdHMgPSBuZXcgT3JkZXJl
ZENvbGxlY3Rpb24oKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICBzcmMg
PSBuZXcgVmFyaWFibGUoInNyYyIgKyBpLCBpKTsKKyAgICBkc3QgPSBuZXcgVmFyaWFibGUoImRz
dCIgKyBpLCBpKTsKKyAgICBkZXN0cy5hZGQoZHN0KTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsg
fSBjYXRjaChlKSB7IH0KKyAgICBuZXcgU3RheUNvbnN0cmFpbnQoc3JjLCBTdHJlbmd0aC5OT1JN
QUwpOworICAgIG5ldyBTY2FsZUNvbnN0cmFpbnQoc3JjLCBzY2FsZSwgb2Zmc2V0LCBkc3QsIFN0
cmVuZ3RoLlJFUVVJUkVEKTsKKyAgfQorCisgIGNoYW5nZShzcmMsIDE3KTsKKyAgaWYgKGRzdC52
YWx1ZSAhPSAxMTcwKSBhbGVydCgiUHJvamVjdGlvbiAxIGZhaWxlZCIpOworICBjaGFuZ2UoZHN0
LCAxMDUwKTsKKyAgaWYgKHNyYy52YWx1ZSAhPSA1KSBhbGVydCgiUHJvamVjdGlvbiAyIGZhaWxl
ZCIpOworICBjaGFuZ2Uoc2NhbGUsIDUpOworICBmb3IgKHZhciBpID0gMDsgaSA8IG4gLSAxOyBp
KyspIHsKKyAgICBpZiAoZGVzdHMuYXQoaSkudmFsdWUgIT0gaSAqIDUgKyAxMDAwKQorICAgICAg
YWxlcnQoIlByb2plY3Rpb24gMyBmYWlsZWQiKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBj
YXRjaChlKSB7IH0KKyAgfQorICBjaGFuZ2Uob2Zmc2V0LCAyMDAwKTsKKyAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuIC0gMTsgaSsrKSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1
ICsgMjAwMCkKKyAgICAgIGFsZXJ0KCJQcm9qZWN0aW9uIDQgZmFpbGVkIik7CisgICAgdHJ5IHsg
ZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworZnVuY3Rpb24gY2hhbmdlKHYs
IG5ld1ZhbHVlKSB7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KHYsIFN0cmVuZ3Ro
LlBSRUZFUlJFRCk7CisgIHZhciBlZGl0cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBl
ZGl0cy5hZGQoZWRpdCk7CisgIHZhciBwbGFuID0gcGxhbm5lci5leHRyYWN0UGxhbkZyb21Db25z
dHJhaW50cyhlZGl0cyk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIHYu
dmFsdWUgPSBuZXdWYWx1ZTsKKyAgICBwbGFuLmV4ZWN1dGUoKTsKKyAgfQorICBlZGl0LmRlc3Ry
b3lDb25zdHJhaW50KCk7Cit9CisKKy8vIEdsb2JhbCB2YXJpYWJsZSBob2xkaW5nIHRoZSBjdXJy
ZW50IHBsYW5uZXIuCit2YXIgcGxhbm5lciA9IG51bGw7CisKK2Z1bmN0aW9uIGRlbHRhQmx1ZSgp
IHsKKyAgY2hhaW5UZXN0KDEwMCk7CisgIHByb2plY3Rpb25UZXN0KDEwMCk7Cit9CisKK3sKKyAg
ICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsr
aSkKKyAgICAgICAgZGVsdGFCbHVlKCk7Cit9CisKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2Zha2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdo
ZW4tZmluaXNoZWQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
ZmFrZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVuLWZpbmlzaGVkLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzggQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpOworfQorCitjbGFzcyBOdW1iZXJzIHsKKyAgICBj
b25zdHJ1Y3RvcihsaW1pdCA9IDEwMCkgeworICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7Cisg
ICAgICAgIHRoaXMuaXRlbSA9IDA7CisgICAgfQorCisgICAgbmV4dCgpIHsKKyAgICAgICAgaWYg
KHRoaXMuaXRlbSA+PSB0aGlzLmxpbWl0KQorICAgICAgICAgICAgdGhyb3cgImRvbmUiOworICAg
ICAgICByZXR1cm4gdGhpcy5pdGVtKys7CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFuc3Bvc2Uo
SSwgZikgeworICAgIHJldHVybiBjbGFzcyBUcmFuc3Bvc2UgeworICAgICAgICBjb25zdHJ1Y3Rv
ciguLi5hcmdzKSB7CisgICAgICAgICAgICB0aGlzLml0ZXJhdG9yID0gbmV3IEkoLi4uYXJncyk7
CisgICAgICAgIH0KKworICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIGYodGhp
cy5pdGVyYXRvci5uZXh0KCkpOworICAgICAgICB9CisgICAgfTsKK30KKworbGV0IEV2ZW5OdW1i
ZXJzID0gdHJhbnNwb3NlKE51bWJlcnMsICh4KT0+eCoyKTsKK2Z1bmN0aW9uIHZlcmlmeUV2ZW4o
cHJldiwgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSAlIDIgPT09IDApOworICAgIGFzc2Vy
dCghcHJldi52YWx1ZSB8fCBwcmV2LnZhbHVlKzIgPT09IGN1ci52YWx1ZSk7Cit9CisKK2xldCBT
dHJpbmdOdW1iZXJzID0gdHJhbnNwb3NlKE51bWJlcnMsICh4KT0+YCR7eH1gKTsKK2Z1bmN0aW9u
IHZlcmlmeVN0cmluZyhfLCBjdXIpIHsKKyAgICBhc3NlcnQoY3VyLnZhbHVlID09PSBgJHtjdXIu
dmFsdWV9YCk7Cit9CisKK2xldCBpdGVyYXRvcnMgPSBbCisgICAgW051bWJlcnMsIGZ1bmN0aW9u
KCkge31dLAorICAgIFtOdW1iZXJzLCBmdW5jdGlvbigpIHt9XSwKKyAgICBbU3RyaW5nTnVtYmVy
cywgdmVyaWZ5U3RyaW5nXSwKKyAgICBbRXZlbk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorICAgIFtF
dmVuTnVtYmVycywgdmVyaWZ5RXZlbl0sCitdOworCitmdW5jdGlvbiBmb28oaSkge30KK25vSW5s
aW5lKGZvbyk7CisKK2Z1bmN0aW9uIHJ1bkl0ZXJhdG9ycygpIHsKKyAgICBmb3IgKGxldCBbaXRl
cmF0b3IsIHZlcmlmeV0gb2YgaXRlcmF0b3JzKSB7CisgICAgICAgIGxldCBpID0gbmV3IGl0ZXJh
dG9yOworICAgICAgICBsZXQgcHJldiA9IHt9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICAgICAgbGV0IGN1ciA9IHt9OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICBjdXIudmFsdWUgPSBpLm5leHQoKTsKKyAgICAgICAgICAgICAgICB2ZXJpZnkocHJldiwgY3Vy
KTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGlmIChlICE9PSAi
ZG9uZSIpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkOiAiICsgZSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2
ID0gY3VyOworICAgICAgICB9CisgICAgfQorfQorCit7CisgICAgbGV0IHN0YXJ0ID0gRGF0ZS5u
b3coKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDA7ICsraSkKKyAgICAgICAgcnVuSXRl
cmF0b3JzKCk7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBwcmludChEYXRlLm5vdygpIC0gc3Rh
cnQpOworfQpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWNhdGNoLXdvcmQtY291
bnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWNhdGNoLXdv
cmQtY291bnQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5
LWNhdGNoLXdvcmQtY291bnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MDMgQEAKKyJ1
c2Ugc3RyaWN0IjsKKworbGV0IGFzc2VydCA9IChiLCBtKSA9PiB7CisgICAgaWYgKCFiKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb246ICIgKyBtKTsKK30KKworY2xhc3Mg
RU9GIGV4dGVuZHMgRXJyb3IgeyB9OworCitsZXQgdGV4dHMgPSBbYGZ1bmN0aW9uIGZvbygpIHsK
KyAgICB2YXIgbyA9IHt9OworICAgIG8uYSA9IDE7CisgICAgby5iID0gMjsKKyAgICBvLmMgPSAz
OworICAgIG8uZCA9IDQ7CisgICAgby5lID0gNTsKKyAgICBvLmYgPSA2OworICAgIG8uZyA9IDc7
CisgICAgcmV0dXJuIG87Cit9CisKK3ZhciByZXN1bHQgPSAwOworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDA7ICsraSkKKyAgICByZXN1bHQgKz0gZm9vKCkuYTsKKworaWYgKHJlc3VsdCAhPSAx
MDAwMDApCisgICAgdGhyb3cgIkVycm9yLCBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworCitgLGAi
dXNlIHN0cmljdCI7CisKKyhmdW5jdGlvbigpIHsKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYXBw
bHkoYSwgYikgeworICAgICAgICAgICAgcmV0dXJuIGEgKyBiOworICAgICAgICB9CisgICAgfTsK
KyAgICAKKyAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIGxldCByZXN1bHQgPSAwOworICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdCA9
IG8uYXBwbHkocmVzdWx0LCAxKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
CisgICAgbm9JbmxpbmUoZm9vKTsKKyAgICAKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAgICAgIHJlc3VsdCArPSBmb28oKTsKKyAg
ICAKKyAgICBpZiAocmVzdWx0ICE9IDEwMDAwMDAwKQorICAgICAgICB0aHJvdyBuZXcgIkJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOworCitgLGBmdW5jdGlvbiBmb28oYSwgYikgeworICAg
IHJldHVybiBhcmd1bWVudHNbMF0gKyBiOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oaSwgMSk7
CisgICAgaWYgKHJlc3VsdCAhPSBpICsgMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworfQorYCxgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gYXJndW1lbnRz
OyB9Citub0lubGluZShmb28pOworCitmdW5jdGlvbiBiYXIobykgeworICAgIHZhciB0bXAgPSBv
WzBdOworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsg
KytpKSB7CisgICAgICAgIGlmICh0bXApCisgICAgICAgICAgICByZXN1bHQgKz0gdG1wICogaTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KK25vSW5saW5lKGJhcik7CisKK3ZhciByZXN1
bHQgPSAwOwordmFyIG8gPSBmb28oKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkK
KyAgICByZXN1bHQgKz0gYmFyKG8pOworCitpZiAocmVzdWx0ICE9PSAwKQorICAgIHRocm93ICJF
cnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK2AsYGZ1bmN0aW9uIGZvbygpIHsKKyAgICAi
dXNlIHN0cmljdCI7CisgICAgcmV0dXJuIFsuLi5hcmd1bWVudHNdOworCit9CisKK25vSW5saW5l
KGZvbyk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVz
dWx0ID0gZm9vKGkpOworICAgIGlmIChyZXN1bHRbMF0gIT0gaSkKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorYCxgZnVuY3Rpb24gZm9vKCkgeworICAg
IHJldHVybiBhcmd1bWVudHNbMF07Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyhpKTsKKyAgICBp
ZiAocmVzdWx0ICE9IGkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdDsKK30KK2AsYGZ1bmN0aW9uIGZvbyhhLCBiKSB7CisgICAgcmV0dXJuIGEgKyBiOworfQor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZv
bygxLCAyLCAzKTsKKyAgICBpZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93ICJCYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworfQorCitgLGBmdW5jdGlvbiBmb28oYSkgeworICAgIHZhciByZXN1
bHQgPSBhWzBdOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJlc3VsdCArPSBhWzFdOworICAg
IGlmIChyZXN1bHQpCisgICAgICAgIHJlc3VsdCArPSBhWzJdOworICAgIGlmIChyZXN1bHQpCisg
ICAgICAgIHJlc3VsdCArPSBhWzNdOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJlc3VsdCAr
PSBhWzRdOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZhciByZXN1bHQgPSAwOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIGFycmF5ID0gWzEsIDIsIDMs
IDQsIDVdOworICAgIGlmIChpICYgMSkKKyAgICAgICAgYXJyYXkuZiA9IDQyOworICAgIHJlc3Vs
dCArPSBmb28oYXJyYXkpOworfQorCitpZiAocmVzdWx0ICE9IDE1MDAwMDApCisgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgLy9AIHJ1bk5vRlRMCisKK3ZhciBm
ID0gZnVuY3Rpb24oYSkgeworICAgIHZhciBzdW0gPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYS5sZW5ndGg7IGkrKykgeworICAgICAgICBzdW0gKz0gYVtpXTsKKyAgICB9ICAgCisgICAg
cmV0dXJuIHN1bTsKK307CisKK3ZhciBydW4gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbzEgPSBb
XTsgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICBvMVtpXSA9
IGk7CisgICAgfQorICAgIAorICAgIHZhciBvMiA9IHt9OyAKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG8xLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIG8yW2ldID0gbzFbaV07CisgICAgfQorICAg
IG8yLmxlbmd0aCA9IG8xLmxlbmd0aDsKKworICAgIHZhciBzdW0gPSAwOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgaWYgKGkgJSAyID09PSAwKQorICAg
ICAgICAgICAgc3VtICs9IGYobzEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdW0gKz0g
ZihvMik7CisgICAgfQorICAgIHJldHVybiBzdW07Cit9OworCit2YXIgcmVzdWx0ID0gcnVuKCk7
CitpZiAocmVzdWx0ICE9PSA0OTUwMDAwMDApCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyBy
ZXN1bHQ7CitgLGB2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1
bHQgPDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRl
c3QyKGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVy
biB0cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0
ID4+IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5
ID0gW10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAx
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0
MSk7CisgICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30K
KworaWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dDogIiArIHJlc3VsdDsKK2AsYHZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgewor
ICAgIHJlc3VsdCA8PCAxOworICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVu
Y3Rpb24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBe
PSByZXN1bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2
YXIgYXJyYXkgPSBbXQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJh
eVtpXSA9IDE7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmZv
ckVhY2godGVzdDEpOworICAgIGFycmF5LmZvckVhY2godGVzdDIpOworICAgIGFycmF5LmZvckVh
Y2godGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgdmFyIHJlc3VsdCA9IDA7CitmdW5jdGlv
biB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0dXJu
IHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAgICBy
ZXN1bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7
CisgICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0cnVlOworfQorCit2YXIg
cmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsg
KytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7
CisgICAgYXJyYXkubWFwKHRlc3QxKTsKKyAgICBhcnJheS5tYXAodGVzdDIpOworICAgIGFycmF5
Lm1hcCh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CitgLGB2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0
aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAg
IHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMp
IHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zh
ciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
OyArK2kpCisgICAgYXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKysp
IHsKKyAgICBhcnJheS5yZWR1Y2UodGVzdDEsIHt9KTsKKyAgICBhcnJheS5yZWR1Y2UodGVzdDIs
IHt9KTsKKyAgICBhcnJheS5yZWR1Y2UodGVzdDMsIHt9KTsKK30KKworaWYgKHJlc3VsdCAhPSAx
NDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK2As
YHZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOwor
ICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7
CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9
CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LnJlZHVjZVJpZ2h0KHRlc3QxLCB7
fSk7CisgICAgYXJyYXkucmVkdWNlUmlnaHQodGVzdDIsIHt9KTsKKyAgICBhcnJheS5yZWR1Y2VS
aWdodCh0ZXN0Mywge30pOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgdmFyIHJlc3VsdCA9IDA7Citm
dW5jdGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAg
cmV0dXJuIGZhbHNlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7
CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIGZhbHNlOworfQorZnVuY3Rpb24gdGVzdDMo
YSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDsgaSsrKSB7CisgICAgYXJyYXkuc29tZSh0ZXN0MSk7CisgICAgYXJyYXkuc29tZSh0ZXN0Mik7
CisgICAgYXJyYXkuc29tZSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikK
KyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CitgLGBmdW5jdGlvbiBm
b28oKSB7CisgICAgdmFyIGEgPSBuZXcgQXJyYXkoMTAwMCk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwOyArK2kpIHsKKyAgICAgICAgaWYgKGkgJSA3ID09PSAwKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGFbaV0gPSBpOworICAgIH0KKworICAgIHZhciBuaXRlcnMgPSAx
MDAwMDsKKyAgICB2YXIgcmVtb3ZlID0gdHJ1ZTsKKyAgICB2YXIgbGFzdFJlbW92ZWRJdGVtID0g
bnVsbDsKKyAgICB2YXIgbGFzdFJlbW92ZWRJbmRleCA9IG51bGw7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuaXRlcnM7ICsraSkgeworICAgICAgICBpZiAocmVtb3ZlKSB7CisgICAgICAgICAg
ICBsYXN0UmVtb3ZlZEluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYS5sZW5ndGgp
OworICAgICAgICAgICAgbGFzdFJlbW92ZWRJdGVtID0gYVtsYXN0UmVtb3ZlZEluZGV4XTsKKyAg
ICAgICAgICAgIGEuc3BsaWNlKGxhc3RSZW1vdmVkSW5kZXgsIDEpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYS5zcGxpY2UobGFzdFJlbW92ZWRJbmRleCwgMCwgbGFzdFJlbW92ZWRJ
dGVtKTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmUgPSAhcmVtb3ZlOworICAgIH0KKyAgICBp
ZiAoYS5sZW5ndGggIT09IDEwMDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0
IGxlbmd0aCIpOworfTsKK2ZvbygpOworYCxgZnVuY3Rpb24gZm9vKCkgeworICAgIHZhciBhID0g
W107CisgICAgdmFyIGIgPSBbXTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7
ICsraSkgeworICAgICAgICBhLnB1c2goaSArIDAuNSk7CisgICAgICAgIGIucHVzaChpIC0gMC41
KTsKKyAgICB9CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhLmxlbmd0aDsgKytqKQorICAgICAgICAgICAgYVtq
XSArPSBiW2pdOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgYS5sZW5ndGg7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGFbaV07CisgICAgCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAh
PSA0OTk1MDAwMDApCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKK2AsYGZ1
bmN0aW9uIGZvbygpIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICAgICAgYXJyYXkucHVzaChpICsgMC41KTsKKyAgICAK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBmb3IgKHZhciBq
ID0gMDsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgYXJyYXlbal0rKzsKKyAg
ICB9CisKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5
Lmxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHQgKz0gYXJyYXlbaV07CisgICAgCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAhPSAxNTAw
MDAwKQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OworCisKK2AsYGZ1bmN0aW9u
IGZvbygpIHsKKyAgICB2YXIgYSA9IFtdOworICAgIHZhciBiID0gW107CisgICAgdmFyIGMgPSBb
XTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBh
LnB1c2goaSArIDAuNSk7CisgICAgICAgIGIucHVzaChpIC0gMC41KTsKKyAgICAgICAgYy5wdXNo
KChpICUgMikgPyAwLjUgOiAtMC4yNSk7CisgICAgfQorICAgIAorICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYS5sZW5ndGg7
ICsraikKKyAgICAgICAgICAgIGFbal0gKz0gYltqXSAqIGNbal07CisgICAgfQorCisgICAgdmFy
IHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKQorICAg
ICAgICByZXN1bHQgKz0gYVtpXTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2YXIg
cmVzdWx0ID0gZm9vKCk7CitpZiAocmVzdWx0ICE9IDYzMDYyNTAwKQorICAgIHRocm93ICJCYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworCisKK2AsYGZ1bmN0aW9uIGZvbygpIHsKKyAgICB2YXIgYXJy
YXkgPSBbXTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICAg
ICAgYXJyYXkucHVzaChpICsgMC41KTsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0gMDsg
aiA8IGFycmF5Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgcmVzdWx0ICs9IGFycmF5W2pdOwor
ICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpZiAoZm9vKCkgIT0gNTAwMDAw
MDAwKQorICAgIHRocm93ICJFUlJPUiI7CisKK2AsYGZ1bmN0aW9uIGZvbygpIHsKKyAgICB2YXIg
YSA9IFtdOworICAgIHZhciBiID0gW107CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwOyArK2kpIHsKKyAgICAgICAgYS5wdXNoKGkgKyAxKTsKKyAgICAgICAgYi5wdXNoKGkgLSAx
KTsKKyAgICB9CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAg
ICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBhLmxlbmd0aDsgKytqKQorICAgICAgICAgICAgYVtq
XSArPSBiW2pdOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGEubGVuZ3RoOyArK2opCisg
ICAgICAgICAgICBhW2pdIC09IGJbal07CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9IDA7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHQgKz0g
YVtpXTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpZiAoZm9vKCkgIT0gNTAwNTAw
KQorICAgIHRocm93ICJFUlJPUiI7CisKKworYCxgZnVuY3Rpb24gZm9vKCkgeworICAgIHZhciBh
cnJheSA9IFtdOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKQorICAg
ICAgICBhcnJheS5wdXNoKGkgKyAoKGkgJSAyKSA/IDAuNSA6IDApKTsKKyAgICAKKyAgICB2YXIg
cmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgcmVz
dWx0ICs9IGFycmF5W2pdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2
YXIgcmVzdWx0ID0gZm9vKCk7CitpZiAocmVzdWx0ICE9IDQ5OTc1MDAwMCkKKyAgICB0aHJvdyAi
QmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKworYCxgLy9AIHNraXAKKwordmFyIGFycmF5ID0gbmV3
IEFycmF5KDEwMDAwKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBh
cnJheVtpICUgYXJyYXkubGVuZ3RoXSA9IG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAw
MCkpOworCitmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgaWYg
KGFycmF5W2ldLmJ5dGVMZW5ndGggIT0gMTAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
bGVuZ3RoOiAiICsgYXJyYXlbaV0uYnl0ZUxlbmd0aDsKKyAgICBpZiAoYXJyYXlbaV0uYnVmZmVy
LmJ5dGVMZW5ndGggIT0gMTAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgYnVmZmVyLmJ5
dGVMZW5ndGg6ICIgKyBhcnJheVtpXS5idWZmZXIuYnl0ZUxlbmd0aDsKK30KK2AsYC8vQCBza2lw
CisKK3ZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAwMCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
NzAwMDA7ICsraSkKKyAgICBhcnJheVtpICUgYXJyYXkubGVuZ3RoXSA9IG5ldyBEYXRhVmlldyhu
ZXcgQXJyYXlCdWZmZXIoMTApKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7
ICsraSkgeworICAgIGlmIChhcnJheVtpXS5ieXRlTGVuZ3RoICE9IDEwKQorICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCBsZW5ndGg6ICIgKyBhcnJheVtpXS5ieXRlTGVuZ3RoOworICAgIGlmIChh
cnJheVtpXS5idWZmZXIuYnl0ZUxlbmd0aCAhPSAxMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgYnVmZmVyLmJ5dGVMZW5ndGg6ICIgKyBhcnJheVtpXS5idWZmZXIuYnl0ZUxlbmd0aDsKK30K
K2AsYC8vQCBza2lwCisKK3ZhciByZXN1bHQgPSAwOwordmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1
ZmZlcigxMCk7Cit2YXIgYXJyYXkxID0gbmV3IEludDMyQXJyYXkoYnVmZmVyLCA0LCAxKTsKK3Zh
ciBhcnJheTIgPSBuZXcgVWludDMyQXJyYXkoMTApOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkgeworICAgIHJlc3VsdCArPSBhcnJheTEuYnl0ZU9mZnNldDsKKyAgICByZXN1
bHQgKz0gYXJyYXkyLmJ5dGVPZmZzZXQ7Cit9CisKK2lmIChyZXN1bHQgIT0gNDAwMDAwMCkKKyAg
ICB0aHJvdyAiRXJyb3I6IHdyb25nIHJlc3VsdDogIiArIHJlc3VsdDsKK2AsYC8vQCBza2lwCisK
K3ZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAwMCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDAwOyArK2kpCisgICAgYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0gPSBuZXcgSW50OEFycmF5KG5l
dyBBcnJheUJ1ZmZlcigxMDAwKSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3Ro
OyArK2kpIHsKKyAgICBpZiAoYXJyYXlbaV0ubGVuZ3RoICE9IDEwMDApCisgICAgICAgIHRocm93
ICJFcnJvcjogYmFkIGxlbmd0aDogIiArIGFycmF5W2ldLmxlbmd0aDsKKyAgICBpZiAoYXJyYXlb
aV0uYnVmZmVyLmJ5dGVMZW5ndGggIT0gMTAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
YnVmZmVyLmJ5dGVMZW5ndGg6ICIgKyBhcnJheVtpXS5idWZmZXIuYnl0ZUxlbmd0aDsKK30KK2As
YC8vQCBza2lwCisKK3ZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAwMCk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0gPSBuZXcg
SW50OEFycmF5KG5ldyBBcnJheUJ1ZmZlcigxMCkpLmJ1ZmZlcjsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgIGlmIChhcnJheVtpXS5ieXRlTGVuZ3RoICE9
IDEwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBieXRlTGVuZ3RoOiAiICsgYXJyYXlbaV0u
Ynl0ZUxlbmd0aDsKK30KK2AsYC8vQCBza2lwCisKK3ZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAw
MCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNzAwMDA7ICsraSkKKyAgICBhcnJheVtpICUgYXJy
YXkubGVuZ3RoXSA9IG5ldyBJbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSk7CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICBpZiAoYXJyYXlbaV0ubGVu
Z3RoICE9IDEwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBsZW5ndGg6ICIgKyBhcnJheVtp
XS5sZW5ndGg7CisgICAgaWYgKGFycmF5W2ldLmJ1ZmZlci5ieXRlTGVuZ3RoICE9IDEwKQorICAg
ICAgICB0aHJvdyAiRXJyb3I6IGJhZCBidWZmZXIuYnl0ZUxlbmd0aDogIiArIGFycmF5W2ldLmJ1
ZmZlci5ieXRlTGVuZ3RoOworfQorYCxgLy9AIHNraXAKKworZm9yICh2YXIgaSA9IDA7IGkgPCA3
MDAwMDsgKytpKQorICAgIG5ldyBJbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSk7CisKK2As
YHZhciBmbiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAoKSA9PiBhcmd1bWVudHNbMF07Cit9
KDEpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgaWYoZm4oMikg
IT09IDEpIHRocm93IDA7IAorfQorYCxgdmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisK
K2NsYXNzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gdGVz
dFZhbHVlOworICAgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICBzdXBlcigpOworICAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gdGVzdFZh
bHVlOworICAgICAgICBhcnJvdygpOworICAgIH0KK30KKworbm9JbmxpbmUoQik7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgbGV0IGIgPSBuZXcgQigpOworICAg
IGlmIChiLnZhbHVlICE9IHRlc3RWYWx1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworfQorYCxgdmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisK
K2NsYXNzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gdGVz
dFZhbHVlOworICAgIH0KKworICAgIGdldFZhbHVlICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
dmFsdWU7CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZ2V0UGFyZW50VmFs
dWUoKSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiB0ZXN0VmFsdWU7CisgICAgICAgIHJl
dHVybiBhcnJvdygpOworICAgIH0KK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsr
aSkgeworICAgIGxldCBiID0gbmV3IEIoKTsKKyAgICBpZiAoYi5nZXRQYXJlbnRWYWx1ZSgpICE9
IHRlc3RWYWx1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0
OworfQorYCxgZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAgICByZXR1cm4gKChfYSwgX2IpID0+IF9h
ICsgX2IpKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDAwMDA7ICsraSkgeworICAgIGxldCByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJl
c3VsdCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
Cit9CitgLGB2YXIgYWYgPSAoYSwgYikgPT4gYSArIGI7CisKK25vSW5saW5lKGFmKTsKKworZnVu
Y3Rpb24gYmFyKGEsIGIpIHsKKyAgICByZXR1cm4gYWYoYSwgYik7Cit9CisKK25vSW5saW5lKGJh
cik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgbGV0IHJlc3Vs
dCA9IGJhcigxLCAyKTsKKyAgICBpZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KK2AsYC8vIFRoZSBzdHJsZW4gZnVuY3Rpb24g
aXMgZGVyaXZlZCBmcm9tIGhlcmU6CisvLyBodHRwOi8va3JpcGtlbi5naXRodWIuaW8vbWxvY19l
bXNjcmlwdGVuX3RhbGsvIy8yMAorCit2YXIgTUVNOCAgPSBuZXcgVWludDhBcnJheSgxMDI0KTsK
KworLy8gQ2FsY3VsYXRlIGxlbmd0aCBvZiBDIHN0cmluZzoKK2Z1bmN0aW9uIHN0cmxlbihwdHIp
IHsKKyAgcHRyID0gcHRyfDA7CisgIHZhciBjdXJyID0gMDsKKyAgY3VyciA9IHB0cjsKKyAgd2hp
bGUgKE1FTThbY3Vycl18MCAhPSAwKSB7CisgICAgY3VyciA9IChjdXJyICsgMSl8MDsKKyAgfQor
ICByZXR1cm4gKGN1cnIgLSBwdHIpfDA7Cit9CisKKy8vLS0tLS0gVGVzdCBkcml2ZXIgLS0tLQor
Citmb3IgKGkgPSAwOyBpIDwgMTAyNDsgaSsrKSB7CisgTUVNOFtpXSA9IGklMTk4OworfQorCitN
RU04WzddID0gMDsKKwordmFyIHN1bSA9IDAKK2ZvciAoaSA9IDA7IGkgPCAxMDAwMDAwOyBpKysp
IHsKKyAgc3VtICs9IHN0cmxlbig1KTsKK30KKworaWYgKHN1bSAhPSAyMDAwMDAwKQorICAgIHRo
cm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgCitvID0gUmVnRXhwOworaiA9IDA7Cits
ID0gMjsKK3ogPSAwOworZnVuY3Rpb24gdGVzdChvLCB6KSB7CisgICAgdmFyIGsgPSBhcmd1bWVu
dHNbKCgoaiA8PCAxIHwgbCkgPj4gMSkgXiAxKSAmICh6ICo9IDEpXTsKKyAgICBrLmlucHV0ID0g
MDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1MDAwOyBpKyspIHsKKyAgICAgICAgay5pbnB1
dCA9ICJmb28iOworICAgIH0KKworICAgIHJldHVybiBrLmlucHV0OworfQordmFyIHJlc3VsdCA9
IHRlc3Qoe19fcHJvdG9fXzoge2Jhcjoid2liYmxlIiwgaW5wdXQ6ImZvbyJ9fSk7Cit2YXIgcmVz
dWx0ID0gdGVzdCh7aW5wdXQ6ImZvbyJ9KTsKK3ZhciByZXN1bHQgPSB0ZXN0KG8pCitmb3IgKHZh
ciBrID0gMDsgayA8IDY7IGsrKykgeworICAgIHZhciBzdGFydCA9IG5ldyBEYXRlOworICAgIHZh
ciBuZXdSZXN1bHQgPSB0ZXN0KG8pCisgICAgdmFyIGVuZCA9IG5ldyBEYXRlOworICAgIGlmIChu
ZXdSZXN1bHQgIT0gcmVzdWx0KQorICAgICAgICB0aHJvdyAiRmFpbGVkIGF0ICIgKyBrICsgIndp
dGggIiArIG5ld1Jlc3VsdCArICIgdnMuICIgKyByZXN1bHQKKyAgICByZXN1bHQgPSBuZXdSZXN1
bHQ7CisgICAgbyA9IHtfX3Byb3RvX18gOiBvIH0KK30KK2AsYC8vIFJlZ0V4cC5pbnB1dCBpcyBh
IGhhbmR5IHNldHRlcgorCit2YXIgbyA9IFJlZ0V4cDsKK2Z1bmN0aW9uIHRlc3QobykgeworICAg
IHZhciBrID0gMDsKKyAgICBvLmlucHV0ID0gImJhciI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAzMDAwMDsgaSsrKQorICAgICAgICBvLmlucHV0ID0gImZvbyI7CisKKyAgICByZXR1cm4gby5p
bnB1dDsKK30KKwordmFyIHJlc3VsdCA9IHRlc3Qobyk7CisKK2ZvciAodmFyIGsgPSAwOyBrIDwg
OTsgaysrKSB7CisgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGU7CisgICAgdmFyIG5ld1Jlc3VsdCA9
IHRlc3QobykKKyAgICB2YXIgZW5kID0gbmV3IERhdGU7CisgICAgaWYgKG5ld1Jlc3VsdCAhPSBy
ZXN1bHQpCisgICAgICAgIHRocm93ICJGYWlsZWQgYXQgIiArIGsgKyAid2l0aCAiICtuZXdSZXN1
bHQgKyAiIHZzLiAiICsgcmVzdWx0CisgICAgcmVzdWx0ID0gbmV3UmVzdWx0OyAKKyAgICBvID0g
e19fcHJvdG9fXyA6IG8gfQorfQorCitgLGAvL0AgcnVuTm9GVEwKKwordmFyIHNldCA9IG5ldyBT
ZXQ7Citmb3IgKHZhciBpID0gMDsgaSA8IDgwMDA7ICsraSkgeworICAgIHNldC5hZGQoaSk7Cisg
ICAgc2V0LmFkZCgiIiArIGkpCisgICAgc2V0LmFkZCh7fSkKKyAgICBzZXQuYWRkKGkgKyAuNSkK
K30KKwordmFyIHJlc3VsdCA9IDA7CisKK3NldC5mb3JFYWNoKGZ1bmN0aW9uKGspeyByZXN1bHQg
Kz0gc2V0LnNpemU7IH0pCitmb3IgKHZhciBpID0gODAwMDsgaSA+PSAwOyAtLWkpIHsKKyAgICBz
ZXQuZGVsZXRlKGkpCisgICAgc2V0LmhhcygiIiArIGkpCisgICAgc2V0LmFkZChpICsgLjUpCit9
CitzZXQuZm9yRWFjaChmdW5jdGlvbihrKXsgcmVzdWx0ICs9IHNldC5zaXplOyB9KQorCitpZiAo
cmVzdWx0ICE9IDE2MDAwNDgwMDEpCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7
CisKKworYCxgLy8gVGVzdCB0aGUgcGVyZm9ybWFuY2Ugb2YgaW50ZWdlciBtdWx0aXBsaWNhdGlv
biBieSBpbXBsZW1lbnRpbmcgYSAxNi1iaXQKKy8vIHN0cmluZyBoYXNoLgorCitmdW5jdGlvbiBz
dHJpbmdIYXNoKHN0cmluZykKK3sKKyAgICAvLyBzb3VyY2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvSmF2YV9oYXNoQ29kZSgpI1NhbXBsZV9pbXBsZW1lbnRhdGlvbnNfb2ZfdGhlX2ph
dmEubGFuZy5TdHJpbmdfYWxnb3JpdGhtCisgICAgdmFyIGggPSAwOworICAgIHZhciBsZW4gPSBz
dHJpbmcubGVuZ3RoOworICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW47IGluZGV4
KyspIHsKKyAgICAgICAgaCA9ICgoKDMxICogaCkgfCAwKSArIHN0cmluZy5jaGFyQ29kZUF0KGlu
ZGV4KSkgfCAwOworICAgIH0KKyAgICByZXR1cm4gaDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9CisgICAgICAgIChzdHJpbmdIYXNoKCJU
aGUgc3Bpcml0IGlzIHdpbGxpbmcgYnV0IHRoZSBmbGVzaCBpcyB3ZWFrLiIpICoKKyAgICAgICAg
IHN0cmluZ0hhc2goIlRoZSB2b2RrYSBpcyBzdHJvbmcgYnV0IHRoZSBtZWF0IGlzIHJvdHRlbi4i
KSkgfCAwOworICAgIGlmIChyZXN1bHQgIT0gLTExMzYzMDQxMjgpCisgICAgICAgIHRocm93ICJC
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorCitgLGAKK0Z1bmN0aW9uLnByb3RvdHlwZS5hID0g
RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5OworCitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oYSwgYikK
K3sKKyAgICAidXNlIHN0cmljdCIKKyAgICByZXR1cm4gdGhpcyAqIDEwMDAwICsgYSAqIDEwMDAg
KyBiICogMTAwICsgYXJndW1lbnRzWzJdICogMTAgKyBhcmd1bWVudHMubGVuZ3RoOworfQorCit2
YXIgYXJyYXlBcmd1bWVudHMgPSBbMSwgWzIsIDMsIDRdXQorCitmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0MSA9IHRlc3RGdW5jdGlvbi5hcHBseSguLi5h
cnJheUFyZ3VtZW50cyk7CisgICAgdmFyIHJlc3VsdDIgPSB0ZXN0RnVuY3Rpb24uYSguLi5hcnJh
eUFyZ3VtZW50cyk7CisgICAgaWYgKHJlc3VsdDEgIT0gcmVzdWx0MikgCisgICAgICAgIHRocm93
ICJDYWxsIHdpdGggc3ByZWFkIGFycmF5IGZhaWxlZCBhdCBpdGVyYXRpb24gIiArIGkgKyAiOiAi
ICsgcmVzdWx0MSArICIgdnMgIiArIHJlc3VsdDI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeworICAgIHZhciByZXN1bHQxID0gdGVzdEZ1bmN0aW9uLmFwcGx5KC4uLlsx
LCBbMiwgMywgNF1dKTsKKyAgICB2YXIgcmVzdWx0MiA9IHRlc3RGdW5jdGlvbi5hKC4uLlsxLCBb
MiwgMywgNF1dKTsKKyAgICBpZiAocmVzdWx0MSAhPSByZXN1bHQyKSAKKyAgICAgICAgdGhyb3cg
IkNhbGwgd2l0aCBzcHJlYWQgYXJyYXkgZmFpbGVkIGF0IGl0ZXJhdGlvbiAiICsgaSArICI6ICIg
KyByZXN1bHQxICsgIiB2cyAiICsgcmVzdWx0MjsKK30KKworZnVuY3Rpb24gdGVzdDIoKSB7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgICAgIHZhciByZXN1bHQx
ID0gdGVzdEZ1bmN0aW9uLmFwcGx5KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIHZhciByZXN1bHQy
ID0gdGVzdEZ1bmN0aW9uLmEoLi4uYXJndW1lbnRzKTsKKyAgICAgICAgaWYgKHJlc3VsdDEgIT0g
cmVzdWx0MikKKyAgICAgICAgICAgdGhyb3cgIkNhbGwgd2l0aCBzcHJlYWQgYXJndW1lbnRzIGZh
aWxlZCBhdCBpdGVyYXRpb24gIiArIGkgKyAiOiAiICsgcmVzdWx0MSArICIgdnMgIiArIHJlc3Vs
dDI7CisgICAgfQorfQorCit0ZXN0MigxLFsyLDMsNF0pCisKKworZnVuY3Rpb24gdGVzdDMoKSB7
CisgICAgYWxpYXNlZEFyZ3VtZW50cyA9IGFyZ3VtZW50czsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsKKyAgICAgICAgdmFyIHJlc3VsdDEgPSB0ZXN0RnVuY3Rpb24uYXBw
bHkoLi4uYWxpYXNlZEFyZ3VtZW50cyk7CisgICAgICAgIHZhciByZXN1bHQyID0gdGVzdEZ1bmN0
aW9uLmEoLi4uYWxpYXNlZEFyZ3VtZW50cyk7CisgICAgICAgIGlmIChyZXN1bHQxICE9IHJlc3Vs
dDIpCisgICAgICAgICAgIHRocm93ICJDYWxsIHdpdGggc3ByZWFkIGFyZ3VtZW50cyBmYWlsZWQg
YXQgaXRlcmF0aW9uICIgKyBpICsgIjogIiArIHJlc3VsdDEgKyAiIHZzICIgKyByZXN1bHQyOwor
ICAgIH0KK30KKwordGVzdDMoMSxbMiwzLDRdKWBdCisKK2xldCBwcm9jZXNzVGV4dHMgPSAodGV4
dHMpID0+IHsKKyAgICBsZXQgd2MgPSAwOworICAgIGZvciAobGV0IHRleHQgb2YgdGV4dHMpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxldCBnbG9iYWxJbmRleCA9IDA7CisgICAgICAg
ICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGdsb2JhbEluZGV4
OworICAgICAgICAgICAgICAgIGxldCB3b3JkOworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBjID0gdGV4dFtpbmRleF07CisgICAgICAgICAg
ICAgICAgICAgIGlmIChjLm1hdGNoKC9ccy8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3
b3JkID0gdGV4dC5zdWJzdHJpbmcoZ2xvYmFsSW5kZXgsIGluZGV4KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdoaWxlIChjLm1hdGNoKC9ccy8pKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0g
dGV4dC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsSW5k
ZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMg
PSB0ZXh0W2luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICAgICAgZ2xvYmFsSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgKytp
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IHRleHQubGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxJbmRleCA9IGluZGV4OworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsSW5kZXggPCB0ZXh0Lmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICAgICAgd2MrKzsKKyAgICAgICAgICAgICAgICBlbHNlIAorICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRU9GOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgRU9GKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gd2M7Cit9OworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwOyArK2kp
CisgICAgcHJvY2Vzc1RleHRzKHRleHRzKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNl
dC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMv
c3RyZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCShub25leGlz
dGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlvbi1m
YWlsdXJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKyJ1c2Ugc3RyaWN0IjsK
KworbGV0IGZsYWcgPSB0cnVlOworZnVuY3Rpb24gbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAg
ICAgcmV0dXJuIHt4OjIwfTsKKyAgICByZXR1cm4ge3k6MjAsIHg6MjB9OworfQorbm9JbmxpbmUo
byk7CisKK2xldCBjb3VudGVyID0gMDsKK2Z1bmN0aW9uIGUoKSB7CisgICAgaWYgKCgrK2NvdW50
ZXIpICUgNTAgPT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUp
OworCitsZXQgY291bnRlcjIgPSAwOworZnVuY3Rpb24gZTIoKSB7CisgICAgaWYgKCgrK2NvdW50
ZXIyKSAlIDIgPT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUy
KTsKKworZnVuY3Rpb24gZXNjYXBlKCl7IH0KK25vSW5saW5lKGVzY2FwZSk7CisKK2Z1bmN0aW9u
IGJheihvKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZSgpOworICAgICAgICBlc2NhcGUoby54KTsK
KyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXNjYXBlKG8ueCk7CisgICAgICAgIGUyKCk7Cisg
ICAgfSBmaW5hbGx5IHsKKyAgICAgICAgby54OworICAgIH0KK30KK25vSW5saW5lKGJheik7CisK
K3sKKyAgICBsZXQgbyA9IHt4OjIwfTsKKyAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgIGJheihvKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgcnVuKCk7CisgICAgbyA9IHt5OjQwLCB4OjIwfTsKKyAgICBydW4oKTsKK30KSW5k
ZXg6IEpTVGVzdHMvc3RyZXNzL29zci1lbnRlci10by1jYXRjaC13aXRoLXNldC1sb2NhbC10eXBl
LWNoZWNrLWZhaWx1cmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb3NyLWVudGVy
LXRvLWNhdGNoLXdpdGgtc2V0LWxvY2FsLXR5cGUtY2hlY2stZmFpbHVyZS5qcwkobm9uZXhpc3Rl
bnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9vc3ItZW50ZXItdG8tY2F0Y2gtd2l0aC1zZXQtbG9jYWwt
dHlwZS1jaGVjay1mYWlsdXJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKK2xl
dCBmbGFnID0gdHJ1ZTsKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAg
cmV0dXJuIDIwOworICAgIHJldHVybiB7fTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBzdGF0
ZSA9IDA7CitmdW5jdGlvbiBlKCkgeworICAgIGlmICgoKytzdGF0ZSkgJSAyNSA9PT0gMCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9Citub0lubGluZShlKTsKKworZnVuY3Rpb24gYmF6
KCkgeyB9Citub0lubGluZShiYXopOworCitmdW5jdGlvbiBiYXIoKSB7CisgICAgbGV0IHggPSBm
b28oKTsKKyAgICB0cnkgeworICAgICAgICBlKCk7CisgICAgICAgIGJheigrK3gpOworICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICBiYXooKyt4KTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBi
YXooeCk7CisgICAgfQorfQorbm9JbmxpbmUoYmFyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAy
MDAwOyArK2kpIHsKKyAgICBiYXIoKTsKK30KKworZmxhZyA9IGZhbHNlOworZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyArK2kpCisgICAgYmFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNjggQEAKKzIwMTctMDgtMjMgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb21waWxpbmcgY2F0Y2gg
aW4gdGhlIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc0NTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbXBsZW1lbnRzIE9TUiBlbnRyeSBpbnRvIG9wX2NhdGNoIGluIHRoZSBERkcu
IFdlIHdpbGwgc3VwcG9ydCBPU1IgZW50cnkKKyAgICAgICAgaW50byB0aGUgRlRMIGluIGEgZm9s
bG93dXA6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAg
ICAgICAgCisgICAgICAgIFRvIGltcGxlbWVudCBjYXRjaCBpbiB0aGUgREZHLCB0aGlzIHBhdGNo
IGludHJvZHVjZXMgdGhlIGNvbmNlcHQgb2YgbXVsdGlwbGUKKyAgICAgICAgZW50cnlwb2ludHMg
aW50byBDUFMvTG9hZFN0b3JlIERGRyBJUi4gQSBsb3Qgb2YgdGhpcyBwYXRjaCBpcyBzdHJpbmdp
bmcgdGhpcyBjb25jZXB0CisgICAgICAgIHRocm91Z2ggdGhlIERGRy4gTWFueSBwaGFzZXMgdXNl
ZCB0byBhc3N1bWUgdGhhdCBHcmFwaDo6YmxvY2soMCkgaXMgdGhlIG9ubHkgcm9vdCwgYW5kIHRo
aXMKKyAgICAgICAgcGF0Y2ggY29udGFpbnMgbWFueSBzdHJhaWdodCBmb3J3YXJkIGNoYW5nZXMg
Z2VuZXJhbGl6aW5nIHRoZSBjb2RlIHRvIGhhbmRsZSBtb3JlIHRoYW4KKyAgICAgICAgb25lIGVu
dHJ5cG9pbnQuCisgICAgICAgIAorICAgICAgICBBIG1haW4gYnVpbGRpbmcgYmxvY2sgb2YgdGhp
cyBpcyBtb3ZpbmcgdG8gdHdvIENGRyB0eXBlczogU1NBQ0ZHIGFuZCBDUFNDRkcuIFNTQUNGRwor
ICAgICAgICBpcyB0aGUgc2FtZSBDRkcgd2UgdXNlZCB0byBoYXZlLiBDUFNDRkcgaXMgYSBuZXcg
dHlwZSB0aGF0IGludHJvZHVjZXMgYSBmYWtlIHJvb3QKKyAgICAgICAgdGhhdCBoYXMgYW4gb3V0
Z29pbmcgZWRnZSB0byBhbGwgdGhlIGVudHJ5cG9pbnRzLiBUaGlzIGFsbG93cyBvdXIgZXhpc3Rp
bmcgZ3JhcGggYWxnb3JpdGhtcworICAgICAgICB0byBKdXN0IFdvcmsgb3ZlciBDUFNDRkcuIEZv
ciBleGFtcGxlLCB0aGVyZSBpcyBub3cgdGhlIGNvbmNlcHQgb2YgU1NBRG9taW5hdG9ycyB2cyBD
UFNEb21pbmF0b3JzLAorICAgICAgICBhbmQgU1NBTmF0dXJhbExvb3BzIHZzIENQU05hdHVyYWxM
b29wcy4KKyAgICAgICAgCisgICAgICAgIFRoZSB3YXkgd2UgY29tcGlsZSB0aGUgY2F0Y2ggZW50
cnlwb2ludCBpcyBieSBib290c3RyYXBwaW5nIHRoZSBzdGF0ZQorICAgICAgICBvZiB0aGUgcHJv
Z3JhbSBieSBsb2FkaW5nIGFsbCBsaXZlIGJ5dGVjb2RlIGxvY2FscyBmcm9tIGEgYnVmZmVyLiBU
aGUgT1NSCisgICAgICAgIGVudHJ5IGNvZGUgd2lsbCBzdG9yZSBhbGwgbGl2ZSB2YWx1ZXMgaW50
byB0aGF0IGJ1ZmZlciBiZWZvcmUganVtcGluZyB0bworICAgICAgICB0aGUgZW50cnlwb2ludC4g
VGhlIE9TUiBlbnRyeSBjb2RlIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIHBlcmZvcm1pbmcgdHlw
ZQorICAgICAgICBwcm9vZnMgb2YgdGhlIGFyZ3VtZW50cyBiZWZvcmUgZG9pbmcgYW4gT1NSIGVu
dHJ5LiBJZiB0aGVyZSBpcyBhIHR5cGUKKyAgICAgICAgbWlzbWF0Y2gsIGl0J3Mgbm90IGxlZ2Fs
IHRvIE9TUiBlbnRlciBpbnRvIHRoZSBERkcgY29tcGlsYXRpb24uIEN1cnJlbnRseSwKKyAgICAg
ICAgZWFjaCBjYXRjaCBlbnRyeXBvaW50IGtub3dzIHRoZSBhcmd1bWVudCB0eXBlIHByb29mcyBp
dCBtdXN0IHBlcmZvcm0gdG8gZW50ZXIKKyAgICAgICAgaW50byB0aGUgREZHLiBDdXJyZW50bHks
IGFsbCBlbnRyeXBvaW50cycgYXJndW1lbnRzIGZsdXNoIGZvcm1hdCBhcmUgdW5pZmllZAorICAg
ICAgICB2aWEgQXJndW1lbnRQb3NpdGlvbiwgYnV0IHRoaXMgaXMganVzdCBhbiBpbXBsZW1lbnRh
dGlvbiBkZXRhaWwuIFRoZSBjb2RlIGlzCisgICAgICAgIHdyaXR0ZW4gbW9yZSBnZW5lcmFsbHkg
dG8gYXNzdW1lIHRoYXQgZWFjaCBlbnRyeXBvaW50IG1heSBwZXJmb3JtIGl0cyBvd24gZGlzdGlu
Y3QKKyAgICAgICAgcHJvb2YuCisgICAgICAgIAorICAgICAgICBvcF9jYXRjaCBub3cgcGVyZm9y
bXMgdmFsdWUgcHJvZmlsaW5nIGZvciBhbGwgbGl2ZSBieXRlY29kZSBsb2NhbHMgaW4gdGhlCisg
ICAgICAgIExMSW50IGFuZCBiYXNlbGluZSBKSVQuIFRoaXMgaW5mb3JtYXRpb24gaXMgdGhlbiBm
ZWQgaW50byB0aGUgREZHIHZpYSB0aGUKKyAgICAgICAgRXh0cmFjdENhdGNoTG9jYWwgbm9kZSBp
biB0aGUgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiBwaGFzZS4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgcGF0Y2ggYWxzbyBjaGFuZ2VzIGhvdyB3ZSBnZW5lcmF0ZSBvcF9jYXRjaCBpbiBieXRlY29k
ZS4gQWxsIG9wX2NhdGNoZXMKKyAgICAgICAgYXJlIG5vdyBzcGxpdCBvdXQgYXQgdGhlIGVuZCBv
ZiB0aGUgcHJvZ3JhbSBpbiBieXRlY29kZS4gVGhpcyBlbnN1cmVzIHRoYXQKKyAgICAgICAgbm8g
b3BfY2F0Y2ggaXMgaW5zaWRlIGEgdHJ5IGJsb2NrLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUg
Y29ycmVjdG5lc3MgaW4KKyAgICAgICAgdGhlIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0
aW9uUGhhc2UuIFRoYXQgcGhhc2Ugb25seSBpbnNlcnRzIGZsdXNoZXMKKyAgICAgICAgYmVmb3Jl
IFNldExvY2FscyBpbnNpZGUgYSB0cnkgYmxvY2suIElmIGFuIG9wX2NhdGNoIHdlcmUgaW4gYSB0
cnkgYmxvY2ssIHRoaXMKKyAgICAgICAgd291bGQgY2F1c2UgdGhlIHBoYXNlIHRvIGluc2VydCBh
IEZsdXNoIGJlZm9yZSBvbmUgb2YgdGhlIHN0YXRlIGJvb3RzdHJhcHBpbmcKKyAgICAgICAgU2V0
TG9jYWxzLCB3aGljaCB3b3VsZCBnZW5lcmF0ZSBpbnZhbGlkIElSLiBNb3Zpbmcgb3BfY2F0Y2gg
dG8gYmUgZ2VuZXJhdGVkIG9uCisgICAgICAgIGl0cyBvd24gYXQgdGhlIGVuZCBvZiBhIGJ5dGVj
b2RlIHN0cmVhbSBzZWVtZWQgbGlrZSB0aGUgbW9zdCBlbGVnYW50IHNvbHV0aW9uIHNpbmNlCisg
ICAgICAgIGl0IGJldHRlciByZXByZXNlbnRzIHRoYXQgd2UgdHJlYXQgb3BfY2F0Y2ggYXMgYW4g
ZW50cnlwb2ludC4gVGhpcyBpcyB0cnVlCisgICAgICAgIGJvdGggaW4gdGhlIERGRyBhbmQgaW4g
dGhlIGJhc2VsaW5lIGFuZCBMTEludDogd2UgZG9uJ3QgcmVhY2ggYW4gb3BfY2F0Y2gKKyAgICAg
ICAgdmlhIG5vcm1hbCBjb250cm9sIGZsb3cuIEJlY2F1c2Ugb3BfY2F0Y2ggY2Fubm90IHRocm93
LCB0aGlzIHdpbGwgbm90IGJyZWFrCisgICAgICAgIGFueSBwcmV2aW91cyBzZW1hbnRpY3Mgb2Yg
b3BfY2F0Y2guIExvZ2ljYWxseSwgaXQnZCBiZSB2YWxpZCB0byBzcGxpdCB0cnkKKyAgICAgICAg
YmxvY2tzIGFyb3VuZCBhbnkgbm9uLXRocm93aW5nIGJ5dGVjb2RlIG9wZXJhdGlvbi4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZSk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBk
YXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjp2YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6
VmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZl
cjo6VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcik6CisgICAgICAgIChKU0M6OlZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmRCdWZmZXI6On5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKToKKyAg
ICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcjo6Zm9yRWFjaCk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51
bWVyYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpU
cnlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3
YXJkc0NGRy5oOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc0NGRzo6QmFja3dhcmRzQ0ZH
KToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QmFzaWNCbG9jazo6QmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoK
KyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpmaW5kVGVybWluYWwgY29uc3QpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnNldERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNl
dExvY2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpEZWxheWVkU2V0TG9jYWw6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZSk6CisgICAgICAgICogZGZnL0RGR0NGRy5oOgorICAgICAgICAoSlNDOjpERkc6OkNGRzo6
cm9vdCk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHOjpyb290cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q1BTQ0ZHOjpDUFNDRkcpOgorICAgICAgICAoSlNDOjpERkc6OnNlbGVjdENGRyk6CisgICAg
ICAgICogZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNQU1JldGhyZWFkaW5nUGhhc2U6OnNwZWNpYWxDYXNlQXJndW1lbnRzKToKKyAgICAgICAgKiBk
ZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXM6OkNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZH
RENFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpydW4pOgorICAgICAg
ICAqIGRmZy9ERkdEaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2Vt
Ymxlcjo6Y3JlYXRlRHVtcExpc3QpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0RvbWluYXRvcnMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpEb21pbmF0b3JzOjpEb21pbmF0b3JzKToKKyAgICAgICAgKEpT
Qzo6REZHOjplbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKToKKyAgICAgICAgKiBkZmcvREZHRWRnZURv
bWluYXRlcy5oOgorICAgICAgICAoSlNDOjpERkc6OkVkZ2VEb21pbmF0ZXM6OkVkZ2VEb21pbmF0
ZXMpOgorICAgICAgICAoSlNDOjpERkc6OkVkZ2VEb21pbmF0ZXM6Om9wZXJhdG9yKCkpOgorICAg
ICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBo
YXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ2hl
Y2tzSW5CbG9jayk6CisgICAgICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0Lmg6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAg
ICAgICAoSlNDOjpERkc6OnVuYm94TG9vcE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjpkdW1wQmxvY2tIZWFkZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6aW52YWxpZGF0ZUNGRyk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmJsb2Nrc0luUHJlT3JkZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpibG9ja3NJ
blBvc3RPcmRlcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0RvbWluYXRv
cnMpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKToKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmNsZWFyQ1BTQ0ZHRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVu
c3VyZURvbWluYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1
cmVQcmVQb3N0TnVtYmVyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
ZW5zdXJlTmF0dXJhbExvb3BzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6d2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJh
bWUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc0VudHJ5cG9pbnQgY29uc3QpOgorICAg
ICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6
OkluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycyk6CisgICAgICAgICogZGZn
L0RGR0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OnNocmlua1RvRml0
KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
ZGU6OmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29kZTo6ZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb2RlOjphcHBlbmRDYXRjaEVudHJ5cG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdK
SVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUp
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9pbnQpOgorICAg
ICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeSk6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKToKKyAgICAgICAg
KiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpMSUNNUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6
TElDTVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAqIGRmZy9ERkdMaXZlQ2F0Y2hWYXJp
YWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hW
YXJpYWJsZVByZXNlcnZhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkxpdmVD
YXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2U6OmlzVmFsaWRGbHVzaExvY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlOjpoYW5k
bGVCbG9ja0ZvclRyeUNhdGNoKToKKyAgICAgICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlOjpuZXdWYXJpYWJsZUFjY2Vzc0RhdGEpOgorICAgICAgICAoSlND
OjpERkc6OkxpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2U6OndpbGxDYXRjaEV4Y2Vw
dGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6TGl2ZUNhdGNoVmFyaWFibGVQcmVz
ZXJ2YXRpb25QaGFzZTo6aGFuZGxlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdM
b29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRl
UHJlSGVhZGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFz
ZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjpydW4pOgor
ICAgICAgICAoSlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjp0cmVhdFJlZ3Vs
YXJCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2U6
OnRyZWF0Um9vdEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAg
ICogZGZnL0RGR05hdHVyYWxMb29wcy5oOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29w
czo6TmF0dXJhbExvb3BzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OmlzU3dpdGNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpz
dWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhdGNoT1NSRW50cnlJbmRleCBj
b25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2F0Y2hMb2NhbFByZWRpY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzU3dpdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RW50cnkuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlND
OjpERkc6OmhhbmRsZUV4aXRDb3VudHMpOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICogZGZnL0RG
R1ByZVBvc3ROdW1iZXJpbmcuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3ROdW1iZXJp
bmc6OlByZVBvc3ROdW1iZXJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlByZVBv
c3ROdW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
cHJpbnRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1ByZVBvc3ROdW1iZXJp
bmcuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UHJlUG9zdE51
bWJlcmluZzo6cHJlTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpQ
cmVQb3N0TnVtYmVyaW5nOjpwb3N0TnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVQb3N0TnVtYmVyaW5nOjppc1N0cmljdEFuY2VzdG9yT2YgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3ROdW1iZXJpbmc6OmlzQW5jZXN0b3JPZiBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UHJlUG9zdE51bWJlcmluZzo6aXNT
dHJpY3REZXNjZW5kYW50T2YgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlBy
ZVBvc3ROdW1iZXJpbmc6OmlzRGVzY2VuZGFudE9mIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpQcmVQb3N0TnVtYmVyaW5nOjplZGdlS2luZCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UHJlZGljdGlvbkluamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1B1dFN0
YWNrU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZik6
CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZBdFRhaWwpOgor
ICAgICAgICAqIGRmZy9ERkdTU0FDYWxjdWxhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
Q2FsY3VsYXRvcjo6Y29tcHV0ZVBoaXMpOgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9u
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNTQUNvbnZlcnNpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtU1NBQ29udmVyc2lvbik6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcyk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmxpbmtPU1JFbnRyaWVzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0
YXRpY0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBk
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlRpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmpl
Y3Rpb25QaGFzZTo6YnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXApOgorICAgICAgICAqIGRm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6
CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnNhZmVseUludmFsaWRhdGVBZnRlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNWYWxpZCk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfY2F0Y2gpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50
L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbToKKwogMjAxNy0wOC0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAtV2Nhc3QtcXVhbCB3YXJuaW5ncyBpbiBKYXZh
U2NyaXB0Q29yZSB3aXRoIG5ldyBjbGFuZyBjb21waWxlcgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNyArMzkxLDYgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHUGhhc2UuY3BwCiAgICAgZGZnL0RG
R1BoaUNoaWxkcmVuLmNwcAogICAgIGRmZy9ERkdQbGFuLmNwcAotICAgIGRmZy9ERkdQcmVQb3N0
TnVtYmVyaW5nLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCiAg
ICAgZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk0LDggKzM5NCw2
IEBACiAJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQkQxQjYxQjg5
NkEwNzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCTBGM0MxRjFBMUI4
NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxODFCODY4RTc5MDBBQkIwOEIg
LyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICovOyB9OwogCQkwRjNDMUYxQjFCODY4RTc5MDBB
QkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0MxRjE5MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9i
YmVyc0V4aXRTdGF0ZS5oICovOyB9OwotCQkwRjNFMDFBQTE5RDM1M0E1MDBGNjFCN0YgLyogREZH
UHJlUG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjNFMDFBODE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmlu
Zy5jcHAgKi87IH07Ci0JCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVt
YmVyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjNFMDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICovOyB9Owog
CQkwRjQwRTRBNzFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMzMjFDNDVGMzVDMDA3MjQ1MEIg
LyogQWlyT3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZUdlbmVyYXRlZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzQx
QzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZUdlbmVyYXRlZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdG
QSAvKiBBaXJPcGNvZGVVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2MTgzMzUxQzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZVV0aWxzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMwMDQs
OCArMzAwMiw2IEBACiAJCTBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25T
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHSW5zZXJ0aW9u
U2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjNDMUYxODFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ2xvYmJl
cnNFeGl0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTkxQjg2OEU3OTAwQUJCMDhCIC8qIERG
R0Nsb2JiZXJzRXhpdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0Nsb2JiZXJzRXhpdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8q
IERGR1ByZVBvc3ROdW1iZXJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHUHJlUG9zdE51bWJlcmluZy5jcHA7IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJl
cmluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0UwMUE5MTlEMzUzQTUw
MEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuaDsgcGF0aCA9IGRmZy9ERkdQcmVQb3N0TnVt
YmVyaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIw
MDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZB
NDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzU0Myw4ICs3NTM5LDYgQEAKIAkJCQkwRkJFMEY2RTE2QzFEQjAxMDA4
MkM1RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggKi8sCiAJCQkJMEZGRkM5NTEx
NEVGOTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCAqLywK
IAkJCQkwRkZGQzk1MjE0RUY5MDk1MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuaCAqLywKLQkJCQkwRjNFMDFBODE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51
bWJlcmluZy5jcHAgKi8sCi0JCQkJMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBv
c3ROdW1iZXJpbmcuaCAqLywKIAkJCQkwRjJCOUNFMDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJv
bW90ZWRIZWFwTG9jYXRpb24uY3BwICovLAogCQkJCTBGMkI5Q0UxMTlEMEJBN0QwMEIxRDFCNSAv
KiBERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oICovLAogCQkJCTBGRkM5MjE1MUI5NEZCM0UwMDcx
REQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLywKQEAgLTg3NjEsNyArODc1NSw2IEBACiAJ
CQkJREMwMDAzOTMxOUQ4QkU2RjAwMDIzRUIwIC8qIERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVk
aWN0aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkw
QjcwMEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEYzRTAxQUIxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VEMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9t
b3RlZEhlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQzkyMTYxQjk0RkIzRTAw
NzFERDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2
NjMxOTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDU1OCw3ICsxMDU1MSw2IEBACiAJCQkJQTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1Bs
YW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERG
R1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1
RDE0RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJMEYzRTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3RO
dW1iZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1
IC8qIERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3
NjYyMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYzQTFCRjkxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNw
cCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTU0LDggKzE1NTQsOSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlCiAgICAgY2FzZSBvcF9jYXRjaDogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHZvaWQq
IHBvaW50ZXIgPSBnZXRQb2ludGVyKCooKytpdCkpOwogICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYXRjaCIpOwotICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOwor
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVwIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBwb2ludGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2Ugb3BfdGhyb3c6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5
KQpAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dp
dGhfc2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Ny
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50IiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9nZXRfcGFyZW50X3Njb3BlIiwgImxlbmd0aCIgOiAzIH0sCi0gICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3Rocm93IiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF90aHJvd19zdGF0aWNfZXJyb3IiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMjIxMTA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CiB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKIHsKLSAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXND
b21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVy
KCkuaXNWYWxpZCgpKQorICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiAoY29kZUJsb2Nr
LT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZh
bCgpKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVS
ZWdpc3RlcigpLm9mZnNldCgpKTsKIAogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAy
MjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsg
b3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZCwg
ND4gY2F0Y2hJbmRpY2VzOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9u
UmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBw
YyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgbV9udW1i
ZXJPZkFyZ3VtZW50c1RvU2tpcCA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsK
KyAgICAgICAgICAgIGNhdGNoSW5kaWNlcy5hcHBlbmQoaSk7CisgICAgICAgICAgICBicmVhazsg
CisgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKwogICAgICAgICBpICs9IG9wTGVuZ3RoOwogICAgIH0KIApAQCAtODI4LDEyICs4MzYs
NDQgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgIGlmIChP
cHRpb25zOjphbHdheXNDb21wdXRlSGFzaCgpKQogICAgICAgICBoYXNoKCk7CiAKKyAgICBpZiAo
Y2F0Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMm
IGJ5dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJvZmls
ZXM7CisgICAgICAgIGZvciAodW5zaWduZWQgY2F0Y2hJbmRleCA6IGNhdGNoSW5kaWNlcykgewor
ICAgICAgICAgICAgLy8gV2UgZ2V0IHRoZSBsaXZlLW91dCBzZXQgb2YgdmFyaWFibGVzIGF0IG9w
X2NhdGNoLCBub3QgdGhlIGxpdmUtaW4uIFRoaXMKKyAgICAgICAgICAgIC8vIGlzIGJlY2F1c2Ug
dGhlIHZhcmlhYmxlcyB0aGF0IHRoZSBvcF9jYXRjaCBkZWZpbmVzIG1pZ2h0IGJlIGRlYWQsIGFu
ZAorICAgICAgICAgICAgLy8gd2UgY2FuIGF2b2lkIHByb2ZpbGluZyB0aGVtIGFuZCBleHRyYWN0
aW5nIHRoZW0gd2hlbiBkb2luZyBPU1IgZW50cnkKKyAgICAgICAgICAgIC8vIGludG8gdGhlIERG
Ry4KKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5l
c3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChjYXRjaEluZGV4ICsgT1BDT0RFX0xF
TkdUSChvcF9jYXRjaCkpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2
ZU9wZXJhbmRzOworICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkobGl2ZUxvY2Fscy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFj
aFNldEJpdChbJl0gKHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVP
cGVyYW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0
ZXJzKCk7ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRz
LnNpemUoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09
IGxpdmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9i
dWZmZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAg
ICAgICAgICAgbV9pbnN0cnVjdGlvbnNbY2F0Y2hJbmRleCArIDNdLnUucG9pbnRlciA9IHByb2Zp
bGVzLmdldCgpOworICAgICAgICAgICAgY2F0Y2hQcm9maWxlcy5hcHBlbmQoV1RGTW92ZShwcm9m
aWxlcykpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzID0gV1RG
TW92ZShjYXRjaFByb2ZpbGVzKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChPcHRpb25z
OjpkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOwotICAg
IAorCiAgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MtPmFkZCh0aGlzKTsKICAgICBoZWFwKCktPnJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1faW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJ
bnN0cnVjdGlvbikpOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0ODYsOSAr
MjUyNiwxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBDb2RlQmxvY2s6OmlkZW50aWZpZXIoCiB2b2lk
IENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVk
JiBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJP
ZlNhbXBsZXNJblByb2ZpbGVzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKLSAgICAKKwogICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA9
IDA7CiAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyA9IDA7IC8vIElmIHRoaXMgZGl2aWRl
ZCBieSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyBlcXVhbHMgbnVtYmVyT2ZWYWx1ZVBy
b2ZpbGVzKCkgdGhlbiB2YWx1ZSBwcm9maWxlcyBhcmUgZnVsbC4KKwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKICAgICAg
ICAgVmFsdWVQcm9maWxlJiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAg
ICAgICAgIHVuc2lnbmVkIG51bVNhbXBsZXMgPSBwcm9maWxlLnRvdGFsTnVtYmVyT2ZTYW1wbGVz
KCk7CkBAIC0yNTAzLDYgKzI1NDQsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRp
Y3Rpb25zQW5kQwogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2Zp
bGVzKys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7
CiAgICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVz
KSB7CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbnMobG9ja2VyKTsKQEAgLTI3ODYsNiArMjgzMywyMyBAQCB2b2lkIENv
ZGVCbG9jazo6dmFsaWRhdGUoKQogICAgICAgICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsK
ICAgICAgICAgfQogICAgIH0KKyAgICAgCisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyApIHsKKyAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKG1faW5zdHJ1Y3Rp
b25zW2J5dGVjb2RlT2Zmc2V0XSk7CisgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUo
KS0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAg
ICAgaWYgKG9wY29kZSA9PSBvcF9jYXRjaCB8fCBvcGNvZGUgPT0gb3BfZW50ZXIpIHsKKyAgICAg
ICAgICAgICAgICAvLyBvcF9jYXRjaC9vcF9lbnRlciBsb2dpY2FsbHkgcmVwcmVzZW50IGFuIGVu
dHJ5cG9pbnQuIEVudHJ5cG9pbnRzIGFyZSBub3QgYWxsb3dlZCB0byBiZQorICAgICAgICAgICAg
ICAgIC8vIGluc2lkZSBvZiBhIHRyeSBibG9jayBiZWNhdXNlIHRoZXkgYXJlIHJlc3BvbnNpYmxl
IGZvciBib290c3RyYXBwaW5nIHN0YXRlLiBBbmQgdGhleQorICAgICAgICAgICAgICAgIC8vIGFy
ZSBuZXZlciBhbGxvd2VkIHRocm93IGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIHRoaXMuIFdlIHJl
bHkgb24gdGhpcyB3aGVuIGNvbXBpbGluZworICAgICAgICAgICAgICAgIC8vIGluIHRoZSBERkcu
IEJlY2F1c2UgYW4gZW50cnlwb2ludCBuZXZlciB0aHJvd3MsIHRoZSBieXRlY29kZSBnZW5lcmF0
b3Igd2lsbCBuZXZlcgorICAgICAgICAgICAgICAgIC8vIGFsbG93IG9uY2UgaW5zaWRlIGEgdHJ5
IGJsb2NrLgorICAgICAgICAgICAgICAgIGJlZ2luVmFsaWRhdGlvbkRpZEZhaWwoKTsKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCIgICAgZW50cnlwb2ludCBub3QgYWxsb3dlZCBpbnNpZGUgYSB0
cnkgYmxvY2suIik7CisgICAgICAgICAgICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVM
ZW5ndGgob3Bjb2RlKTsKKyAgICB9CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpiZWdpblZhbGlkYXRp
b25EaWRGYWlsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAwMyw2ICsxMDAzLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRW
YWx1ZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQ
cm9maWxlczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJh
bmRCdWZmZXI+PiBtX2NhdGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNl
UHJvZmlsZSwgOD4gbV9yYXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJh
eUFsbG9jYXRpb25Qcm9maWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5
UHJvZmlsZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3NCw4ICsxNzQsOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVj
a2V0CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhM
b2dOdW1iZXJPZkJ1Y2tldHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVX
aXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRl
Y29kZU9mZnNldCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNv
ZGVPZmZzZXQpIHsgfQorICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051
bWJlck9mQnVja2V0czwwPigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZz
ZXQpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNl
dCkgeyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBp
bmxpbmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVD
YXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmQgeworICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFu
ZDsKK307CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXpl
KHNpemUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0
dWZmIHRoYW4gd2UgbmVlZC4gV2UgY291bGQgb3B0aW1pemUgdGhlc2UgdmFsdWUgcHJvZmlsZXMK
KyAgICAgICAgLy8gdG8gYmUgbW9yZSBzcGFjZSBlZmZpY2llbnQuCisgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTMKKyAgICAgICAgbV9idWZm
ZXIgPSBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD46Om1hbGxvYyhtX3NpemUgKiBz
aXplb2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBuZXcgKCZtX2J1ZmZlci5nZXQoKVtp
XSkgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKworICAgIH5WYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIG1fYnVmZmVyLmdldCgpW2ldLn5WYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9u
PgorICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9u
KG1fYnVmZmVyLmdldCgpW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAg
TWFsbG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+IG1fYnVmZmVyOworfTsKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsMTggQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKAogICAgICAgICBlbWl0VW5yZWFjaGFibGUoKTsKICAgICB9CiAK
KyAgICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jYXRjaGVzVG9FbWl0KSB7CisgICAgICAgIFJlZjxM
YWJlbD4gcmVhbENhdGNoVGFyZ2V0ID0gbmV3RW1pdHRlZExhYmVsKCk7CisgICAgICAgIGVtaXRP
cGNvZGUob3BfY2F0Y2gpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3RkOjpnZXQ8
MT4odHVwbGUpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHN0ZDo6Z2V0PDI+KHR1
cGxlKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAgICBUcnlE
YXRhKiB0cnlEYXRhID0gc3RkOjpnZXQ8MD4odHVwbGUpOworICAgICAgICBlbWl0SnVtcCh0cnlE
YXRhLT50YXJnZXQuZ2V0KCkpOworICAgICAgICB0cnlEYXRhLT50YXJnZXQgPSBXVEZNb3ZlKHJl
YWxDYXRjaFRhcmdldCk7CisgICAgfQorCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmtp
bGwoKTsKIAogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX3RyeVJhbmdlcykgewpAQCAtNzE0LDcg
KzcyNiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogdW51c2VkID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGVtaXRD
YXRjaCh1bnVzZWQsIHRocm93blZhbHVlLmdldCgpKTsKKyAgICAgICAgZW1pdENhdGNoKHVudXNl
ZCwgdGhyb3duVmFsdWUuZ2V0KCksIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhKTsKIAogICAgICAg
ICAvLyByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCh0aHJvd25WYWx1ZSkKICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgp
LCBwcm9taXNlQ2FwYWJpbGl0eVJlZ2lzdGVyKCksIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOwpAQCAtNDAwOSwxMSArNDAyMSw5IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeShUcnlEYXRhKiAKICAgICBtX3RyeUNvbnRleHRT
dGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRj
aChSZWdpc3RlcklEKiBleGNlcHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhyb3duVmFsdWVS
ZWdpc3RlcikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdpc3RlcklEKiBl
eGNlcHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhyb3duVmFsdWVSZWdpc3RlciwgVHJ5RGF0
YSogZGF0YSkKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKLSAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBtX2NhdGNoZXNUb0Vt
aXQuYXBwZW5kKHsgZGF0YSwgZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCksIHRocm93blZhbHVl
UmVnaXN0ZXItPmluZGV4KCkgfSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3Rv
cmVTY29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKQEAgLTQzNDUsNyArNDM1NSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbigKICAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3Jh
cnkoKTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgpOwog
Ci0gICAgICAgICAgICBlbWl0Q2F0Y2goY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2Vk
KTsKKyAgICAgICAgICAgIGVtaXRDYXRjaChjb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpLCB1bnVz
ZWQsIHRyeURhdGEpOwogICAgICAgICAgICAgZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRp
b25UeXBlOjpUaHJvdyk7CiAgICAgICAgICAgICBlbWl0TW92ZShmaW5hbGx5RXhjZXB0aW9uUmVn
aXN0ZXIuZ2V0KCksIGNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOwogICAgICAgICAgICAgZW1p
dEp1bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CkBAIC00Mzg1LDcgKzQzOTUsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oCiAgICAgICAgICAgICAgICAgZW1p
dExhYmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgICAg
IFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgICAgIGVt
aXRDYXRjaChleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdW51c2VkKTsKKyAgICAgICAgICAgICAg
ICBlbWl0Q2F0Y2goZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIHVudXNlZCwgcmV0dXJuQ2FsbFRy
eURhdGEpOwogICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBzeW50aGVzaXplZCBj
YXRjaCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBuZWVkCiAgICAgICAgICAg
ICAgICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBzY29wZSwgd2UgY2FuIHNr
aXAgcmVzdG9yaW5nIHRoZSBzY29wZQogICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGhlcmUu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc5Miw3ICs3OTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSogcHVzaFRy
eShMYWJlbCYgc3RhcnQsIExhYmVsJiBoYW5kbGVyTGFiZWwsIEhhbmRsZXJUeXBlKTsKICAgICAg
ICAgLy8gRW5kIGEgdHJ5IGJsb2NrLiAnZW5kJyBtdXN0IGhhdmUgYmVlbiBlbWl0dGVkLgogICAg
ICAgICB2b2lkIHBvcFRyeShUcnlEYXRhKiwgTGFiZWwmIGVuZCk7Ci0gICAgICAgIHZvaWQgZW1p
dENhdGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lzdGVyLCBSZWdpc3RlcklEKiB0aHJvd25W
YWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0Q2F0Y2goUmVnaXN0ZXJJRCogZXhjZXB0
aW9uUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0ZXIsIFRyeURhdGEqKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgQ3VycmVudExleGljYWxT
Y29wZUluZGV4ID0gLTI7CkBAIC0xMjAwLDYgKzEyMDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX25l
ZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAgRGVyaXZlZENvbnRleHRU
eXBlIG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CisK
KyAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VHJ5RGF0YSosIGludCwgaW50Pj4gbV9jYXRjaGVz
VG9FbWl0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNp
b24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDA4LDYgKzM0MDgsOSBAQCB2b2lkIFRyeU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAgICAgTGFiZWwmIHRyeUhhbmRsZXJMYWJl
bCA9IG1fY2F0Y2hCbG9jayA/ICpjYXRjaExhYmVsIDogKmZpbmFsbHlWaWFUaHJvd0xhYmVsOwog
ICAgIEhhbmRsZXJUeXBlIHRyeUhhbmRsZXJUeXBlID0gbV9jYXRjaEJsb2NrID8gSGFuZGxlclR5
cGU6OkNhdGNoIDogSGFuZGxlclR5cGU6OkZpbmFsbHk7CiAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9
IGdlbmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIHRyeUhhbmRsZXJMYWJlbCwg
dHJ5SGFuZGxlclR5cGUpOworICAgIFRyeURhdGEqIGZpbmFsbHlUcnlEYXRhID0gbnVsbHB0cjsK
KyAgICBpZiAoIW1fY2F0Y2hCbG9jayAmJiBtX2ZpbmFsbHlCbG9jaykKKyAgICAgICAgZmluYWxs
eVRyeURhdGEgPSB0cnlEYXRhOwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV90cnlC
bG9jayk7CiAKQEAgLTM0MjQsMTQgKzM0MjcsMTMgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKCpjYXRjaExhYmVs
KTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlUmVnaXN0ZXIgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaCh1bnVzZWQs
IHRocm93blZhbHVlUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENhdGNo
KHVudXNlZCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgdHJ5RGF0YSk7CiAgICAgICAgIGdl
bmVyYXRvci5yZXN0b3JlU2NvcGVSZWdpc3RlcigpOwogCi0gICAgICAgIFRyeURhdGEqIHRyeURh
dGEgPSBudWxscHRyOwogICAgICAgICBpZiAobV9maW5hbGx5QmxvY2spIHsKICAgICAgICAgICAg
IC8vIElmIHRoZSBjYXRjaCBibG9jayB0aHJvd3MgYW4gZXhjZXB0aW9uIGFuZCB3ZSBoYXZlIGEg
ZmluYWxseSBibG9jaywgdGhlbiB0aGUgZmluYWxseQogICAgICAgICAgICAgLy8gYmxvY2sgc2hv
dWxkICJjYXRjaCIgdGhhdCBleGNlcHRpb24uCi0gICAgICAgICAgICB0cnlEYXRhID0gZ2VuZXJh
dG9yLnB1c2hUcnkoKmNhdGNoTGFiZWwsICpmaW5hbGx5VmlhVGhyb3dMYWJlbCwgSGFuZGxlclR5
cGU6OkZpbmFsbHkpOworICAgICAgICAgICAgZmluYWxseVRyeURhdGEgPSBnZW5lcmF0b3IucHVz
aFRyeSgqY2F0Y2hMYWJlbCwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsLCBIYW5kbGVyVHlwZTo6Rmlu
YWxseSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jYXRjaFBhdHRlcm4pIHsKQEAgLTM0
NTIsNyArMzQ1NCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXIK
ICAgICAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBlOjpOb3JtYWwpOwogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wKCpmaW5hbGx5TGFiZWwpOwotICAgICAgICAgICAgZ2VuZXJhdG9y
LnBvcFRyeSh0cnlEYXRhLCAqZmluYWxseVZpYVRocm93TGFiZWwpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLnBvcFRyeShmaW5hbGx5VHJ5RGF0YSwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoKmNhdGNoRW5kTGFiZWwpOwpA
QCAtMzQ2NSw3ICszNDY3LDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcgogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9jayBmb3IgQ29tcGxldGlv
blR5cGU6OlRocm93LgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKCpmaW5hbGx5VmlhVGhy
b3dMYWJlbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5lcmF0b3IuY29tcGxldGlv
blZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChn
ZW5lcmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkLCBmaW5hbGx5VHJ5RGF0
YSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0Q29tcGxldGlvblR5cGUoQ29tcGxldGlvblR5
cGU6OlRocm93KTsKIAogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9jayBmb3Ig
Q29tcGxldGlvblR5cGVzIG90aGVyIHRoYW4gVGhyb3cuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNl
IEV4dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVj
b2RlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOSw3ICsxODQwLDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3Bh
cnNlIGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAg
ICAgCisKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNl
KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFja3dhcmRzQ0ZHLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEJhY2t3YXJkc0NG
RyA6IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxDRkc+IHsKK2NsYXNzIEJhY2t3YXJkc0NGRyA6IHB1
YmxpYyBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
YWNrd2FyZHNDRkcpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IEJhY2t3YXJkc0NGRyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogQmFja3dhcmRzR3JhcGg8Q0ZH
PigqZ3JhcGgubV9jZmcpCisgICAgICAgIDogQmFja3dhcmRzR3JhcGg8U1NBQ0ZHPihzZWxlY3RD
Rkc8U1NBQ0ZHPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygKICAgICA6IGJ5dGVjb2Rl
QmVnaW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBpc09TUlRh
cmdldChmYWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBvaW50KGZhbHNlKQogICAgICwgY2ZhSGFz
VmlzaXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFG
b3VuZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFzaWNCbG9jay5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3Ry
dWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9
IHNpemUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9
IGF0KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBj
YXNlIEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dp
dGNoOgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxs
OgotICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFp
bENhbGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgot
ICAgICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rl
cm1pbmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsK
KyAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJp
dHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHBy
b2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkg
YXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAg
ICAgICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1
bml2ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3
LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2Nr
SW5kZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0
Y2hFbnRyeXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNob3Vs
ZFJldmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjEx
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhK
SVRUeXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJy
YXlNb2RlLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhp
dFN0YXRlLmgiCkBAIC00MDEsMTQgKzQwMiwxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBXZSBj
YW4ndCBleGl0IGFueW1vcmUgYmVjYXVzZSBvdXIgT1NSIGV4aXQgc3RhdGUgaGFzIGNoYW5nZWQu
CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7CiAKLSAgICAgICAgRGVsYXllZFNldExvY2FsIGRl
bGF5ZWQoY3VycmVudENvZGVPcmlnaW4oKSwgb3BlcmFuZCwgdmFsdWUpOworICAgICAgICBEZWxh
eWVkU2V0TG9jYWwgZGVsYXllZChjdXJyZW50Q29kZU9yaWdpbigpLCBvcGVyYW5kLCB2YWx1ZSwg
c2V0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2V0TW9kZSA9PSBOb3JtYWxTZXQpIHsK
ICAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBlbmQoZGVsYXllZCk7Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMsIHNldE1vZGUpOworICAg
ICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMpOwogICAgIH0KICAgICAKICAgICB2b2lk
IHByb2Nlc3NTZXRMb2NhbFF1ZXVlKCkKQEAgLTY0Miw2ICs2NDMsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOwogICAgICAgICBpZiAoIWlubGluZVN0
YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lICYmIG1fZ3JhcGgubmVlZHNGbHVzaGVkVGhpcygp
KQogICAgICAgICAgICAgZmx1c2hEaXJlY3QodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCkp
OworCiAgICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpKQogICAgICAgICAg
ICAgZmx1c2hEaXJlY3QobV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSk7CiAgICAgfQpAQCAt
MTEzMSw3ICsxMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxp
bmtpbmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAgICAg
ICAgIC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2Rl
QmVnaW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRz
OwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3
YXMgc3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAgIC8vIHRoZSBoZWFk
IG9mIHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRv
IHRoZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRoZSBvdGhlciB3YXkg
YXJvdW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTEyMDAsMjEgKzEyMDIsMjMgQEAgcHJpdmF0
ZToKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKICAgICAgICAgTm9kZSogbV92YWx1ZTsKKyAgICAgICAgU2V0TW9kZSBtX3Nl
dE1vZGU7CiAgICAgICAgIAogICAgICAgICBEZWxheWVkU2V0TG9jYWwoKSB7IH0KLSAgICAgICAg
RGVsYXllZFNldExvY2FsKGNvbnN0IENvZGVPcmlnaW4mIG9yaWdpbiwgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQsIE5vZGUqIHZhbHVlKQorICAgICAgICBEZWxheWVkU2V0TG9jYWwoY29uc3QgQ29k
ZU9yaWdpbiYgb3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNl
dE1vZGUgc2V0TW9kZSkKICAgICAgICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAg
ICAgLCBtX29wZXJhbmQob3BlcmFuZCkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAg
ICAgICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgTm9kZSogZXhlY3V0ZShCeXRlQ29kZVBhcnNlciogcGFyc2VyLCBTZXRNb2RlIHNldE1v
ZGUgPSBOb3JtYWxTZXQpCisgICAgICAgIE5vZGUqIGV4ZWN1dGUoQnl0ZUNvZGVQYXJzZXIqIHBh
cnNlcikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fb3BlcmFuZC5pc0FyZ3VtZW50KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c2V0QXJndW1lbnQobV9vcmlnaW4sIG1f
b3BlcmFuZCwgbV92YWx1ZSwgc2V0TW9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VyLT5z
ZXRMb2NhbChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3ZhbHVlLCBzZXRNb2RlKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VyLT5zZXRBcmd1bWVudChtX29yaWdpbiwgbV9vcGVyYW5kLCBt
X3ZhbHVlLCBtX3NldE1vZGUpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c2V0TG9jYWwo
bV9vcmlnaW4sIG1fb3BlcmFuZCwgbV92YWx1ZSwgbV9zZXRNb2RlKTsKICAgICAgICAgfQogICAg
IH07CiAgICAgCkBAIC00MDgyLDcgKzQwODYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3Vt
ZW50IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3Nl
ZCB0byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRC
bG9jayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAg
ICBtX2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJy
ZW50QmxvY2ssIEFyZ3VtZW50c1ZlY3RvcigpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRk
UmVzdWx0LmlzTmV3RW50cnkpOworICAgICAgICBBcmd1bWVudHNWZWN0b3ImIGVudHJ5cG9pbnRB
cmd1bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBlbnRyeXBvaW50
QXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisKICAgICAgICAgLy8gV2Ugd2lsbCBl
bWl0IFNldEFyZ3VtZW50IG5vZGVzLiBUaGV5IGRvbid0IGV4aXQsIGJ1dCB3ZSdyZSBhdCB0aGUg
dG9wIG9mIGFuIG9wX2VudGVyIHNvCiAgICAgICAgIC8vIGV4aXRPSyA9IHRydWUuCiAgICAgICAg
IG1fZXhpdE9LID0gdHJ1ZTsKQEAgLTQwOTUsNyArNDEwMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5
cGUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRU
b0dyYXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBlbnRy
eXBvaW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAgICAgICAgICAgbV9j
dXJyZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVu
dCwgc2V0QXJndW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE2NSwxMCArNTE3MywxMzEg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
YWRkVG9HcmFwaChVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90aHJv
d19zdGF0aWNfZXJyb3IpOwogCi0gICAgICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgICAgIGNhc2Ug
b3BfY2F0Y2g6IHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9
IHRydWU7CisKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgeworICAgICAgICAg
ICAgICAgIC8vIFdlIGNhbid0IGRvIE9TUiBlbnRyeSBpbnRvIGFuIGlubGluZWQgZnJhbWUuCisg
ICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0aGUgRlRMLgorICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKworICAgICAg
ICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnBv
aW50ZXIpOworCisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGFyZ3VtZW50UHJl
ZGljdGlvbnMobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgVmVjdG9yPFNwZWN1bGF0ZWRU
eXBlPiBsb2NhbFByZWRpY3Rpb25zOworICAgICAgICAgICAgSGFzaFNldDx1bnNpZ25lZCwgV1RG
OjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
bnNpZ25lZD4+IHNlZW5Bcmd1bWVudHM7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIGJvb2wgYWxsUHJlZGljdGlvbnNBcmVF
bXB0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQ
cm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgYWxsUHJlZGljdGlv
bnNBcmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNwZWNOb25lOworICAgICAgICAgICAgICAgICAg
ICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFBy
ZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1l
bnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5z
aXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlbkFyZ3VtZW50cy5hZGQob3BlcmFuZC50
b0FyZ3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRQcmVkaWN0aW9u
c1tvcGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlv
bkVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50
ID0gMDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1l
bnQpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYWxsUHJlZGlj
dGlvbnNBcmVFbXB0eSAmJiAoYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkgfHwgbG9jYWxQcmVk
aWN0aW9ucy5zaXplKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhl
IGNhc2UsIHdlIGhhdmVuJ3QgZXhlY3V0ZWQgdGhpcyBjYXRjaCB5ZXQuIExldCdzIG5vdCBjb21w
aWxlCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAg
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY29t
cGlsaW5nIHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKworICAgICAgICAgICAgbV9jdXJyZW50Qmxv
Y2stPmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRy
eXBvaW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3Rk
OjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAg
IGxvY2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBO
b3RlOiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ug
c2VlIGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAg
ICAgICAgIC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBu
b3QgcHJvcGVybHkgcmVjb3ZlciB2YWx1ZXMuCisgICAgICAgICAgICAvLyBXZSBmaXJzdCBuZWVk
IHRvIGJvb3RzdHJhcCB0aGUgY2F0Y2ggZW50cnlwb2ludCBzdGF0ZS4KKyAgICAgICAgICAgIG1f
ZXhpdE9LID0gZmFsc2U7IAorCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscyA9
IDA7CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQo
cHJvZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1l
bnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFTU0VS
VChvcGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBhZGRU
b0dyYXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcEluZm8o
bG9jYWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICArK251
bWJlck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJbmZv
KHByb2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1RvU2V0
LnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNo
T1NSRW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkgPSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRj
aE9TUkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY291bGQgbm90IGV4aXQgYmVmb3JlIHRo
aXMgcG9pbnQgaW4gdGhlIHByb2dyYW0gYmVjYXVzZSB3ZSB3b3VsZCBub3Qga25vdyBob3cgdG8g
ZG8gdmFsdWUKKyAgICAgICAgICAgIC8vIHJlY292ZXJ5IGZvciBsaXZlIGxvY2Fscy4gVGhlIGFi
b3ZlIElSIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBzdGF0ZSBzbyB3ZSBjYW4gcmVjb3ZlciB2YWx1
ZXMKKyAgICAgICAgICAgIC8vIGR1cmluZyBPU1IgZXhpdC4gCisgICAgICAgICAgICAvLworICAg
ICAgICAgICAgLy8gVGhlIG5vZGVzIHRoYXQgZm9sbG93IGhlcmUgYWxsIGV4aXQgdG8gdGhlIGZv
bGxvd2luZyBieXRlY29kZSBpbnN0cnVjdGlvbiwgbm90CisgICAgICAgICAgICAvLyB0aGUgb3Bf
Y2F0Y2guIEV4aXRpbmcgdG8gb3BfY2F0Y2ggaXMgcmVzZXJ2ZWQgZm9yIHdoZW4gYW4gZXhjZXB0
aW9uIGlzIHRocm93bi4KKyAgICAgICAgICAgIC8vIFRoZSBTZXRBcmd1bWVudCBub2RlcyB0aGF0
IGZvbGxvdyBiZWxvdyBtYXkgZXhpdCBiZWNhdXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcwor
ICAgICAgICAgICAgLy8gdG8gdGhlbS4gVGhlIFNldExvY2FsIG5vZGVzIHRoYXQgZm9sbG93IGJl
bG93IG1heSBleGl0IGJlY2F1c2Ugd2UgbWF5IGNob29zZQorICAgICAgICAgICAgLy8gYSBmbHVz
aCBmb3JtYXQgdGhhdCBzcGVjdWxhdGVzIG9uIHRoZSB0eXBlIG9mIHRoZSBsb2NhbC4KKyAgICAg
ICAgICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7
CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3Jh
cGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBBcmd1bWVudHNW
ZWN0b3IoKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3
RW50cnkpOworICAgICAgICAgICAgICAgIEFyZ3VtZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3Vt
ZW50cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlw
b2ludEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworCisgICAgICAgICAgICAgICAg
dW5zaWduZWQgZXhpdEJ5dGVjb2RlSW5kZXggPSBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5H
VEgob3BfY2F0Y2gpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9
IDA7IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1Zh
cmlhYmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOwor
ICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25z
W2FyZ3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0
dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUoZXhpdEJ5dGVjb2RlSW5kZXgsIEJh
ZENhY2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJyYXlI
b2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUoZXhpdEJ5dGVjb2RlSW5kZXgsIEJhZEluZGV4aW5n
VHlwZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9H
cmFwaChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAg
IHNldEFyZ3VtZW50LT5vcmlnaW4uZm9yRXhpdC5ieXRlY29kZUluZGV4ID0gZXhpdEJ5dGVjb2Rl
SW5kZXg7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwuc2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29u
c3Qgc3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+JiBwYWlyIDogbG9jYWxzVG9TZXQp
IHsKKyAgICAgICAgICAgICAgICBEZWxheWVkU2V0TG9jYWwgZGVsYXllZCB7IGN1cnJlbnRDb2Rl
T3JpZ2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCBJbW1lZGlhdGVOYWtlZFNldCB9Owor
ICAgICAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBlbmQoZGVsYXllZCk7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKLSAgICAgICAgICAg
IAorICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxl
Q2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICAg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVu
dEluc3RydWN0aW9uLCAiaGFuZGxlQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2Fs
bGVlLCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CkBAIC02MTkzLDggKzYzMjIsMTAg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJs
b2NrKGJsb2NrLnB0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fYmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAg
ICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0Lgot
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAg
ICAgICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92
ZShibG9jaykpOwogICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtNjI1MSwxMCArNjM4MiwxMiBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGlu
ZUNhbGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxp
bmtCbG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0Vu
dHJ5Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNo
YWJpbGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKKyAgICBt
X2dyYXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgpOwogICAg
IAogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsg
YmxvY2tJbmRleC0tOykgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxv
Y2soYmxvY2tJbmRleCk7CkBAIC02MjY1LDcgKzYzOTgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZSgpCiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9m
TG9jYWxzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9j
YWxzKCkpOwogICAgICAgICBBU1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFy
Z3VtZW50cygpID09IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFy
Z3VtZW50cygpKTsKICAgICB9Ci0gICAgCisKICAgICBtX2dyYXBoLm1fbG9jYWxWYXJzID0gbV9u
dW1Mb2NhbHM7CiAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9wYXJhbWV0ZXJTbG90
czsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjExMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiREZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9T
aW5nbGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBA
IC00OCw3ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE5vZGUgcm9vdCgp
IHsgcmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2RlIHJvb3QoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNv
bnZlcnNpb24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsKKyAgICB9CisKKyAg
ICBMaXN0IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEJsb2Nr
TWFwPFQ+KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBwcml2YXRlOgogICAgIEdyYXBo
JiBtX2dyYXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGljIFNpbmdsZVJvb3RHcmFwaDxD
Rkc+IHsKK3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFNpbmds
ZVJvb3RHcmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7CisgICAgICAgIEFTU0VSVChn
cmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsKKwordXNpbmcgU1NBQ0ZHID0g
Q0ZHOworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTQ0ZHJiBz
ZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fY3Bz
Q0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwg
U1NBQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQor
eworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBo
Lm1fc3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0
aHJlYWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2Ug
U2V0QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5l
IENvZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBp
bnN0ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1l
bnRzCiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhl
IG90aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAg
ICAgICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0
VGltZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBBcmd1bWVu
dHNWZWN0b3ImIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9p
bnQtPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0p
OworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJh
bmRLaW5kPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJ
KHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4LDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3Jh
cGguaW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0
b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAK
ICAgICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpOwogICAgICAg
ICAKQEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAg
ICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3du
ZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMt
PmRvbWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAg
IG1fbm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICBtX2NoYW5n
ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTc3OSw3ICs3NzksNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0cmljdCBkb21pbmF0aW9uIGJlY2F1
c2UgdGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3VyIG93biBibG9jayBpZgogICAgICAg
ICAgICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xl
YXJseSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0
aGUgdGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KLSAgICAg
ICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ss
IG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0
cmljdGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIGlmICh2
ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5
IGRvbWluYXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9u
b2RlLCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewog
ICAgICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5h
dG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5k
aWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLT5yZXBs
YWNlV2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnNl
dE5vZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw2IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgQVNTRVJUKCFub2Rl
LT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgcmVhZChBYnN0cmFj
dEhlYXAoU3RhY2ssIGdyYXBoLm1fY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpKTsKICAgICB9
Ci0gICAgICAgIAogICAgIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlND
b25zdGFudDoKQEAgLTE0MSw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2Fz
ZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250
cm9sRXF1aXZhbGVuY2VBbmFseXNpcy5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRyb2xFcXVp
dmFsZW5jZUFuYWx5c2lzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3Jh
cGguZW5zdXJlRG9taW5hdG9ycygpKQorICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1
cmVTU0FEb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9iYWNrd2FyZHNEb21pbmF0b3JzKGdyYXBo
LmVuc3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKSkKICAgICB7CiAgICAgfQpAQCAtNzUsNyArNzUs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERvbWluYXRvcnMmIG1fZG9taW5h
dG9yczsKKyAgICBTU0FEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CiAgICAgQmFja3dhcmRzRG9t
aW5hdG9ycyYgbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1f
Z3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7
CiAgICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsK
KyAgICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNWZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dFRvQXJndW1lbnRzLnZhbHVlcygpKQorICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYXJndW1l
bnRzVmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBj
bGVhbi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51
bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDggKzk1LDggQEAgVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYgog
ICAgIGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKICAgICBhcHBlbmQocmVzdWx0LCBvdXQs
IHByZXZpb3VzT3JpZ2luKTsKICAgICAKLSAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsK
LSAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BT
RG9taW5hdG9ycygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAg
CiAgICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fz
c2VtYmx5UHJlZml4ID0gIiAgICAgICAgIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGJv
b2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNN
YXBCdWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFj
aGFibGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JF
bnRyeUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0
b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0
b3JzLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9taW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDE2ICszNSwzMiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIERvbWluYXRvcnMgOiBw
dWJsaWMgV1RGOjpEb21pbmF0b3JzPENGRz4gewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+
CitjbGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9taW5hdG9yczxDRkdLaW5kPiB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG9taW5hdG9ycyk7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9ycyhHcmFwaCYgZ3JhcGgpCi0gICAgICAg
IDogV1RGOjpEb21pbmF0b3JzPENGRz4oKmdyYXBoLm1fY2ZnKQorICAgICAgICA6IFdURjo6RG9t
aW5hdG9yczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpKQogICAgIHsKICAgICB9
CiB9OwogCit1c2luZyBTU0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcg
Q1BTRG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQ
U0NGRz46OnZhbHVlPjo6dHlwZT4KK0NQU0RvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JD
RkcoR3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVDUFNEb21pbmF0b3Jz
KCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FEb21p
bmF0b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1
cm4gZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsMTEgKzQwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQog
ICAgICAgICAsIG1fcmVzdWx0KHRydWUpCiAgICAgeworICAgICAgICBBU1NFUlQoZ3JhcGgubV9m
b3JtID09IFNTQSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgb3BlcmF0b3IoKShOb2RlKiwgRWRn
ZSBlZGdlKQogICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fZG9taW5hdG9y
cy0+ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CisgICAgICAgIGJvb2wg
cmVzdWx0ID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+
b3duZXIsIG1fYmxvY2spOwogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0
YUxvZygKICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgaWYgIiwgZWRnZSwgIiBpbiAiLCAqZWRn
ZS5ub2RlKCktPm93bmVyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAxLDYgKzIwMDEsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFj
aGFibGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2Ug
TW92SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpAQCAtMzE5Niw2ICszMTk3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1
bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4Rm9yQ2hlY2tzICE9IFVJTlRfTUFY
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5pc051bWJlckNvbnN0YW50KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNr
cywgU3BlY0J5dGVjb2RlRG91YmxlLCBEb3VibGVDb25zdGFudCwgb3JpZ2luRm9yQ2hlY2tzLApA
QCAtMzIyNiw2ICszMjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChlZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhG
b3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2Ut
PmlzQW55SW50Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjQW55SW50LCBJbnQ1MkNvbnN0YW50LCBvcmlnaW5G
b3JDaGVja3MsCkBAIC0zMjUyLDYgKzMyNTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSAmJiAhZWRnZS0+aGFzSW50NTJS
ZXN1bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4Rm9yQ2hlY2tzICE9IFVJTlRf
TUFYKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQo
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hl
Y2tzLCBTcGVjQnl0ZWNvZGVEb3VibGUsIFZhbHVlUmVwLCBvcmlnaW5Gb3JDaGVja3MsCkBAIC0z
MjkzLDYgKzMyOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleEZvckNoZWNrcywgU3BlY05vbmUsIENoZWNrLCBvcmlnaW5Gb3JDaGVja3MsIGVk
Z2UpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5o
CShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNo
Rm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3Jt
YXQgOiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZs
dXNoZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShy
ZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHTmF0dXJhbExvb3BzLmgi
Ci0jaW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxl
QWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcgKzcyLDcgQEAgR3JhcGg6
OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9j
b2RlQmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVC
bG9jay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFrZV91bmlxdWU8Q0ZHPigq
dGhpcykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQog
ICAgICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3Jl
Rml4cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFy
dGVkUmVnaXN0ZXJpbmcpCkBAIC00MDksOSArNDA4LDEzIEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFs
c0FyZVZhbGlkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEJhc2ljQmxvY2sqIHVu
Ym94TG9vcE5vZGUoY29uc3QgQ1BTQ0ZHOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGUo
KTsgfQorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoQmFzaWNCbG9jayogYmxvY2sp
IHsgcmV0dXJuIGJsb2NrOyB9CisKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2Rl
RHVtcE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBv
dXQucHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2st
PmF0KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFi
bGUgPyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdl
dCkiIDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ss
ICIgKCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCks
ICIpOiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBi
bG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hF
bnRyeXBvaW50ID8gIiAoQ2F0Y2ggRW50cnlwb2ludCkiIDogIiIsICJcbiIpOwogICAgIGlmIChi
bG9jay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBv
dXQucHJpbnQocHJlZml4LCAiICBFeGVjdXRpb24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25D
b3VudCwgIlxuIik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpA
QCAtNDIyLDE4ICs0MjUsMjYgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3Ry
ZWFtJgogICAgIGlmIChibG9jay0+dGVybWluYWwoKSkgewogICAgICAgICBmb3IgKEJhc2ljQmxv
Y2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgIG91dC5w
cmludCgiICIsICpzdWNjZXNzb3IpOwotICAgICAgICAgICAgaWYgKG1fcHJlUG9zdE51bWJlcmlu
ZykKLSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5l
ZGdlS2luZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsKICAgICAgICAgfQogICAgIH0gZWxzZQog
ICAgICAgICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsKICAgICBvdXQucHJpbnQoIlxuIik7Ci0g
ICAgaWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7Ci0gICAgICAgIG91
dC5wcmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21pbmF0b3JzLT5kb21pbmF0
b3JzT2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5h
dGVzOiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7Ci0g
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21p
bmF0b3JzLT5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0
b3JzLT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoQmxvY2tMaXN0KDEsIGJsb2NrKSksICJc
biIpOworCisgICAgYXV0byBwcmludERvbWluYXRvcnMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMp
IHsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBkb21pbmF0
b3JzLmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4
LCAiICBEb21pbmF0ZXM6ICIsIGRvbWluYXRvcnMuYmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAi
XG4iKTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAi
LCBkb21pbmF0b3JzLmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAgICAg
b3V0LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLAorICAg
ICAgICAgICAgZG9taW5hdG9ycy5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YodHlwZW5hbWUg
c3RkOjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGRvbWluYXRvcnMpPjo6dHlwZTo6TGlzdCB7
IGJsb2NrIH0pLCAiXG4iKTsKKyAgICB9OworCisgICAgaWYgKHRlcm1pbmFsc0FyZVZhbGlkKCkp
IHsKKyAgICAgICAgaWYgKG1fc3NhRG9taW5hdG9ycykKKyAgICAgICAgICAgIHByaW50RG9taW5h
dG9ycygqbV9zc2FEb21pbmF0b3JzKTsKKyAgICAgICAgZWxzZSBpZiAobV9jcHNEb21pbmF0b3Jz
KQorICAgICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX2Nwc0RvbWluYXRvcnMpOwogICAgIH0K
KwogICAgIGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkg
ewogICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAi
LCBtX2JhY2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwogICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3
YXJkc0RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CkBAIC00NDYs
MjkgKzQ1NywzMyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAg
ICAgICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KLSAgICBpZiAobV9wcmVQ
b3N0TnVtYmVyaW5nKQotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmUvUG9zdCBOdW1i
ZXJpbmc6ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJlTnVtYmVyKGJsb2NrKSwgIi8iLCBtX3By
ZVBvc3ROdW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2spLCAiXG4iKTsKLSAgICBpZiAobV9uYXR1
cmFsTG9vcHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9uYXR1
cmFsTG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgeworCisgICAgYXV0byBwcmludE5hdHVyYWxMb29w
cyA9IFsmXSAoYXV0byYgbmF0dXJhbExvb3BzKSB7CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBs
b29wID0gbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKICAgICAgICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKICAgICAgICAgICAgIFZl
Y3RvcjxCbG9ja0luZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVk
QmxvY2tMaXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgICAgICAgICAgICAgIHNv
cnRlZEJsb2NrTGlzdC5hcHBlbmQodW5ib3hMb29wTm9kZShsb29wLT5hdChpKSktPmluZGV4KTsK
ICAgICAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9ja0xpc3QuYmVnaW4oKSwgc29ydGVkQmxv
Y2tMaXN0LmVuZCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0
ZWRCbG9ja0xpc3Quc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIyIs
IHNvcnRlZEJsb2NrTGlzdFtpXSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGNvbnRh
aW5pbmdMb29wcyA9Ci0gICAgICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7
CisgICAgICAgIGF1dG8gY29udGFpbmluZ0xvb3BzID0gbmF0dXJhbExvb3BzLT5sb29wc09mKGJs
b2NrKTsKICAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3AgaGVhZGVyczoiKTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWluaW5nTG9vcHMuc2l6ZSgp
OyArK2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tp
XS0+aGVhZGVyKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIsICp1bmJveExvb3BO
b2RlKGNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpKTsKICAgICAgICAgICAgIG91dC5wcmlu
dCgiXG4iKTsKICAgICAgICAgfQotICAgIH0KKyAgICB9OworCisgICAgaWYgKG1fc3NhTmF0dXJh
bExvb3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29wcyhtX3NzYU5hdHVyYWxMb29wcyk7Cisg
ICAgZWxzZSBpZiAobV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3Bz
KG1fY3BzTmF0dXJhbExvb3BzKTsKKwogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7
CiAgICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDgg
KzUxNywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAg
b3V0LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06
ICIsIG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwg
IjsgUmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmICht
X2Zvcm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwg
bGlzdER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91
dC5wcmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7Cisg
ICAgZWxzZSB7CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVu
dHMpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWly
LmtleS0+aW5kZXgsICI6ICIsIGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAg
ICAgb3V0LnByaW50KCJcbiIpOwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsK
QEAgLTY0MCw4ICs2NTcsMTAgQEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxC
YXNpYwogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8
QmFzaWNCbG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkp
OwotICAgIGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2Nr
KiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1Jl
YWNoYWJsZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAg
ICB9CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBibG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgxNywxMCBAQCB2b2lk
IEdyYXBoOjpraWxsVW5yZWFjaGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRl
Q0ZHKCkKIHsKLSAgICBtX2RvbWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3Bz
ID0gbnVsbHB0cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3Bz
RG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAg
ICBtX2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBu
dWxscHRyOwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAg
IG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBu
dWxscHRyOwpAQCAtODUwLDEyICs4NzAsMzcgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblBy
ZU9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29y
a2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2Nr
KiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRy
eXBvaW50KTsKICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkg
ewogICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1
c2goYmxvY2stPnN1Y2Nlc3NvcihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFi
bGVkKCkpIHsKKyAgICAgICAgLy8gV2hlbiBpdGVyYXRpbmcgb3ZlciBwcmUgb3JkZXIsIHdlIHNo
b3VsZCBzZWUgZG9taW5hdG9ycworICAgICAgICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5h
dGUuCisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3Jz
KSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsg
KytpKSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsK
KyAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwg
YikpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpIDwgaik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICht
X2Zvcm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0
ZVJlc3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgdmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7CisgICAgfQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTg2Myw3ICs5MDgsOCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJs
b2Nrc0luUG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIFBvc3RPcmRl
ckJsb2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7Cisg
ICAgZm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAg
d29ya2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRl
bSA9IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAg
ICAgICBjYXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTg3Niw2ICs5MjIsMzEgQEAgQmxvY2tMaXN0
IEdyYXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8g
dmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICAv
LyBXaGVuIGl0ZXJhdGluZyBvdmVyIHJldmVyc2UgcG9zdCBvcmRlciwgd2Ugc2hvdWxkIHNlZSBk
b21pbmF0b3JzCisgICAgICAgICAgICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisg
ICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpID4gaik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0g
PT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3Vs
dHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFs
aWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7CisgICAgfQorCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTU0Myw0NCBAQCB2b2lkIEdyYXBoOjpsb2dBc3Nl
cnRpb25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlvbkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmlu
ZygiV2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiXG5cbiIpLCBm
aWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsKIH0KIAotRG9taW5hdG9ycyYgR3JhcGg6
OmVuc3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUNQU0RvbWlu
YXRvcnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNT
QUNvbnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21pbmF0b3JzKQorICAgICAgICBtX2Nwc0Rv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICBy
ZXR1cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NBRG9taW5hdG9ycyYgR3JhcGg6OmVuc3Vy
ZVNTQURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9kb21pbmF0b3JzKQotICAgICAgICBtX2Rv
bWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKLSAgICByZXR1
cm4gKm1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1f
aXNJblNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQorICAgICAgICBt
X3NzYURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsK
KyAgICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3Jh
cGg6OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5z
dXJlQ1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAoIW1fcHJlUG9zdE51bWJlcmluZykKLSAg
ICAgICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVy
aW5nPigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBvc3ROdW1iZXJpbmc7CisgICAgUkVMRUFT
RV9BU1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZW5z
dXJlQ1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAg
IG1fY3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0
aGlzKTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExvb3BzOwogfQogCi1OYXR1cmFsTG9vcHMm
IEdyYXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5z
dXJlU1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYg
KCFtX25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CisgICAgZW5zdXJlU1NBRG9taW5hdG9y
cygpOworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fc3NhTmF0dXJhbExv
b3BzID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1
cm4gKm1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVC
YWNrd2FyZHNDRkcoKQogeworICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRo
ZSBmdXR1cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBT
U0EuCisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNr
d2FyZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNr
d2FyZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2
ICsxNTg4LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBC
YWNrd2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7
CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJk
c0RvbWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91
bmlxdWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2Fy
ZHNEb21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTk2LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYg
R3JhcGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6
OmVuc3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VS
VChtX2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMp
CiAgICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRy
b2xFcXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3ICsxNjE0LDkgQEAgTWV0aG9kT2ZHZXR0
aW5nQVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAgICAgICAgICBpZiAoIW5v
ZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2Fs
KCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbWF0Y2ggU2V0QXJndW1lbnQgbm9kZXMgYXQgb3RoZXIgZW50cnlwb2ludHMgYXMg
d2VsbDoKKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTg0MQorICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5v
ZGUgPSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJndW1l
bnRdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKQEAgLTE2OTgsNiArMTc4NywxMyBAQCBib29sIEdyYXBoOjpjYW5Eb0Zhc3RTcHJlYWQo
Tm9kZSogbm9kZSwgCiAgICAgcmV0dXJuIGFsbEdvb2Q7CiB9CiAKK3ZvaWQgR3JhcGg6OmNsZWFy
Q1BTQ0ZHRGF0YSgpCit7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1f
Y3BzRG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNDRkcgPSBudWxscHRyOworfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMTEwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBj
bGFzcyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2Rl
QmxvY2s7CkBAIC01NSwxNCArNTksMjEgQEAgbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBCYWNrd2Fy
ZHNDRkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZHOworY2xhc3MgQ1BT
Q0ZHOwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3Jz
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3Mg
TmF0dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKLQogdGVtcGxhdGU8dHlwZW5h
bWU+IGNsYXNzIEZsb3dNYXA7CiAKK3VzaW5nIEFyZ3VtZW50c1ZlY3RvciA9IFZlY3RvcjxOb2Rl
KiwgOD47CisKK3VzaW5nIFNTQUNGRyA9IENGRzsKK3VzaW5nIENQU0RvbWluYXRvcnMgPSBEb21p
bmF0b3JzPENQU0NGRz47Cit1c2luZyBTU0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+
OwordXNpbmcgQ1BTTmF0dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPENQU0NGRz47Cit1c2luZyBT
U0FOYXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8U1NBQ0ZHPjsKKwogI2RlZmluZSBERkdfTk9E
RV9ET19UT19DSElMRFJFTihncmFwaCwgbm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAgICAgICAg
XAogICAgICAgICBOb2RlKiBfbm9kZSA9IChub2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoX25vZGUtPmZsYWdzKCkgJiBOb2RlSGFz
VmFyQXJncykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtOTAxLDI3ICs5MTIsNDkg
QEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNEZWJ1Z2dlckVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsgfQogCi0gICAgRG9taW5hdG9ycyYgZW5zdXJlRG9taW5h
dG9ycygpOwotICAgIFByZVBvc3ROdW1iZXJpbmcmIGVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsK
LSAgICBOYXR1cmFsTG9vcHMmIGVuc3VyZU5hdHVyYWxMb29wcygpOworICAgIENQU0RvbWluYXRv
cnMmIGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBTU0FEb21pbmF0b3JzJiBlbnN1cmVTU0FE
b21pbmF0b3JzKCk7CisgICAgQ1BTTmF0dXJhbExvb3BzJiBlbnN1cmVDUFNOYXR1cmFsTG9vcHMo
KTsKKyAgICBTU0FOYXR1cmFsTG9vcHMmIGVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgIEJh
Y2t3YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7CiAgICAgQmFja3dhcmRzRG9taW5hdG9y
cyYgZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwogICAgIENvbnRyb2xFcXVpdmFsZW5jZUFu
YWx5c2lzJiBlbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCi0gICAgLy8gVGhp
cyBmdW5jdGlvbiBvbmx5IG1ha2VzIHNlbnNlIHRvIGNhbGwgYWZ0ZXIgYnl0ZWNvZGUgcGFyc2lu
ZworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBvbmx5IG1ha2VzIHNlbnNlIHRvIGNhbGwgYWZ0ZXIg
Ynl0ZWNvZGUgcGFyc2luZwogICAgIC8vIGJlY2F1c2UgaXQgcXVlcmllcyB0aGUgbV9oYXNFeGNl
cHRpb25IYW5kbGVycyBib29sZWFuIHdob3NlIHZhbHVlCiAgICAgLy8gaXMgb25seSBmdWxseSBk
ZXRlcm1pbmVkIGFmdGVyIGJ5dGNvZGUgcGFyc2luZy4KKyAgICBib29sIHdpbGxDYXRjaEV4Y2Vw
dGlvbkluTWFjaGluZUZyYW1lKENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICB7CisgICAgICAg
IENvZGVPcmlnaW4gaWdub3JlZDsKKyAgICAgICAgSGFuZGxlckluZm8qIGlnbm9yZWQyOworICAg
ICAgICByZXR1cm4gd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoY29kZU9yaWdpbiwg
aWdub3JlZCwgaWdub3JlZDIpOworICAgIH0KICAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlvbklu
TWFjaGluZUZyYW1lKENvZGVPcmlnaW4sIENvZGVPcmlnaW4mIG9wQ2F0Y2hPcmlnaW5PdXQsIEhh
bmRsZXJJbmZvKiYgY2F0Y2hIYW5kbGVyT3V0KTsKICAgICAKICAgICBib29sIG5lZWRzU2NvcGVS
ZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJs
b2NrLT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZvaWQgY2xlYXJDUFNDRkdE
YXRhKCk7CisKKyAgICBib29sIGlzRW50cnlwb2ludChCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChtX2VudHJ5cG9pbnRzLnNpemUoKSA8PSA0KSB7CisgICAgICAg
ICAgICBib29sIHJlc3VsdCA9IG1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spOworICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jb250YWlucyhi
bG9jaykpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBi
b29sIHJlc3VsdCA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNvbnRhaW5zKGJsb2NrKTsKKyAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYg
bV9wbGFuOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3By
b2ZpbGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBt
X2Jsb2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAg
ICBWZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2Us
IDE2PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJv
emVuVmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4g
bV9mcm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxMSArOTg5LDExIEBAIHB1YmxpYzoKICAgICAvLwog
ICAgIC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNr
IG9uIHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAg
VmVjdG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBB
cmd1bWVudHNWZWN0b3I+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIElu
IENQUywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBz
cGVjdWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+
IG1fYXJndW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxl
QWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3Rv
cjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFu
c2l0aW9uPiBtX3RyYW5zaXRpb25zOwpAQCAtOTgyLDEwICsxMDE1LDEyIEBAIHB1YmxpYzoKICAg
ICBIYXNoU2V0PHN0ZDo6cGFpcjxKU09iamVjdCosIFByb3BlcnR5T2Zmc2V0Pj4gbV9zYWZlVG9M
b2FkOwogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0
b3I+IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+PiBtX2RvbUpJVFNu
aXBwZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3JzPiBtX2RvbWluYXRvcnM7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9zdE51bWJlcmluZzsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25hdHVyYWxMb29wczsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTRG9taW5h
dG9ycz4gbV9jcHNEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FEb21pbmF0b3Jz
PiBtX3NzYURvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU05hdHVyYWxMb29wcz4g
bV9jcHNOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQU5hdHVyYWxMb29wcz4g
bV9zc2FOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQUNGRz4gbV9zc2FDRkc7
CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU0NGRz4gbV9jcHNDRkc7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJh
Y2t3YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9yczsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+IG1fY29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXM7CkBAIC0xMDA5LDYgKzEwNDQsOCBAQCBwdWJsaWM6CiAgICAgUmVmQ291bnRTdGF0ZSBt
X3JlZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29s
IG1faGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luU1NBQ29u
dmVyc2lvbiB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2Nh
bHNGb3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1f
aW5kZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVl
Pj4gbV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIx
MTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw2MSBAQCBzdGF0aWMgdm9pZCBzZXRM
aXZlVmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6Omlu
aXRpYWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwot
ICAgIHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0
ZWQgPSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJv
b3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVk
OwotICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNB
cmVXYXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFk
Lm51bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwu
YXJndW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAg
ICAgIGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQgPSBtX2dy
YXBoLm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFub2Rl
KQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQp
OwotICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5m
bHVzaEZvcm1hdCgpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgu
bV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0g
dHJ1ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAg
ICBlbnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBv
aW50LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hl
ZDsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0g
U3RydWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAg
ICAgICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKwor
ICAgICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9mb3JtID09IFNTQSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHN1cHBvcnRp
bmcgbXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTCwgd2UgbmVlZCB0byBjaGFuZ2UKKyAg
ICAgICAgICAgICAgICAvLyB3aGF0IHdlIGRvIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBo
Lm1fYXJndW1lbnRGb3JtYXRzW2ldOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGVu
dHJ5cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVu
dCk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNh
c2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVh
ZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBl
bnRyeXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgor
ICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRU
eXBlKG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMy
T25seSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoK
LSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNC
b29sZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgot
ICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFw
aCwgU3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEpT
VmFsdWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5
dGVjb2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3Ig
YXJndW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7
ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAg
ICAgICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgfQotICAgIGZv
ciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJs
b2NrcygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dy
YXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2Fs
cygpOyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChp
KS5jbGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkp
LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgIGlmIChtX2dyYXBo
LmlzRW50cnlwb2ludChibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGJvb3RzdHJhcHBlZCB0
aGUgZW50cnlwb2ludHMgYWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CiAgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2Zh
U2hvdWxkUmV2aXNpdCA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZh
bHNlOwpAQCAtMzY0LDcgKzM3MSw3IEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRl
OjptZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZGF0YS0+
Y2FzZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQot
ICAgICAgICAKKwogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2Fz
ZSBEaXJlY3RUYWlsQ2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIEpJVENv
ZGU6OnNocmlua1RvRml0KCkKICAgICBjb21tb24uc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFbnRy
eS5zaHJpbmtUb0ZpdCgpOwogICAgIG9zckV4aXQuc2hyaW5rVG9GaXQoKTsKKyAgICBjYXRjaEVu
dHJ5cG9pbnRzLnNocmlua1RvRml0KCk7CiAgICAgc3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtU
b0ZpdCgpOwogICAgIG1pbmlmaWVkREZHLnByZXBhcmVBbmRTaHJpbmsoKTsKICAgICB2YXJpYWJs
ZUV2ZW50U3RyZWFtLnNocmlua1RvRml0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDMyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgs
CiAgICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAg
ICBDYXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgo
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnlCaW5hcnlT
ZWFyY2g8Q2F0Y2hFbnRyeXBvaW50RGF0YSwgdW5zaWduZWQ+KAorICAgICAgICAgICAgY2F0Y2hF
bnRyeXBvaW50cywgY2F0Y2hFbnRyeXBvaW50cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCisgICAg
ICAgICAgICBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSogaXRlbSkgeyByZXR1cm4gaXRl
bS0+bV9ieXRlY29kZUluZGV4OyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplQ2F0Y2hP
U1JFbnRyeXBvaW50cygpCisgICAgeworICAgICAgICBzdGQ6OnNvcnQoY2F0Y2hFbnRyeXBvaW50
cy5iZWdpbigpLCBjYXRjaEVudHJ5cG9pbnRzLmVuZCgpLCBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBv
aW50RGF0YSYgYSwgY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYikgeworICAgICAgICAgICAg
cmV0dXJuIGEubV9ieXRlY29kZUluZGV4IDwgYi5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0p
OworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdW5zaWduZWQgcHJldmlvdXNJbmRleCA9
IDA7CisgICAgICAgIGZvciAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgZW50cnlwb2ludCA6
IGNhdGNoRW50cnlwb2ludHMpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c0luZGV4IDwg
ZW50cnlwb2ludC5tX2J5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9
IGVudHJ5cG9pbnQubV9ieXRlY29kZUluZGV4OworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisK
KyAgICB2b2lkIGFwcGVuZENhdGNoRW50cnlwb2ludCh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1
bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50
Rm9ybWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50
cnlwb2ludERhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwgV1RGTW92ZShh
cmd1bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBhcHBlbmRPU1JF
eGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDEwICsxNTgsMTMgQEAgcHJp
dmF0ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpP
U1JFbnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVudHJ5cG9pbnREYXRhPiBj
YXRjaEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9z
ckV4aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25S
ZWNvdmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVh
bTsKICAgICBERkc6Ok1pbmlmaWVkR3JhcGggbWluaWZpZWRERkc7CisgICAgU2NyYXRjaEJ1ZmZl
ciogY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKKwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHVpbnQ4
X3QgbmV2ZXJFeGVjdXRlZEVudHJ5IHsgMSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2Nyw2ICszNjcsOCBAQCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENv
CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5
QnVmZmVyKCk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwog
ICAgIG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhp
cyk7CkBAIC00MjYsNiArNDI4LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgbWFrZUNhdGNoT1NSRW50
cnlCdWZmZXIoKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7
CiAKQEAgLTU1MSwxNCArNTU1LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3Vi
bGVDb25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5
cG9pbnQoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVh
ZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50
Rm9ybWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBv
aW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFz
VmlzaXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgcmVhY2hhYmxlIGJ5IGRlZmluaXRpb24uCisg
ICAgbV9qaXRDb2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRlY29kZUJl
Z2luLCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1lbnRGb3Jt
YXRzKSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2sm
IGJhc2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRjaEVudHJ5
cG9pbnQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRl
ZW1lZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNp
Y0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVu
dHJ5RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxv
Y2tIZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxv
Y2suaW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBGaXgg
dGhlIGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2ls
bCBoYXZlIGFuIGV4cGVjdGVkCkBAIC02NzAsNiArNjgzLDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6
OnNldEVuZE9mQ29kZSgpCiAgICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbEln
bm9yaW5nV2F0Y2hwb2ludHMoKSk7CiB9CiAKK3ZvaWQgSklUQ29tcGlsZXI6Om1ha2VDYXRjaE9T
UkVudHJ5QnVmZmVyKCkKK3sKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkpIHsKKyAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZMaXZlTG9jYWxzID0gc3RkOjptYXgo
Km1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5LCAxdSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhbHdheXMgYWxsb2NhdGUgYSBub24tbnVsbCBjYXRjaE9TUkVudHJ5QnVmZmVyLgorICAgICAg
ICBtX2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSB2bSgpLT5zY3JhdGNoQnVmZmVyRm9y
U2l6ZShzaXplb2YoSlNWYWx1ZSkgKiBudW1iZXJPZkxpdmVMb2NhbHMpOworICAgIH0KK30KKwog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lv
biAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
dm9pZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2Nr
SGVhZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2lj
QmxvY2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9y
PEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENv
ZGU+IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKQEAgLTI4NCw2ICsyODUs
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRFeGNlcHRpb25IYW5kbGluZ09TUkV4aXQo
RXhpdEtpbmQsIHVuc2lnbmVkIGV2ZW50U3RyZWFtSW5kZXgsIENvZGVPcmlnaW4sIEhhbmRsZXJJ
bmZvKiBleGNlcHRpb25IYW5kbGVyLCBDYWxsU2l0ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QganVtcHNUb0ZhaWwgPSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QoKSk7CiAKKyAgICB2
b2lkIG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAgICAvLyBUaGUgZGF0YWZsb3cgZ3Jh
cGggY3VycmVudGx5IGJlaW5nIGdlbmVyYXRlZC4KICAgICBHcmFwaCYgbV9ncmFwaDsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24g
MjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogbmFtZXNwYWNlIHsKIAordXNpbmcgTmF0dXJhbExvb3AgPSBTU0FOYXR1cmFsTG9v
cDsKKwogc3RydWN0IExvb3BEYXRhIHsKICAgICBMb29wRGF0YSgpCiAgICAgICAgIDogcHJlSGVh
ZGVyKG51bGxwdHIpCkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAg
ICAgCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBo
LmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRv
cnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAg
bV9ncmFwaC5lbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCiAgICAgICAgIGlm
ICh2ZXJib3NlKSB7CkBAIC04Myw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3Jh
cGguZHVtcCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBtX2RhdGEucmVzaXplKG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOworICAgICAgICBtX2RhdGEucmVzaXpl
KG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOwogICAgICAgICAKICAgICAg
ICAgLy8gRmlndXJlIG91dCB0aGUgc2V0IG9mIHRoaW5ncyBlYWNoIGxvb3Agd3JpdGVzIHRvLCBu
b3QgaW5jbHVkaW5nIGJsb2NrcyB0aGF0CiAgICAgICAgIC8vIGJlbG9uZyB0byBpbm5lciBsb29w
cy4gV2UgZml4IHRoaXMgbGF0ZXIuCkBAIC05OCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBpZiAoIWJsb2NrLT5jZmFIYXNWaXNpdGVkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1f
Z3JhcGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAg
ICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlu
bmVyTW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29w
LT5pbmRleCgpXTsKQEAgLTExNiwxNCArMTE4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRm9y
IGVhY2ggbG9vcDoKICAgICAgICAgLy8gLSBJZGVudGlmeSBpdHMgcHJlLWhlYWRlci4KICAgICAg
ICAgLy8gLSBNYWtlIHN1cmUgaXRzIG91dGVyIGxvb3BzIGtub3cgd2hhdCBpdCBjbG9iYmVycy4K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3Bz
LT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMt
Pm51bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExv
b3AmIGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CiAg
ICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLmluZGV4KCldOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBmb3IgKAotICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxM
b29wKiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxv
b3AobG9vcCk7CisgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9
IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKICAg
ICAgICAgICAgICAgICBvdXRlckxvb3A7Ci0gICAgICAgICAgICAgICAgb3V0ZXJMb29wID0gbV9n
cmFwaC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxvb3ApKQorICAg
ICAgICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVy
TW9zdE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKICAgICAgICAgICAgICAgICBtX2RhdGFbb3V0ZXJM
b29wLT5pbmRleCgpXS53cml0ZXMuYWRkQWxsKGRhdGEud3JpdGVzKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgQmFzaWNCbG9jayogaGVhZGVyID0gbG9vcC5oZWFkZXIoKTsKQEAgLTEzNyw3
ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGhlYWRlci0+cHJlZGVjZXNzb3JzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
ICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gaGVhZGVyLT5wcmVkZWNlc3NvcnNbaV07Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoaGVhZGVy
LCBwcmVkZWNlc3NvcikpCisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0
b3JzLT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgcHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBA
IC0xOTEsNyArMTkzLDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExv
b3AqPiBsb29wU3RhY2s7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpIHsKLSAg
ICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29w
cy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29w
KiBsb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2Nr
KTsKICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIApAQCAtMTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAo
CiAgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGN1cnJlbnQgPSBsb29wOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IG1fZ3JhcGgu
bV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkpCisgICAgICAgICAg
ICAgICAgY3VycmVudCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVy
TG9vcCgqY3VycmVudCkpCiAgICAgICAgICAgICAgICAgbG9vcFN0YWNrLmFwcGVuZChjdXJyZW50
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVtZW1iZXI6IHRoZSBsb29wIHN0YWNr
IGhhcyB0aGUgaW5uZXItbW9zdCBsb29wIGF0IGluZGV4IDAsIHNvIGlmIHdlIHdhbnQKQEAgLTMx
OCw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBiZWNhdXNlIG1vc3QgbG9vcHMgYXJl
IHNtYWxsIGFuZCBtb3N0IGJsb2NrcyBiZWxvbmcgdG8gZmV3IGxvb3BzLgogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGJvZHlJbmRleCA9IGxvb3AtPnNpemUoKTsgYm9keUluZGV4LS07KSB7CiAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBzdWJCbG9jayA9IGxvb3AtPmF0KGJvZHlJbmRleCk7Ci0gICAg
ICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9v
cHMtPmhlYWRlck9mKHN1YkJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBz
dWJMb29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2spOwog
ICAgICAgICAgICAgaWYgKCFzdWJMb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgQmFzaWNCbG9jayogc3ViUHJlSGVhZGVyID0gbV9kYXRhW3N1Ykxvb3AtPmluZGV4
KCldLnByZUhlYWRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNh
dGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNw
cAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZl
Q2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9j
a0lubGluZXMuaCIKKyNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0dyYXBo
LmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIK
QEAgLTQ2LDEwOSArNDcsMTg2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0g
ICAgICAgIGlmICghbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dy
YXBoLm1fZm9ybSA9PSBMb2FkU3RvcmUpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrTGl2ZW5l
c3MucmVzaXplKG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fs
cygpKTsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNl
dChtX2dyYXBoKTsKLSAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxv
Y2tzSW5OYXR1cmFsT3JkZXIoKSkgewotICAgICAgICAgICAgaGFuZGxlQmxvY2soYmxvY2ssIGlu
c2VydGlvblNldCk7Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7Cisg
ICAgICAgIGlmIChtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAg
IGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkp
IHsKKyAgICAgICAgICAgICAgICBoYW5kbGVCbG9ja0ZvclRyeUNhdGNoKGJsb2NrLCBpbnNlcnRp
b25TZXQpOworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uKENvZGVPcmlnaW4gb3JpZ2luKQorICAgIGJvb2wg
aXNWYWxpZEZsdXNoTG9jYXRpb24oQmFzaWNCbG9jayogc3RhcnRpbmdCbG9jaywgdW5zaWduZWQg
aW5kZXgsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleFRvQ2hlY2sgPSBvcmlnaW4uYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgbV9j
dXJyZW50QmxvY2tMaXZlbmVzcy5jbGVhckFsbCgpOworICAgICAgICAvLyBUaGlzIGNvZGUgaXMg
bm90IG1lYW50IHRvIGJlIGZhc3QuIFdlIGp1c3QgdXNlIGl0IGZvciBhc3NlcnRpb25zLiBJZiB3
ZSBnb3QgbGl2ZW5lc3Mgd3JvbmcsCisgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gd291bGQgcmV0
dXJuIGZhbHNlIGZvciBhIEZsdXNoIHRoYXQgd2UgaW5zZXJ0LgorICAgICAgICBWZWN0b3I8QmFz
aWNCbG9jayosIDQ+IHdvcmtsaXN0OworICAgICAgICBCbG9ja1NldCBzZWVuOworCisgICAgICAg
IGF1dG8gYWRkUHJlZGVjZXNzb3JzID0gWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgeworICAgICAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKKyAg
ICAgICAgICAgICAgICBib29sIGlzTmV3RW50cnkgPSBzZWVuLmFkZChibG9jayk7CisgICAgICAg
ICAgICAgICAgaWYgKGlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LmFw
cGVuZChibG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgd2hpbGUg
KDEpIHsKLSAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gb3Jp
Z2luLmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
bV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOwotICAgICAgICAg
ICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleFRvQ2hlY2spKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2F0Y2hCeXRlY29kZUluZGV4ID0gaGFuZGxlci0+dGFyZ2V0OwotICAgICAgICAgICAgICAg
IG1fZ3JhcGguZm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUoQ29kZU9yaWdpbihjYXRjaEJ5dGVj
b2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZSksIFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQp
IHsKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2tMaXZlbmVzc1tvcGVyYW5kLnRv
TG9jYWwoKV0gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBhdXRvIGZsdXNoSXNEZWZpbml0ZWx5SW52YWxpZCA9IFsmXSAo
QmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICBib29sIGFs
bEdvb2QgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGV4OyBpLS07
ICkgeworICAgICAgICAgICAgICAgIGlmIChibG9jay0+YXQoaSktPmFjY2Vzc2VzU3RhY2sobV9n
cmFwaCkgJiYgYmxvY2stPmF0KGkpLT5sb2NhbCgpID09IG9wZXJhbmQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgYWxsR29vZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFpbmxpbmVD
YWxsRnJhbWUpCisgICAgICAgICAgICBpZiAoYWxsR29vZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGJ5dGVjb2RlSW5kZXhUb0NoZWNrID0gaW5saW5lQ2Fs
bEZyYW1lLT5kaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgICAgIG9yaWdpbiA9
IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOworICAgICAgICAgICAgaWYgKGJsb2NrLT5w
cmVkZWNlc3NvcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJv
b3QgYmxvY2suIFdlIHByb3ZlZCB3ZSByZWFjaGVkIGhlcmUsIHRoZXJlZm9yZSB3ZSBjYW4ndCBG
bHVzaCwgYXMKKyAgICAgICAgICAgICAgICAvLyBpdCdsbCBtYWtlIHRoaXMgbG9jYWwgbGl2ZSBh
dCB0aGUgc3RhcnQgb2YgYSByb290IGJsb2NrLCB3aGljaCBpcyBpbnZhbGlkIElSLgorICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRQ
cmVkZWNlc3NvcnMoYmxvY2spOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
OworCisgICAgICAgIGlmIChmbHVzaElzRGVmaW5pdGVseUludmFsaWQoc3RhcnRpbmdCbG9jaywg
aW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHdoaWxlICghd29y
a2xpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmts
aXN0LnRha2VMYXN0KCk7CisgICAgICAgICAgICBpZiAoZmx1c2hJc0RlZmluaXRlbHlJbnZhbGlk
KGJsb2NrLCBibG9jay0+c2l6ZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdm9pZCBoYW5kbGVC
bG9jayhCYXNpY0Jsb2NrKiBibG9jaywgSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQpCi0gICAg
ewotICAgICAgICAvLyBCZWNhdXNlIHByZWNpc2UganVtcCB0YXJnZXRzIGVuc3VyZXMgdGhhdCB0
aGUgc3RhcnQgb2YgYSAidHJ5IiBibG9jayBpcyBpdHMKLSAgICAgICAgLy8gb3duIGJhc2ljIGJs
b2NrLCB3ZSB3aWxsIG5ldmVyIGhhdmUgdHdvICJ0cnkiIHN0YXRlbWVudHMgaW4gdGhlIHNhbWUg
REZHCi0gICAgICAgIC8vIGJhc2ljIGJsb2NrLiBUaGVyZWZvcmUsIGNoZWNraW5nIHRoZSBmaXJz
dCBub2RlIGluIHRoZSBibG9jayBpcyBzdWZmaWNpZW50IAotICAgICAgICAvLyB0byBjaGVja2lu
ZyBpZiB3ZSdyZSBpbiBhIHRyeSBibG9jay4KLSAgICAgICAgaWYgKCF3aWxsQ2F0Y2hFeGNlcHRp
b24oYmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMpKQotICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIE9wZXJhbmRzPFZhcmlhYmxlQWNjZXNzRGF0YSo+IGN1cnJlbnRCbG9ja0FjY2Vz
c0RhdGEoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpLCBibG9jay0+
dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCksIG51bGxwdHIpOwotICAgICAgICBIYXNo
U2V0PElubGluZUNhbGxGcmFtZSo+IHNlZW5JbmxpbmVDYWxsRnJhbWVzOwotCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAg
ICAgICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5t
X2FyZ3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07Ci0gICAgICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0g
ICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJh
bWUpOworICAgIHZvaWQgaGFuZGxlQmxvY2tGb3JUcnlDYXRjaChCYXNpY0Jsb2NrKiBibG9jaywg
SW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQpCisgICAgeworICAgICAgICBIYW5kbGVySW5mbyog
Y3VycmVudEV4Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOworICAgICAgICBGYXN0Qml0VmVjdG9y
IGxpdmVBdENhdGNoSGVhZDsKKyAgICAgICAgbGl2ZUF0Q2F0Y2hIZWFkLnJlc2l6ZShtX2dyYXBo
LmJsb2NrKDApLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisKKyAgICAgICAg
SGFuZGxlckluZm8qIGNhY2hlZEhhbmRsZXJSZXN1bHQ7CisgICAgICAgIENvZGVPcmlnaW4gY2Fj
aGVkQ29kZU9yaWdpbjsKKyAgICAgICAgYXV0byBjYXRjaEhhbmRsZXIgPSBbJl0gKENvZGVPcmln
aW4gb3JpZ2luKSAtPiBIYW5kbGVySW5mbyogeworICAgICAgICAgICAgQVNTRVJUKG9yaWdpbik7
CisgICAgICAgICAgICBpZiAob3JpZ2luID09IGNhY2hlZENvZGVPcmlnaW4pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNhY2hlZEhhbmRsZXJSZXN1bHQ7CisKKyAgICAgICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXhUb0NoZWNrID0gb3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisKKyAgICAgICAg
ICAgIGNhY2hlZENvZGVPcmlnaW4gPSBvcmlnaW47CisKKyAgICAgICAgICAgIHdoaWxlICgxKSB7
CisgICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBvcmln
aW4uaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOworICAgICAg
ICAgICAgICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXhUb0NoZWNrKSkgeworICAgICAgICAgICAgICAg
ICAgICBsaXZlQXRDYXRjaEhlYWQuY2xlYXJBbGwoKTsKKworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBjYXRjaEJ5dGVjb2RlSW5kZXggPSBoYW5kbGVyLT50YXJnZXQ7CisgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguZm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUoQ29kZU9yaWdpbihj
YXRjaEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZSksIFsmXSAoVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVBdENhdGNoSGVhZFtvcGVy
YW5kLnRvTG9jYWwoKV0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNl
dEFyZ3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOworICAgICAgICAg
ICAgICAgICAgICBjYWNoZWRIYW5kbGVyUmVzdWx0ID0gaGFuZGxlcjsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlu
dCBzdGFja09mZnNldCA9IGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQgOiAwOwotICAgICAgICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYm
IG1fY3VycmVudEJsb2NrTGl2ZW5lc3Nbb3BlcmFuZC50b0xvY2FsKCldKQotICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgKG9wZXJhbmQub2Zmc2V0KCkgPT0gc3RhY2tPZmZzZXQgKyBDYWxsRnJh
bWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKSkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBW
YXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vz
c0RhdGEub3BlcmFuZChvcGVyYW5kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFy
aWFibGVBY2Nlc3NEYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQWNj
ZXNzRGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKTsKLQotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaSwgU3BlY05vbmUsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZsdXNoLCBub2RlLT5vcmlnaW4sIE9wSW5mbyh2YXJpYWJs
ZUFjY2Vzc0RhdGEpKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGNhY2hlZEhhbmRsZXJS
ZXN1bHQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFjayhtX2dyYXBo
KSkKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5v
ZGUtPmxvY2FsKCkpID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAg
ICAgYnl0ZWNvZGVJbmRleFRvQ2hlY2sgPSBpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlci5i
eXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIG9yaWdpbiA9IGlubGluZUNhbGxGcmFtZS0+
ZGlyZWN0Q2FsbGVyOwogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAgICAgLy8gSW5z
ZXJ0IEZsdXNoIGZvciBldmVyeXRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLgotICAgICAg
ICB7Ci0gICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IGJsb2NrLT5hdChibG9jay0+c2l6
ZSgpIC0gMSktPm9yaWdpbjsKLSAgICAgICAgICAgIGF1dG8gcHJlc2VydmVMaXZlbmVzc0F0RW5k
T2ZCbG9jayA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIGJvb2wgYWx3YXlzSW5zZXJ0
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwoKSAmJiBtX2N1cnJlbnRC
bG9ja0xpdmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSkgCisgICAgICAgICAgICByZXR1cm4gY2Fj
aGVkSGFuZGxlclJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBPcGVyYW5kczxWYXJpYWJs
ZUFjY2Vzc0RhdGEqPiBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhKGJsb2NrLT52YXJpYWJsZXNBdFRh
aWwubnVtYmVyT2ZBcmd1bWVudHMoKSwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxv
Y2FscygpLCBudWxscHRyKTsKKyAgICAgICAgSGFzaFNldDxJbmxpbmVDYWxsRnJhbWUqPiBzZWVu
SW5saW5lQ2FsbEZyYW1lczsKKworICAgICAgICBhdXRvIGZsdXNoRXZlcnl0aGluZyA9IFsmXSAo
Tm9kZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChjdXJyZW50RXhjZXB0aW9uSGFuZGxlcik7CisgICAgICAgICAgICBhdXRvIGZsdXNo
ID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgYm9vbCBhbHdheXNJbnNlcnQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYmIGxpdmVBdENhdGNoSGVhZFtv
cGVyYW5kLnRvTG9jYWwoKV0pIAogICAgICAgICAgICAgICAgICAgICB8fCBvcGVyYW5kLmlzQXJn
dW1lbnQoKQogICAgICAgICAgICAgICAgICAgICB8fCBhbHdheXNJbnNlcnQpIHsKKworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEZsdXNoTG9jYXRpb24oYmxvY2ssIGluZGV4LCBv
cGVyYW5kKSk7CisKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBhY2Nl
c3NEYXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoIWFjY2Vzc0RhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICBh
Y2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQpOwogCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSA9IGFjY2Vz
c0RhdGE7CiAKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoYmxv
Y2stPnNpemUoKSwgU3BlY05vbmUsIAorICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZShpbmRleCwgU3BlY05vbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgRmx1
c2gsIG9yaWdpbiwgT3BJbmZvKGFjY2Vzc0RhdGEpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9OworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGxvY2FsID0gMDsgbG9jYWwg
PCBibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IGxvY2FsKyspCi0gICAg
ICAgICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayh2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChsb2NhbCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBmbHVzaCh2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChsb2NhbCksIGZhbHNlKTsKICAgICAgICAgICAgIGZvciAoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgOiBzZWVuSW5saW5lQ2FsbEZyYW1lcykKLSAgICAgICAg
ICAgICAgICBwcmVzZXJ2ZUxpdmVuZXNzQXRFbmRPZkJsb2NrKFZpcnR1YWxSZWdpc3Rlcihpbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQo
KSksIHRydWUpOwotICAgICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayhWaXJ0
dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSksIHRydWUpOworICAg
ICAgICAgICAgICAgIGZsdXNoKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSksIHRydWUpOworICAgICAg
ICAgICAgZmx1c2goVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0
KCkpLCB0cnVlKTsKKworICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuY2xlYXIoKTsK
KyAgICAgICAgfTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJ
bmRleCA8IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleCsrKSB7CisgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBIYW5kbGVySW5mbyogbmV3SGFuZGxlciA9IGNhdGNoSGFuZGxlcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOworICAgICAgICAgICAgICAgIGlmIChuZXdIYW5kbGVyICE9IGN1cnJlbnRFeGNl
cHRpb25IYW5kbGVyICYmIGN1cnJlbnRFeGNlcHRpb25IYW5kbGVyKQorICAgICAgICAgICAgICAg
ICAgICBmbHVzaEV2ZXJ5dGhpbmcobm9kZS0+b3JpZ2luLCBub2RlSW5kZXgpOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRFeGNlcHRpb25IYW5kbGVyID0gbmV3SGFuZGxlcjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKGN1cnJlbnRFeGNlcHRpb25IYW5kbGVyICYmIChub2RlLT5v
cCgpID09IFNldExvY2FsIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpKSB7CisgICAgICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4u
c2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUpCisgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxp
bmVDYWxsRnJhbWUpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0g
bm9kZS0+bG9jYWwoKTsKKworICAgICAgICAgICAgICAgIGludCBzdGFja09mZnNldCA9IGlubGlu
ZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwOworICAgICAgICAg
ICAgICAgIGlmICgob3BlcmFuZC5pc0xvY2FsKCkgJiYgbGl2ZUF0Q2F0Y2hIZWFkW29wZXJhbmQu
dG9Mb2NhbCgpXSkKKyAgICAgICAgICAgICAgICAgICAgfHwgb3BlcmFuZC5pc0FyZ3VtZW50KCkK
KyAgICAgICAgICAgICAgICAgICAgfHwgKG9wZXJhbmQub2Zmc2V0KCkgPT0gc3RhY2tPZmZzZXQg
KyBDYWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKSkgeworCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChpc1ZhbGlkRmx1c2hMb2NhdGlvbihibG9jaywgbm9kZUluZGV4LCBvcGVyYW5k
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFj
Y2Vzc0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJh
bmQpOworCisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKG5vZGVJ
bmRleCwgU3BlY05vbmUsIAorICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gsIG5vZGUtPm9y
aWdpbiwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2sobV9ncmFw
aCkpCisgICAgICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5vZGUt
PmxvY2FsKCkpID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoY3VycmVudEV4Y2VwdGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIE5vZGVPcmln
aW4gb3JpZ2luID0gYmxvY2stPmF0KGJsb2NrLT5zaXplKCkgLSAxKS0+b3JpZ2luOworICAgICAg
ICAgICAgZmx1c2hFdmVyeXRoaW5nKG9yaWdpbiwgYmxvY2stPnNpemUoKSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTE1OSw4ICsyMzcsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZ3JhcGgubV92
YXJpYWJsZUFjY2Vzc0RhdGEuYXBwZW5kKFZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKSk7CiAg
ICAgICAgIHJldHVybiAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5sYXN0KCk7CiAgICAg
fQotCi0gICAgRmFzdEJpdFZlY3RvciBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzOwogfTsKIAogYm9v
bCBwZXJmb3JtTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZShHcmFwaCYgZ3JhcGgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xv
b3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0lu
c2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKKyAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFncmFwaC5pc0VudHJ5cG9pbnQoYmxvY2spLCAiQW4gZW50cnlwb2lu
dCBzaG91bGQgbm90IGJlIGluIGEgbG9vcCIpOworCiAgICAgLy8gRklYTUU6IElmIHdlIHJ1biB0
aGlzIHV0aWxpdHkgb24gU1NBIElSLCB0aGVuIHdlIG1heSBlbmQgdXAgd2l0aCBhIGJpemFycmUg
YXJyYW5nZW1lbnQgb2YKICAgICAvLyBVcHNpbG9ucyBhbmQgUGhpcywgbGlrZToKICAgICAvLwpA
QCAtNjksNyArNzEsOCBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBo
CiAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIHRoZSBtYXggb2YgdGhlIGZyZXF1ZW5jaWVzIG9mIHRo
ZSBsb29wIGJvZHkncyBub24tbG9vcCBwcmVkZWNlc3NvcnMuCiAgICAgZmxvYXQgZnJlcXVlbmN5
ID0gMDsKICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vz
c29ycykgewotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ss
IHByZWRlY2Vzc29yKSkKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9ybSAhPSBTU0EpOworICAg
ICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vz
c29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1h
eChmcmVxdWVuY3ksIHByZWRlY2Vzc29yLT5leGVjdXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAz
LDcgKzEwNiw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSAwOyBwcmVkZWNlc3Nvcklu
ZGV4IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewog
ICAgICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJl
ZGVjZXNzb3JJbmRleF07Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRl
cyhibG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3Jz
LT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+
cHJlZGVjZXNzb3JzLmxhc3QoKTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVM
YXN0KCk7CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4o
KQogICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1f
Z3JhcGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9t
aW5hdG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAg
ICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJh
bExvb3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5h
dHVyYWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgp
OwotICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51
bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExv
b3AmIGxvb3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7Cisg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBib29sIG5lZWRzTmV3UHJlSGVhZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMu
c2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9j
ayogcHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJ
bmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0
ZXMobG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBwcmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRlY2Vzc29ycy5z
aXplKCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2Nr
KiBwcmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnNbcHJlZGVj
ZXNzb3JJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9jcHNEb21pbmF0b3Jz
LT5kb21pbmF0ZXMobG9vcC5oZWFkZXIoKS5ub2RlKCksIHByZWRlY2Vzc29yKSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhl
YWRlcikgewogICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vz
c29yOwpAQCAtMTY1LDE0ICsxNjgsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gQSBwcmUt
aGVhZGVyIGlzIG1vc3QgdXNlZnVsIGlmIGl0J3MgcG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0
ZXJtaW5hbC4gSGVuY2UKICAgICAgICAgICAgIC8vIGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhp
c3RpbmcgcHJlLWhlYWRlciBkb2Vzbid0IGFsbG93IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAg
ICAgICAgICAgICAvLyBvcmlnaW4gb2YgdGhlIGxvb3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hv
dWxkIGNyZWF0ZSBhIG5ldyBwcmUtaGVhZGVyLgotICAgICAgICAgICAgaWYgKCFuZWVkc05ld1By
ZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSworICAgICAgICAg
ICAgaWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLm5vZGUoKS0+YXQoMCkt
Pm9yaWdpbi5leGl0T0sKICAgICAgICAgICAgICAgICAmJiAhZXhpc3RpbmdQcmVIZWFkZXItPnRl
cm1pbmFsKCktPm9yaWdpbi5leGl0T0spCiAgICAgICAgICAgICAgICAgbmVlZHNOZXdQcmVIZWFk
ZXIgPSB0cnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVh
ZGVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBjcmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkp
OworICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBs
b29wLmhlYWRlcigpLm5vZGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVy
biBtX2luc2VydGlvblNldC5leGVjdXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFs
Rmx1c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHRyZWF0Um9vdEJsb2NrKG1fZ3JhcGguYmxvY2soMCksIGluc2VydGlv
blNldCk7Ci0gICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkpOwor
ICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2lu
dHMpIHsKKyAgICAgICAgICAgIHRyZWF0Um9vdEJsb2NrKGVudHJ5cG9pbnQsIGluc2VydGlvblNl
dCk7CisgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShlbnRyeXBvaW50KTsKKyAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTY3LDcgKzY5LDEzIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJs
b2NrLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+
YXQoaSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYg
bm9kZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsK
KyAgICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9j
YWwoKS5pc0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9n
cmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9
PSBpdGVyLT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewog
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2Fs
KCk7CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NE
YXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtMTI4LDEy
ICsxMzYsMTIgQEAgcHVibGljOgogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IGkrKykgewogICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsK
LSAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogYWNjZXNzRGF0YTsKICAgICAgICAgICAg
IERGR19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgaW5pdGlhbEFjY2Vzc05vZGVzLm9wZXJhbmQo
b3BlcmFuZCktPm9wKCkgPT0gRmx1c2gpOyAvLyBXZSBzaG91bGQgaGF2ZSBpbnNlcnRlZCBhIEZs
dXNoIGJlZm9yZSBhbnkgU2V0TG9jYWwvU2V0QXJndW1lbnQgZm9yIHRoZSBsb2NhbCB0aGF0IHdl
IGFyZSBhbmFseXppbmcgbm93LgotICAgICAgICAgICAgYWNjZXNzRGF0YSA9IGluaXRpYWxBY2Nl
c3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IGFjY2Vzc0RhdGEgPSBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBhY2Nlc3NEYXRhKTsKICAgICAgICAg
ICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKDAsIFNwZWNOb25lLCAKICAgICAgICAgICAgICAg
ICBTZXRMb2NhbCwgb3JpZ2luLCBPcEluZm8oYWNjZXNzRGF0YSksIEVkZ2UodW5kZWZpbmVkKSk7
CisgICAgICAgICAgICBhY2Nlc3NEYXRhLT5tZXJnZVNob3VsZE5ldmVyVW5ib3godHJ1ZSk7IC8v
IFdlIGRvbid0IGtub3cgaWYgd2UgY2FuIGV4aXQgaGVyZS4KICAgICAgICAgfQogICAgIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAy
MjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBn
cmFwaCwgTm9kZSoKICAgICBjYXNlIEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAg
Y2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgog
ICAgIGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0
U3RydWN0dXJlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9v
cHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxM
b29wcy5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05hdHVyYWxMb29wcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsMjAgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8
Q0ZHPiBOYXR1cmFsTG9vcDsKLQotY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0
dXJhbExvb3BzPENGRz4gewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBOYXR1
cmFsTG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKE5hdHVyYWxMb29wcyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgTmF0dXJhbExvb3BzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBX
VEY6Ok5hdHVyYWxMb29wczxDRkc+KCpncmFwaC5tX2NmZywgZ3JhcGguZW5zdXJlRG9taW5hdG9y
cygpLCB2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENG
R0tpbmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCksIGVuc3VyZURvbWluYXRvcnNGb3JDRkc8
Q0ZHS2luZD4oZ3JhcGgpLCB2YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgIHsKICAgICB9CiB9Owog
Cit1c2luZyBTU0FOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZHPjsKK3VzaW5n
IENQU05hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxDUFNDRkc+OworCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4Nyw3ICsxMjg3
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAg
IAotICAgIGJvb2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KQEAgLTEzODIsNiArMTM4Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERh
dGEoKS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZh
bGxUaHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewog
ICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTUyLDYgKzE1
NTMsMTggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQob3AoKSA9PSBJZGVudGl0eVdpdGhQcm9m
aWxlKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFNwZWN1bGF0ZWRUeXBlPigpOwogICAg
IH0KKworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJldHVybiBt
X29wSW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBjYXRj
aExvY2FsUHJlZGljdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQob3AoKSA9PSBFeHRyYWN0
Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8U3BlY3VsYXRlZFR5cGU+
KCk7CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQogICAgIHsKQEAgLTE5
NTEsNyArMTk2NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxS
ZWdpc3Rlci5pc1ZhbGlkKCk7CiAgICAgfQotICAgIAorCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZp
cnR1YWxSZWdpc3RlcigpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIxMTA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Miw2ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICAvKiBTcGVjaWFsIG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0
aGF0IHdlJ3JlIGxvYWRpbmcgYSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBz
Y3JhdGNoIGJ1ZmZlci4gKi9cCiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVS
ZXN1bHRKUykgXAorICAgIG1hY3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBcCiAgICAgLyogVGllci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICov
XAogICAgIG1hY3JvKENoZWNrVGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMjIx
MTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTMzNiw2ICszMzcsNzEgQEAgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQog
Cit2b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayog
Y29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIGlmICghT3B0aW9uczo6
dXNlT1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENv
ZGU6OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRD
b2RlKCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpD
YXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVu
dHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVu
dHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1
bXN0YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndAorICAgICAgICAvLyBj
b21waWxlIHRoaXMgb3BfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIg
ZXhlY3V0ZWQgd2hlbiBzdGFydGluZworICAgICAgICAvLyB0aGUgY29tcGlsYXRpb24uCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0
byBPU1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0
eXBlcy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVu
dHJ5cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9p
bnQtPm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1
c2hlZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
Rkc6OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVh
bigpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5z
IHRoZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJl
IGFueSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVk
SlNWYWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFs
dWUuCisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5z
aWduZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJl
U3RhY2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBv
cF9jYXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgM10udS5wb2ludGVyKTsK
KyAgICBKU1ZhbHVlKiBkYXRhQnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oaml0
Q29kZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKKyAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFu
ZCYgcHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3Bl
cmFuZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkYXRhQnVmZmVy
W2luZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsK
KyAgICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlC
dWZmZXItPnNldEFjdGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisKKyAgICBy
ZXR1cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5cG9pbnQt
Pm1fbWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAK
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZH
Rmx1c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRW
ZWN0b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5
RGF0YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsK
IH0KIAorc3RydWN0IENhdGNoRW50cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1fYnl0ZWNv
ZGVJbmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8vIFdlIHVz
ZSB0aGlzIHdoZW4gZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUgYXJndW1l
bnRzCisgICAgLy8gYXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmluZyBhdCBh
IGNhdGNoIGJsb2NrLgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7
Cit9OworCiAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQgdGhlIE9T
UiBlbnRyeSB0aHVuayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlzIHJldHVy
bnMgbnVsbCwgaXQgbWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMgcmV0dXJu
ZWQsIHdlIGNhbid0IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUgUEMgdG8g
anVtcCB0by4KK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBwcmVwYXJl
T1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0K
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJERkdCYXNp
Y0Jsb2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5j
bHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdMb29w
UHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBAIC01NCw3
ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVJbmRleCAh
PSBVSU5UX01BWCk7CiAgICAgICAgIAogICAgICAgICAvLyBOZWVkZWQgYnkgY3JlYXRlUHJlSGVh
ZGVyKCkuCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dy
YXBoLmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVCbG9jayog
YmFzZWxpbmUgPSBtX2dyYXBoLm1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgCkBAIC0xMTIsMTYg
KzExMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhlcmUuCiAgICAg
ICAgIG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisgICAgICAgIEFy
Z3VtZW50c1ZlY3RvciBuZXdBcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1l
bnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1
bWVudCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVu
dCkgewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFk
LmFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAg
ICAgICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBl
dmVuIGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFw
aC5tX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IG5ld0Fy
Z3VtZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9u
ZSwgU2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNb
YXJndW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIG5ld0FyZ3VtZW50c1thcmd1bWVudF0gPSBu
b2RlOwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJh
c2VsaW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDggKzE0MSwxNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGlu
c2VydGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4
ZWN1dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMu
c2l6ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0gPSBuZXdSb290
OworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFyKCk7CisgICAg
ICAgIG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3QsIG5ld0FyZ3Vt
ZW50cyk7CisKKyAgICAgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BT
Q0ZHPihtX2dyYXBoKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAg
ICAgICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDE1IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBPU1JFeGl0QmFzZSYgZXhpdCkKIHsKLSAgICBqaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoMSksIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZleGl0Lm1f
Y291bnQpKTsKLQotICAgIGlmICghZXhpdEtpbmRNYXlKZXR0aXNvbihleGl0Lm1fa2luZCkpCisg
ICAgaWYgKCFleGl0S2luZE1heUpldHRpc29uKGV4aXQubV9raW5kKSkgeworICAgICAgICAvLyBG
SVhNRTogV2UgbWF5IHdhbnQgdG8gbm90aWNlIHRoYXQgd2UncmUgZnJlcXVlbnRseSBleGl0aW5n
CisgICAgICAgIC8vIGF0IGFuIG9wX2NhdGNoIHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgYW4gZW50
cnlwb2ludCBmb3IsIGFuZAorICAgICAgICAvLyB0aGVuIHRyaWdnZXIgYSByZW9wdGltaXphdGlv
biBvZiB0aGlzIENvZGVCbG9jazoKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTg0MgogICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaml0
LmFkZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBBc3NlbWJseUhlbHBlcnM6
OkFic29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50KSk7CiAgICAgCiAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKSksIEdQUkluZm86OnJl
Z1QwKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIx
MTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMwLDcgKzczMCw3IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9n
cmFwaC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWlu
YXRvcnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAg
IHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZh
aWxhYmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9
IENvbWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpD
b21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcg
dmFsaWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9y
dHVuaXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFz
IGFueSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAg
IGRmZy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMo
KTsKLSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVu
c3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygp
OwogICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjExMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1By
ZVBvc3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZH
QmxvY2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1
ZGUgIkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJl
UG9zdE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9t
YXAgPSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9j
a1dvcmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwot
ICAgIHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVt
YmVyID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgp
KSB7Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3Jk
ZXI6OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0
UHJlTnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwot
ICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nl
c3NvcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAg
ICAgbV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6
On5QcmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQot
bmFtZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmlu
dEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNo
IChraW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3
YXJkRWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAg
IG91dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tF
ZGdlOgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9u
IDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tN
YXAuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtp
bmQgewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsK
LQotY2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJl
UG9zdE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0g
ICAgUHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0K
LSAgICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJu
IG1fbWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFz
aWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7
IH0KLSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJv
b2wgaXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0
bykKLSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNC
bG9jayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0
cmljdEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0
RGVzY2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9j
ayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9t
KTsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYg
dGhlcmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUK
LSAgICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vy
c2VsZi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2Nr
KiB0bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRPZih0bywg
ZnJvbSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBCYWNrRWRn
ZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJp
dmF0ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1i
ZXI7Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tN
YXA8TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQot
bmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
REZHOjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25J
bmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9j
ayk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhl
IGFyZ3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAg
ICAgICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdp
dGggdGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dy
YXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVl
OworCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAg
ICAgICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9m
aWxlRm9yQXJndW1lbnQoYXJnKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRz
W2FyZ10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAgICAgICAgICAgIGFy
Z3VtZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk0LDYgKzk5NCwxMSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEV4dHJh
Y3RDYXRjaExvY2FsOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUt
PmNhdGNoTG9jYWxQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KwogICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAg
ICBjYXNlIFVJbnQzMlRvTnVtYmVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1f
Z3JhcGguZHVtcCgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0
b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAK
ICAgICAgICAgU1NBQ2FsY3VsYXRvciBzc2FDYWxjdWxhdG9yKG1fZ3JhcGgpOwogICAgICAgICBJ
bnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCShyZXZpc2lvbiAyMjExMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NSwxMiArOTUsMTIgQEAgU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxh
dG9yOjpuZXdEZQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5vbkxvY2Fs
UmVhY2hpbmdEZWYoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAg
ICByZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxv
Y2spLCB2YXJpYWJsZSk7CisgICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9z
c2FEb21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOwogfQogCiBTU0FDYWxjdWxhdG9y
OjpEZWYqIFNTQUNhbGN1bGF0b3I6OnJlYWNoaW5nRGVmQXRUYWlsKEJhc2ljQmxvY2sqIGJsb2Nr
LCBWYXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3Jh
cGgubV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgeworICAgIGZvciAoOyBibG9jazsgYmxvY2sg
PSBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKICAgICAgICAgaWYgKERl
ZiogZGVmID0gbV9kYXRhW2Jsb2NrXS5tX2RlZnMuZ2V0KHZhcmlhYmxlKSkKICAgICAgICAgICAg
IHJldHVybiBkZWY7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDYWxjdWxhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDYWxjdWxhdG9yLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3
NSwxMCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUGhpSW5zZXJ0aW9uRnVuY3Rv
cj4KICAgICB2b2lkIGNvbXB1dGVQaGlzKGNvbnN0IFBoaUluc2VydGlvbkZ1bmN0b3ImIGZ1bmN0
b3IpCiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgu
bV9kb21pbmF0b3JzKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dy
YXBoLm1fc3NhRG9taW5hdG9ycyk7CiAgICAgICAgIAogICAgICAgICBmb3IgKFZhcmlhYmxlJiB2
YXJpYWJsZSA6IG1fdmFyaWFibGVzKSB7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fZG9taW5hdG9y
cy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCisgICAg
ICAgICAgICBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVy
YXRlZERvbWluYW5jZUZyb250aWVyT2YoCiAgICAgICAgICAgICAgICAgdmFyaWFibGUubV9ibG9j
a3NXaXRoRGVmcywKICAgICAgICAgICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBi
b29sIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IGZ1bmN0b3IoJnZhcmlh
YmxlLCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZl
cnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU0LDcgKzU0LDggQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBo
Lm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFy
UmVwbGFjZW1lbnRzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAg
ICAgICBtX2dyYXBoLmNsZWFyQ1BTQ0ZHRGF0YSgpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNT
QURvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAg
ICAgICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRyYW5zZm9ybWF0aW9uOlxuIik7CkBAIC0x
MTAsNyArMTExLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBE
ZWNpZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhp
J3MgYnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVy
IGtub3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2gg
YSBicm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2Vy
dCBiYXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAgICAgICBtX2Nh
bGN1bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZh
cmlhYmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJpYWJsZUZvclNT
QUluZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgyLDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAg
IGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJsb2Nr
KTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0
cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6CisgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAg
ICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5m
aW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50
Rm9ybWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZv
cm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1
bWVudE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAgICAgIGZvcm1h
dCA9IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAg
ICBtX2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQg
bG9hZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisg
ICAgICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBs
b2FkcyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkBAIC00MTYs
NyArNDIxLDEyIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVNTQUNvbnZlcnNpb24oR3JhcGgm
IGdyYXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBo
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAg
Z3JhcGgubV9pc0luU1NBQ29udmVyc2lvbiA9IHRydWU7CisgICAgYm9vbCByZXN1bHQgPSBydW5Q
aGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChncmFw
aC5tX2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uID0g
ZmFsc2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNiArMzI2LDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAg
ICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAg
Y2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50
ZXI6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2
MzgsNiArNTYzOCwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIHVucmVhY2hhYmxlKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ug
RXh0cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSB0YWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBwYXls
b2FkKHRoaXMpOworCisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAg
ICAgR1BSUmVnIHRhZ0dQUiA9IHRhZy5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRHUFIg
PSBwYXlsb2FkLmdwcigpOworCisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9j
YXN0PEpTVmFsdWUqPihtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFC
dWZmZXIoKSlbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBtX2ppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9q
aXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBUYWdPZmZzZXQpLCB0YWdH
UFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIs
IFBheWxvYWRPZmZzZXQpLCBwYXlsb2FkR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0YWdH
UFIsIHBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OTgsNiArNTk5OCwxNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDaGVj
a1N1YkNsYXNzKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRXh0cmFjdENhdGNo
TG9jYWw6IHsKKyAgICAgICAgSlNWYWx1ZSogcHRyID0gJnJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1
ZSo+KG1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKVtu
b2RlLT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAg
ICBtX2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsK
KyAgICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAjaWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVw
SW5Mb29wOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNhbGxUaWVyVXAgPSBtX2pp
dC5icmFuY2hBZGQzMigKQEAgLTYwODYsNiArNjA5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KwogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoK
ICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MDcsNiArMTcwNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q3VycmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+
aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0
YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygp
OworICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAg
ICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFu
ZExvZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRI
YXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMTgwMSw4ICsxODA4LDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAg
ICAgbV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRy
dWUpOwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkg
ewotICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAg
ICAgICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNr
cyBmb3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4ODYsMTIg
KzE4OTQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsK
ICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAo
IWJsb2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAg
ICAgICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBX
ZSBjb3VsZCBhZGQgdGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1f
b3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAg
ICAgICAgaWYgKGJsb2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQp
IHsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFt
cG9saW5lcy4gV2UgY291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBi
ZS4KKyAgICAgICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygp
W2Jsb2NrSW5kZXhdKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTkwMiwxMCArMTkwOSwy
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJh
c2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAg
ICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2Nr
LT5pc09TUlRhcmdldCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2Nr
LT5pc0NhdGNoRW50cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2pp
dC5ub3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4Kytd
LCBsaW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5
cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKS0+dmFsdWU7CisgICAgICAgICAgICBWZWN0b3I8
Rmx1c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOworICAgICAg
ICAgICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3RvcikgeworICAgICAg
ICAgICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBGbHVzaEZv
cm1hdCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1
c2hGb3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZs
dXNoZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9
PSBGbHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAg
ICAgICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3Jt
YXQpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dEZvcm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29zckVudHJ5SGVh
ZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMp
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNPU1JUYXJn
ZXQpOworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5
SGVhZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0KICAgICB9CisK
KyAgICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygpOworCiAg
ICAgQVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7CiAgICAg
CiAgICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVj
dXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBib29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygp
OworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKICAg
ICAgICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBiYXNlZCBvbiBs
b29wIGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgu
bnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fbmF0dXJh
bExvb3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25D
b3VudCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2Nr
KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJyYW5jaCB3ZWln
aHRzIGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUgY29ycmVjdC4g
SXQnbGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFwcGx5Q291
bnRzKGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDE4ICsyNjgsMjcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAgICBBU1NF
UlQobV9ncmFwaC5tX2Zvcm0gIT0gU1NBKTsKKworICAgICAgICAgICAgaWYgKG1fZ3JhcGgud2ls
bENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7
CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlbGF4IHRo
aXM6CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDgyNAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fbm9kZUluZGV4OyBpLS07KSB7CiAg
ICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYmxvY2stPmF0KGkpOworCiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgJiYgbm9kZS0+bG9jYWwoKSA9PSBsb2Nh
bCkgewogICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbCA9IG5vZGU7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChh
Y2Nlc3Nlc092ZXJsYXAobV9ncmFwaCwgbm9kZSwgQWJzdHJhY3RIZWFwKFN0YWNrLCBsb2NhbCkp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoIXNldExvY2FsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBA
IHN0YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFsRlQKICAgICByZXR1cm4gZnRs
V2hpdGVsaXN0OwogfQogCit1c2luZyBOYXR1cmFsTG9vcCA9IENQU05hdHVyYWxMb29wOworCiBj
bGFzcyBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoK
ICAgICBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKQEAgLTgxLDggKzgz
LDggQEAgcHVibGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9GVEwoKSkK
ICAgICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwogICAgICAgICAKLSAgICAgICAg
bV9ncmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgTmF0dXJhbExvb3BzJiBuYXR1
cmFsTG9vcHMgPSAqbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAgICAgICAgbV9ncmFwaC5lbnN1
cmVDUFNOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9v
cHMgPSAqbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wczsKICAgICAgICAgSGFzaE1hcDxjb25zdCBO
YXR1cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcFRvTG9vcEhpbnQgPSBidWlsZE5hdHVy
YWxMb29wVG9Mb29wSGludE1hcChuYXR1cmFsTG9vcHMpOwogCiAgICAgICAgIEhhc2hNYXA8dW5z
aWduZWQsIExvb3BIaW50RGVzY3JpcHRvcj4gdGllclVwSGllcmFyY2h5OwpAQCAtMTgyLDcgKzE4
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhp
bnRNYXAoY29uc3QgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCisgICAgSGFzaE1hcDxjb25z
dCBOYXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChj
b25zdCBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKICAgICB7CiAgICAgICAgIEhhc2hN
YXA8Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BzVG9Mb29wSGludDsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
aXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxp
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAg
IC8vIEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBT
ZXRBcmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IWJsb2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxk
IG9ubHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IGFuIGVudHJ5
cG9pbnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLmlzRW50cnlwb2ludChi
bG9jaykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+
b3JpZ2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9L
KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExv
Y2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2lu
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlz
aW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MywxMCArODMsMTMgQEAgcHVibGljOgogICAgICAgICAvLyBO
Qi4gVGhpcyBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciBwZXJmb3JtYW5jZSwgc2luY2UgaXQgaXMg
bm90IGludGVuZGVkIHRvIHJ1bgogICAgICAgICAvLyBpbiByZWxlYXNlIGJ1aWxkcy4KIAotICAg
ICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2YXJpYWJsZXMgYXQgdGhlIGhlYWQgb2Yg
dGhlIHJvb3QgYmxvY2sgYXJlIGRlYWQuCi0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dy
YXBoLmJsb2NrKDApOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm9vdC0+dmFy
aWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgIFZfRVFVQUwo
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCByb290KSwgc3RhdGljX2Nhc3Q8Tm9kZSo+KDAp
LCByb290LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkpOworICAgICAgICBWQUxJREFURSgobV9n
cmFwaC5ibG9jaygwKSksIG1fZ3JhcGguaXNFbnRyeXBvaW50KG1fZ3JhcGguYmxvY2soMCkpKTsK
KworICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2YXJpYWJsZXMgYXQgdGhlIGhl
YWQgb2YgYWxsIGVudHJ5cG9pbnRzIGFyZSBkZWFkLgorICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZM
b2NhbHMoKTsgKytpKQorICAgICAgICAgICAgICAgIFZfRVFVQUwoKHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGkpLCBlbnRyeXBvaW50KSwgc3RhdGljX2Nhc3Q8Tm9kZSo+KG51bGxwdHIpLCBlbnRy
eXBvaW50LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkpOworICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICAvLyBWYWxpZGF0ZSByZWYgY291bnRzIGFuZCB1c2VzLgogICAgICAgICBmb3IgKEJs
b2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2Nrcygp
OyArK2Jsb2NrSW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGlu
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0
YXRlKQogICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksCiAgICAgICAgICAgICB0
b0NTdHJpbmcoIkdlbmVyYXRlZCBGVEwgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRU
eXBlKGNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAi
LCBncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiOlxuIikpOwogICAgICAg
ICAKLSAgICAgICAgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBncmFwaC5lbnN1
cmVOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwor
ICAgICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCiAgICAgICAg
IGNvbnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjExMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgbmFtZSA9ICJqc0JvZHkiOwogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5lbnN1
cmVEb21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwog
CiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBk
YXRhTG9nKCJGdW5jdGlvbiByZWFkeSwgYmVnaW5uaW5nIGxvd2VyaW5nLlxuIik7CkBAIC0yNjYs
OCArMjY2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIG1fbm9kZSA9IG51bGxwdHI7
CiAgICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2lu
KDApLCB0cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbV9vdXQuc2V0T3JpZ2lu
KG5vZGUpOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIApAQCAtNDQzLDcgKzQ0NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIHRhcmdldCA9IG1fZ3JhcGguYmxv
Y2soYmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5h
dGVzKG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3Nz
YURvbWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgewogICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkJsb2NrICIsICp0YXJnZXQsICIgd2lsbCBiYWlsIGFsc28uXG4iKTsKICAg
ICAgICAgICAgICAgICB0YXJnZXQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTE0NDM4LDcg
KzE0NDM5LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9ncmFwaC5tX2RvbWluYXRvcnMtPmRv
bWluYXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hpZ2hCbG9jaykpCisgICAgICAgIGlmICghbV9ncmFw
aC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hpZ2hCbG9jaykp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzk4LDYgKzc5OCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlv
bl9FSlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVy
SUQsIFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVl
ZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDYgKzQ2MywxMyBAQCBBTFdBWVNfSU5MSU5FIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19J
TkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1l
KCk7CisgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogI2lmIFVTRShKU1ZB
TFVFNjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJh
dGlvbihaX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGludDMyX3Qg
YXJnMiwgaW50MzJfdCBhcmczKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTYs
NiArODU2LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKIAog
ICAgIHVuc2lnbmVkIHRocm93blZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNhY2hpbmcgdGhlIHBy
b2Nlc3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKKyAgICAvLyBhcmd1bWVudCB0eXBl
IHByb29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZlciwgZXRjCisgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTU5OAorCisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAg
IGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7
CisgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIp
OworICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmls
aW5nKCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0g
c3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVj
dGlvblszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyByZWdz
KHJlZ1QxLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2Zp
bGUubV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUo
cHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTQsNiArNTU0LDI2IEBAIHZvaWQgSklU
OjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKIAogICAgIGxvYWQ2NChBZGRyZXNzKHJl
Z1QwLCBFeGNlcHRpb246OnZhbHVlT2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKworI2lmIEVOQUJM
RShERkdfSklUKQorICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0aGUgcHJv
Y2VzcyBvZiBkb2luZyBPU1IgZW50cnksIGluY2x1ZGluZworICAgIC8vIGFyZ3VtZW50IHR5cGUg
cHJvb2ZzLCBzdG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAg
YXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsK
KyAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7
CisgICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxp
bmcoKSkgeworICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0
aW9uWzNdLnUucG9pbnRlcik7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3Mo
cmVnVDApOworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3Bl
cmFuZCwgcmVncyk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHByb2ZpbGUu
bV9wcm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyNiw2ICsxNTI2LDE5IEBAIFNsb3dQ
YXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VW
RU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVj
b2RlSW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJl
cGxhY2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKG9w
dGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpw
cmVwYXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJ
bmRleCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwg
aW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMTEwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTgsNiArMzE4LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRP
cGVyYQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShF
eGVjU3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJ
T04gKlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0
eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0
ZSosIGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJ
VE9wZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhS
ZXR1cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3Rh
dGUqLCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04g
KlRfSklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpT
U3RyaW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwg
aW50MzJfdCk7CkBAIC00MDAsNiArNDAxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRocm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRo
UmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5n
SW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lv
biAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYxLDYgKzE2NjEsMTggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzNdLnUucG9pbnRlcik7Cisg
ICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkg
eworICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNv
ZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9
KTsKKworICAgIExMSU5UX0VORCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlw
ZSBsbGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1l
KiBwcm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
cmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2hhCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9mcm9tX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X3RvX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmls
ZXIpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX2NhdGNo
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlj
a2VuX3Byb2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9n
X3NoYWRvd19jaGlja2VuX3RhaWwpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxp
bnRfdGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9J
TlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29y
a2luZyBjb3B5KQpAQCAtMTk5Nyw3ICsxOTk3LDEwIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogCiAgICAgdHJhY2VFeGVjdXRpb24oKSAg
IyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIg
dDAsIHQxLCB0MiwgdDMgYWJvdmUuCi0gICAgZGlzcGF0Y2goMykKKworICAgIGNhbGxPcGNvZGVT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCisKKyAgICBkaXNwYXRjaChj
b25zdGV4cHIgb3BfY2F0Y2hfbGVuZ3RoKQogCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMTk3NCw2ICsxOTc0LDkgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIHN0b3JlcSB0Mywg
W2NmciwgdDIsIDhdCiAKICAgICB0cmFjZUV4ZWN1dGlvbigpCisKKyAgICBjYWxsT3Bjb2RlU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQorCiAgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxMTA5KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NCBAQAorMjAx
Ny0wOC0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBw
b3J0IGNvbXBpbGluZyBjYXRjaCBpbiB0aGUgREZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxp
cCBQaXpsby4KKworICAgICAgICBUaGlzIHBhdGNoIGdlbmVyYWxpemVzIHRoZSBCYWNrd2FyZHNH
cmFwaCBmYWtlIHJvb3QgaW50byBhIG1vcmUgZ2VuZXJhbGl6YWJsZQorICAgICAgICBjbGFzcyBj
YWxsZWQgU2luZ2xlUm9vdEdyYXBoLiBTaW5nbGVSb290R3JhcGggZXhwb3NlcyB0aGUgZ2VuZXJh
bCBncmFwaCBpbnRlcmZhY2UKKyAgICAgICAgdXNlZCBpbiBEb21pbmF0b3JzIGFuZCBOYXR1cmFs
TG9vcHMuIFNpbmdsZVJvb3RHcmFwaCB0YWtlcyBhcyBpbnB1dCBhIGdyYXBoIHdpdGgKKyAgICAg
ICAgdGhlIG5vcm1hbCBncmFwaCBpbnRlcmZhY2UsIGJ1dCBhbHNvIGFsbG93cyB0aGUgaW5wdXQg
Z3JhcGggdG8gY29udGFpbiBtb3JlIHRoYW4KKyAgICAgICAgb25lIHJvb3QuIFNpbmdsZVJvb3RH
cmFwaCB0aGVuIGV4cG9zZXMgYSBzaW5nbGUgcm9vdCwgd2hpY2ggaXQgY3JlYXRlcywgdGhhdCBo
YXMKKyAgICAgICAgYW4gb3V0Z29pbmcgZWRnZSB0byBhbGwgdGhlIHJvb3RzIGluIHRoZSBvcmln
aW5hbCBncmFwaC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9CYWNrd2FyZHNHcmFwaC5oOgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNH
cmFwaDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpyb290TmFt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpOb2RlOjpOb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6Ok5vZGU6OnJvb3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNHcmFwaDo6Tm9kZTo6b3BlcmF0b3I9PSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpOb2RlOjpvcGVyYXRv
ciE9IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6Ok5vZGU6
Om9wZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNH
cmFwaDo6Tm9kZTo6aXNSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dh
cmRzR3JhcGg6Ok5vZGU6Om5vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6OlNldDo6U2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6OlNldDo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6QmFja3dhcmRzR3JhcGg6OlNldDo6cmVtb3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6QmFja3dhcmRzR3JhcGg6OlNldDo6Y29udGFpbnMpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpCYWNrd2FyZHNHcmFwaDo6U2V0OjpkdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6QmFja3dhcmRzR3JhcGg6Ok1hcDo6TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFj
a3dhcmRzR3JhcGg6Ok1hcDo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpCYWNrd2Fy
ZHNHcmFwaDo6TWFwOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dh
cmRzR3JhcGg6Ok1hcDo6b3BlcmF0b3JbXSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3
YXJkc0dyYXBoOjpNYXA6Om9wZXJhdG9yW10gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHd0
Zi9Eb21pbmF0b3JzLmg6CisgICAgICAgIChXVEY6OkRvbWluYXRvcnM6OkRvbWluYXRvcnMpOgor
ICAgICAgICAoV1RGOjpEb21pbmF0b3JzOjpmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNl
RnJvbnRpZXJPZik6CisgICAgICAgIChXVEY6OkRvbWluYXRvcnM6OmZvckFsbEJsb2Nrc0luUHJ1
bmVkSXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKToKKyAgICAgICAgKFdURjo6RG9taW5hdG9y
czo6aXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mIGNvbnN0KToKKyAgICAgICAgKFdURjo6RG9t
aW5hdG9yczo6Zm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsIGNv
bnN0KToKKyAgICAgICAgKiB3dGYvU2luZ2xlUm9vdEdyYXBoLmg6IEFkZGVkLgorICAgICAgICAo
V1RGOjpTaW5nbGVSb290R3JhcGhOb2RlOjpyb290TmFtZSk6CisgICAgICAgIChXVEY6OlNpbmds
ZVJvb3RHcmFwaE5vZGU6OlNpbmdsZVJvb3RHcmFwaE5vZGUpOgorICAgICAgICAoV1RGOjpTaW5n
bGVSb290R3JhcGhOb2RlOjpyb290KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoTm9k
ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaE5vZGU6
Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGhOb2RlOjpv
cGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoTm9kZTo6
aXNSb290IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoTm9kZTo6bm9kZSBj
b25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaFNldDo6YWRkKToKKyAgICAgICAg
KFdURjo6U2luZ2xlUm9vdEdyYXBoU2V0OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpTaW5nbGVS
b290R3JhcGhTZXQ6OmNvbnRhaW5zKToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoU2V0
OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdE1hcDo6U2luZ2xlUm9vdE1h
cCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RNYXA6OmNsZWFyKToKKyAgICAgICAgKFdURjo6
U2luZ2xlUm9vdE1hcDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RNYXA6
Om9wZXJhdG9yW10pOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290TWFwOjpvcGVyYXRvcltdIGNv
bnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjpTaW5nbGVSb290R3JhcGgpOgor
ICAgICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGg6OnJvb3QgY29uc3QpOgorICAgICAgICAoV1RG
OjpTaW5nbGVSb290R3JhcGg6Om5ld01hcCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFw
aDo6c3VjY2Vzc29ycyBjb25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6cHJl
ZGVjZXNzb3JzIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjppbmRleCBj
b25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6bm9kZSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6bnVtTm9kZXMgY29uc3QpOgorICAgICAgICAoV1RG
OjpTaW5nbGVSb290R3JhcGg6OmR1bXAgY29uc3QpOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290
R3JhcGg6OmFzc2VydElzQ29uc2lzdGVudCBjb25zdCk6CisKIDIwMTctMDgtMjMgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDYWNoZSBBUEldIEVuYWJsZSBw
ZXJzaXN0ZW50IGNvZGVyIHRvIGVuY29kZSBGZXRjaE9wdGlvbnMKSW5kZXg6IFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM1
LDYgKzMzNSw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRT
dHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJp
bmdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUw
MDBEMUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTbWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFG
NDI1ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdB
RkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzNGNzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
NDAsNiArOTQxLDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQ
YWlyLmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNG
LmNwcCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFj
Lm1tICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGgu
aCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkw
RkVDODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIy
ODQxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93
dGYvQmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2Fy
ZHNHcmFwaC5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNH
cmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEz
MyArMzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdl
IGhhdmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVy
biAiI2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5v
ZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0g
ICAgICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAg
ICBzdGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7
Ci0gICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lz
Um9vdCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAg
ICAgICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9
Ci0KLSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9k
ZSBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBm
YWxzZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAg
U2V0KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChj
b25zdCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3Qo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsK
LSAgICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5k
U2V0KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShu
b2RlLm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5v
ZGUmIG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQu
Y29udGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jv
b3QpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6
Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNS
b290IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBj
bGFzcyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAg
ICAgICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X21hcC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0K
LSAgICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAg
ICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3Qg
VCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0g
ICAgICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsK
LSAgICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
Ojp0ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAg
ICB1c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0
ID0gU2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
dXNpbmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8
Tm9kZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1
NSw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91
dC5wcmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAg
ICAgICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9k
ZTo6cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dy
YXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0RvbWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFt
ZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMg
ewogcHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAg
IERvbWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAg
ICA6IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01h
cDxCbG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1
ZXJUYXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFu
LmNvbXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxC
bG9ja0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxk
IGEgc3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQg
d2Ugd2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21w
dXRlIHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQog
ICAgICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJ
bkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYg
ZnJvbSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRl
cmF0ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9t
aW5hbmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAg
cHVibGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVu
ZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdy
YXBoOjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBM
aXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5h
bWUgR3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFu
Y2VGcm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICB9KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWlu
YW5jZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0Cisg
ICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3Qg
TGlzdCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVz
dWx0OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZklt
cGwoCkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZy
b250aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdy
YXBoOjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207
CiAgICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBl
bmFtZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAg
ICBmb3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dU
Ri93dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2lu
Z2xlUm9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9v
dEdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdy
YXBoX2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJv
b3RHcmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRv
IHRoZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFw
aE5vZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkp
CisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5n
bGVSb290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9k
ZSByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9p
c1Jvb3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBt
X2lzUm9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQor
CisgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290
OworICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAg
fQorCitwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29s
IG1faXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2Ns
YXNzIFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFw
aE5vZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVs
dDsKKyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAg
aWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNS
b290LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAg
fQorCisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlm
IChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9v
dCwgZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAg
ICB9CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAg
ICBpZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAg
ICAgIHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNS
b290KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAg
ICAgIG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFt
ZSBHcmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1h
cCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGlj
OgorICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBo
LnRlbXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFw
KFNpbmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1f
bWFwKSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7Cisg
ICAgICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGlu
ZGV4KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jv
b3Q7CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0
IFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICgqY29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAg
ICBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9k
ZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBt
X21hcFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25z
dCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxT
aW5nbGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAg
dHlwZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFw
aE5vZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwg
R3JhcGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVS
b290R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgewor
ICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290
cygpKSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3Qp
LmlzRW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFs
Um9vdCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAg
IH0KKworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFw
PFQ+KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlm
IChub2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7
CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2Rl
IG5vZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBM
aXN0IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAg
YXNzZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAg
ICAgICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNl
dC5jb250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnBy
ZWRlY2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBM
aXN0IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAg
ICAgZm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMo
bm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBu
b2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsg
MTsKKyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAg
cmV0dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51
bU5vZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkg
KyAxOworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgewor
ICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAg
ICAgICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290
KCkpCisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAg
ICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5v
ZGUoaSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAg
b3V0LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1h
OworICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUp
KQorICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOwor
ICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAg
U3VjY3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAg
ICAgIGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAg
ICAgIG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5w
cmludCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUg
aWRlbXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8g
dGhlIHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMg
dGhlIHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBl
Y3RlZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xh
c3MuCisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5h
bWUgR3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChy
b290U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0K
KworICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAg
ICB0eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdU
Rl9TaW5nbGVSb290R3JhcGhfaAo=
</data>
<flag name="commit-queue"
          id="339300"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318935</attachid>
            <date>2017-08-23 16:15:17 -0700</date>
            <delta_ts>2017-08-23 16:58:40 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>246029</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjExMDkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzNiBAQAorMjAxNy0wOC0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KKworICAgICAgICBTdXBwb3J0IGNvbXBpbGluZyBjYXRjaCBpbiB0aGUgREZHCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ1OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJr
cy9kZWx0YS1ibHVlLXRyeS1jYXRjaC5qczogQWRkZWQuCisgICAgICAgIChleGNlcHRpb24pOgor
ICAgICAgICAodmFsdWUpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24pOgorICAgICAgICAo
T3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmFkZCk6CisgICAgICAgIChPcmRlcmVkQ29sbGVj
dGlvbi5wcm90b3R5cGUuYXQpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBl
LnNpemUpOgorICAgICAgICAoT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLnJlbW92ZUZpcnN0
KToKKyAgICAgICAgKE9yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmUpOgorICAgICAg
ICAoU3RyZW5ndGgpOgorICAgICAgICAoU3RyZW5ndGguc3Ryb25nZXIpOgorICAgICAgICAoU3Ry
ZW5ndGgud2Vha2VyKToKKyAgICAgICAgKFN0cmVuZ3RoLndlYWtlc3RPZik6CisgICAgICAgIChT
dHJlbmd0aC5zdHJvbmdlc3QpOgorICAgICAgICAoU3RyZW5ndGgucHJvdG90eXBlLm5leHRXZWFr
ZXIpOgorICAgICAgICAoQ29uc3RyYWludCk6CisgICAgICAgIChDb25zdHJhaW50LnByb3RvdHlw
ZS5hZGRDb25zdHJhaW50KToKKyAgICAgICAgKENvbnN0cmFpbnQucHJvdG90eXBlLnNhdGlzZnkp
OgorICAgICAgICAoQ29uc3RyYWludC5wcm90b3R5cGUuZGVzdHJveUNvbnN0cmFpbnQpOgorICAg
ICAgICAoQ29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1dCk6CisgICAgICAgIChVbmFyeUNvbnN0
cmFpbnQpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRUb0dyYXBoKToK
KyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuY2hvb3NlTWV0aG9kKToKKyAgICAg
ICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaXNTYXRpc2ZpZWQpOgorICAgICAgICAoVW5h
cnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrSW5wdXRzKToKKyAgICAgICAgKFVuYXJ5Q29uc3Ry
YWludC5wcm90b3R5cGUub3V0cHV0KToKKyAgICAgICAgKFVuYXJ5Q29uc3RyYWludC5wcm90b3R5
cGUucmVjYWxjdWxhdGUpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJr
VW5zYXRpc2ZpZWQpOgorICAgICAgICAoVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pbnB1dHNL
bm93bik6CisgICAgICAgIChVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFw
aCk6CisgICAgICAgIChTdGF5Q29uc3RyYWludCk6CisgICAgICAgIChTdGF5Q29uc3RyYWludC5w
cm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuaXNJ
bnB1dCk6CisgICAgICAgIChFZGl0Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAg
ICAgIChCaW5hcnlDb25zdHJhaW50KToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJvdG90
eXBlLmNob29zZU1ldGhvZCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5h
ZGRUb0dyYXBoKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmlzU2F0aXNm
aWVkKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMpOgor
ICAgICAgICAoQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUuaW5wdXQpOgorICAgICAgICAoQmlu
YXJ5Q29uc3RyYWludC5wcm90b3R5cGUub3V0cHV0KToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFp
bnQucHJvdG90eXBlLnJlY2FsY3VsYXRlKToKKyAgICAgICAgKEJpbmFyeUNvbnN0cmFpbnQucHJv
dG90eXBlLm1hcmtVbnNhdGlzZmllZCk6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3Rv
dHlwZS5pbnB1dHNLbm93bik6CisgICAgICAgIChCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5y
ZW1vdmVGcm9tR3JhcGgpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50KToKKyAgICAgICAgKFNj
YWxlQ29uc3RyYWludC5wcm90b3R5cGUuYWRkVG9HcmFwaCk6CisgICAgICAgIChTY2FsZUNvbnN0
cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCk6CisgICAgICAgIChTY2FsZUNvbnN0cmFp
bnQucHJvdG90eXBlLm1hcmtJbnB1dHMpOgorICAgICAgICAoU2NhbGVDb25zdHJhaW50LnByb3Rv
dHlwZS5leGVjdXRlKToKKyAgICAgICAgKFNjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVjYWxj
dWxhdGUpOgorICAgICAgICAoRXF1YWxpdHlDb25zdHJhaW50KToKKyAgICAgICAgKEVxdWFsaXR5
Q29uc3RyYWludC5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChWYXJpYWJsZSk6CisgICAg
ICAgIChWYXJpYWJsZS5wcm90b3R5cGUuYWRkQ29uc3RyYWludCk6CisgICAgICAgIChWYXJpYWJs
ZS5wcm90b3R5cGUucmVtb3ZlQ29uc3RyYWludCk6CisgICAgICAgIChQbGFubmVyKToKKyAgICAg
ICAgKFBsYW5uZXIucHJvdG90eXBlLmluY3JlbWVudGFsQWRkKToKKyAgICAgICAgKFBsYW5uZXIu
cHJvdG90eXBlLmluY3JlbWVudGFsUmVtb3ZlKToKKyAgICAgICAgKFBsYW5uZXIucHJvdG90eXBl
Lm5ld01hcmspOgorICAgICAgICAoUGxhbm5lci5wcm90b3R5cGUubWFrZVBsYW4pOgorICAgICAg
ICAoUGxhbm5lci5wcm90b3R5cGUuZXh0cmFjdFBsYW5Gcm9tQ29uc3RyYWludHMpOgorICAgICAg
ICAoUGxhbm5lci5wcm90b3R5cGUuYWRkUHJvcGFnYXRlKToKKyAgICAgICAgKFBsYW5uZXIucHJv
dG90eXBlLnJlbW92ZVByb3BhZ2F0ZUZyb20pOgorICAgICAgICAoUGxhbm5lci5wcm90b3R5cGUu
YWRkQ29uc3RyYWludHNDb25zdW1pbmdUbyk6CisgICAgICAgIChQbGFuKToKKyAgICAgICAgKFBs
YW4ucHJvdG90eXBlLmFkZENvbnN0cmFpbnQpOgorICAgICAgICAoUGxhbi5wcm90b3R5cGUuc2l6
ZSk6CisgICAgICAgIChQbGFuLnByb3RvdHlwZS5jb25zdHJhaW50QXQpOgorICAgICAgICAoUGxh
bi5wcm90b3R5cGUuZXhlY3V0ZSk6CisgICAgICAgIChjaGFpblRlc3QpOgorICAgICAgICAocHJv
amVjdGlvblRlc3QpOgorICAgICAgICAoY2hhbmdlKToKKyAgICAgICAgKGRlbHRhQmx1ZSk6Cisg
ICAgICAgICogbWljcm9iZW5jaG1hcmtzL2Zha2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1m
aW5pc2hlZC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoTnVtYmVycyk6
CisgICAgICAgIChOdW1iZXJzLnByb3RvdHlwZS5uZXh0KToKKyAgICAgICAgKHJldHVybi5UcmFu
c3Bvc2UpOgorICAgICAgICAocmV0dXJuLlRyYW5zcG9zZS5wcm90b3R5cGUubmV4dCk6CisgICAg
ICAgICh0cmFuc3Bvc2UpOgorICAgICAgICAodmVyaWZ5RXZlbik6CisgICAgICAgICh2ZXJpZnlT
dHJpbmcpOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHJ1bkl0ZXJhdG9ycyk6CisgICAgICAg
ICogbWljcm9iZW5jaG1hcmtzL3RyeS1jYXRjaC13b3JkLWNvdW50LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGxldC5hc3NlcnQpOgorICAgICAgICAoRU9GKToKKyAgICAgICAgKGxldC50ZXh0cyk6Cisg
ICAgICAgIChsZXQuby5hcHBseSk6CisgICAgICAgIChmb28pOgorICAgICAgICAoYmFyKToKKyAg
ICAgICAgKGYpOgorICAgICAgICAocnVuKToKKyAgICAgICAgKHRlc3QxKToKKyAgICAgICAgKHRl
c3QyKToKKyAgICAgICAgKHRlc3QzKToKKyAgICAgICAgKGZuKToKKyAgICAgICAgKEEpOgorICAg
ICAgICAoQik6CisgICAgICAgIChBLnByb3RvdHlwZS5nZXRWYWx1ZSk6CisgICAgICAgIChCLnBy
b3RvdHlwZS5nZXRQYXJlbnRWYWx1ZSk6CisgICAgICAgIChzdHJsZW4pOgorICAgICAgICAoc3Vt
LjApOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChyZXN1bHQudGVzdC5vKToKKyAgICAgICAg
KHNldCBhZGQuc2V0IGFkZCk6CisgICAgICAgIChzZXQgZm9yRWFjaCk6CisgICAgICAgIChzdHJp
bmdIYXNoKToKKyAgICAgICAgKHNldCBpZik6CisgICAgICAgICh0ZXN0RnVuY3Rpb24pOgorICAg
ICAgICAoc2V0IGRlbGV0ZS5zZXQgaGFzLnNldCBhZGQpOgorICAgICAgICAqIHN0cmVzcy9jYXRj
aC1zZXQtYXJndW1lbnQtc3BlY3VsYXRpb24tZmFpbHVyZS5qczogQWRkZWQuCisgICAgICAgIChv
KToKKyAgICAgICAgKGUpOgorICAgICAgICAoZTIpOgorICAgICAgICAoZXNjYXBlKToKKyAgICAg
ICAgKGJheik6CisgICAgICAgIChub0lubGluZS5ydW4pOgorICAgICAgICAobm9JbmxpbmUpOgor
ICAgICAgICAqIHN0cmVzcy9vc3ItZW50ZXItdG8tY2F0Y2gtd2l0aC1zZXQtbG9jYWwtdHlwZS1j
aGVjay1mYWlsdXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChlKToKKyAg
ICAgICAgKGJheik6CisgICAgICAgIChiYXIpOgorCiAyMDE3LTA4LTIzICBSb2JpbiBNb3Jpc3Nl
dCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbWljcm8tYmVuY2htYXJr
IGZvciBjaGVja2luZyB0aGF0IGFjY2Vzc2luZyBhIHZhcmlhYmxlIHdpdGhpbiBhICd3aXRoJwpJ
bmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsdGEtYmx1ZS10cnktY2F0Y2guanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsdGEtYmx1ZS10cnktY2F0Y2gu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZGVsdGEtYmx1ZS10
cnktY2F0Y2guanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MDUgQEAKKy8vIENvcHlyaWdo
dCAyMDA4IHRoZSBWOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgMTk5NiBKb2huIE1hbG9uZXkgYW5kIE1hcmlvIFdvbGN6a28uCisKKy8vIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CisvLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy8vIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisvLworLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisvLyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLy8gTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLy8g
R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy8vCisvLyBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKy8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKworCisvLyBUaGlzIGltcGxlbWVudGF0
aW9uIG9mIHRoZSBEZWx0YUJsdWUgYmVuY2htYXJrIGlzIGRlcml2ZWQKKy8vIGZyb20gdGhlIFNt
YWxsdGFsayBpbXBsZW1lbnRhdGlvbiBieSBKb2huIE1hbG9uZXkgYW5kIE1hcmlvCisvLyBXb2xj
emtvLiBTb21lIHBhcnRzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGRpcmVjdGx5LCB3aGVyZWFzCisv
LyBvdGhlcnMgaGF2ZSBiZWVuIG1vZGlmaWVkIG1vcmUgYWdncmVzaXZlbHkgdG8gbWFrZSBpdCBm
ZWVsCisvLyBtb3JlIGxpa2UgYSBKYXZhU2NyaXB0IHByb2dyYW0uCisKK2xldCBfX2V4Y2VwdGlv
bkNvdW50ZXIgPSAwOworZnVuY3Rpb24gZXhjZXB0aW9uKCkgeworICAgIGlmIChfX2V4Y2VwdGlv
bkNvdW50ZXIrKyAlIDM1ID09PSAwKQorICAgICAgICB0aHJvdyBfX2V4Y2VwdGlvbkNvdW50ZXI7
Cit9CisKKworLyoqCisgKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIERlbHRh
Qmx1ZSBjb25zdHJhaW50LXNvbHZpbmcKKyAqIGFsZ29yaXRobSwgYXMgZGVzY3JpYmVkIGluOgor
ICoKKyAqICJUaGUgRGVsdGFCbHVlIEFsZ29yaXRobTogQW4gSW5jcmVtZW50YWwgQ29uc3RyYWlu
dCBIaWVyYXJjaHkgU29sdmVyIgorICogICBCam9ybiBOLiBGcmVlbWFuLUJlbnNvbiBhbmQgSm9o
biBNYWxvbmV5CisgKiAgIEphbnVhcnkgMTk5MCBDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNLAor
ICogICBhbHNvIGF2YWlsYWJsZSBhcyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24gVFIgODktMDgt
MDYuCisgKgorICogQmV3YXJlOiB0aGlzIGJlbmNobWFyayBpcyB3cml0dGVuIGluIGEgZ3JvdGVz
cXVlIHN0eWxlIHdoZXJlCisgKiB0aGUgY29uc3RyYWludCBtb2RlbCBpcyBidWlsdCBieSBzaWRl
LWVmZmVjdHMgZnJvbSBjb25zdHJ1Y3RvcnMuCisgKiBJJ3ZlIGtlcHQgaXQgdGhpcyB3YXkgdG8g
YXZvaWQgZGV2aWF0aW5nIHRvbyBtdWNoIGZyb20gdGhlIG9yaWdpbmFsCisgKiBpbXBsZW1lbnRh
dGlvbi4KKyAqLworCisKKy8qIC0tLSBPIGIgaiBlIGMgdCAgIE0gbyBkIGUgbCAtLS0gKi8KKwor
T2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICJpbmhlcml0c0Zyb20iLCB7
CisgIAorICB2YWx1ZTogZnVuY3Rpb24gKHNodXBlcikgeworICAgIGZ1bmN0aW9uIEluaGVyaXRl
cigpIHsgfQorICAgIEluaGVyaXRlci5wcm90b3R5cGUgPSBzaHVwZXIucHJvdG90eXBlOworICAg
IHRoaXMucHJvdG90eXBlID0gbmV3IEluaGVyaXRlcigpOworICAgIHRoaXMuc3VwZXJDb25zdHJ1
Y3RvciA9IHNodXBlcjsKKyAgfQorfSk7CisKK2Z1bmN0aW9uIE9yZGVyZWRDb2xsZWN0aW9uKCkg
eworICB0aGlzLmVsbXMgPSBuZXcgQXJyYXkoKTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJv
dG90eXBlLmFkZCA9IGZ1bmN0aW9uIChlbG0pIHsKKyAgdGhpcy5lbG1zLnB1c2goZWxtKTsKK30K
KworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKGluZGV4KSB7Cisg
IHJldHVybiB0aGlzLmVsbXNbaW5kZXhdOworfQorCitPcmRlcmVkQ29sbGVjdGlvbi5wcm90b3R5
cGUuc2l6ZSA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuZWxtcy5sZW5ndGg7Cit9CisK
K09yZGVyZWRDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmVGaXJzdCA9IGZ1bmN0aW9uICgpIHsK
KyAgcmV0dXJuIHRoaXMuZWxtcy5wb3AoKTsKK30KKworT3JkZXJlZENvbGxlY3Rpb24ucHJvdG90
eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChlbG0pIHsKKyAgdmFyIGluZGV4ID0gMCwgc2tpcHBlZCA9
IDA7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5lbG1zLmxlbmd0aDsgaSsrKSB7CisgICAg
dmFyIHZhbHVlID0gdGhpcy5lbG1zW2ldOworICAgIGlmICh2YWx1ZSAhPSBlbG0pIHsKKyAgICAg
IHRoaXMuZWxtc1tpbmRleF0gPSB2YWx1ZTsKKyAgICAgIGluZGV4Kys7CisgICAgfSBlbHNlIHsK
KyAgICAgIHNraXBwZWQrKzsKKyAgICB9CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2go
ZSkgeyB9CisgIH0KKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBza2lwcGVkOyBpKyspIHsKKyAgICB0
aGlzLmVsbXMucG9wKCk7CisgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9Cisg
IH0KK30KKworLyogLS0tICoKKyAqIFMgdCByIGUgbiBnIHQgaAorICogLS0tICovCisKKy8qKgor
ICogU3RyZW5ndGhzIGFyZSB1c2VkIHRvIG1lYXN1cmUgdGhlIHJlbGF0aXZlIGltcG9ydGFuY2Ug
b2YgY29uc3RyYWludHMuCisgKiBOZXcgc3RyZW5ndGhzIG1heSBiZSBpbnNlcnRlZCBpbiB0aGUg
c3RyZW5ndGggaGllcmFyY2h5IHdpdGhvdXQKKyAqIGRpc3J1cHRpbmcgY3VycmVudCBjb25zdHJh
aW50cy4gIFN0cmVuZ3RocyBjYW5ub3QgYmUgY3JlYXRlZCBvdXRzaWRlCisgKiB0aGlzIGNsYXNz
LCBzbyBwb2ludGVyIGNvbXBhcmlzb24gY2FuIGJlIHVzZWQgZm9yIHZhbHVlIGNvbXBhcmlzb24u
CisgKi8KK2Z1bmN0aW9uIFN0cmVuZ3RoKHN0cmVuZ3RoVmFsdWUsIG5hbWUpIHsKKyAgdGhpcy5z
dHJlbmd0aFZhbHVlID0gc3RyZW5ndGhWYWx1ZTsKKyAgdGhpcy5uYW1lID0gbmFtZTsKK30KKwor
U3RyZW5ndGguc3Ryb25nZXIgPSBmdW5jdGlvbiAoczEsIHMyKSB7CisgIHJldHVybiBzMS5zdHJl
bmd0aFZhbHVlIDwgczIuc3RyZW5ndGhWYWx1ZTsKK30KKworU3RyZW5ndGgud2Vha2VyID0gZnVu
Y3Rpb24gKHMxLCBzMikgeworICByZXR1cm4gczEuc3RyZW5ndGhWYWx1ZSA+IHMyLnN0cmVuZ3Ro
VmFsdWU7Cit9CisKK1N0cmVuZ3RoLndlYWtlc3RPZiA9IGZ1bmN0aW9uIChzMSwgczIpIHsKKyAg
cmV0dXJuIHRoaXMud2Vha2VyKHMxLCBzMikgPyBzMSA6IHMyOworfQorCitTdHJlbmd0aC5zdHJv
bmdlc3QgPSBmdW5jdGlvbiAoczEsIHMyKSB7CisgIHJldHVybiB0aGlzLnN0cm9uZ2VyKHMxLCBz
MikgPyBzMSA6IHMyOworfQorCitTdHJlbmd0aC5wcm90b3R5cGUubmV4dFdlYWtlciA9IGZ1bmN0
aW9uICgpIHsKKyAgc3dpdGNoICh0aGlzLnN0cmVuZ3RoVmFsdWUpIHsKKyAgICBjYXNlIDA6IHJl
dHVybiBTdHJlbmd0aC5XRUFLRVNUOworICAgIGNhc2UgMTogcmV0dXJuIFN0cmVuZ3RoLldFQUtf
REVGQVVMVDsKKyAgICBjYXNlIDI6IHJldHVybiBTdHJlbmd0aC5OT1JNQUw7CisgICAgY2FzZSAz
OiByZXR1cm4gU3RyZW5ndGguU1RST05HX0RFRkFVTFQ7CisgICAgY2FzZSA0OiByZXR1cm4gU3Ry
ZW5ndGguUFJFRkVSUkVEOworICAgIGNhc2UgNTogcmV0dXJuIFN0cmVuZ3RoLlJFUVVJUkVEOwor
ICB9Cit9CisKKy8vIFN0cmVuZ3RoIGNvbnN0YW50cy4KK1N0cmVuZ3RoLlJFUVVJUkVEICAgICAg
ICA9IG5ldyBTdHJlbmd0aCgwLCAicmVxdWlyZWQiKTsKK1N0cmVuZ3RoLlNUT05HX1BSRUZFUlJF
RCA9IG5ldyBTdHJlbmd0aCgxLCAic3Ryb25nUHJlZmVycmVkIik7CitTdHJlbmd0aC5QUkVGRVJS
RUQgICAgICAgPSBuZXcgU3RyZW5ndGgoMiwgInByZWZlcnJlZCIpOworU3RyZW5ndGguU1RST05H
X0RFRkFVTFQgID0gbmV3IFN0cmVuZ3RoKDMsICJzdHJvbmdEZWZhdWx0Iik7CitTdHJlbmd0aC5O
T1JNQUwgICAgICAgICAgPSBuZXcgU3RyZW5ndGgoNCwgIm5vcm1hbCIpOworU3RyZW5ndGguV0VB
S19ERUZBVUxUICAgID0gbmV3IFN0cmVuZ3RoKDUsICJ3ZWFrRGVmYXVsdCIpOworU3RyZW5ndGgu
V0VBS0VTVCAgICAgICAgID0gbmV3IFN0cmVuZ3RoKDYsICJ3ZWFrZXN0Iik7CisKKy8qIC0tLSAq
CisgKiBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBBbiBhYnN0cmFj
dCBjbGFzcyByZXByZXNlbnRpbmcgYSBzeXN0ZW0tbWFpbnRhaW5hYmxlIHJlbGF0aW9uc2hpcAor
ICogKG9yICJjb25zdHJhaW50IikgYmV0d2VlbiBhIHNldCBvZiB2YXJpYWJsZXMuIEEgY29uc3Ry
YWludCBzdXBwbGllcworICogYSBzdHJlbmd0aCBpbnN0YW5jZSB2YXJpYWJsZTsgY29uY3JldGUg
c3ViY2xhc3NlcyBwcm92aWRlIGEgbWVhbnMKKyAqIG9mIHN0b3JpbmcgdGhlIGNvbnN0cmFpbmVk
IHZhcmlhYmxlcyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQKKyAqIHRvIHJlcHJlc2Vu
dCBhIGNvbnN0cmFpbnQuCisgKi8KK2Z1bmN0aW9uIENvbnN0cmFpbnQoc3RyZW5ndGgpIHsKKyAg
dGhpcy5zdHJlbmd0aCA9IHN0cmVuZ3RoOworfQorCisvKioKKyAqIEFjdGl2YXRlIHRoaXMgY29u
c3RyYWludCBhbmQgYXR0ZW1wdCB0byBzYXRpc2Z5IGl0LgorICovCitDb25zdHJhaW50LnByb3Rv
dHlwZS5hZGRDb25zdHJhaW50ID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmFkZFRvR3JhcGgoKTsK
KyAgcGxhbm5lci5pbmNyZW1lbnRhbEFkZCh0aGlzKTsKK30KKworLyoqCisgKiBBdHRlbXB0IHRv
IGZpbmQgYSB3YXkgdG8gZW5mb3JjZSB0aGlzIGNvbnN0cmFpbnQuIElmIHN1Y2Nlc3NmdWwsCisg
KiByZWNvcmQgdGhlIHNvbHV0aW9uLCBwZXJoYXBzIG1vZGlmeWluZyB0aGUgY3VycmVudCBkYXRh
ZmxvdworICogZ3JhcGguIEFuc3dlciB0aGUgY29uc3RyYWludCB0aGF0IHRoaXMgY29uc3RyYWlu
dCBvdmVycmlkZXMsIGlmCisgKiB0aGVyZSBpcyBvbmUsIG9yIG5pbCwgaWYgdGhlcmUgaXNuJ3Qu
CisgKiBBc3N1bWU6IEkgYW0gbm90IGFscmVhZHkgc2F0aXNmaWVkLgorICovCitDb25zdHJhaW50
LnByb3RvdHlwZS5zYXRpc2Z5ID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgdGhpcy5jaG9vc2VNZXRo
b2QobWFyayk7CisgIGlmICghdGhpcy5pc1NhdGlzZmllZCgpKSB7CisgICAgaWYgKHRoaXMuc3Ry
ZW5ndGggPT0gU3RyZW5ndGguUkVRVUlSRUQpCisgICAgICBhbGVydCgiQ291bGQgbm90IHNhdGlz
ZnkgYSByZXF1aXJlZCBjb25zdHJhaW50ISIpOworICAgIHJldHVybiBudWxsOworICB9CisgIHRo
aXMubWFya0lucHV0cyhtYXJrKTsKKyAgdmFyIG91dCA9IHRoaXMub3V0cHV0KCk7CisgIHZhciBv
dmVycmlkZGVuID0gb3V0LmRldGVybWluZWRCeTsKKyAgaWYgKG92ZXJyaWRkZW4gIT0gbnVsbCkg
b3ZlcnJpZGRlbi5tYXJrVW5zYXRpc2ZpZWQoKTsKKyAgb3V0LmRldGVybWluZWRCeSA9IHRoaXM7
CisgIGlmICghcGxhbm5lci5hZGRQcm9wYWdhdGUodGhpcywgbWFyaykpCisgICAgYWxlcnQoIkN5
Y2xlIGVuY291bnRlcmVkIik7CisgIG91dC5tYXJrID0gbWFyazsKKyAgcmV0dXJuIG92ZXJyaWRk
ZW47Cit9CisKK0NvbnN0cmFpbnQucHJvdG90eXBlLmRlc3Ryb3lDb25zdHJhaW50ID0gZnVuY3Rp
b24gKCkgeworICBpZiAodGhpcy5pc1NhdGlzZmllZCgpKSBwbGFubmVyLmluY3JlbWVudGFsUmVt
b3ZlKHRoaXMpOworICBlbHNlIHRoaXMucmVtb3ZlRnJvbUdyYXBoKCk7Cit9CisKKy8qKgorICog
Tm9ybWFsIGNvbnN0cmFpbnRzIGFyZSBub3QgaW5wdXQgY29uc3RyYWludHMuICBBbiBpbnB1dCBj
b25zdHJhaW50CisgKiBpcyBvbmUgdGhhdCBkZXBlbmRzIG9uIGV4dGVybmFsIHN0YXRlLCBzdWNo
IGFzIHRoZSBtb3VzZSwgdGhlCisgKiBrZXlib3JkLCBhIGNsb2NrLCBvciBzb21lIGFyYml0cmF0
eSBwaWVjZSBvZiBpbXBlcmF0aXZlIGNvZGUuCisgKi8KK0NvbnN0cmFpbnQucHJvdG90eXBlLmlz
SW5wdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiBmYWxzZTsKK30KKworLyogLS0tICoKKyAq
IFUgbiBhIHIgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIEFi
c3RyYWN0IHN1cGVyY2xhc3MgZm9yIGNvbnN0cmFpbnRzIGhhdmluZyBhIHNpbmdsZSBwb3NzaWJs
ZSBvdXRwdXQKKyAqIHZhcmlhYmxlLgorICovCitmdW5jdGlvbiBVbmFyeUNvbnN0cmFpbnQodiwg
c3RyZW5ndGgpIHsKKyAgVW5hcnlDb25zdHJhaW50LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlz
LCBzdHJlbmd0aCk7CisgIHRoaXMubXlPdXRwdXQgPSB2OworICB0aGlzLnNhdGlzZmllZCA9IGZh
bHNlOworICB0aGlzLmFkZENvbnN0cmFpbnQoKTsKK30KKworVW5hcnlDb25zdHJhaW50LmluaGVy
aXRzRnJvbShDb25zdHJhaW50KTsKKworLyoqCisgKiBBZGRzIHRoaXMgY29uc3RyYWludCB0byB0
aGUgY29uc3RyYWludCBncmFwaAorICovCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmFkZFRv
R3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMubXlPdXRwdXQuYWRkQ29uc3RyYWludCh0aGlz
KTsKKyAgdGhpcy5zYXRpc2ZpZWQgPSBmYWxzZTsKK30KKworLyoqCisgKiBEZWNpZGVzIGlmIHRo
aXMgY29uc3RyYWludCBjYW4gYmUgc2F0aXNmaWVkIGFuZCByZWNvcmRzIHRoYXQKKyAqIGRlY2lz
aW9uLgorICovCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmNob29zZU1ldGhvZCA9IGZ1bmN0
aW9uIChtYXJrKSB7CisgIHRoaXMuc2F0aXNmaWVkID0gKHRoaXMubXlPdXRwdXQubWFyayAhPSBt
YXJrKQorICAgICYmIFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgsIHRoaXMubXlPdXRw
dXQud2Fsa1N0cmVuZ3RoKTsKK30KKworLyoqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBjb25z
dHJhaW50IGlzIHNhdGlzZmllZCBpbiB0aGUgY3VycmVudCBzb2x1dGlvbi4KKyAqLworVW5hcnlD
b25zdHJhaW50LnByb3RvdHlwZS5pc1NhdGlzZmllZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJu
IHRoaXMuc2F0aXNmaWVkOworfQorCitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1
dHMgPSBmdW5jdGlvbiAobWFyaykgeworICAvLyBoYXMgbm8gaW5wdXRzCit9CisKKy8qKgorICog
UmV0dXJucyB0aGUgY3VycmVudCBvdXRwdXQgdmFyaWFibGUuCisgKi8KK1VuYXJ5Q29uc3RyYWlu
dC5wcm90b3R5cGUub3V0cHV0ID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy5teU91dHB1
dDsKK30KKworLyoqCisgKiBDYWxjdWxhdGUgdGhlIHdhbGthYm91dCBzdHJlbmd0aCwgdGhlIHN0
YXkgZmxhZywgYW5kLCBpZiBpdCBpcworICogJ3N0YXknLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJy
ZW50IG91dHB1dCBvZiB0aGlzIGNvbnN0cmFpbnQuIEFzc3VtZQorICogdGhpcyBjb25zdHJhaW50
IGlzIHNhdGlzZmllZC4KKyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5yZWNhbGN1bGF0
ZSA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5teU91dHB1dC53YWxrU3RyZW5ndGggPSB0aGlzLnN0
cmVuZ3RoOworICB0aGlzLm15T3V0cHV0LnN0YXkgPSAhdGhpcy5pc0lucHV0KCk7CisgIGlmICh0
aGlzLm15T3V0cHV0LnN0YXkpIHRoaXMuZXhlY3V0ZSgpOyAvLyBTdGF5IG9wdGltaXphdGlvbgor
fQorCisvKioKKyAqIFJlY29yZHMgdGhhdCB0aGlzIGNvbnN0cmFpbnQgaXMgdW5zYXRpc2ZpZWQK
KyAqLworVW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5tYXJrVW5zYXRpc2ZpZWQgPSBmdW5jdGlv
biAoKSB7CisgIHRoaXMuc2F0aXNmaWVkID0gZmFsc2U7Cit9CisKK1VuYXJ5Q29uc3RyYWludC5w
cm90b3R5cGUuaW5wdXRzS25vd24gPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiB0cnVlOworfQor
CitVbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCA9IGZ1bmN0aW9uICgp
IHsKKyAgaWYgKHRoaXMubXlPdXRwdXQgIT0gbnVsbCkgdGhpcy5teU91dHB1dC5yZW1vdmVDb25z
dHJhaW50KHRoaXMpOworICB0aGlzLnNhdGlzZmllZCA9IGZhbHNlOworfQorCisvKiAtLS0gKgor
ICogUyB0IGEgeSAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAqIC0tLSAqLworCisvKioKKyAqIFZh
cmlhYmxlcyB0aGF0IHNob3VsZCwgd2l0aCBzb21lIGxldmVsIG9mIHByZWZlcmVuY2UsIHN0YXkg
dGhlIHNhbWUuCisgKiBQbGFubmVycyBtYXkgZXhwbG9pdCB0aGUgZmFjdCB0aGF0IGluc3RhbmNl
cywgaWYgc2F0aXNmaWVkLCB3aWxsIG5vdAorICogY2hhbmdlIHRoZWlyIG91dHB1dCBkdXJpbmcg
cGxhbiBleGVjdXRpb24uICBUaGlzIGlzIGNhbGxlZCAic3RheQorICogb3B0aW1pemF0aW9uIi4K
KyAqLworZnVuY3Rpb24gU3RheUNvbnN0cmFpbnQodiwgc3RyKSB7CisgIFN0YXlDb25zdHJhaW50
LnN1cGVyQ29uc3RydWN0b3IuY2FsbCh0aGlzLCB2LCBzdHIpOworfQorCitTdGF5Q29uc3RyYWlu
dC5pbmhlcml0c0Zyb20oVW5hcnlDb25zdHJhaW50KTsKKworU3RheUNvbnN0cmFpbnQucHJvdG90
eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7CisgIC8vIFN0YXkgY29uc3RyYWludHMgZG8gbm90
aGluZworfQorCisvKiAtLS0gKgorICogRSBkIGkgdCAgIEMgbyBuIHMgdCByIGEgaSBuIHQKKyAq
IC0tLSAqLworCisvKioKKyAqIEEgdW5hcnkgaW5wdXQgY29uc3RyYWludCB1c2VkIHRvIG1hcmsg
YSB2YXJpYWJsZSB0aGF0IHRoZSBjbGllbnQKKyAqIHdpc2hlcyB0byBjaGFuZ2UuCisgKi8KK2Z1
bmN0aW9uIEVkaXRDb25zdHJhaW50KHYsIHN0cikgeworICBFZGl0Q29uc3RyYWludC5zdXBlckNv
bnN0cnVjdG9yLmNhbGwodGhpcywgdiwgc3RyKTsKK30KKworRWRpdENvbnN0cmFpbnQuaW5oZXJp
dHNGcm9tKFVuYXJ5Q29uc3RyYWludCk7CisKKy8qKgorICogRWRpdHMgaW5kaWNhdGUgdGhhdCBh
IHZhcmlhYmxlIGlzIHRvIGJlIGNoYW5nZWQgYnkgaW1wZXJhdGl2ZSBjb2RlLgorICovCitFZGl0
Q29uc3RyYWludC5wcm90b3R5cGUuaXNJbnB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRy
dWU7Cit9CisKK0VkaXRDb25zdHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkg
eworICAvLyBFZGl0IGNvbnN0cmFpbnRzIGRvIG5vdGhpbmcKK30KKworLyogLS0tICoKKyAqIEIg
aSBuIGEgciB5ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAorICogLS0tICovCisKK3ZhciBEaXJlY3Rp
b24gPSBuZXcgT2JqZWN0KCk7CitEaXJlY3Rpb24uTk9ORSAgICAgPSAwOworRGlyZWN0aW9uLkZP
UldBUkQgID0gMTsKK0RpcmVjdGlvbi5CQUNLV0FSRCA9IC0xOworCisvKioKKyAqIEFic3RyYWN0
IHN1cGVyY2xhc3MgZm9yIGNvbnN0cmFpbnRzIGhhdmluZyB0d28gcG9zc2libGUgb3V0cHV0Cisg
KiB2YXJpYWJsZXMuCisgKi8KK2Z1bmN0aW9uIEJpbmFyeUNvbnN0cmFpbnQodmFyMSwgdmFyMiwg
c3RyZW5ndGgpIHsKKyAgQmluYXJ5Q29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLmNhbGwodGhp
cywgc3RyZW5ndGgpOworICB0aGlzLnYxID0gdmFyMTsKKyAgdGhpcy52MiA9IHZhcjI7CisgIHRo
aXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7CisgIHRoaXMuYWRkQ29uc3RyYWludCgpOwor
fQorCitCaW5hcnlDb25zdHJhaW50LmluaGVyaXRzRnJvbShDb25zdHJhaW50KTsKKworLyoqCisg
KiBEZWNpZGVzIGlmIHRoaXMgY29uc3RyYWludCBjYW4gYmUgc2F0aXNmaWVkIGFuZCB3aGljaCB3
YXkgaXQKKyAqIHNob3VsZCBmbG93IGJhc2VkIG9uIHRoZSByZWxhdGl2ZSBzdHJlbmd0aCBvZiB0
aGUgdmFyaWFibGVzIHJlbGF0ZWQsCisgKiBhbmQgcmVjb3JkIHRoYXQgZGVjaXNpb24uCisgKi8K
K0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLmNob29zZU1ldGhvZCA9IGZ1bmN0aW9uIChtYXJr
KSB7CisgIGlmICh0aGlzLnYxLm1hcmsgPT0gbWFyaykgeworICAgIHRoaXMuZGlyZWN0aW9uID0g
KHRoaXMudjIubWFyayAhPSBtYXJrICYmIFN0cmVuZ3RoLnN0cm9uZ2VyKHRoaXMuc3RyZW5ndGgs
IHRoaXMudjIud2Fsa1N0cmVuZ3RoKSkKKyAgICAgID8gRGlyZWN0aW9uLkZPUldBUkQKKyAgICAg
IDogRGlyZWN0aW9uLk5PTkU7CisgIH0KKyAgaWYgKHRoaXMudjIubWFyayA9PSBtYXJrKSB7Cisg
ICAgdGhpcy5kaXJlY3Rpb24gPSAodGhpcy52MS5tYXJrICE9IG1hcmsgJiYgU3RyZW5ndGguc3Ry
b25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy52MS53YWxrU3RyZW5ndGgpKQorICAgICAgPyBEaXJl
Y3Rpb24uQkFDS1dBUkQKKyAgICAgIDogRGlyZWN0aW9uLk5PTkU7CisgIH0KKyAgaWYgKFN0cmVu
Z3RoLndlYWtlcih0aGlzLnYxLndhbGtTdHJlbmd0aCwgdGhpcy52Mi53YWxrU3RyZW5ndGgpKSB7
CisgICAgdGhpcy5kaXJlY3Rpb24gPSBTdHJlbmd0aC5zdHJvbmdlcih0aGlzLnN0cmVuZ3RoLCB0
aGlzLnYxLndhbGtTdHJlbmd0aCkKKyAgICAgID8gRGlyZWN0aW9uLkJBQ0tXQVJECisgICAgICA6
IERpcmVjdGlvbi5OT05FOworICB9IGVsc2UgeworICAgIHRoaXMuZGlyZWN0aW9uID0gU3RyZW5n
dGguc3Ryb25nZXIodGhpcy5zdHJlbmd0aCwgdGhpcy52Mi53YWxrU3RyZW5ndGgpCisgICAgICA/
IERpcmVjdGlvbi5GT1JXQVJECisgICAgICA6IERpcmVjdGlvbi5CQUNLV0FSRAorICB9Cit9CisK
Ky8qKgorICogQWRkIHRoaXMgY29uc3RyYWludCB0byB0aGUgY29uc3RyYWludCBncmFwaAorICov
CitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5hZGRUb0dyYXBoID0gZnVuY3Rpb24gKCkgewor
ICB0aGlzLnYxLmFkZENvbnN0cmFpbnQodGhpcyk7CisgIHRoaXMudjIuYWRkQ29uc3RyYWludCh0
aGlzKTsKKyAgdGhpcy5kaXJlY3Rpb24gPSBEaXJlY3Rpb24uTk9ORTsKK30KKworLyoqCisgKiBB
bnN3ZXIgdHJ1ZSBpZiB0aGlzIGNvbnN0cmFpbnQgaXMgc2F0aXNmaWVkIGluIHRoZSBjdXJyZW50
IHNvbHV0aW9uLgorICovCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pc1NhdGlzZmllZCA9
IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uICE9IERpcmVjdGlvbi5OT05F
OworfQorCisvKioKKyAqIE1hcmsgdGhlIGlucHV0IHZhcmlhYmxlIHdpdGggdGhlIGdpdmVuIG1h
cmsuCisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLm1hcmtJbnB1dHMgPSBmdW5jdGlv
biAobWFyaykgeworICB0aGlzLmlucHV0KCkubWFyayA9IG1hcms7Cit9CisKKy8qKgorICogUmV0
dXJucyB0aGUgY3VycmVudCBpbnB1dCB2YXJpYWJsZQorICovCitCaW5hcnlDb25zdHJhaW50LnBy
b3RvdHlwZS5pbnB1dCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLmRpcmVjdGlvbiA9
PSBEaXJlY3Rpb24uRk9SV0FSRCkgPyB0aGlzLnYxIDogdGhpcy52MjsKK30KKworLyoqCisgKiBS
ZXR1cm5zIHRoZSBjdXJyZW50IG91dHB1dCB2YXJpYWJsZQorICovCitCaW5hcnlDb25zdHJhaW50
LnByb3RvdHlwZS5vdXRwdXQgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAodGhpcy5kaXJlY3Rp
b24gPT0gRGlyZWN0aW9uLkZPUldBUkQpID8gdGhpcy52MiA6IHRoaXMudjE7Cit9CisKKy8qKgor
ICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBzdGF5IGZsYWcsIGFuZCwg
aWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3VycmVudCBvdXRwdXQgb2Yg
dGhpcworICogY29uc3RyYWludC4gQXNzdW1lIHRoaXMgY29uc3RyYWludCBpcyBzYXRpc2ZpZWQu
CisgKi8KK0JpbmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlY2FsY3VsYXRlID0gZnVuY3Rpb24g
KCkgeworICB2YXIgaWhuID0gdGhpcy5pbnB1dCgpLCBvdXQgPSB0aGlzLm91dHB1dCgpOworICBv
dXQud2Fsa1N0cmVuZ3RoID0gU3RyZW5ndGgud2Vha2VzdE9mKHRoaXMuc3RyZW5ndGgsIGlobi53
YWxrU3RyZW5ndGgpOworICBvdXQuc3RheSA9IGlobi5zdGF5OworICBpZiAob3V0LnN0YXkpIHRo
aXMuZXhlY3V0ZSgpOworfQorCisvKioKKyAqIFJlY29yZCB0aGUgZmFjdCB0aGF0IHRoaXMgY29u
c3RyYWludCBpcyB1bnNhdGlzZmllZC4KKyAqLworQmluYXJ5Q29uc3RyYWludC5wcm90b3R5cGUu
bWFya1Vuc2F0aXNmaWVkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLmRpcmVjdGlvbiA9IERpcmVj
dGlvbi5OT05FOworfQorCitCaW5hcnlDb25zdHJhaW50LnByb3RvdHlwZS5pbnB1dHNLbm93biA9
IGZ1bmN0aW9uIChtYXJrKSB7CisgIHZhciBpID0gdGhpcy5pbnB1dCgpOworICByZXR1cm4gaS5t
YXJrID09IG1hcmsgfHwgaS5zdGF5IHx8IGkuZGV0ZXJtaW5lZEJ5ID09IG51bGw7Cit9CisKK0Jp
bmFyeUNvbnN0cmFpbnQucHJvdG90eXBlLnJlbW92ZUZyb21HcmFwaCA9IGZ1bmN0aW9uICgpIHsK
KyAgaWYgKHRoaXMudjEgIT0gbnVsbCkgdGhpcy52MS5yZW1vdmVDb25zdHJhaW50KHRoaXMpOwor
ICBpZiAodGhpcy52MiAhPSBudWxsKSB0aGlzLnYyLnJlbW92ZUNvbnN0cmFpbnQodGhpcyk7Cisg
IHRoaXMuZGlyZWN0aW9uID0gRGlyZWN0aW9uLk5PTkU7Cit9CisKKy8qIC0tLSAqCisgKiBTIGMg
YSBsIGUgICBDIG8gbiBzIHQgciBhIGkgbiB0CisgKiAtLS0gKi8KKworLyoqCisgKiBSZWxhdGVz
IHR3byB2YXJpYWJsZXMgYnkgdGhlIGxpbmVhciBzY2FsaW5nIHJlbGF0aW9uc2hpcDogInYyID0K
KyAqICh2MSAqIHNjYWxlKSArIG9mZnNldCIuIEVpdGhlciB2MSBvciB2MiBtYXkgYmUgY2hhbmdl
ZCB0byBtYWludGFpbgorICogdGhpcyByZWxhdGlvbnNoaXAgYnV0IHRoZSBzY2FsZSBmYWN0b3Ig
YW5kIG9mZnNldCBhcmUgY29uc2lkZXJlZAorICogcmVhZC1vbmx5LgorICovCitmdW5jdGlvbiBT
Y2FsZUNvbnN0cmFpbnQoc3JjLCBzY2FsZSwgb2Zmc2V0LCBkZXN0LCBzdHJlbmd0aCkgeworICB0
aGlzLmRpcmVjdGlvbiA9IERpcmVjdGlvbi5OT05FOworICB0aGlzLnNjYWxlID0gc2NhbGU7Cisg
IHRoaXMub2Zmc2V0ID0gb2Zmc2V0OworICBTY2FsZUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rv
ci5jYWxsKHRoaXMsIHNyYywgZGVzdCwgc3RyZW5ndGgpOworfQorCitTY2FsZUNvbnN0cmFpbnQu
aW5oZXJpdHNGcm9tKEJpbmFyeUNvbnN0cmFpbnQpOworCisvKioKKyAqIEFkZHMgdGhpcyBjb25z
dHJhaW50IHRvIHRoZSBjb25zdHJhaW50IGdyYXBoLgorICovCitTY2FsZUNvbnN0cmFpbnQucHJv
dG90eXBlLmFkZFRvR3JhcGggPSBmdW5jdGlvbiAoKSB7CisgIFNjYWxlQ29uc3RyYWludC5zdXBl
ckNvbnN0cnVjdG9yLnByb3RvdHlwZS5hZGRUb0dyYXBoLmNhbGwodGhpcyk7CisgIHRoaXMuc2Nh
bGUuYWRkQ29uc3RyYWludCh0aGlzKTsKKyAgdGhpcy5vZmZzZXQuYWRkQ29uc3RyYWludCh0aGlz
KTsKK30KKworU2NhbGVDb25zdHJhaW50LnByb3RvdHlwZS5yZW1vdmVGcm9tR3JhcGggPSBmdW5j
dGlvbiAoKSB7CisgIFNjYWxlQ29uc3RyYWludC5zdXBlckNvbnN0cnVjdG9yLnByb3RvdHlwZS5y
ZW1vdmVGcm9tR3JhcGguY2FsbCh0aGlzKTsKKyAgaWYgKHRoaXMuc2NhbGUgIT0gbnVsbCkgdGhp
cy5zY2FsZS5yZW1vdmVDb25zdHJhaW50KHRoaXMpOworICBpZiAodGhpcy5vZmZzZXQgIT0gbnVs
bCkgdGhpcy5vZmZzZXQucmVtb3ZlQ29uc3RyYWludCh0aGlzKTsKK30KKworU2NhbGVDb25zdHJh
aW50LnByb3RvdHlwZS5tYXJrSW5wdXRzID0gZnVuY3Rpb24gKG1hcmspIHsKKyAgU2NhbGVDb25z
dHJhaW50LnN1cGVyQ29uc3RydWN0b3IucHJvdG90eXBlLm1hcmtJbnB1dHMuY2FsbCh0aGlzLCBt
YXJrKTsKKyAgdGhpcy5zY2FsZS5tYXJrID0gdGhpcy5vZmZzZXQubWFyayA9IG1hcms7Cit9CisK
Ky8qKgorICogRW5mb3JjZSB0aGlzIGNvbnN0cmFpbnQuIEFzc3VtZSB0aGF0IGl0IGlzIHNhdGlz
ZmllZC4KKyAqLworU2NhbGVDb25zdHJhaW50LnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24g
KCkgeworICBpZiAodGhpcy5kaXJlY3Rpb24gPT0gRGlyZWN0aW9uLkZPUldBUkQpIHsKKyAgICB0
aGlzLnYyLnZhbHVlID0gdGhpcy52MS52YWx1ZSAqIHRoaXMuc2NhbGUudmFsdWUgKyB0aGlzLm9m
ZnNldC52YWx1ZTsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnYxLnZhbHVlID0gKHRoaXMudjIudmFs
dWUgLSB0aGlzLm9mZnNldC52YWx1ZSkgLyB0aGlzLnNjYWxlLnZhbHVlOworICB9Cit9CisKKy8q
KgorICogQ2FsY3VsYXRlIHRoZSB3YWxrYWJvdXQgc3RyZW5ndGgsIHRoZSBzdGF5IGZsYWcsIGFu
ZCwgaWYgaXQgaXMKKyAqICdzdGF5JywgdGhlIHZhbHVlIGZvciB0aGUgY3VycmVudCBvdXRwdXQg
b2YgdGhpcyBjb25zdHJhaW50LiBBc3N1bWUKKyAqIHRoaXMgY29uc3RyYWludCBpcyBzYXRpc2Zp
ZWQuCisgKi8KK1NjYWxlQ29uc3RyYWludC5wcm90b3R5cGUucmVjYWxjdWxhdGUgPSBmdW5jdGlv
biAoKSB7CisgIHZhciBpaG4gPSB0aGlzLmlucHV0KCksIG91dCA9IHRoaXMub3V0cHV0KCk7Cisg
IG91dC53YWxrU3RyZW5ndGggPSBTdHJlbmd0aC53ZWFrZXN0T2YodGhpcy5zdHJlbmd0aCwgaWhu
LndhbGtTdHJlbmd0aCk7CisgIG91dC5zdGF5ID0gaWhuLnN0YXkgJiYgdGhpcy5zY2FsZS5zdGF5
ICYmIHRoaXMub2Zmc2V0LnN0YXk7CisgIGlmIChvdXQuc3RheSkgdGhpcy5leGVjdXRlKCk7Cit9
CisKKy8qIC0tLSAqCisgKiBFIHEgdSBhIGwgaSB0ICB5ICAgQyBvIG4gcyB0IHIgYSBpIG4gdAor
ICogLS0tICovCisKKy8qKgorICogQ29uc3RyYWlucyB0d28gdmFyaWFibGVzIHRvIGhhdmUgdGhl
IHNhbWUgdmFsdWUuCisgKi8KK2Z1bmN0aW9uIEVxdWFsaXR5Q29uc3RyYWludCh2YXIxLCB2YXIy
LCBzdHJlbmd0aCkgeworICBFcXVhbGl0eUNvbnN0cmFpbnQuc3VwZXJDb25zdHJ1Y3Rvci5jYWxs
KHRoaXMsIHZhcjEsIHZhcjIsIHN0cmVuZ3RoKTsKK30KKworRXF1YWxpdHlDb25zdHJhaW50Lmlu
aGVyaXRzRnJvbShCaW5hcnlDb25zdHJhaW50KTsKKworLyoqCisgKiBFbmZvcmNlIHRoaXMgY29u
c3RyYWludC4gQXNzdW1lIHRoYXQgaXQgaXMgc2F0aXNmaWVkLgorICovCitFcXVhbGl0eUNvbnN0
cmFpbnQucHJvdG90eXBlLmV4ZWN1dGUgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMub3V0cHV0KCku
dmFsdWUgPSB0aGlzLmlucHV0KCkudmFsdWU7Cit9CisKKy8qIC0tLSAqCisgKiBWIGEgciBpIGEg
YiBsIGUKKyAqIC0tLSAqLworCisvKioKKyAqIEEgY29uc3RyYWluZWQgdmFyaWFibGUuIEluIGFk
ZGl0aW9uIHRvIGl0cyB2YWx1ZSwgaXQgbWFpbnRhaW4gdGhlCisgKiBzdHJ1Y3R1cmUgb2YgdGhl
IGNvbnN0cmFpbnQgZ3JhcGgsIHRoZSBjdXJyZW50IGRhdGFmbG93IGdyYXBoLCBhbmQKKyAqIHZh
cmlvdXMgcGFyYW1ldGVycyBvZiBpbnRlcmVzdCB0byB0aGUgRGVsdGFCbHVlIGluY3JlbWVudGFs
CisgKiBjb25zdHJhaW50IHNvbHZlci4KKyAqKi8KK2Z1bmN0aW9uIFZhcmlhYmxlKG5hbWUsIGlu
aXRpYWxWYWx1ZSkgeworICB0aGlzLnZhbHVlID0gaW5pdGlhbFZhbHVlIHx8IDA7CisgIHRoaXMu
Y29uc3RyYWludHMgPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgdGhpcy5kZXRlcm1pbmVk
QnkgPSBudWxsOworICB0aGlzLm1hcmsgPSAwOworICB0aGlzLndhbGtTdHJlbmd0aCA9IFN0cmVu
Z3RoLldFQUtFU1Q7CisgIHRoaXMuc3RheSA9IHRydWU7CisgIHRoaXMubmFtZSA9IG5hbWU7Cit9
CisKKy8qKgorICogQWRkIHRoZSBnaXZlbiBjb25zdHJhaW50IHRvIHRoZSBzZXQgb2YgYWxsIGNv
bnN0cmFpbnRzIHRoYXQgcmVmZXIKKyAqIHRoaXMgdmFyaWFibGUuCisgKi8KK1ZhcmlhYmxlLnBy
b3RvdHlwZS5hZGRDb25zdHJhaW50ID0gZnVuY3Rpb24gKGMpIHsKKyAgdGhpcy5jb25zdHJhaW50
cy5hZGQoYyk7Cit9CisKKy8qKgorICogUmVtb3ZlcyBhbGwgdHJhY2VzIG9mIGMgZnJvbSB0aGlz
IHZhcmlhYmxlLgorICovCitWYXJpYWJsZS5wcm90b3R5cGUucmVtb3ZlQ29uc3RyYWludCA9IGZ1
bmN0aW9uIChjKSB7CisgIHRoaXMuY29uc3RyYWludHMucmVtb3ZlKGMpOworICBpZiAodGhpcy5k
ZXRlcm1pbmVkQnkgPT0gYykgdGhpcy5kZXRlcm1pbmVkQnkgPSBudWxsOworfQorCisvKiAtLS0g
KgorICogUCBsIGEgbiBuIGUgcgorICogLS0tICovCisKKy8qKgorICogVGhlIERlbHRhQmx1ZSBw
bGFubmVyCisgKi8KK2Z1bmN0aW9uIFBsYW5uZXIoKSB7CisgIHRoaXMuY3VycmVudE1hcmsgPSAw
OworfQorCisvKioKKyAqIEF0dGVtcHQgdG8gc2F0aXNmeSB0aGUgZ2l2ZW4gY29uc3RyYWludCBh
bmQsIGlmIHN1Y2Nlc3NmdWwsCisgKiBpbmNyZW1lbnRhbGx5IHVwZGF0ZSB0aGUgZGF0YWZsb3cg
Z3JhcGguICBEZXRhaWxzOiBJZiBzYXRpZnlpbmcKKyAqIHRoZSBjb25zdHJhaW50IGlzIHN1Y2Nl
c3NmdWwsIGl0IG1heSBvdmVycmlkZSBhIHdlYWtlciBjb25zdHJhaW50CisgKiBvbiBpdHMgb3V0
cHV0LiBUaGUgYWxnb3JpdGhtIGF0dGVtcHRzIHRvIHJlc2F0aXNmeSB0aGF0CisgKiBjb25zdHJh
aW50IHVzaW5nIHNvbWUgb3RoZXIgbWV0aG9kLiBUaGlzIHByb2Nlc3MgaXMgcmVwZWF0ZWQKKyAq
IHVudGlsIGVpdGhlciBhKSBpdCByZWFjaGVzIGEgdmFyaWFibGUgdGhhdCB3YXMgbm90IHByZXZp
b3VzbHkKKyAqIGRldGVybWluZWQgYnkgYW55IGNvbnN0cmFpbnQgb3IgYikgaXQgcmVhY2hlcyBh
IGNvbnN0cmFpbnQgdGhhdAorICogaXMgdG9vIHdlYWsgdG8gYmUgc2F0aXNmaWVkIHVzaW5nIGFu
eSBvZiBpdHMgbWV0aG9kcy4gVGhlCisgKiB2YXJpYWJsZXMgb2YgY29uc3RyYWludHMgdGhhdCBo
YXZlIGJlZW4gcHJvY2Vzc2VkIGFyZSBtYXJrZWQgd2l0aAorICogYSB1bmlxdWUgbWFyayB2YWx1
ZSBzbyB0aGF0IHdlIGtub3cgd2hlcmUgd2UndmUgYmVlbi4gVGhpcyBhbGxvd3MKKyAqIHRoZSBh
bGdvcml0aG0gdG8gYXZvaWQgZ2V0dGluZyBpbnRvIGFuIGluZmluaXRlIGxvb3AgZXZlbiBpZiB0
aGUKKyAqIGNvbnN0cmFpbnQgZ3JhcGggaGFzIGFuIGluYWR2ZXJ0ZW50IGN5Y2xlLgorICovCitQ
bGFubmVyLnByb3RvdHlwZS5pbmNyZW1lbnRhbEFkZCA9IGZ1bmN0aW9uIChjKSB7CisgIHZhciBt
YXJrID0gdGhpcy5uZXdNYXJrKCk7CisgIHZhciBvdmVycmlkZGVuID0gYy5zYXRpc2Z5KG1hcmsp
OworICB3aGlsZSAob3ZlcnJpZGRlbiAhPSBudWxsKQorICAgIG92ZXJyaWRkZW4gPSBvdmVycmlk
ZGVuLnNhdGlzZnkobWFyayk7Cit9CisKKy8qKgorICogRW50cnkgcG9pbnQgZm9yIHJldHJhY3Rp
bmcgYSBjb25zdHJhaW50LiBSZW1vdmUgdGhlIGdpdmVuCisgKiBjb25zdHJhaW50IGFuZCBpbmNy
ZW1lbnRhbGx5IHVwZGF0ZSB0aGUgZGF0YWZsb3cgZ3JhcGguCisgKiBEZXRhaWxzOiBSZXRyYWN0
aW5nIHRoZSBnaXZlbiBjb25zdHJhaW50IG1heSBhbGxvdyBzb21lIGN1cnJlbnRseQorICogdW5z
YXRpc2ZpYWJsZSBkb3duc3RyZWFtIGNvbnN0cmFpbnQgdG8gYmUgc2F0aXNmaWVkLiBXZSB0aGVy
ZWZvcmUgY29sbGVjdAorICogYSBsaXN0IG9mIHVuc2F0aXNmaWVkIGRvd25zdHJlYW0gY29uc3Ry
YWludHMgYW5kIGF0dGVtcHQgdG8KKyAqIHNhdGlzZnkgZWFjaCBvbmUgaW4gdHVybi4gVGhpcyBs
aXN0IGlzIHRyYXZlcnNlZCBieSBjb25zdHJhaW50CisgKiBzdHJlbmd0aCwgc3Ryb25nZXN0IGZp
cnN0LCBhcyBhIGhldXJpc3RpYyBmb3IgYXZvaWRpbmcKKyAqIHVubmVjZXNzYXJpbHkgYWRkaW5n
IGFuZCB0aGVuIG92ZXJyaWRpbmcgd2VhayBjb25zdHJhaW50cy4KKyAqIEFzc3VtZTogYyBpcyBz
YXRpc2ZpZWQuCisgKi8KK1BsYW5uZXIucHJvdG90eXBlLmluY3JlbWVudGFsUmVtb3ZlID0gZnVu
Y3Rpb24gKGMpIHsKKyAgdmFyIG91dCA9IGMub3V0cHV0KCk7CisgIGMubWFya1Vuc2F0aXNmaWVk
KCk7CisgIGMucmVtb3ZlRnJvbUdyYXBoKCk7CisgIHZhciB1bnNhdGlzZmllZCA9IHRoaXMucmVt
b3ZlUHJvcGFnYXRlRnJvbShvdXQpOworICB2YXIgc3RyZW5ndGggPSBTdHJlbmd0aC5SRVFVSVJF
RDsKKyAgZG8geworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5zYXRpc2ZpZWQuc2l6ZSgpOyBp
KyspIHsKKyAgICAgIHZhciB1ID0gdW5zYXRpc2ZpZWQuYXQoaSk7CisgICAgICBpZiAodS5zdHJl
bmd0aCA9PSBzdHJlbmd0aCkKKyAgICAgICAgdGhpcy5pbmNyZW1lbnRhbEFkZCh1KTsKKyAgICB9
CisgICAgc3RyZW5ndGggPSBzdHJlbmd0aC5uZXh0V2Vha2VyKCk7CisgIH0gd2hpbGUgKHN0cmVu
Z3RoICE9IFN0cmVuZ3RoLldFQUtFU1QpOworfQorCisvKioKKyAqIFNlbGVjdCBhIHByZXZpb3Vz
bHkgdW51c2VkIG1hcmsgdmFsdWUuCisgKi8KK1BsYW5uZXIucHJvdG90eXBlLm5ld01hcmsgPSBm
dW5jdGlvbiAoKSB7CisgIHJldHVybiArK3RoaXMuY3VycmVudE1hcms7Cit9CisKKy8qKgorICog
RXh0cmFjdCBhIHBsYW4gZm9yIHJlc2F0aXNmYWN0aW9uIHN0YXJ0aW5nIGZyb20gdGhlIGdpdmVu
IHNvdXJjZQorICogY29uc3RyYWludHMsIHVzdWFsbHkgYSBzZXQgb2YgaW5wdXQgY29uc3RyYWlu
dHMuIFRoaXMgbWV0aG9kCisgKiBhc3N1bWVzIHRoYXQgc3RheSBvcHRpbWl6YXRpb24gaXMgZGVz
aXJlZDsgdGhlIHBsYW4gd2lsbCBjb250YWluCisgKiBvbmx5IGNvbnN0cmFpbnRzIHdob3NlIG91
dHB1dCB2YXJpYWJsZXMgYXJlIG5vdCBzdGF5LiBDb25zdHJhaW50cworICogdGhhdCBkbyBubyBj
b21wdXRhdGlvbiwgc3VjaCBhcyBzdGF5IGFuZCBlZGl0IGNvbnN0cmFpbnRzLCBhcmUKKyAqIG5v
dCBpbmNsdWRlZCBpbiB0aGUgcGxhbi4KKyAqIERldGFpbHM6IFRoZSBvdXRwdXRzIG9mIGEgY29u
c3RyYWludCBhcmUgbWFya2VkIHdoZW4gaXQgaXMgYWRkZWQKKyAqIHRvIHRoZSBwbGFuIHVuZGVy
IGNvbnN0cnVjdGlvbi4gQSBjb25zdHJhaW50IG1heSBiZSBhcHBlbmRlZCB0bworICogdGhlIHBs
YW4gd2hlbiBhbGwgaXRzIGlucHV0IHZhcmlhYmxlcyBhcmUga25vd24uIEEgdmFyaWFibGUgaXMK
KyAqIGtub3duIGlmIGVpdGhlciBhKSB0aGUgdmFyaWFibGUgaXMgbWFya2VkIChpbmRpY2F0aW5n
IHRoYXQgaGFzCisgKiBiZWVuIGNvbXB1dGVkIGJ5IGEgY29uc3RyYWludCBhcHBlYXJpbmcgZWFy
bGllciBpbiB0aGUgcGxhbiksIGIpCisgKiB0aGUgdmFyaWFibGUgaXMgJ3N0YXknIChpLmUuIGl0
IGlzIGEgY29uc3RhbnQgYXQgcGxhbiBleGVjdXRpb24KKyAqIHRpbWUpLCBvciBjKSB0aGUgdmFy
aWFibGUgaXMgbm90IGRldGVybWluZWQgYnkgYW55CisgKiBjb25zdHJhaW50LiBUaGUgbGFzdCBw
cm92aXNpb24gaXMgZm9yIHBhc3Qgc3RhdGVzIG9mIGhpc3RvcnkKKyAqIHZhcmlhYmxlcywgd2hp
Y2ggYXJlIG5vdCBzdGF5IGJ1dCB3aGljaCBhcmUgYWxzbyBub3QgY29tcHV0ZWQgYnkKKyAqIGFu
eSBjb25zdHJhaW50LgorICogQXNzdW1lOiBzb3VyY2VzIGFyZSBhbGwgc2F0aXNmaWVkLgorICov
CitQbGFubmVyLnByb3RvdHlwZS5tYWtlUGxhbiA9IGZ1bmN0aW9uIChzb3VyY2VzKSB7CisgIHZh
ciBtYXJrID0gdGhpcy5uZXdNYXJrKCk7CisgIHZhciBwbGFuID0gbmV3IFBsYW4oKTsKKyAgdmFy
IHRvZG8gPSBzb3VyY2VzOworICB3aGlsZSAodG9kby5zaXplKCkgPiAwKSB7CisgICAgdmFyIGMg
PSB0b2RvLnJlbW92ZUZpcnN0KCk7CisgICAgaWYgKGMub3V0cHV0KCkubWFyayAhPSBtYXJrICYm
IGMuaW5wdXRzS25vd24obWFyaykpIHsKKyAgICAgIHBsYW4uYWRkQ29uc3RyYWludChjKTsKKyAg
ICAgIGMub3V0cHV0KCkubWFyayA9IG1hcms7CisgICAgICB0aGlzLmFkZENvbnN0cmFpbnRzQ29u
c3VtaW5nVG8oYy5vdXRwdXQoKSwgdG9kbyk7CisgICAgfQorICB9CisgIHJldHVybiBwbGFuOwor
fQorCisvKioKKyAqIEV4dHJhY3QgYSBwbGFuIGZvciByZXNhdGlzZnlpbmcgc3RhcnRpbmcgZnJv
bSB0aGUgb3V0cHV0IG9mIHRoZQorICogZ2l2ZW4gY29uc3RyYWludHMsIHVzdWFsbHkgYSBzZXQg
b2YgaW5wdXQgY29uc3RyYWludHMuCisgKi8KK1BsYW5uZXIucHJvdG90eXBlLmV4dHJhY3RQbGFu
RnJvbUNvbnN0cmFpbnRzID0gZnVuY3Rpb24gKGNvbnN0cmFpbnRzKSB7CisgIHZhciBzb3VyY2Vz
ID0gbmV3IE9yZGVyZWRDb2xsZWN0aW9uKCk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgY29uc3Ry
YWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7
IH0KKyAgICB2YXIgYyA9IGNvbnN0cmFpbnRzLmF0KGkpOworICAgIHRyeSB7IGV4Y2VwdGlvbigp
OyB9IGNhdGNoKGUpIHsgfQorICAgIGlmIChjLmlzSW5wdXQoKSAmJiBjLmlzU2F0aXNmaWVkKCkp
CisgICAgICAvLyBub3QgaW4gcGxhbiBhbHJlYWR5IGFuZCBlbGlnaWJsZSBmb3IgaW5jbHVzaW9u
CisgICAgICBzb3VyY2VzLmFkZChjKTsKKyAgfQorICByZXR1cm4gdGhpcy5tYWtlUGxhbihzb3Vy
Y2VzKTsKK30KKworLyoqCisgKiBSZWNvbXB1dGUgdGhlIHdhbGthYm91dCBzdHJlbmd0aHMgYW5k
IHN0YXkgZmxhZ3Mgb2YgYWxsIHZhcmlhYmxlcworICogZG93bnN0cmVhbSBvZiB0aGUgZ2l2ZW4g
Y29uc3RyYWludCBhbmQgcmVjb21wdXRlIHRoZSBhY3R1YWwKKyAqIHZhbHVlcyBvZiBhbGwgdmFy
aWFibGVzIHdob3NlIHN0YXkgZmxhZyBpcyB0cnVlLiBJZiBhIGN5Y2xlIGlzCisgKiBkZXRlY3Rl
ZCwgcmVtb3ZlIHRoZSBnaXZlbiBjb25zdHJhaW50IGFuZCBhbnN3ZXIKKyAqIGZhbHNlLiBPdGhl
cndpc2UsIGFuc3dlciB0cnVlLgorICogRGV0YWlsczogQ3ljbGVzIGFyZSBkZXRlY3RlZCB3aGVu
IGEgbWFya2VkIHZhcmlhYmxlIGlzCisgKiBlbmNvdW50ZXJlZCBkb3duc3RyZWFtIG9mIHRoZSBn
aXZlbiBjb25zdHJhaW50LiBUaGUgc2VuZGVyIGlzCisgKiBhc3N1bWVkIHRvIGhhdmUgbWFya2Vk
IHRoZSBpbnB1dHMgb2YgdGhlIGdpdmVuIGNvbnN0cmFpbnQgd2l0aAorICogdGhlIGdpdmVuIG1h
cmsuIFRodXMsIGVuY291bnRlcmluZyBhIG1hcmtlZCBub2RlIGRvd25zdHJlYW0gb2YKKyAqIHRo
ZSBvdXRwdXQgY29uc3RyYWludCBtZWFucyB0aGF0IHRoZXJlIGlzIGEgcGF0aCBmcm9tIHRoZQor
ICogY29uc3RyYWludCdzIG91dHB1dCB0byBvbmUgb2YgaXRzIGlucHV0cy4KKyAqLworUGxhbm5l
ci5wcm90b3R5cGUuYWRkUHJvcGFnYXRlID0gZnVuY3Rpb24gKGMsIG1hcmspIHsKKyAgdmFyIHRv
ZG8gPSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgdG9kby5hZGQoYyk7CisgIHdoaWxlICh0
b2RvLnNpemUoKSA+IDApIHsKKyAgICB2YXIgZCA9IHRvZG8ucmVtb3ZlRmlyc3QoKTsKKyAgICBp
ZiAoZC5vdXRwdXQoKS5tYXJrID09IG1hcmspIHsKKyAgICAgIHRoaXMuaW5jcmVtZW50YWxSZW1v
dmUoYyk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGQucmVjYWxjdWxhdGUoKTsK
KyAgICB0aGlzLmFkZENvbnN0cmFpbnRzQ29uc3VtaW5nVG8oZC5vdXRwdXQoKSwgdG9kbyk7Cisg
IH0KKyAgcmV0dXJuIHRydWU7Cit9CisKKworLyoqCisgKiBVcGRhdGUgdGhlIHdhbGthYm91dCBz
dHJlbmd0aHMgYW5kIHN0YXkgZmxhZ3Mgb2YgYWxsIHZhcmlhYmxlcworICogZG93bnN0cmVhbSBv
ZiB0aGUgZ2l2ZW4gY29uc3RyYWludC4gQW5zd2VyIGEgY29sbGVjdGlvbiBvZgorICogdW5zYXRp
c2ZpZWQgY29uc3RyYWludHMgc29ydGVkIGluIG9yZGVyIG9mIGRlY3JlYXNpbmcgc3RyZW5ndGgu
CisgKi8KK1BsYW5uZXIucHJvdG90eXBlLnJlbW92ZVByb3BhZ2F0ZUZyb20gPSBmdW5jdGlvbiAo
b3V0KSB7CisgIG91dC5kZXRlcm1pbmVkQnkgPSBudWxsOworICBvdXQud2Fsa1N0cmVuZ3RoID0g
U3RyZW5ndGguV0VBS0VTVDsKKyAgb3V0LnN0YXkgPSB0cnVlOworICB2YXIgdW5zYXRpc2ZpZWQg
PSBuZXcgT3JkZXJlZENvbGxlY3Rpb24oKTsKKyAgdmFyIHRvZG8gPSBuZXcgT3JkZXJlZENvbGxl
Y3Rpb24oKTsKKyAgdG9kby5hZGQob3V0KTsKKyAgd2hpbGUgKHRvZG8uc2l6ZSgpID4gMCkgewor
ICAgIHZhciB2ID0gdG9kby5yZW1vdmVGaXJzdCgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
di5jb25zdHJhaW50cy5zaXplKCk7IGkrKykgeworICAgICAgdmFyIGMgPSB2LmNvbnN0cmFpbnRz
LmF0KGkpOworICAgICAgdHJ5IHsgZXhjZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgICAgICBp
ZiAoIWMuaXNTYXRpc2ZpZWQoKSkKKyAgICAgICAgdW5zYXRpc2ZpZWQuYWRkKGMpOworICAgIH0K
KyAgICB2YXIgZGV0ZXJtaW5pbmcgPSB2LmRldGVybWluZWRCeTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHYuY29uc3RyYWludHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgIHZhciBuZXh0ID0gdi5j
b25zdHJhaW50cy5hdChpKTsKKyAgICAgIGlmIChuZXh0ICE9IGRldGVybWluaW5nICYmIG5leHQu
aXNTYXRpc2ZpZWQoKSkgeworICAgICAgICBuZXh0LnJlY2FsY3VsYXRlKCk7CisgICAgICAgIHRv
ZG8uYWRkKG5leHQub3V0cHV0KCkpOworICAgICAgfQorICAgICAgdHJ5IHsgZXhjZXB0aW9uKCk7
IH0gY2F0Y2goZSkgeyB9CisgICAgfQorICB9CisgIHJldHVybiB1bnNhdGlzZmllZDsKK30KKwor
UGxhbm5lci5wcm90b3R5cGUuYWRkQ29uc3RyYWludHNDb25zdW1pbmdUbyA9IGZ1bmN0aW9uICh2
LCBjb2xsKSB7CisgIHZhciBkZXRlcm1pbmluZyA9IHYuZGV0ZXJtaW5lZEJ5OworICB2YXIgY2Mg
PSB2LmNvbnN0cmFpbnRzOworICBmb3IgKHZhciBpID0gMDsgaSA8IGNjLnNpemUoKTsgaSsrKSB7
CisgICAgdmFyIGMgPSBjYy5hdChpKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChl
KSB7IH0KKyAgICBpZiAoYyAhPSBkZXRlcm1pbmluZyAmJiBjLmlzU2F0aXNmaWVkKCkpCisgICAg
ICBjb2xsLmFkZChjKTsKKyAgfQorfQorCisvKiAtLS0gKgorICogUCBsIGEgbgorICogLS0tICov
CisKKy8qKgorICogQSBQbGFuIGlzIGFuIG9yZGVyZWQgbGlzdCBvZiBjb25zdHJhaW50cyB0byBi
ZSBleGVjdXRlZCBpbiBzZXF1ZW5jZQorICogdG8gcmVzYXRpc2Z5IGFsbCBjdXJyZW50bHkgc2F0
aXNmaWFibGUgY29uc3RyYWludHMgaW4gdGhlIGZhY2Ugb2YKKyAqIG9uZSBvciBtb3JlIGNoYW5n
aW5nIGlucHV0cy4KKyAqLworZnVuY3Rpb24gUGxhbigpIHsKKyAgdGhpcy52ID0gbmV3IE9yZGVy
ZWRDb2xsZWN0aW9uKCk7Cit9CisKK1BsYW4ucHJvdG90eXBlLmFkZENvbnN0cmFpbnQgPSBmdW5j
dGlvbiAoYykgeworICB0aGlzLnYuYWRkKGMpOworfQorCitQbGFuLnByb3RvdHlwZS5zaXplID0g
ZnVuY3Rpb24gKCkgeworICByZXR1cm4gdGhpcy52LnNpemUoKTsKK30KKworUGxhbi5wcm90b3R5
cGUuY29uc3RyYWludEF0ID0gZnVuY3Rpb24gKGluZGV4KSB7CisgIHJldHVybiB0aGlzLnYuYXQo
aW5kZXgpOworfQorCitQbGFuLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gKCkgeworICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2l6ZSgpOyBpKyspIHsKKyAgICB2YXIgYyA9IHRoaXMu
Y29uc3RyYWludEF0KGkpOworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICAgIGMuZXhlY3V0ZSgpOworICB9Cit9CisKKy8qIC0tLSAqCisgKiBNIGEgaSBuCisgKiAtLS0g
Ki8KKworLyoqCisgKiBUaGlzIGlzIHRoZSBzdGFuZGFyZCBEZWx0YUJsdWUgYmVuY2htYXJrLiBB
IGxvbmcgY2hhaW4gb2YgZXF1YWxpdHkKKyAqIGNvbnN0cmFpbnRzIGlzIGNvbnN0cnVjdGVkIHdp
dGggYSBzdGF5IGNvbnN0cmFpbnQgb24gb25lIGVuZC4gQW4KKyAqIGVkaXQgY29uc3RyYWludCBp
cyB0aGVuIGFkZGVkIHRvIHRoZSBvcHBvc2l0ZSBlbmQgYW5kIHRoZSB0aW1lIGlzCisgKiBtZWFz
dXJlZCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyB0aGlzIGNvbnN0cmFpbnQsIGFuZCBleHRyYWN0
aW5nCisgKiBhbmQgZXhlY3V0aW5nIGEgY29uc3RyYWludCBzYXRpc2ZhY3Rpb24gcGxhbi4gVGhl
cmUgYXJlIHR3byBjYXNlcy4KKyAqIEluIGNhc2UgMSwgdGhlIGFkZGVkIGNvbnN0cmFpbnQgaXMg
c3Ryb25nZXIgdGhhbiB0aGUgc3RheQorICogY29uc3RyYWludCBhbmQgdmFsdWVzIG11c3QgcHJv
cGFnYXRlIGRvd24gdGhlIGVudGlyZSBsZW5ndGggb2YgdGhlCisgKiBjaGFpbi4gSW4gY2FzZSAy
LCB0aGUgYWRkZWQgY29uc3RyYWludCBpcyB3ZWFrZXIgdGhhbiB0aGUgc3RheQorICogY29uc3Ry
YWludCBzbyBpdCBjYW5ub3QgYmUgYWNjb21vZGF0ZWQuIFRoZSBjb3N0IGluIHRoaXMgY2FzZSBp
cywKKyAqIG9mIGNvdXJzZSwgdmVyeSBsb3cuIFR5cGljYWwgc2l0dWF0aW9ucyBsaWUgc29tZXdo
ZXJlIGJldHdlZW4gdGhlc2UKKyAqIHR3byBleHRyZW1lcy4KKyAqLworZnVuY3Rpb24gY2hhaW5U
ZXN0KG4pIHsKKyAgcGxhbm5lciA9IG5ldyBQbGFubmVyKCk7CisgIHZhciBwcmV2ID0gbnVsbCwg
Zmlyc3QgPSBudWxsLCBsYXN0ID0gbnVsbDsKKworICAvLyBCdWlsZCBjaGFpbiBvZiBuIGVxdWFs
aXR5IGNvbnN0cmFpbnRzCisgIGZvciAodmFyIGkgPSAwOyBpIDw9IG47IGkrKykgeworICAgIHZh
ciBuYW1lID0gInYiICsgaTsKKyAgICB2YXIgdiA9IG5ldyBWYXJpYWJsZShuYW1lKTsKKyAgICBp
ZiAocHJldiAhPSBudWxsKQorICAgICAgbmV3IEVxdWFsaXR5Q29uc3RyYWludChwcmV2LCB2LCBT
dHJlbmd0aC5SRVFVSVJFRCk7CisgICAgaWYgKGkgPT0gMCkgZmlyc3QgPSB2OworICAgIGlmIChp
ID09IG4pIGxhc3QgPSB2OworICAgIHRyeSB7IGV4Y2VwdGlvbigpOyB9IGNhdGNoKGUpIHsgfQor
ICAgIHByZXYgPSB2OworICB9CisKKyAgbmV3IFN0YXlDb25zdHJhaW50KGxhc3QsIFN0cmVuZ3Ro
LlNUUk9OR19ERUZBVUxUKTsKKyAgdmFyIGVkaXQgPSBuZXcgRWRpdENvbnN0cmFpbnQoZmlyc3Qs
IFN0cmVuZ3RoLlBSRUZFUlJFRCk7CisgIHZhciBlZGl0cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlv
bigpOworICBlZGl0cy5hZGQoZWRpdCk7CisgIHZhciBwbGFuID0gcGxhbm5lci5leHRyYWN0UGxh
bkZyb21Db25zdHJhaW50cyhlZGl0cyk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyBpKysp
IHsKKyAgICBmaXJzdC52YWx1ZSA9IGk7CisgICAgcGxhbi5leGVjdXRlKCk7CisgICAgaWYgKGxh
c3QudmFsdWUgIT0gaSkKKyAgICAgIGFsZXJ0KCJDaGFpbiB0ZXN0IGZhaWxlZC4iKTsKKyAgICB0
cnkgeyBleGNlcHRpb24oKTsgfSBjYXRjaChlKSB7IH0KKyAgfQorfQorCisvKioKKyAqIFRoaXMg
dGVzdCBjb25zdHJ1Y3RzIGEgdHdvIHNldHMgb2YgdmFyaWFibGVzIHJlbGF0ZWQgdG8gZWFjaAor
ICogb3RoZXIgYnkgYSBzaW1wbGUgbGluZWFyIHRyYW5zZm9ybWF0aW9uIChzY2FsZSBhbmQgb2Zm
c2V0KS4gVGhlCisgKiB0aW1lIGlzIG1lYXN1cmVkIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9uIGVp
dGhlciBzaWRlIG9mIHRoZQorICogbWFwcGluZyBhbmQgdG8gY2hhbmdlIHRoZSBzY2FsZSBhbmQg
b2Zmc2V0IGZhY3RvcnMuCisgKi8KK2Z1bmN0aW9uIHByb2plY3Rpb25UZXN0KG4pIHsKKyAgcGxh
bm5lciA9IG5ldyBQbGFubmVyKCk7CisgIHZhciBzY2FsZSA9IG5ldyBWYXJpYWJsZSgic2NhbGUi
LCAxMCk7CisgIHZhciBvZmZzZXQgPSBuZXcgVmFyaWFibGUoIm9mZnNldCIsIDEwMDApOworICB2
YXIgc3JjID0gbnVsbCwgZHN0ID0gbnVsbDsKKworICB2YXIgZGVzdHMgPSBuZXcgT3JkZXJlZENv
bGxlY3Rpb24oKTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICBzcmMgPSBu
ZXcgVmFyaWFibGUoInNyYyIgKyBpLCBpKTsKKyAgICBkc3QgPSBuZXcgVmFyaWFibGUoImRzdCIg
KyBpLCBpKTsKKyAgICBkZXN0cy5hZGQoZHN0KTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBj
YXRjaChlKSB7IH0KKyAgICBuZXcgU3RheUNvbnN0cmFpbnQoc3JjLCBTdHJlbmd0aC5OT1JNQUwp
OworICAgIG5ldyBTY2FsZUNvbnN0cmFpbnQoc3JjLCBzY2FsZSwgb2Zmc2V0LCBkc3QsIFN0cmVu
Z3RoLlJFUVVJUkVEKTsKKyAgfQorCisgIGNoYW5nZShzcmMsIDE3KTsKKyAgaWYgKGRzdC52YWx1
ZSAhPSAxMTcwKSBhbGVydCgiUHJvamVjdGlvbiAxIGZhaWxlZCIpOworICBjaGFuZ2UoZHN0LCAx
MDUwKTsKKyAgaWYgKHNyYy52YWx1ZSAhPSA1KSBhbGVydCgiUHJvamVjdGlvbiAyIGZhaWxlZCIp
OworICBjaGFuZ2Uoc2NhbGUsIDUpOworICBmb3IgKHZhciBpID0gMDsgaSA8IG4gLSAxOyBpKysp
IHsKKyAgICBpZiAoZGVzdHMuYXQoaSkudmFsdWUgIT0gaSAqIDUgKyAxMDAwKQorICAgICAgYWxl
cnQoIlByb2plY3Rpb24gMyBmYWlsZWQiKTsKKyAgICB0cnkgeyBleGNlcHRpb24oKTsgfSBjYXRj
aChlKSB7IH0KKyAgfQorICBjaGFuZ2Uob2Zmc2V0LCAyMDAwKTsKKyAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuIC0gMTsgaSsrKSB7CisgICAgaWYgKGRlc3RzLmF0KGkpLnZhbHVlICE9IGkgKiA1ICsg
MjAwMCkKKyAgICAgIGFsZXJ0KCJQcm9qZWN0aW9uIDQgZmFpbGVkIik7CisgICAgdHJ5IHsgZXhj
ZXB0aW9uKCk7IH0gY2F0Y2goZSkgeyB9CisgIH0KK30KKworZnVuY3Rpb24gY2hhbmdlKHYsIG5l
d1ZhbHVlKSB7CisgIHZhciBlZGl0ID0gbmV3IEVkaXRDb25zdHJhaW50KHYsIFN0cmVuZ3RoLlBS
RUZFUlJFRCk7CisgIHZhciBlZGl0cyA9IG5ldyBPcmRlcmVkQ29sbGVjdGlvbigpOworICBlZGl0
cy5hZGQoZWRpdCk7CisgIHZhciBwbGFuID0gcGxhbm5lci5leHRyYWN0UGxhbkZyb21Db25zdHJh
aW50cyhlZGl0cyk7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIHYudmFs
dWUgPSBuZXdWYWx1ZTsKKyAgICBwbGFuLmV4ZWN1dGUoKTsKKyAgfQorICBlZGl0LmRlc3Ryb3lD
b25zdHJhaW50KCk7Cit9CisKKy8vIEdsb2JhbCB2YXJpYWJsZSBob2xkaW5nIHRoZSBjdXJyZW50
IHBsYW5uZXIuCit2YXIgcGxhbm5lciA9IG51bGw7CisKK2Z1bmN0aW9uIGRlbHRhQmx1ZSgpIHsK
KyAgY2hhaW5UZXN0KDEwMCk7CisgIHByb2plY3Rpb25UZXN0KDEwMCk7Cit9CisKK3sKKyAgICBs
ZXQgc3RhcnQgPSBEYXRlLm5vdygpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7ICsraSkK
KyAgICAgICAgZGVsdGFCbHVlKCk7Cit9CisKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtz
L2Zha2UtaXRlcmF0b3JzLXRoYXQtdGhyb3ctd2hlbi1maW5pc2hlZC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mYWtlLWl0ZXJhdG9ycy10aGF0LXRocm93LXdoZW4t
ZmluaXNoZWQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZmFr
ZS1pdGVyYXRvcnMtdGhhdC10aHJvdy13aGVuLWZpbmlzaGVkLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNzggQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCIpOworfQorCitjbGFzcyBOdW1iZXJzIHsKKyAgICBjb25z
dHJ1Y3RvcihsaW1pdCA9IDEwMCkgeworICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7CisgICAg
ICAgIHRoaXMuaXRlbSA9IDA7CisgICAgfQorCisgICAgbmV4dCgpIHsKKyAgICAgICAgaWYgKHRo
aXMuaXRlbSA+PSB0aGlzLmxpbWl0KQorICAgICAgICAgICAgdGhyb3cgImRvbmUiOworICAgICAg
ICByZXR1cm4gdGhpcy5pdGVtKys7CisgICAgfQorfQorCitmdW5jdGlvbiB0cmFuc3Bvc2UoSSwg
ZikgeworICAgIHJldHVybiBjbGFzcyBUcmFuc3Bvc2UgeworICAgICAgICBjb25zdHJ1Y3Rvcigu
Li5hcmdzKSB7CisgICAgICAgICAgICB0aGlzLml0ZXJhdG9yID0gbmV3IEkoLi4uYXJncyk7Cisg
ICAgICAgIH0KKworICAgICAgICBuZXh0KCkgeworICAgICAgICAgICAgcmV0dXJuIGYodGhpcy5p
dGVyYXRvci5uZXh0KCkpOworICAgICAgICB9CisgICAgfTsKK30KKworbGV0IEV2ZW5OdW1iZXJz
ID0gdHJhbnNwb3NlKE51bWJlcnMsICh4KT0+eCoyKTsKK2Z1bmN0aW9uIHZlcmlmeUV2ZW4ocHJl
diwgY3VyKSB7CisgICAgYXNzZXJ0KGN1ci52YWx1ZSAlIDIgPT09IDApOworICAgIGFzc2VydCgh
cHJldi52YWx1ZSB8fCBwcmV2LnZhbHVlKzIgPT09IGN1ci52YWx1ZSk7Cit9CisKK2xldCBTdHJp
bmdOdW1iZXJzID0gdHJhbnNwb3NlKE51bWJlcnMsICh4KT0+YCR7eH1gKTsKK2Z1bmN0aW9uIHZl
cmlmeVN0cmluZyhfLCBjdXIpIHsKKyAgICBhc3NlcnQoY3VyLnZhbHVlID09PSBgJHtjdXIudmFs
dWV9YCk7Cit9CisKK2xldCBpdGVyYXRvcnMgPSBbCisgICAgW051bWJlcnMsIGZ1bmN0aW9uKCkg
e31dLAorICAgIFtOdW1iZXJzLCBmdW5jdGlvbigpIHt9XSwKKyAgICBbU3RyaW5nTnVtYmVycywg
dmVyaWZ5U3RyaW5nXSwKKyAgICBbRXZlbk51bWJlcnMsIHZlcmlmeUV2ZW5dLAorICAgIFtFdmVu
TnVtYmVycywgdmVyaWZ5RXZlbl0sCitdOworCitmdW5jdGlvbiBmb28oaSkge30KK25vSW5saW5l
KGZvbyk7CisKK2Z1bmN0aW9uIHJ1bkl0ZXJhdG9ycygpIHsKKyAgICBmb3IgKGxldCBbaXRlcmF0
b3IsIHZlcmlmeV0gb2YgaXRlcmF0b3JzKSB7CisgICAgICAgIGxldCBpID0gbmV3IGl0ZXJhdG9y
OworICAgICAgICBsZXQgcHJldiA9IHt9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgbGV0IGN1ciA9IHt9OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBj
dXIudmFsdWUgPSBpLm5leHQoKTsKKyAgICAgICAgICAgICAgICB2ZXJpZnkocHJldiwgY3VyKTsK
KyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgIGlmIChlICE9PSAiZG9u
ZSIpCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkOiAiICsgZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2ID0g
Y3VyOworICAgICAgICB9CisgICAgfQorfQorCit7CisgICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3co
KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwMDA7ICsraSkKKyAgICAgICAgcnVuSXRlcmF0
b3JzKCk7CisgICAgaWYgKGZhbHNlKQorICAgICAgICBwcmludChEYXRlLm5vdygpIC0gc3RhcnQp
OworfQpJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWNhdGNoLXdvcmQtY291bnQu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWNhdGNoLXdvcmQt
Y291bnQuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvdHJ5LWNh
dGNoLXdvcmQtY291bnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MDMgQEAKKyJ1c2Ug
c3RyaWN0IjsKKworbGV0IGFzc2VydCA9IChiLCBtKSA9PiB7CisgICAgaWYgKCFiKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb246ICIgKyBtKTsKK30KKworY2xhc3MgRU9G
IGV4dGVuZHMgRXJyb3IgeyB9OworCitsZXQgdGV4dHMgPSBbYGZ1bmN0aW9uIGZvbygpIHsKKyAg
ICB2YXIgbyA9IHt9OworICAgIG8uYSA9IDE7CisgICAgby5iID0gMjsKKyAgICBvLmMgPSAzOwor
ICAgIG8uZCA9IDQ7CisgICAgby5lID0gNTsKKyAgICBvLmYgPSA2OworICAgIG8uZyA9IDc7Cisg
ICAgcmV0dXJuIG87Cit9CisKK3ZhciByZXN1bHQgPSAwOworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDA7ICsraSkKKyAgICByZXN1bHQgKz0gZm9vKCkuYTsKKworaWYgKHJlc3VsdCAhPSAxMDAw
MDApCisgICAgdGhyb3cgIkVycm9yLCBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworCitgLGAidXNl
IHN0cmljdCI7CisKKyhmdW5jdGlvbigpIHsKKyAgICBsZXQgbyA9IHsKKyAgICAgICAgYXBwbHko
YSwgYikgeworICAgICAgICAgICAgcmV0dXJuIGEgKyBiOworICAgICAgICB9CisgICAgfTsKKyAg
ICAKKyAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgIGxldCByZXN1bHQgPSAwOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdCA9IG8u
YXBwbHkocmVzdWx0LCAxKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisg
ICAgbm9JbmxpbmUoZm9vKTsKKyAgICAKKyAgICBsZXQgcmVzdWx0ID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAgICAgIHJlc3VsdCArPSBmb28oKTsKKyAgICAK
KyAgICBpZiAocmVzdWx0ICE9IDEwMDAwMDAwKQorICAgICAgICB0aHJvdyBuZXcgIkJhZCByZXN1
bHQ6ICIgKyByZXN1bHQ7Cit9KSgpOworCitgLGBmdW5jdGlvbiBmb28oYSwgYikgeworICAgIHJl
dHVybiBhcmd1bWVudHNbMF0gKyBiOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgIHZhciByZXN1bHQgPSBmb28oaSwgMSk7Cisg
ICAgaWYgKHJlc3VsdCAhPSBpICsgMSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQorYCxgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9
Citub0lubGluZShmb28pOworCitmdW5jdGlvbiBiYXIobykgeworICAgIHZhciB0bXAgPSBvWzBd
OworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytp
KSB7CisgICAgICAgIGlmICh0bXApCisgICAgICAgICAgICByZXN1bHQgKz0gdG1wICogaTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KK25vSW5saW5lKGJhcik7CisKK3ZhciByZXN1bHQg
PSAwOwordmFyIG8gPSBmb28oKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAg
ICByZXN1bHQgKz0gYmFyKG8pOworCitpZiAocmVzdWx0ICE9PSAwKQorICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK2AsYGZ1bmN0aW9uIGZvbygpIHsKKyAgICAidXNl
IHN0cmljdCI7CisgICAgcmV0dXJuIFsuLi5hcmd1bWVudHNdOworCit9CisKK25vSW5saW5lKGZv
byk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwMDAwOyArK2kpIHsKKyAgICB2YXIgcmVzdWx0
ID0gZm9vKGkpOworICAgIGlmIChyZXN1bHRbMF0gIT0gaSkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfQorYCxgZnVuY3Rpb24gZm9vKCkgeworICAgIHJl
dHVybiBhcmd1bWVudHNbMF07Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyhpKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGkpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3Vs
dDsKK30KK2AsYGZ1bmN0aW9uIGZvbyhhLCBiKSB7CisgICAgcmV0dXJuIGEgKyBiOworfQorCitm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygx
LCAyLCAzKTsKKyAgICBpZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93ICJCYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQorCitgLGBmdW5jdGlvbiBmb28oYSkgeworICAgIHZhciByZXN1bHQg
PSBhWzBdOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJlc3VsdCArPSBhWzFdOworICAgIGlm
IChyZXN1bHQpCisgICAgICAgIHJlc3VsdCArPSBhWzJdOworICAgIGlmIChyZXN1bHQpCisgICAg
ICAgIHJlc3VsdCArPSBhWzNdOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJlc3VsdCArPSBh
WzRdOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZhciByZXN1bHQgPSAwOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIGFycmF5ID0gWzEsIDIsIDMsIDQs
IDVdOworICAgIGlmIChpICYgMSkKKyAgICAgICAgYXJyYXkuZiA9IDQyOworICAgIHJlc3VsdCAr
PSBmb28oYXJyYXkpOworfQorCitpZiAocmVzdWx0ICE9IDE1MDAwMDApCisgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgLy9AIHJ1bk5vRlRMCisKK3ZhciBmID0g
ZnVuY3Rpb24oYSkgeworICAgIHZhciBzdW0gPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
YS5sZW5ndGg7IGkrKykgeworICAgICAgICBzdW0gKz0gYVtpXTsKKyAgICB9ICAgCisgICAgcmV0
dXJuIHN1bTsKK307CisKK3ZhciBydW4gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgbzEgPSBbXTsg
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAgICBvMVtpXSA9IGk7
CisgICAgfQorICAgIAorICAgIHZhciBvMiA9IHt9OyAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG8xLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIG8yW2ldID0gbzFbaV07CisgICAgfQorICAgIG8y
Lmxlbmd0aCA9IG8xLmxlbmd0aDsKKworICAgIHZhciBzdW0gPSAwOworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgaWYgKGkgJSAyID09PSAwKQorICAgICAg
ICAgICAgc3VtICs9IGYobzEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdW0gKz0gZihv
Mik7CisgICAgfQorICAgIHJldHVybiBzdW07Cit9OworCit2YXIgcmVzdWx0ID0gcnVuKCk7Citp
ZiAocmVzdWx0ICE9PSA0OTUwMDAwMDApCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CitgLGB2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9uIHRlc3QxKGEpIHsKKyAgICByZXN1bHQg
PDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3Qy
KGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJlc3VsdCAqPSAzOworICAgIHJldHVybiB0
cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+
IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciByZXN1bHQgPSAwOwordmFyIGFycmF5ID0g
W10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaV0gPSAxOwor
Citmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICBhcnJheS5ldmVyeSh0ZXN0MSk7
CisgICAgYXJyYXkuZXZlcnkodGVzdDIpOworICAgIGFycmF5LmV2ZXJ5KHRlc3QzKTsKK30KKwor
aWYgKHJlc3VsdCAhPSAxNDI4ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDog
IiArIHJlc3VsdDsKK2AsYHZhciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAg
IHJlc3VsdCA8PCAxOworICAgIHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rp
b24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAg
cmV0dXJuIHRydWU7Cit9CitmdW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSBy
ZXN1bHQgPj4gMTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIg
YXJyYXkgPSBbXQorZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtp
XSA9IDE7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LmZvckVh
Y2godGVzdDEpOworICAgIGFycmF5LmZvckVhY2godGVzdDIpOworICAgIGFycmF5LmZvckVhY2go
dGVzdDMpOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgdmFyIHJlc3VsdCA9IDA7CitmdW5jdGlvbiB0
ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0dXJuIHRy
dWU7Cit9CitmdW5jdGlvbiB0ZXN0MihhLGIpIHsKKyAgICByZXN1bHQgXj0gMzsKKyAgICByZXN1
bHQgKj0gMzsKKyAgICByZXR1cm4gdHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QzKGEsYixjKSB7Cisg
ICAgcmVzdWx0IF49IHJlc3VsdCA+PiAxOworICAgIHJldHVybiB0cnVlOworfQorCit2YXIgcmVz
dWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytp
KQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7Cisg
ICAgYXJyYXkubWFwKHRlc3QxKTsKKyAgICBhcnJheS5tYXAodGVzdDIpOworICAgIGFycmF5Lm1h
cCh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAgICB0aHJvdyAiRXJy
b3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CitgLGB2YXIgcmVzdWx0ID0gMDsKK2Z1bmN0aW9u
IHRlc3QxKGEpIHsKKyAgICByZXN1bHQgPDwgMTsKKyAgICByZXN1bHQrKzsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KK2Z1bmN0aW9uIHRlc3QyKGEsYikgeworICAgIHJlc3VsdCBePSAzOworICAgIHJl
c3VsdCAqPSAzOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDMoYSxiLGMpIHsK
KyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZhciBy
ZXN1bHQgPSAwOwordmFyIGFycmF5ID0gW10KK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpCisgICAgYXJyYXlbaV0gPSAxOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsK
KyAgICBhcnJheS5yZWR1Y2UodGVzdDEsIHt9KTsKKyAgICBhcnJheS5yZWR1Y2UodGVzdDIsIHt9
KTsKKyAgICBhcnJheS5yZWR1Y2UodGVzdDMsIHt9KTsKK30KKworaWYgKHJlc3VsdCAhPSAxNDI4
ODEwNDk2KQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK2AsYHZh
ciByZXN1bHQgPSAwOworZnVuY3Rpb24gdGVzdDEoYSkgeworICAgIHJlc3VsdCA8PCAxOworICAg
IHJlc3VsdCsrOworICAgIHJldHVybiB0cnVlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7Cisg
ICAgcmVzdWx0IF49IDM7CisgICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIHRydWU7Cit9Citm
dW5jdGlvbiB0ZXN0MyhhLGIsYykgeworICAgIHJlc3VsdCBePSByZXN1bHQgPj4gMTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordmFyIHJlc3VsdCA9IDA7Cit2YXIgYXJyYXkgPSBbXQorZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJheVtpXSA9IDE7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgIGFycmF5LnJlZHVjZVJpZ2h0KHRlc3QxLCB7fSk7
CisgICAgYXJyYXkucmVkdWNlUmlnaHQodGVzdDIsIHt9KTsKKyAgICBhcnJheS5yZWR1Y2VSaWdo
dCh0ZXN0Mywge30pOworfQorCitpZiAocmVzdWx0ICE9IDE0Mjg4MTA0OTYpCisgICAgdGhyb3cg
IkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgdmFyIHJlc3VsdCA9IDA7CitmdW5j
dGlvbiB0ZXN0MShhKSB7CisgICAgcmVzdWx0IDw8IDE7CisgICAgcmVzdWx0Kys7CisgICAgcmV0
dXJuIGZhbHNlOworfQorZnVuY3Rpb24gdGVzdDIoYSxiKSB7CisgICAgcmVzdWx0IF49IDM7Cisg
ICAgcmVzdWx0ICo9IDM7CisgICAgcmV0dXJuIGZhbHNlOworfQorZnVuY3Rpb24gdGVzdDMoYSxi
LGMpIHsKKyAgICByZXN1bHQgXj0gcmVzdWx0ID4+IDE7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2YXIgcmVzdWx0ID0gMDsKK3ZhciBhcnJheSA9IFtdCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwMDsgKytpKQorICAgIGFycmF5W2ldID0gMTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsg
aSsrKSB7CisgICAgYXJyYXkuc29tZSh0ZXN0MSk7CisgICAgYXJyYXkuc29tZSh0ZXN0Mik7Cisg
ICAgYXJyYXkuc29tZSh0ZXN0Myk7Cit9CisKK2lmIChyZXN1bHQgIT0gMTQyODgxMDQ5NikKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CitgLGBmdW5jdGlvbiBmb28o
KSB7CisgICAgdmFyIGEgPSBuZXcgQXJyYXkoMTAwMCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwOyArK2kpIHsKKyAgICAgICAgaWYgKGkgJSA3ID09PSAwKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGFbaV0gPSBpOworICAgIH0KKworICAgIHZhciBuaXRlcnMgPSAxMDAw
MDsKKyAgICB2YXIgcmVtb3ZlID0gdHJ1ZTsKKyAgICB2YXIgbGFzdFJlbW92ZWRJdGVtID0gbnVs
bDsKKyAgICB2YXIgbGFzdFJlbW92ZWRJbmRleCA9IG51bGw7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuaXRlcnM7ICsraSkgeworICAgICAgICBpZiAocmVtb3ZlKSB7CisgICAgICAgICAgICBs
YXN0UmVtb3ZlZEluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYS5sZW5ndGgpOwor
ICAgICAgICAgICAgbGFzdFJlbW92ZWRJdGVtID0gYVtsYXN0UmVtb3ZlZEluZGV4XTsKKyAgICAg
ICAgICAgIGEuc3BsaWNlKGxhc3RSZW1vdmVkSW5kZXgsIDEpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgYS5zcGxpY2UobGFzdFJlbW92ZWRJbmRleCwgMCwgbGFzdFJlbW92ZWRJdGVt
KTsKKyAgICAgICAgfQorICAgICAgICByZW1vdmUgPSAhcmVtb3ZlOworICAgIH0KKyAgICBpZiAo
YS5sZW5ndGggIT09IDEwMDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IGxl
bmd0aCIpOworfTsKK2ZvbygpOworYCxgZnVuY3Rpb24gZm9vKCkgeworICAgIHZhciBhID0gW107
CisgICAgdmFyIGIgPSBbXTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsr
aSkgeworICAgICAgICBhLnB1c2goaSArIDAuNSk7CisgICAgICAgIGIucHVzaChpIC0gMC41KTsK
KyAgICB9CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCBhLmxlbmd0aDsgKytqKQorICAgICAgICAgICAgYVtqXSAr
PSBiW2pdOworICAgIH0KKworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYS5sZW5ndGg7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGFbaV07CisgICAgCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAhPSA0
OTk1MDAwMDApCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKK2AsYGZ1bmN0
aW9uIGZvbygpIHsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDA7ICsraSkKKyAgICAgICAgYXJyYXkucHVzaChpICsgMC41KTsKKyAgICAKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0g
MDsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgYXJyYXlbal0rKzsKKyAgICB9
CisKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxl
bmd0aDsgKytpKQorICAgICAgICByZXN1bHQgKz0gYXJyYXlbaV07CisgICAgCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwordmFyIHJlc3VsdCA9IGZvbygpOworaWYgKHJlc3VsdCAhPSAxNTAwMDAw
KQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OworCisKK2AsYGZ1bmN0aW9uIGZv
bygpIHsKKyAgICB2YXIgYSA9IFtdOworICAgIHZhciBiID0gW107CisgICAgdmFyIGMgPSBbXTsK
KyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBhLnB1
c2goaSArIDAuNSk7CisgICAgICAgIGIucHVzaChpIC0gMC41KTsKKyAgICAgICAgYy5wdXNoKChp
ICUgMikgPyAwLjUgOiAtMC4yNSk7CisgICAgfQorICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDsgKytpKSB7CisgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYS5sZW5ndGg7ICsr
aikKKyAgICAgICAgICAgIGFbal0gKz0gYltqXSAqIGNbal07CisgICAgfQorCisgICAgdmFyIHJl
c3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKQorICAgICAg
ICByZXN1bHQgKz0gYVtpXTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2YXIgcmVz
dWx0ID0gZm9vKCk7CitpZiAocmVzdWx0ICE9IDYzMDYyNTAwKQorICAgIHRocm93ICJCYWQgcmVz
dWx0OiAiICsgcmVzdWx0OworCisKK2AsYGZ1bmN0aW9uIGZvbygpIHsKKyAgICB2YXIgYXJyYXkg
PSBbXTsKKyAgICAKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkKKyAgICAgICAg
YXJyYXkucHVzaChpICsgMC41KTsKKyAgICAKKyAgICB2YXIgcmVzdWx0ID0gMDsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IGFycmF5Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgcmVzdWx0ICs9IGFycmF5W2pdOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpZiAoZm9vKCkgIT0gNTAwMDAwMDAw
KQorICAgIHRocm93ICJFUlJPUiI7CisKK2AsYGZ1bmN0aW9uIGZvbygpIHsKKyAgICB2YXIgYSA9
IFtdOworICAgIHZhciBiID0gW107CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
OyArK2kpIHsKKyAgICAgICAgYS5wdXNoKGkgKyAxKTsKKyAgICAgICAgYi5wdXNoKGkgLSAxKTsK
KyAgICB9CisgICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKKyAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCBhLmxlbmd0aDsgKytqKQorICAgICAgICAgICAgYVtqXSAr
PSBiW2pdOworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGEubGVuZ3RoOyArK2opCisgICAg
ICAgICAgICBhW2pdIC09IGJbal07CisgICAgfQorCisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHQgKz0gYVtp
XTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpZiAoZm9vKCkgIT0gNTAwNTAwKQor
ICAgIHRocm93ICJFUlJPUiI7CisKKworYCxgZnVuY3Rpb24gZm9vKCkgeworICAgIHZhciBhcnJh
eSA9IFtdOworICAgIAorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKQorICAgICAg
ICBhcnJheS5wdXNoKGkgKyAoKGkgJSAyKSA/IDAuNSA6IDApKTsKKyAgICAKKyAgICB2YXIgcmVz
dWx0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7ICsraSkgeworICAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgcmVzdWx0
ICs9IGFycmF5W2pdOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2YXIg
cmVzdWx0ID0gZm9vKCk7CitpZiAocmVzdWx0ICE9IDQ5OTc1MDAwMCkKKyAgICB0aHJvdyAiQmFk
IHJlc3VsdDogIiArIHJlc3VsdDsKKworYCxgLy9AIHNraXAKKwordmFyIGFycmF5ID0gbmV3IEFy
cmF5KDEwMDAwKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkKKyAgICBhcnJh
eVtpICUgYXJyYXkubGVuZ3RoXSA9IG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwMCkp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgKytpKSB7CisgICAgaWYgKGFy
cmF5W2ldLmJ5dGVMZW5ndGggIT0gMTAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgbGVu
Z3RoOiAiICsgYXJyYXlbaV0uYnl0ZUxlbmd0aDsKKyAgICBpZiAoYXJyYXlbaV0uYnVmZmVyLmJ5
dGVMZW5ndGggIT0gMTAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgYnVmZmVyLmJ5dGVM
ZW5ndGg6ICIgKyBhcnJheVtpXS5idWZmZXIuYnl0ZUxlbmd0aDsKK30KK2AsYC8vQCBza2lwCisK
K3ZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAwMCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNzAw
MDA7ICsraSkKKyAgICBhcnJheVtpICUgYXJyYXkubGVuZ3RoXSA9IG5ldyBEYXRhVmlldyhuZXcg
QXJyYXlCdWZmZXIoMTApKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsr
aSkgeworICAgIGlmIChhcnJheVtpXS5ieXRlTGVuZ3RoICE9IDEwKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCBsZW5ndGg6ICIgKyBhcnJheVtpXS5ieXRlTGVuZ3RoOworICAgIGlmIChhcnJh
eVtpXS5idWZmZXIuYnl0ZUxlbmd0aCAhPSAxMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
YnVmZmVyLmJ5dGVMZW5ndGg6ICIgKyBhcnJheVtpXS5idWZmZXIuYnl0ZUxlbmd0aDsKK30KK2As
YC8vQCBza2lwCisKK3ZhciByZXN1bHQgPSAwOwordmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZl
cigxMCk7Cit2YXIgYXJyYXkxID0gbmV3IEludDMyQXJyYXkoYnVmZmVyLCA0LCAxKTsKK3ZhciBh
cnJheTIgPSBuZXcgVWludDMyQXJyYXkoMTApOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
MDA7ICsraSkgeworICAgIHJlc3VsdCArPSBhcnJheTEuYnl0ZU9mZnNldDsKKyAgICByZXN1bHQg
Kz0gYXJyYXkyLmJ5dGVPZmZzZXQ7Cit9CisKK2lmIChyZXN1bHQgIT0gNDAwMDAwMCkKKyAgICB0
aHJvdyAiRXJyb3I6IHdyb25nIHJlc3VsdDogIiArIHJlc3VsdDsKK2AsYC8vQCBza2lwCisKK3Zh
ciBhcnJheSA9IG5ldyBBcnJheSgxMDAwMCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
OyArK2kpCisgICAgYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0gPSBuZXcgSW50OEFycmF5KG5ldyBB
cnJheUJ1ZmZlcigxMDAwKSk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyAr
K2kpIHsKKyAgICBpZiAoYXJyYXlbaV0ubGVuZ3RoICE9IDEwMDApCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIGxlbmd0aDogIiArIGFycmF5W2ldLmxlbmd0aDsKKyAgICBpZiAoYXJyYXlbaV0u
YnVmZmVyLmJ5dGVMZW5ndGggIT0gMTAwMCkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgYnVm
ZmVyLmJ5dGVMZW5ndGg6ICIgKyBhcnJheVtpXS5idWZmZXIuYnl0ZUxlbmd0aDsKK30KK2AsYC8v
QCBza2lwCisKK3ZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAwMCk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDAwOyArK2kpCisgICAgYXJyYXlbaSAlIGFycmF5Lmxlbmd0aF0gPSBuZXcgSW50
OEFycmF5KG5ldyBBcnJheUJ1ZmZlcigxMCkpLmJ1ZmZlcjsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgIGlmIChhcnJheVtpXS5ieXRlTGVuZ3RoICE9IDEw
KQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBieXRlTGVuZ3RoOiAiICsgYXJyYXlbaV0uYnl0
ZUxlbmd0aDsKK30KK2AsYC8vQCBza2lwCisKK3ZhciBhcnJheSA9IG5ldyBBcnJheSgxMDAwMCk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNzAwMDA7ICsraSkKKyAgICBhcnJheVtpICUgYXJyYXku
bGVuZ3RoXSA9IG5ldyBJbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICBpZiAoYXJyYXlbaV0ubGVuZ3Ro
ICE9IDEwKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBsZW5ndGg6ICIgKyBhcnJheVtpXS5s
ZW5ndGg7CisgICAgaWYgKGFycmF5W2ldLmJ1ZmZlci5ieXRlTGVuZ3RoICE9IDEwKQorICAgICAg
ICB0aHJvdyAiRXJyb3I6IGJhZCBidWZmZXIuYnl0ZUxlbmd0aDogIiArIGFycmF5W2ldLmJ1ZmZl
ci5ieXRlTGVuZ3RoOworfQorYCxgLy9AIHNraXAKKworZm9yICh2YXIgaSA9IDA7IGkgPCA3MDAw
MDsgKytpKQorICAgIG5ldyBJbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwKSk7CisKK2AsYHZh
ciBmbiA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAoKSA9PiBhcmd1bWVudHNbMF07Cit9KDEp
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgaWYoZm4oMikgIT09
IDEpIHRocm93IDA7IAorfQorYCxgdmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK2Ns
YXNzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gdGVzdFZh
bHVlOworICAgIH0KK30KKworY2xhc3MgQiBleHRlbmRzIEEgeworICAgIGNvbnN0cnVjdG9yKCkg
eworICAgICAgICBzdXBlcigpOworICAgICAgICB2YXIgYXJyb3cgID0gKCkgPT4gdGVzdFZhbHVl
OworICAgICAgICBhcnJvdygpOworICAgIH0KK30KKworbm9JbmxpbmUoQik7CisKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgbGV0IGIgPSBuZXcgQigpOworICAgIGlm
IChiLnZhbHVlICE9IHRlc3RWYWx1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0
OiAiICsgcmVzdWx0OworfQorYCxgdmFyIHRlc3RWYWx1ZSAgPSAndGVzdC12YWx1ZSc7CisKK2Ns
YXNzIEEgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gdGVzdFZh
bHVlOworICAgIH0KKworICAgIGdldFZhbHVlICgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFs
dWU7CisgICAgfQorfQorCitjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgZ2V0UGFyZW50VmFsdWUo
KSB7CisgICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiB0ZXN0VmFsdWU7CisgICAgICAgIHJldHVy
biBhcnJvdygpOworICAgIH0KK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkg
eworICAgIGxldCBiID0gbmV3IEIoKTsKKyAgICBpZiAoYi5nZXRQYXJlbnRWYWx1ZSgpICE9IHRl
c3RWYWx1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
fQorYCxgZnVuY3Rpb24gYmFyKGEsIGIpIHsKKyAgICByZXR1cm4gKChfYSwgX2IpID0+IF9hICsg
X2IpKGEsIGIpOworfQorCitub0lubGluZShiYXIpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDAwMDA7ICsraSkgeworICAgIGxldCByZXN1bHQgPSBiYXIoMSwgMik7CisgICAgaWYgKHJlc3Vs
dCAhPSAzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
CitgLGB2YXIgYWYgPSAoYSwgYikgPT4gYSArIGI7CisKK25vSW5saW5lKGFmKTsKKworZnVuY3Rp
b24gYmFyKGEsIGIpIHsKKyAgICByZXR1cm4gYWYoYSwgYik7Cit9CisKK25vSW5saW5lKGJhcik7
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgbGV0IHJlc3VsdCA9
IGJhcigxLCAyKTsKKyAgICBpZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KK2AsYC8vIFRoZSBzdHJsZW4gZnVuY3Rpb24gaXMg
ZGVyaXZlZCBmcm9tIGhlcmU6CisvLyBodHRwOi8va3JpcGtlbi5naXRodWIuaW8vbWxvY19lbXNj
cmlwdGVuX3RhbGsvIy8yMAorCit2YXIgTUVNOCAgPSBuZXcgVWludDhBcnJheSgxMDI0KTsKKwor
Ly8gQ2FsY3VsYXRlIGxlbmd0aCBvZiBDIHN0cmluZzoKK2Z1bmN0aW9uIHN0cmxlbihwdHIpIHsK
KyAgcHRyID0gcHRyfDA7CisgIHZhciBjdXJyID0gMDsKKyAgY3VyciA9IHB0cjsKKyAgd2hpbGUg
KE1FTThbY3Vycl18MCAhPSAwKSB7CisgICAgY3VyciA9IChjdXJyICsgMSl8MDsKKyAgfQorICBy
ZXR1cm4gKGN1cnIgLSBwdHIpfDA7Cit9CisKKy8vLS0tLS0gVGVzdCBkcml2ZXIgLS0tLQorCitm
b3IgKGkgPSAwOyBpIDwgMTAyNDsgaSsrKSB7CisgTUVNOFtpXSA9IGklMTk4OworfQorCitNRU04
WzddID0gMDsKKwordmFyIHN1bSA9IDAKK2ZvciAoaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsK
KyAgc3VtICs9IHN0cmxlbig1KTsKK30KKworaWYgKHN1bSAhPSAyMDAwMDAwKQorICAgIHRocm93
ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OworYCxgCitvID0gUmVnRXhwOworaiA9IDA7CitsID0g
MjsKK3ogPSAwOworZnVuY3Rpb24gdGVzdChvLCB6KSB7CisgICAgdmFyIGsgPSBhcmd1bWVudHNb
KCgoaiA8PCAxIHwgbCkgPj4gMSkgXiAxKSAmICh6ICo9IDEpXTsKKyAgICBrLmlucHV0ID0gMDsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1MDAwOyBpKyspIHsKKyAgICAgICAgay5pbnB1dCA9
ICJmb28iOworICAgIH0KKworICAgIHJldHVybiBrLmlucHV0OworfQordmFyIHJlc3VsdCA9IHRl
c3Qoe19fcHJvdG9fXzoge2Jhcjoid2liYmxlIiwgaW5wdXQ6ImZvbyJ9fSk7Cit2YXIgcmVzdWx0
ID0gdGVzdCh7aW5wdXQ6ImZvbyJ9KTsKK3ZhciByZXN1bHQgPSB0ZXN0KG8pCitmb3IgKHZhciBr
ID0gMDsgayA8IDY7IGsrKykgeworICAgIHZhciBzdGFydCA9IG5ldyBEYXRlOworICAgIHZhciBu
ZXdSZXN1bHQgPSB0ZXN0KG8pCisgICAgdmFyIGVuZCA9IG5ldyBEYXRlOworICAgIGlmIChuZXdS
ZXN1bHQgIT0gcmVzdWx0KQorICAgICAgICB0aHJvdyAiRmFpbGVkIGF0ICIgKyBrICsgIndpdGgg
IiArIG5ld1Jlc3VsdCArICIgdnMuICIgKyByZXN1bHQKKyAgICByZXN1bHQgPSBuZXdSZXN1bHQ7
CisgICAgbyA9IHtfX3Byb3RvX18gOiBvIH0KK30KK2AsYC8vIFJlZ0V4cC5pbnB1dCBpcyBhIGhh
bmR5IHNldHRlcgorCit2YXIgbyA9IFJlZ0V4cDsKK2Z1bmN0aW9uIHRlc3QobykgeworICAgIHZh
ciBrID0gMDsKKyAgICBvLmlucHV0ID0gImJhciI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAz
MDAwMDsgaSsrKQorICAgICAgICBvLmlucHV0ID0gImZvbyI7CisKKyAgICByZXR1cm4gby5pbnB1
dDsKK30KKwordmFyIHJlc3VsdCA9IHRlc3Qobyk7CisKK2ZvciAodmFyIGsgPSAwOyBrIDwgOTsg
aysrKSB7CisgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGU7CisgICAgdmFyIG5ld1Jlc3VsdCA9IHRl
c3QobykKKyAgICB2YXIgZW5kID0gbmV3IERhdGU7CisgICAgaWYgKG5ld1Jlc3VsdCAhPSByZXN1
bHQpCisgICAgICAgIHRocm93ICJGYWlsZWQgYXQgIiArIGsgKyAid2l0aCAiICtuZXdSZXN1bHQg
KyAiIHZzLiAiICsgcmVzdWx0CisgICAgcmVzdWx0ID0gbmV3UmVzdWx0OyAKKyAgICBvID0ge19f
cHJvdG9fXyA6IG8gfQorfQorCitgLGAvL0AgcnVuTm9GVEwKKwordmFyIHNldCA9IG5ldyBTZXQ7
Citmb3IgKHZhciBpID0gMDsgaSA8IDgwMDA7ICsraSkgeworICAgIHNldC5hZGQoaSk7CisgICAg
c2V0LmFkZCgiIiArIGkpCisgICAgc2V0LmFkZCh7fSkKKyAgICBzZXQuYWRkKGkgKyAuNSkKK30K
KwordmFyIHJlc3VsdCA9IDA7CisKK3NldC5mb3JFYWNoKGZ1bmN0aW9uKGspeyByZXN1bHQgKz0g
c2V0LnNpemU7IH0pCitmb3IgKHZhciBpID0gODAwMDsgaSA+PSAwOyAtLWkpIHsKKyAgICBzZXQu
ZGVsZXRlKGkpCisgICAgc2V0LmhhcygiIiArIGkpCisgICAgc2V0LmFkZChpICsgLjUpCit9Citz
ZXQuZm9yRWFjaChmdW5jdGlvbihrKXsgcmVzdWx0ICs9IHNldC5zaXplOyB9KQorCitpZiAocmVz
dWx0ICE9IDE2MDAwNDgwMDEpCisgICAgdGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisK
KworYCxgLy8gVGVzdCB0aGUgcGVyZm9ybWFuY2Ugb2YgaW50ZWdlciBtdWx0aXBsaWNhdGlvbiBi
eSBpbXBsZW1lbnRpbmcgYSAxNi1iaXQKKy8vIHN0cmluZyBoYXNoLgorCitmdW5jdGlvbiBzdHJp
bmdIYXNoKHN0cmluZykKK3sKKyAgICAvLyBzb3VyY2U6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3Jn
L3dpa2kvSmF2YV9oYXNoQ29kZSgpI1NhbXBsZV9pbXBsZW1lbnRhdGlvbnNfb2ZfdGhlX2phdmEu
bGFuZy5TdHJpbmdfYWxnb3JpdGhtCisgICAgdmFyIGggPSAwOworICAgIHZhciBsZW4gPSBzdHJp
bmcubGVuZ3RoOworICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZW47IGluZGV4Kysp
IHsKKyAgICAgICAgaCA9ICgoKDMxICogaCkgfCAwKSArIHN0cmluZy5jaGFyQ29kZUF0KGluZGV4
KSkgfCAwOworICAgIH0KKyAgICByZXR1cm4gaDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9CisgICAgICAgIChzdHJpbmdIYXNoKCJUaGUg
c3Bpcml0IGlzIHdpbGxpbmcgYnV0IHRoZSBmbGVzaCBpcyB3ZWFrLiIpICoKKyAgICAgICAgIHN0
cmluZ0hhc2goIlRoZSB2b2RrYSBpcyBzdHJvbmcgYnV0IHRoZSBtZWF0IGlzIHJvdHRlbi4iKSkg
fCAwOworICAgIGlmIChyZXN1bHQgIT0gLTExMzYzMDQxMjgpCisgICAgICAgIHRocm93ICJCYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworfQorCitgLGAKK0Z1bmN0aW9uLnByb3RvdHlwZS5hID0gRnVu
Y3Rpb24ucHJvdG90eXBlLmFwcGx5OworCitmdW5jdGlvbiB0ZXN0RnVuY3Rpb24oYSwgYikKK3sK
KyAgICAidXNlIHN0cmljdCIKKyAgICByZXR1cm4gdGhpcyAqIDEwMDAwICsgYSAqIDEwMDAgKyBi
ICogMTAwICsgYXJndW1lbnRzWzJdICogMTAgKyBhcmd1bWVudHMubGVuZ3RoOworfQorCit2YXIg
YXJyYXlBcmd1bWVudHMgPSBbMSwgWzIsIDMsIDRdXQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKKyAgICB2YXIgcmVzdWx0MSA9IHRlc3RGdW5jdGlvbi5hcHBseSguLi5hcnJh
eUFyZ3VtZW50cyk7CisgICAgdmFyIHJlc3VsdDIgPSB0ZXN0RnVuY3Rpb24uYSguLi5hcnJheUFy
Z3VtZW50cyk7CisgICAgaWYgKHJlc3VsdDEgIT0gcmVzdWx0MikgCisgICAgICAgIHRocm93ICJD
YWxsIHdpdGggc3ByZWFkIGFycmF5IGZhaWxlZCBhdCBpdGVyYXRpb24gIiArIGkgKyAiOiAiICsg
cmVzdWx0MSArICIgdnMgIiArIHJlc3VsdDI7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeworICAgIHZhciByZXN1bHQxID0gdGVzdEZ1bmN0aW9uLmFwcGx5KC4uLlsxLCBb
MiwgMywgNF1dKTsKKyAgICB2YXIgcmVzdWx0MiA9IHRlc3RGdW5jdGlvbi5hKC4uLlsxLCBbMiwg
MywgNF1dKTsKKyAgICBpZiAocmVzdWx0MSAhPSByZXN1bHQyKSAKKyAgICAgICAgdGhyb3cgIkNh
bGwgd2l0aCBzcHJlYWQgYXJyYXkgZmFpbGVkIGF0IGl0ZXJhdGlvbiAiICsgaSArICI6ICIgKyBy
ZXN1bHQxICsgIiB2cyAiICsgcmVzdWx0MjsKK30KKworZnVuY3Rpb24gdGVzdDIoKSB7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgICAgIHZhciByZXN1bHQxID0g
dGVzdEZ1bmN0aW9uLmFwcGx5KC4uLmFyZ3VtZW50cyk7CisgICAgICAgIHZhciByZXN1bHQyID0g
dGVzdEZ1bmN0aW9uLmEoLi4uYXJndW1lbnRzKTsKKyAgICAgICAgaWYgKHJlc3VsdDEgIT0gcmVz
dWx0MikKKyAgICAgICAgICAgdGhyb3cgIkNhbGwgd2l0aCBzcHJlYWQgYXJndW1lbnRzIGZhaWxl
ZCBhdCBpdGVyYXRpb24gIiArIGkgKyAiOiAiICsgcmVzdWx0MSArICIgdnMgIiArIHJlc3VsdDI7
CisgICAgfQorfQorCit0ZXN0MigxLFsyLDMsNF0pCisKKworZnVuY3Rpb24gdGVzdDMoKSB7Cisg
ICAgYWxpYXNlZEFyZ3VtZW50cyA9IGFyZ3VtZW50czsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKKyAgICAgICAgdmFyIHJlc3VsdDEgPSB0ZXN0RnVuY3Rpb24uYXBwbHko
Li4uYWxpYXNlZEFyZ3VtZW50cyk7CisgICAgICAgIHZhciByZXN1bHQyID0gdGVzdEZ1bmN0aW9u
LmEoLi4uYWxpYXNlZEFyZ3VtZW50cyk7CisgICAgICAgIGlmIChyZXN1bHQxICE9IHJlc3VsdDIp
CisgICAgICAgICAgIHRocm93ICJDYWxsIHdpdGggc3ByZWFkIGFyZ3VtZW50cyBmYWlsZWQgYXQg
aXRlcmF0aW9uICIgKyBpICsgIjogIiArIHJlc3VsdDEgKyAiIHZzICIgKyByZXN1bHQyOworICAg
IH0KK30KKwordGVzdDMoMSxbMiwzLDRdKWBdCisKK2xldCBwcm9jZXNzVGV4dHMgPSAodGV4dHMp
ID0+IHsKKyAgICBsZXQgd2MgPSAwOworICAgIGZvciAobGV0IHRleHQgb2YgdGV4dHMpIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxldCBnbG9iYWxJbmRleCA9IDA7CisgICAgICAgICAg
ICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGdsb2JhbEluZGV4Owor
ICAgICAgICAgICAgICAgIGxldCB3b3JkOworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICAgICAgICAgIGxldCBjID0gdGV4dFtpbmRleF07CisgICAgICAgICAgICAg
ICAgICAgIGlmIChjLm1hdGNoKC9ccy8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3b3Jk
ID0gdGV4dC5zdWJzdHJpbmcoZ2xvYmFsSW5kZXgsIGluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlIChjLm1hdGNoKC9ccy8pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gdGV4
dC5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsSW5kZXgg
PSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0
ZXh0W2luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAgICAgZ2xvYmFsSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgKytpbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IHRleHQubGVuZ3RoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxJbmRleCA9IGluZGV4OworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsSW5kZXggPCB0ZXh0Lmxlbmd0aCkKKyAgICAg
ICAgICAgICAgICAgICAgd2MrKzsKKyAgICAgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRU9GOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgRU9GKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gd2M7Cit9OworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwOyArK2kpCisg
ICAgcHJvY2Vzc1RleHRzKHRleHRzKTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNldC1h
cmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3Ry
ZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWlsdXJlLmpzCShub25leGlzdGVu
dCkKKysrIEpTVGVzdHMvc3RyZXNzL2NhdGNoLXNldC1hcmd1bWVudC1zcGVjdWxhdGlvbi1mYWls
dXJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKyJ1c2Ugc3RyaWN0IjsKKwor
bGV0IGZsYWcgPSB0cnVlOworZnVuY3Rpb24gbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAg
cmV0dXJuIHt4OjIwfTsKKyAgICByZXR1cm4ge3k6MjAsIHg6MjB9OworfQorbm9JbmxpbmUobyk7
CisKK2xldCBjb3VudGVyID0gMDsKK2Z1bmN0aW9uIGUoKSB7CisgICAgaWYgKCgrK2NvdW50ZXIp
ICUgNTAgPT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUpOwor
CitsZXQgY291bnRlcjIgPSAwOworZnVuY3Rpb24gZTIoKSB7CisgICAgaWYgKCgrK2NvdW50ZXIy
KSAlIDIgPT09IDApCisgICAgICAgIHRocm93IG5ldyBFcnJvcjsKK30KK25vSW5saW5lKGUyKTsK
KworZnVuY3Rpb24gZXNjYXBlKCl7IH0KK25vSW5saW5lKGVzY2FwZSk7CisKK2Z1bmN0aW9uIGJh
eihvKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZSgpOworICAgICAgICBlc2NhcGUoby54KTsKKyAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgZXNjYXBlKG8ueCk7CisgICAgICAgIGUyKCk7CisgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgby54OworICAgIH0KK30KK25vSW5saW5lKGJheik7CisKK3sK
KyAgICBsZXQgbyA9IHt4OjIwfTsKKyAgICBmdW5jdGlvbiBydW4oKSB7CisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAg
ICAgICAgIGJheihvKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggeyB9CisgICAgICAgIH0KKyAgICB9
CisgICAgcnVuKCk7CisgICAgbyA9IHt5OjQwLCB4OjIwfTsKKyAgICBydW4oKTsKK30KSW5kZXg6
IEpTVGVzdHMvc3RyZXNzL29zci1lbnRlci10by1jYXRjaC13aXRoLXNldC1sb2NhbC10eXBlLWNo
ZWNrLWZhaWx1cmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb3NyLWVudGVyLXRv
LWNhdGNoLXdpdGgtc2V0LWxvY2FsLXR5cGUtY2hlY2stZmFpbHVyZS5qcwkobm9uZXhpc3RlbnQp
CisrKyBKU1Rlc3RzL3N0cmVzcy9vc3ItZW50ZXItdG8tY2F0Y2gtd2l0aC1zZXQtbG9jYWwtdHlw
ZS1jaGVjay1mYWlsdXJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKK2xldCBm
bGFnID0gdHJ1ZTsKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBpZiAoZmxhZykKKyAgICAgICAgcmV0
dXJuIDIwOworICAgIHJldHVybiB7fTsKK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBzdGF0ZSA9
IDA7CitmdW5jdGlvbiBlKCkgeworICAgIGlmICgoKytzdGF0ZSkgJSAyNSA9PT0gMCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9Citub0lubGluZShlKTsKKworZnVuY3Rpb24gYmF6KCkg
eyB9Citub0lubGluZShiYXopOworCitmdW5jdGlvbiBiYXIoKSB7CisgICAgbGV0IHggPSBmb28o
KTsKKyAgICB0cnkgeworICAgICAgICBlKCk7CisgICAgICAgIGJheigrK3gpOworICAgIH0gY2F0
Y2goZSkgeworICAgICAgICBiYXooKyt4KTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBiYXoo
eCk7CisgICAgfQorfQorbm9JbmxpbmUoYmFyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDAw
OyArK2kpIHsKKyAgICBiYXIoKTsKK30KKworZmxhZyA9IGZhbHNlOworZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyArK2kpCisgICAgYmFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNjggQEAKKzIwMTctMDgtMjMgIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjb21waWxpbmcgY2F0Y2ggaW4g
dGhlIERGRworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0NTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIE9TUiBlbnRyeSBpbnRvIG9wX2NhdGNoIGluIHRoZSBERkcuIFdl
IHdpbGwgc3VwcG9ydCBPU1IgZW50cnkKKyAgICAgICAgaW50byB0aGUgRlRMIGluIGEgZm9sbG93
dXA6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAg
ICAgCisgICAgICAgIFRvIGltcGxlbWVudCBjYXRjaCBpbiB0aGUgREZHLCB0aGlzIHBhdGNoIGlu
dHJvZHVjZXMgdGhlIGNvbmNlcHQgb2YgbXVsdGlwbGUKKyAgICAgICAgZW50cnlwb2ludHMgaW50
byBDUFMvTG9hZFN0b3JlIERGRyBJUi4gQSBsb3Qgb2YgdGhpcyBwYXRjaCBpcyBzdHJpbmdpbmcg
dGhpcyBjb25jZXB0CisgICAgICAgIHRocm91Z2ggdGhlIERGRy4gTWFueSBwaGFzZXMgdXNlZCB0
byBhc3N1bWUgdGhhdCBHcmFwaDo6YmxvY2soMCkgaXMgdGhlIG9ubHkgcm9vdCwgYW5kIHRoaXMK
KyAgICAgICAgcGF0Y2ggY29udGFpbnMgbWFueSBzdHJhaWdodCBmb3J3YXJkIGNoYW5nZXMgZ2Vu
ZXJhbGl6aW5nIHRoZSBjb2RlIHRvIGhhbmRsZSBtb3JlIHRoYW4KKyAgICAgICAgb25lIGVudHJ5
cG9pbnQuCisgICAgICAgIAorICAgICAgICBBIG1haW4gYnVpbGRpbmcgYmxvY2sgb2YgdGhpcyBp
cyBtb3ZpbmcgdG8gdHdvIENGRyB0eXBlczogU1NBQ0ZHIGFuZCBDUFNDRkcuIFNTQUNGRworICAg
ICAgICBpcyB0aGUgc2FtZSBDRkcgd2UgdXNlZCB0byBoYXZlLiBDUFNDRkcgaXMgYSBuZXcgdHlw
ZSB0aGF0IGludHJvZHVjZXMgYSBmYWtlIHJvb3QKKyAgICAgICAgdGhhdCBoYXMgYW4gb3V0Z29p
bmcgZWRnZSB0byBhbGwgdGhlIGVudHJ5cG9pbnRzLiBUaGlzIGFsbG93cyBvdXIgZXhpc3Rpbmcg
Z3JhcGggYWxnb3JpdGhtcworICAgICAgICB0byBKdXN0IFdvcmsgb3ZlciBDUFNDRkcuIEZvciBl
eGFtcGxlLCB0aGVyZSBpcyBub3cgdGhlIGNvbmNlcHQgb2YgU1NBRG9taW5hdG9ycyB2cyBDUFNE
b21pbmF0b3JzLAorICAgICAgICBhbmQgU1NBTmF0dXJhbExvb3BzIHZzIENQU05hdHVyYWxMb29w
cy4KKyAgICAgICAgCisgICAgICAgIFRoZSB3YXkgd2UgY29tcGlsZSB0aGUgY2F0Y2ggZW50cnlw
b2ludCBpcyBieSBib290c3RyYXBwaW5nIHRoZSBzdGF0ZQorICAgICAgICBvZiB0aGUgcHJvZ3Jh
bSBieSBsb2FkaW5nIGFsbCBsaXZlIGJ5dGVjb2RlIGxvY2FscyBmcm9tIGEgYnVmZmVyLiBUaGUg
T1NSCisgICAgICAgIGVudHJ5IGNvZGUgd2lsbCBzdG9yZSBhbGwgbGl2ZSB2YWx1ZXMgaW50byB0
aGF0IGJ1ZmZlciBiZWZvcmUganVtcGluZyB0bworICAgICAgICB0aGUgZW50cnlwb2ludC4gVGhl
IE9TUiBlbnRyeSBjb2RlIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIHBlcmZvcm1pbmcgdHlwZQor
ICAgICAgICBwcm9vZnMgb2YgdGhlIGFyZ3VtZW50cyBiZWZvcmUgZG9pbmcgYW4gT1NSIGVudHJ5
LiBJZiB0aGVyZSBpcyBhIHR5cGUKKyAgICAgICAgbWlzbWF0Y2gsIGl0J3Mgbm90IGxlZ2FsIHRv
IE9TUiBlbnRlciBpbnRvIHRoZSBERkcgY29tcGlsYXRpb24uIEN1cnJlbnRseSwKKyAgICAgICAg
ZWFjaCBjYXRjaCBlbnRyeXBvaW50IGtub3dzIHRoZSBhcmd1bWVudCB0eXBlIHByb29mcyBpdCBt
dXN0IHBlcmZvcm0gdG8gZW50ZXIKKyAgICAgICAgaW50byB0aGUgREZHLiBDdXJyZW50bHksIGFs
bCBlbnRyeXBvaW50cycgYXJndW1lbnRzIGZsdXNoIGZvcm1hdCBhcmUgdW5pZmllZAorICAgICAg
ICB2aWEgQXJndW1lbnRQb3NpdGlvbiwgYnV0IHRoaXMgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlv
biBkZXRhaWwuIFRoZSBjb2RlIGlzCisgICAgICAgIHdyaXR0ZW4gbW9yZSBnZW5lcmFsbHkgdG8g
YXNzdW1lIHRoYXQgZWFjaCBlbnRyeXBvaW50IG1heSBwZXJmb3JtIGl0cyBvd24gZGlzdGluY3QK
KyAgICAgICAgcHJvb2YuCisgICAgICAgIAorICAgICAgICBvcF9jYXRjaCBub3cgcGVyZm9ybXMg
dmFsdWUgcHJvZmlsaW5nIGZvciBhbGwgbGl2ZSBieXRlY29kZSBsb2NhbHMgaW4gdGhlCisgICAg
ICAgIExMSW50IGFuZCBiYXNlbGluZSBKSVQuIFRoaXMgaW5mb3JtYXRpb24gaXMgdGhlbiBmZWQg
aW50byB0aGUgREZHIHZpYSB0aGUKKyAgICAgICAgRXh0cmFjdENhdGNoTG9jYWwgbm9kZSBpbiB0
aGUgcHJlZGljdGlvbiBwcm9wYWdhdGlvbiBwaGFzZS4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyBjaGFuZ2VzIGhvdyB3ZSBnZW5lcmF0ZSBvcF9jYXRjaCBpbiBieXRlY29kZS4g
QWxsIG9wX2NhdGNoZXMKKyAgICAgICAgYXJlIG5vdyBzcGxpdCBvdXQgYXQgdGhlIGVuZCBvZiB0
aGUgcHJvZ3JhbSBpbiBieXRlY29kZS4gVGhpcyBlbnN1cmVzIHRoYXQKKyAgICAgICAgbm8gb3Bf
Y2F0Y2ggaXMgaW5zaWRlIGEgdHJ5IGJsb2NrLiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgY29y
cmVjdG5lc3MgaW4KKyAgICAgICAgdGhlIERGR0xpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9u
UGhhc2UuIFRoYXQgcGhhc2Ugb25seSBpbnNlcnRzIGZsdXNoZXMKKyAgICAgICAgYmVmb3JlIFNl
dExvY2FscyBpbnNpZGUgYSB0cnkgYmxvY2suIElmIGFuIG9wX2NhdGNoIHdlcmUgaW4gYSB0cnkg
YmxvY2ssIHRoaXMKKyAgICAgICAgd291bGQgY2F1c2UgdGhlIHBoYXNlIHRvIGluc2VydCBhIEZs
dXNoIGJlZm9yZSBvbmUgb2YgdGhlIHN0YXRlIGJvb3RzdHJhcHBpbmcKKyAgICAgICAgU2V0TG9j
YWxzLCB3aGljaCB3b3VsZCBnZW5lcmF0ZSBpbnZhbGlkIElSLiBNb3Zpbmcgb3BfY2F0Y2ggdG8g
YmUgZ2VuZXJhdGVkIG9uCisgICAgICAgIGl0cyBvd24gYXQgdGhlIGVuZCBvZiBhIGJ5dGVjb2Rl
IHN0cmVhbSBzZWVtZWQgbGlrZSB0aGUgbW9zdCBlbGVnYW50IHNvbHV0aW9uIHNpbmNlCisgICAg
ICAgIGl0IGJldHRlciByZXByZXNlbnRzIHRoYXQgd2UgdHJlYXQgb3BfY2F0Y2ggYXMgYW4gZW50
cnlwb2ludC4gVGhpcyBpcyB0cnVlCisgICAgICAgIGJvdGggaW4gdGhlIERGRyBhbmQgaW4gdGhl
IGJhc2VsaW5lIGFuZCBMTEludDogd2UgZG9uJ3QgcmVhY2ggYW4gb3BfY2F0Y2gKKyAgICAgICAg
dmlhIG5vcm1hbCBjb250cm9sIGZsb3cuIEJlY2F1c2Ugb3BfY2F0Y2ggY2Fubm90IHRocm93LCB0
aGlzIHdpbGwgbm90IGJyZWFrCisgICAgICAgIGFueSBwcmV2aW91cyBzZW1hbnRpY3Mgb2Ygb3Bf
Y2F0Y2guIExvZ2ljYWxseSwgaXQnZCBiZSB2YWxpZCB0byBzcGxpdCB0cnkKKyAgICAgICAgYmxv
Y2tzIGFyb3VuZCBhbnkgbm9uLXRocm93aW5nIGJ5dGVjb2RlIG9wZXJhdGlvbi4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRl
QWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp2YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6VmFs
dWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcjo6
VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcik6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmls
ZUFuZE9wZXJhbmRCdWZmZXI6On5WYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKToKKyAgICAg
ICAgKEpTQzo6VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcjo6Zm9yRWFjaCk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDYXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVy
YXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUcnlO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJk
c0NGRy5oOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc0NGRzo6QmFja3dhcmRzQ0ZHKToK
KyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmFz
aWNCbG9jazo6QmFzaWNCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpmaW5kVGVybWluYWwgY29uc3QpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnNldERpcmVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6RGVsYXllZFNldExv
Y2FsOjpEZWxheWVkU2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpEZWxheWVkU2V0TG9jYWw6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZSk6CisgICAgICAgICogZGZnL0RGR0NGRy5oOgorICAgICAgICAoSlNDOjpERkc6OkNGRzo6cm9v
dCk6CisgICAgICAgIChKU0M6OkRGRzo6Q0ZHOjpyb290cyk6CisgICAgICAgIChKU0M6OkRGRzo6
Q1BTQ0ZHOjpDUFNDRkcpOgorICAgICAgICAoSlNDOjpERkc6OnNlbGVjdENGRyk6CisgICAgICAg
ICogZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNQ
U1JldGhyZWFkaW5nUGhhc2U6OnNwZWNpYWxDYXNlQXJndW1lbnRzKToKKyAgICAgICAgKiBkZmcv
REZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0NvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q29udHJvbEVxdWl2YWxlbmNlQW5h
bHlzaXM6OkNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKiBkZmcvREZHRENF
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpydW4pOgorICAgICAgICAq
IGRmZy9ERkdEaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxl
cjo6Y3JlYXRlRHVtcExpc3QpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0RvbWluYXRvcnMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpEb21pbmF0b3JzOjpEb21pbmF0b3JzKToKKyAgICAgICAgKEpTQzo6
REZHOjplbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKToKKyAgICAgICAgKiBkZmcvREZHRWRnZURvbWlu
YXRlcy5oOgorICAgICAgICAoSlNDOjpERkc6OkVkZ2VEb21pbmF0ZXM6OkVkZ2VEb21pbmF0ZXMp
OgorICAgICAgICAoSlNDOjpERkc6OkVkZ2VEb21pbmF0ZXM6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwQ2hlY2tz
SW5CbG9jayk6CisgICAgICAgICogZGZnL0RGR0ZsdXNoRm9ybWF0Lmg6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAg
ICAoSlNDOjpERkc6OnVuYm94TG9vcE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpk
dW1wQmxvY2tIZWFkZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6aW52YWxpZGF0ZUNGRyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmJsb2Nrc0luUHJlT3JkZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpibG9ja3NJblBv
c3RPcmRlcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3VyZUNQU0RvbWluYXRvcnMp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVTU0FEb21pbmF0b3JzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5zdXJlQ1BTTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6ZW5zdXJlU1NBTmF0dXJhbExvb3BzKToKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycyk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVu
c3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmNsZWFyQ1BTQ0ZHRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmVuc3Vy
ZURvbWluYXRvcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjplbnN1cmVQ
cmVQb3N0TnVtYmVyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZW5z
dXJlTmF0dXJhbExvb3BzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6d2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc0VudHJ5cG9pbnQgY29uc3QpOgorICAgICAg
ICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6Oklu
UGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycyk6CisgICAgICAgICogZGZnL0RG
R0pJVENvZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6OnNocmlua1RvRml0KToK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGU6
OmNhdGNoT1NSRW50cnlEYXRhRm9yQnl0ZWNvZGVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29kZTo6ZmluYWxpemVDYXRjaE9TUkVudHJ5cG9pbnRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb2RlOjphcHBlbmRDYXRjaEVudHJ5cG9pbnQpOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGUpOgor
ICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9pbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeSk6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKToKKyAgICAgICAgKiBk
ZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKiBkZmcvREZHTElDTVBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpMSUNNUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6TElD
TVBoYXNlOjphdHRlbXB0SG9pc3QpOgorICAgICAgICAqIGRmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJs
ZVByZXNlcnZhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJp
YWJsZVByZXNlcnZhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkxpdmVDYXRj
aFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2U6OmlzVmFsaWRGbHVzaExvY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlOjpoYW5kbGVC
bG9ja0ZvclRyeUNhdGNoKToKKyAgICAgICAgKEpTQzo6REZHOjpMaXZlQ2F0Y2hWYXJpYWJsZVBy
ZXNlcnZhdGlvblBoYXNlOjpuZXdWYXJpYWJsZUFjY2Vzc0RhdGEpOgorICAgICAgICAoSlNDOjpE
Rkc6OkxpdmVDYXRjaFZhcmlhYmxlUHJlc2VydmF0aW9uUGhhc2U6OndpbGxDYXRjaEV4Y2VwdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6TGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2
YXRpb25QaGFzZTo6aGFuZGxlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdMb29w
UHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlUHJl
SGVhZGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZTo6
cnVuKToKKyAgICAgICAgKiBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAoSlNDOjpERkc6Ok1heGltYWxGbHVzaEluc2VydGlvblBoYXNlOjp0cmVhdFJlZ3VsYXJC
bG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2U6OnRy
ZWF0Um9vdEJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICog
ZGZnL0RGR05hdHVyYWxMb29wcy5oOgorICAgICAgICAoSlNDOjpERkc6Ok5hdHVyYWxMb29wczo6
TmF0dXJhbExvb3BzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmlzU3dpdGNoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdWNj
ZXNzb3IpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNhdGNoT1NSRW50cnlJbmRleCBjb25z
dCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y2F0Y2hMb2NhbFByZWRpY3Rpb24pOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmlzU3dpdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnkuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OnByZXBhcmVDYXRjaE9TUkVudHJ5KToKKyAgICAgICAgKiBkZmcvREZHT1NSRW50
cnkuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6Ok9TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlOjpydW4pOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmhhbmRsZUV4aXRDb3VudHMpOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgICogZGZnL0RGR1By
ZVBvc3ROdW1iZXJpbmcuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3ROdW1iZXJpbmc6
OlByZVBvc3ROdW1iZXJpbmcpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3RO
dW1iZXJpbmc6On5QcmVQb3N0TnVtYmVyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6cHJp
bnRJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcu
aDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UHJlUG9zdE51bWJl
cmluZzo6cHJlTnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpQcmVQ
b3N0TnVtYmVyaW5nOjpwb3N0TnVtYmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpQcmVQb3N0TnVtYmVyaW5nOjppc1N0cmljdEFuY2VzdG9yT2YgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpERkc6OlByZVBvc3ROdW1iZXJpbmc6OmlzQW5jZXN0b3JPZiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6UHJlUG9zdE51bWJlcmluZzo6aXNTdHJp
Y3REZXNjZW5kYW50T2YgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpERkc6OlByZVBv
c3ROdW1iZXJpbmc6OmlzRGVzY2VuZGFudE9mIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVQb3N0TnVtYmVyaW5nOjplZGdlS2luZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UHJlZGljdGlvbkluamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1B1dFN0YWNr
U2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U1NBQ2FsY3VsYXRvcjo6bm9uTG9jYWxSZWFjaGluZ0RlZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U1NBQ2FsY3VsYXRvcjo6cmVhY2hpbmdEZWZBdFRhaWwpOgorICAg
ICAgICAqIGRmZy9ERkdTU0FDYWxjdWxhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6U1NBQ2Fs
Y3VsYXRvcjo6Y29tcHV0ZVBoaXMpOgorICAgICAgICAqIGRmZy9ERkdTU0FDb252ZXJzaW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNTQUNvbnZlcnNpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKEpTQzo6REZHOjpwZXJmb3JtU1NBQ29udmVyc2lvbik6CisgICAgICAgICogZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmxpbmtPU1JFbnRyaWVzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0YXRp
Y0V4ZWN1dGlvbkNvdW50RXN0aW1hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
dGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcv
REZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlRpZXJVcENoZWNrSW5q
ZWN0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZTo6YnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRNYXApOgorICAgICAgICAqIGRmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6Cisg
ICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmxpbmspOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnNhZmVseUludmFsaWRhdGVBZnRlclRlcm1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNWYWxpZCk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfY2F0Y2gpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGxsaW50L0xM
SW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKwogMjAxNy0wOC0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCAtV2Nhc3QtcXVhbCB3YXJuaW5ncyBpbiBKYXZhU2Ny
aXB0Q29yZSB3aXRoIG5ldyBjbGFuZyBjb21waWxlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNyArMzkxLDYgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHUGhhc2UuY3BwCiAgICAgZGZnL0RGR1Bo
aUNoaWxkcmVuLmNwcAogICAgIGRmZy9ERkdQbGFuLmNwcAotICAgIGRmZy9ERkdQcmVQb3N0TnVt
YmVyaW5nLmNwcAogICAgIGRmZy9ERkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCiAgICAg
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk0LDggKzM5NCw2IEBA
CiAJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQkQxQjYxQjg5NkEw
NzAwNTk4QUE2IC8qIERGR0luc2VydGlvblNldC5jcHAgKi87IH07CiAJCTBGM0MxRjFBMUI4NjhF
NzkwMEFCQjA4QiAvKiBERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNDMUYxODFCODY4RTc5MDBBQkIwOEIgLyog
REZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwICovOyB9OwogCQkwRjNDMUYxQjFCODY4RTc5MDBBQkIw
OEIgLyogREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0MxRjE5MUI4NjhFNzkwMEFCQjA4QiAvKiBERkdDbG9iYmVy
c0V4aXRTdGF0ZS5oICovOyB9OwotCQkwRjNFMDFBQTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJl
UG9zdE51bWJlcmluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjNFMDFBODE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5j
cHAgKi87IH07Ci0JCTBGM0UwMUFCMTlEMzUzQTUwMEY2MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVy
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNF
MDFBOTE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJlcmluZy5oICovOyB9OwogCQkw
RjQwRTRBNzFDNDk3Rjc0MDBBNTc3RkEgLyogQWlyT3Bjb2RlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYxODMzMjFDNDVGMzVDMDA3MjQ1MEIgLyog
QWlyT3Bjb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY0MEU0QTgxQzQ5N0Y3NDAwQTU3N0ZBIC8qIEFpck9wY29kZUdlbmVyYXRlZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MTgzMzQxQzQ1
RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZUdlbmVyYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDBFNEE5MUM0OTdGNzQwMEE1NzdGQSAv
KiBBaXJPcGNvZGVVdGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY2MTgzMzUxQzQ1RjNCNjAwNzI0NTBCIC8qIEFpck9wY29kZVV0aWxzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMwMDQsOCAr
MzAwMiw2IEBACiAJCTBGM0JEMUI2MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHSW5zZXJ0aW9uU2V0
LmNwcDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjNDMUYxODFCODY4RTc5MDBBQkIwOEIgLyogREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQzFGMTkxQjg2OEU3OTAwQUJCMDhCIC8qIERGR0Ns
b2JiZXJzRXhpdFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Ns
b2JiZXJzRXhpdFN0YXRlLmg7IHBhdGggPSBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEYzRTAxQTgxOUQzNTNBNTAwRjYxQjdGIC8qIERG
R1ByZVBvc3ROdW1iZXJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHUHJlUG9zdE51bWJlcmluZy5jcHA7IHBhdGggPSBkZmcvREZHUHJlUG9zdE51bWJlcmlu
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGM0UwMUE5MTlEMzUzQTUwMEY2
MUI3RiAvKiBERkdQcmVQb3N0TnVtYmVyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR1ByZVBvc3ROdW1iZXJpbmcuaDsgcGF0aCA9IGRmZy9ERkdQcmVQb3N0TnVtYmVy
aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEz
MUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDYx
NDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzU0Myw4ICs3NTM5LDYgQEAKIAkJCQkwRkJFMEY2RTE2QzFEQjAxMDA4MkM1
RTggLyogREZHUHJlZGljdGlvbkluamVjdGlvblBoYXNlLmggKi8sCiAJCQkJMEZGRkM5NTExNEVG
OTA5NTAwQzcyNTMyIC8qIERGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCAqLywKIAkJ
CQkwRkZGQzk1MjE0RUY5MDk1MDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuaCAqLywKLQkJCQkwRjNFMDFBODE5RDM1M0E1MDBGNjFCN0YgLyogREZHUHJlUG9zdE51bWJl
cmluZy5jcHAgKi8sCi0JCQkJMEYzRTAxQTkxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3RO
dW1iZXJpbmcuaCAqLywKIAkJCQkwRjJCOUNFMDE5RDBCQTdEMDBCMUQxQjUgLyogREZHUHJvbW90
ZWRIZWFwTG9jYXRpb24uY3BwICovLAogCQkJCTBGMkI5Q0UxMTlEMEJBN0QwMEIxRDFCNSAvKiBE
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oICovLAogCQkJCTBGRkM5MjE1MUI5NEZCM0UwMDcxREQ2
NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCAqLywKQEAgLTg3NjEsNyArODc1NSw2IEBACiAJCQkJ
REMwMDAzOTMxOUQ4QkU2RjAwMDIzRUIwIC8qIERGR1ByZWNpc2VMb2NhbENsb2JiZXJpemUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQkUwRjc1MTZDMURCMEIwMDgyQzVFOCAvKiBERkdQcmVkaWN0
aW9uSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkZDOTVFMTRFRjkwQjcw
MEM3MjUzMiAvKiBERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMEYzRTAxQUIxOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1iZXJpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMkI5Q0VEMTlEMEJBN0QwMEIxRDFCNSAvKiBERkdQcm9tb3Rl
ZEhlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQzkyMTYxQjk0RkIzRTAwNzFE
RDY2IC8qIERGR1Byb3BlcnR5VHlwZUtleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjMx
OTZCOEY5RTAwOTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDU1
OCw3ICsxMDU1MSw2IEBACiAJCQkJQTc4QTk3N0ExNzk3MzhCODAwOURGNzQ0IC8qIERGR1BsYW4u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCRTBGNzQxNkMxREIwOTAwODJDNUU4IC8qIERGR1By
ZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkZGQzk1RDE0
RUY5MEIzMDBDNzI1MzIgLyogREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJMEYzRTAxQUExOUQzNTNBNTAwRjYxQjdGIC8qIERGR1ByZVBvc3ROdW1i
ZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQjlDRUMxOUQwQkE3RDAwQjFEMUI1IC8q
IERGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjE3NjYy
MTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzQTFCRjkxQTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlRHVtcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTU0LDggKzE1NTQsOSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2Rl
CiAgICAgY2FzZSBvcF9jYXRjaDogewogICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIHZvaWQqIHBv
aW50ZXIgPSBnZXRQb2ludGVyKCooKytpdCkpOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBsb2NhdGlvbiwgaXQsICJjYXRjaCIpOwotICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMi
LCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCkpOworICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVwIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShyMSkuZGF0YSgpLCBwb2ludGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2Ugb3BfdGhyb3c6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpA
QCAtMTQzLDcgKzE0Myw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXNoX3dpdGhf
c2NvcGUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0
ZV9sZXhpY2FsX2Vudmlyb25tZW50IiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9nZXRfcGFyZW50X3Njb3BlIiwgImxlbmd0aCIgOiAzIH0sCi0gICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9jYXRjaCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfY2F0Y2giLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3Rocm93IiwgImxlbmd0aCIgOiAyIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF90aHJvd19zdGF0aWNfZXJyb3IiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2RlYnVnIiwgImxlbmd0aCIgOiAzIH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMjIxMTA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CiB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKIHsKLSAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21w
aWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCku
aXNWYWxpZCgpKQorICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiAoY29kZUJsb2NrLT53
YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgp
KSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdp
c3RlcigpLm9mZnNldCgpKTsKIAogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMjEx
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw4IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFMKICAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BM
ZW5ndGggLSAxXSA9IHByb2ZpbGU7CiAgICAgfTsKIAorICAgIFZlY3Rvcjx1bnNpZ25lZCwgND4g
Y2F0Y2hJbmRpY2VzOworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVh
ZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9
IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtODA1LDEwICs4MDcsMTYgQEAgYm9vbCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgICAgICAgICAgbV9udW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcCA9IG51bWJlck9mQXJndW1lbnRzVG9Ta2lwOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhc2Ugb3BfY2F0Y2g6IHsKKyAg
ICAgICAgICAgIGNhdGNoSW5kaWNlcy5hcHBlbmQoaSk7CisgICAgICAgICAgICBicmVhazsgCisg
ICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKwogICAgICAgICBpICs9IG9wTGVuZ3RoOwogICAgIH0KIApAQCAtODI4LDEyICs4MzYsNDQg
QEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgUwogICAgIGlmIChPcHRp
b25zOjphbHdheXNDb21wdXRlSGFzaCgpKQogICAgICAgICBoYXNoKCk7CiAKKyAgICBpZiAoY2F0
Y2hJbmRpY2VzLnNpemUoKSkgeworICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGJ5
dGVjb2RlTGl2ZW5lc3MgPSBsaXZlbmVzc0FuYWx5c2lzKCk7CisgICAgICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4+IGNhdGNoUHJvZmlsZXM7
CisgICAgICAgIGZvciAodW5zaWduZWQgY2F0Y2hJbmRleCA6IGNhdGNoSW5kaWNlcykgeworICAg
ICAgICAgICAgLy8gV2UgZ2V0IHRoZSBsaXZlLW91dCBzZXQgb2YgdmFyaWFibGVzIGF0IG9wX2Nh
dGNoLCBub3QgdGhlIGxpdmUtaW4uIFRoaXMKKyAgICAgICAgICAgIC8vIGlzIGJlY2F1c2UgdGhl
IHZhcmlhYmxlcyB0aGF0IHRoZSBvcF9jYXRjaCBkZWZpbmVzIG1pZ2h0IGJlIGRlYWQsIGFuZAor
ICAgICAgICAgICAgLy8gd2UgY2FuIGF2b2lkIHByb2ZpbGluZyB0aGVtIGFuZCBleHRyYWN0aW5n
IHRoZW0gd2hlbiBkb2luZyBPU1IgZW50cnkKKyAgICAgICAgICAgIC8vIGludG8gdGhlIERGRy4K
KyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUxvY2FscyA9IGJ5dGVjb2RlTGl2ZW5lc3Mu
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChjYXRjaEluZGV4ICsgT1BDT0RFX0xFTkdU
SChvcF9jYXRjaCkpOworICAgICAgICAgICAgVmVjdG9yPFZpcnR1YWxSZWdpc3Rlcj4gbGl2ZU9w
ZXJhbmRzOworICAgICAgICAgICAgbGl2ZU9wZXJhbmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bGl2ZUxvY2Fscy5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgIGxpdmVMb2NhbHMuZm9yRWFjaFNl
dEJpdChbJl0gKHVuc2lnbmVkIGxpdmVMb2NhbCkgeworICAgICAgICAgICAgICAgIGxpdmVPcGVy
YW5kcy5hcHBlbmQodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobGl2ZUxvY2FsKSk7CisgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJz
KCk7ICsraSkKKyAgICAgICAgICAgICAgICBsaXZlT3BlcmFuZHMuYXBwZW5kKHZpcnR1YWxSZWdp
c3RlckZvckFyZ3VtZW50KGkpKTsKKworICAgICAgICAgICAgYXV0byBwcm9maWxlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcj4obGl2ZU9wZXJhbmRzLnNp
emUoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9maWxlcy0+bV9zaXplID09IGxp
dmVPcGVyYW5kcy5zaXplKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHByb2ZpbGVzLT5tX3NpemU7ICsraSkKKyAgICAgICAgICAgICAgICBwcm9maWxlcy0+bV9idWZm
ZXIuZ2V0KClbaV0ubV9vcGVyYW5kID0gbGl2ZU9wZXJhbmRzW2ldLm9mZnNldCgpOworICAgICAg
ICAgICAgbV9pbnN0cnVjdGlvbnNbY2F0Y2hJbmRleCArIDNdLnUucG9pbnRlciA9IHByb2ZpbGVz
LmdldCgpOworICAgICAgICAgICAgY2F0Y2hQcm9maWxlcy5hcHBlbmQoV1RGTW92ZShwcm9maWxl
cykpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICAgICAgbV9jYXRjaFByb2ZpbGVzID0gV1RGTW92
ZShjYXRjaFByb2ZpbGVzKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChPcHRpb25zOjpk
dW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkpCiAgICAgICAgIGR1bXBCeXRlY29kZSgpOwotICAgIAor
CiAgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MtPmFkZCh0aGlzKTsKICAgICBoZWFwKCktPnJlcG9y
dEV4dHJhTWVtb3J5QWxsb2NhdGVkKG1faW5zdHJ1Y3Rpb25zLnNpemUoKSAqIHNpemVvZihJbnN0
cnVjdGlvbikpOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI0ODYsOSArMjUy
NiwxMCBAQCBjb25zdCBJZGVudGlmaWVyJiBDb2RlQmxvY2s6OmlkZW50aWZpZXIoCiB2b2lkIENv
ZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBu
dW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNh
bXBsZXNJblByb2ZpbGVzKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2Nr
KTsKLSAgICAKKwogICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA9IDA7
CiAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyA9IDA7IC8vIElmIHRoaXMgZGl2aWRlZCBi
eSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyBlcXVhbHMgbnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCkgdGhlbiB2YWx1ZSBwcm9maWxlcyBhcmUgZnVsbC4KKwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpOyArK2kpIHsKICAgICAgICAg
VmFsdWVQcm9maWxlJiBwcm9maWxlID0gZ2V0RnJvbUFsbFZhbHVlUHJvZmlsZXMoaSk7CiAgICAg
ICAgIHVuc2lnbmVkIG51bVNhbXBsZXMgPSBwcm9maWxlLnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7
CkBAIC0yNTAzLDYgKzI1NDQsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rp
b25zQW5kQwogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
Kys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAg
ICAgfQorCisgICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogbV9jYXRjaFByb2ZpbGVzKSB7
CisgICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVy
YW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgfSk7CisgICAgfQogICAgIAogI2lmIEVO
QUJMRShERkdfSklUKQogICAgIG1fbGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVzLmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbnMobG9ja2VyKTsKQEAgLTI3ODYsNiArMjgzMywyMyBAQCB2b2lkIENvZGVC
bG9jazo6dmFsaWRhdGUoKQogICAgICAgICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKICAg
ICAgICAgfQogICAgIH0KKyAgICAgCisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyApIHsKKyAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKG1faW5zdHJ1Y3Rpb25z
W2J5dGVjb2RlT2Zmc2V0XSk7CisgICAgICAgIGlmICghIWJhc2VsaW5lQWx0ZXJuYXRpdmUoKS0+
aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAg
aWYgKG9wY29kZSA9PSBvcF9jYXRjaCB8fCBvcGNvZGUgPT0gb3BfZW50ZXIpIHsKKyAgICAgICAg
ICAgICAgICAvLyBvcF9jYXRjaC9vcF9lbnRlciBsb2dpY2FsbHkgcmVwcmVzZW50IGFuIGVudHJ5
cG9pbnQuIEVudHJ5cG9pbnRzIGFyZSBub3QgYWxsb3dlZCB0byBiZQorICAgICAgICAgICAgICAg
IC8vIGluc2lkZSBvZiBhIHRyeSBibG9jayBiZWNhdXNlIHRoZXkgYXJlIHJlc3BvbnNpYmxlIGZv
ciBib290c3RyYXBwaW5nIHN0YXRlLiBBbmQgdGhleQorICAgICAgICAgICAgICAgIC8vIGFyZSBu
ZXZlciBhbGxvd2VkIHRocm93IGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIHRoaXMuIFdlIHJlbHkg
b24gdGhpcyB3aGVuIGNvbXBpbGluZworICAgICAgICAgICAgICAgIC8vIGluIHRoZSBERkcuIEJl
Y2F1c2UgYW4gZW50cnlwb2ludCBuZXZlciB0aHJvd3MsIHRoZSBieXRlY29kZSBnZW5lcmF0b3Ig
d2lsbCBuZXZlcgorICAgICAgICAgICAgICAgIC8vIGFsbG93IG9uY2UgaW5zaWRlIGEgdHJ5IGJs
b2NrLgorICAgICAgICAgICAgICAgIGJlZ2luVmFsaWRhdGlvbkRpZEZhaWwoKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgZW50cnlwb2ludCBub3QgYWxsb3dlZCBpbnNpZGUgYSB0cnkg
YmxvY2suIik7CisgICAgICAgICAgICAgICAgZW5kVmFsaWRhdGlvbkRpZEZhaWwoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5n
dGgob3Bjb2RlKTsKKyAgICB9CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjpiZWdpblZhbGlkYXRpb25E
aWRGYWlsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAwMyw2ICsxMDAzLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fYXJndW1lbnRWYWx1
ZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxWYWx1ZVByb2ZpbGU+IG1fdmFsdWVQcm9m
aWxlczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmRC
dWZmZXI+PiBtX2NhdGNoUHJvZmlsZXM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFJhcmVDYXNlUHJv
ZmlsZSwgOD4gbV9yYXJlQ2FzZVByb2ZpbGVzOwogICAgIFJlZkNvdW50ZWRBcnJheTxBcnJheUFs
bG9jYXRpb25Qcm9maWxlPiBtX2FycmF5QWxsb2NhdGlvblByb2ZpbGVzOwogICAgIEFycmF5UHJv
ZmlsZVZlY3RvciBtX2FycmF5UHJvZmlsZXM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3NCw4ICsxNzQsOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0
CiB9OwogCiBzdHJ1Y3QgVmFsdWVQcm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHM8MD4gewotICAgIFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVXaXRo
TG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29k
ZU9mZnNldCk6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVP
ZmZzZXQpIHsgfQorICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPigpIHsgfQorICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQp
IDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkg
eyB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjAyLDQgKzIwMiwzOCBAQCBpbmxp
bmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2ZmCiAgICAgcmV0dXJuIHJhcmVDYXNl
UHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAorc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQgeworICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7CisgICAgaW50IG1fb3BlcmFuZDsK
K307CisKK3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyIHsKKyAgICBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kQnVmZmVyKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogbV9zaXplKHNp
emUpCisgICAgeworICAgICAgICAvLyBGSVhNRTogVmFsdWVQcm9maWxlIGhhcyBtb3JlIHN0dWZm
IHRoYW4gd2UgbmVlZC4gV2UgY291bGQgb3B0aW1pemUgdGhlc2UgdmFsdWUgcHJvZmlsZXMKKyAg
ICAgICAgLy8gdG8gYmUgbW9yZSBzcGFjZSBlZmZpY2llbnQuCisgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MTMKKyAgICAgICAgbV9idWZmZXIg
PSBNYWxsb2NQdHI8VmFsdWVQcm9maWxlQW5kT3BlcmFuZD46Om1hbGxvYyhtX3NpemUgKiBzaXpl
b2YoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zaXplOyArK2kpCisgICAgICAgICAgICBuZXcgKCZtX2J1ZmZlci5nZXQoKVtpXSkg
VmFsdWVQcm9maWxlQW5kT3BlcmFuZCgpOworICAgIH0KKworICAgIH5WYWx1ZVByb2ZpbGVBbmRP
cGVyYW5kQnVmZmVyKCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3NpemU7ICsraSkKKyAgICAgICAgICAgIG1fYnVmZmVyLmdldCgpW2ldLn5WYWx1ZVByb2ZpbGVB
bmRPcGVyYW5kKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgor
ICAgIHZvaWQgZm9yRWFjaChGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKG1f
YnVmZmVyLmdldCgpW2ldKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgTWFs
bG9jUHRyPFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQ+IG1fYnVmZmVyOworfTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1NCw2ICsxNTQsMTggQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKAogICAgICAgICBlbWl0VW5yZWFjaGFibGUoKTsKICAgICB9CiAKKyAg
ICBmb3IgKGF1dG8mIHR1cGxlIDogbV9jYXRjaGVzVG9FbWl0KSB7CisgICAgICAgIFJlZjxMYWJl
bD4gcmVhbENhdGNoVGFyZ2V0ID0gbmV3RW1pdHRlZExhYmVsKCk7CisgICAgICAgIGVtaXRPcGNv
ZGUob3BfY2F0Y2gpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc3RkOjpnZXQ8MT4o
dHVwbGUpKTsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHN0ZDo6Z2V0PDI+KHR1cGxl
KSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKworICAgICAgICBUcnlEYXRh
KiB0cnlEYXRhID0gc3RkOjpnZXQ8MD4odHVwbGUpOworICAgICAgICBlbWl0SnVtcCh0cnlEYXRh
LT50YXJnZXQuZ2V0KCkpOworICAgICAgICB0cnlEYXRhLT50YXJnZXQgPSBXVEZNb3ZlKHJlYWxD
YXRjaFRhcmdldCk7CisgICAgfQorCiAgICAgbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmtpbGwo
KTsKIAogICAgIGZvciAoYXV0byYgcmFuZ2UgOiBtX3RyeVJhbmdlcykgewpAQCAtNzE0LDcgKzcy
Niw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKIAogICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogdW51c2VkID0gbmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGVtaXRDYXRj
aCh1bnVzZWQsIHRocm93blZhbHVlLmdldCgpKTsKKyAgICAgICAgZW1pdENhdGNoKHVudXNlZCwg
dGhyb3duVmFsdWUuZ2V0KCksIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhKTsKIAogICAgICAgICAv
LyByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdCh0aHJvd25WYWx1ZSkKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBw
cm9taXNlQ2FwYWJpbGl0eVJlZ2lzdGVyKCksIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOwpAQCAtNDAwOSwxMSArNDAyMSw5IEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnBvcFRyeShUcnlEYXRhKiAKICAgICBtX3RyeUNvbnRleHRTdGFj
ay5yZW1vdmVMYXN0KCk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChS
ZWdpc3RlcklEKiBleGNlcHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhyb3duVmFsdWVSZWdp
c3RlcikKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaChSZWdpc3RlcklEKiBleGNl
cHRpb25SZWdpc3RlciwgUmVnaXN0ZXJJRCogdGhyb3duVmFsdWVSZWdpc3RlciwgVHJ5RGF0YSog
ZGF0YSkKIHsKLSAgICBlbWl0T3Bjb2RlKG9wX2NhdGNoKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCh0aHJvd25WYWx1ZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBtX2NhdGNoZXNUb0VtaXQu
YXBwZW5kKHsgZGF0YSwgZXhjZXB0aW9uUmVnaXN0ZXItPmluZGV4KCksIHRocm93blZhbHVlUmVn
aXN0ZXItPmluZGV4KCkgfSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnJlc3RvcmVT
Y29wZVJlZ2lzdGVyKGludCBsZXhpY2FsU2NvcGVJbmRleCkKQEAgLTQzNDUsNyArNDM1NSw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnVtZXJhdGlvbigKICAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBmaW5hbGx5RXhjZXB0aW9uUmVnaXN0ZXIgPSBuZXdUZW1wb3Jhcnko
KTsKICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgpOwogCi0g
ICAgICAgICAgICBlbWl0Q2F0Y2goY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsK
KyAgICAgICAgICAgIGVtaXRDYXRjaChjb21wbGV0aW9uVmFsdWVSZWdpc3RlcigpLCB1bnVzZWQs
IHRyeURhdGEpOwogICAgICAgICAgICAgZW1pdFNldENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25U
eXBlOjpUaHJvdyk7CiAgICAgICAgICAgICBlbWl0TW92ZShmaW5hbGx5RXhjZXB0aW9uUmVnaXN0
ZXIuZ2V0KCksIGNvbXBsZXRpb25WYWx1ZVJlZ2lzdGVyKCkpOwogICAgICAgICAgICAgZW1pdEp1
bXAoZmluYWxseUJvZHlMYWJlbC5nZXQoKSk7CkBAIC00Mzg1LDcgKzQzOTUsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RW51bWVyYXRpb24oCiAgICAgICAgICAgICAgICAgZW1pdExh
YmVsKGNhdGNoTGFiZWwuZ2V0KCkpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBleGNlcHRpb25SZWdpc3RlciA9IG5ld1RlbXBvcmFyeSgpOwogICAgICAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHVudXNlZCA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICAgICAgICAgIGVtaXRD
YXRjaChleGNlcHRpb25SZWdpc3Rlci5nZXQoKSwgdW51c2VkKTsKKyAgICAgICAgICAgICAgICBl
bWl0Q2F0Y2goZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIHVudXNlZCwgcmV0dXJuQ2FsbFRyeURh
dGEpOwogICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBzeW50aGVzaXplZCBjYXRj
aCBibG9jayBhbmQgd2UncmUgZ3VhcmFudGVlZCB0byBuZXZlciBuZWVkCiAgICAgICAgICAgICAg
ICAgLy8gdG8gcmVzb2x2ZSBhbnkgc3ltYm9scyBmcm9tIHRoZSBzY29wZSwgd2UgY2FuIHNraXAg
cmVzdG9yaW5nIHRoZSBzY29wZQogICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIGhlcmUuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5
Miw3ICs3OTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHJ5RGF0YSogcHVzaFRyeShM
YWJlbCYgc3RhcnQsIExhYmVsJiBoYW5kbGVyTGFiZWwsIEhhbmRsZXJUeXBlKTsKICAgICAgICAg
Ly8gRW5kIGEgdHJ5IGJsb2NrLiAnZW5kJyBtdXN0IGhhdmUgYmVlbiBlbWl0dGVkLgogICAgICAg
ICB2b2lkIHBvcFRyeShUcnlEYXRhKiwgTGFiZWwmIGVuZCk7Ci0gICAgICAgIHZvaWQgZW1pdENh
dGNoKFJlZ2lzdGVySUQqIGV4Y2VwdGlvblJlZ2lzdGVyLCBSZWdpc3RlcklEKiB0aHJvd25WYWx1
ZVJlZ2lzdGVyKTsKKyAgICAgICAgdm9pZCBlbWl0Q2F0Y2goUmVnaXN0ZXJJRCogZXhjZXB0aW9u
UmVnaXN0ZXIsIFJlZ2lzdGVySUQqIHRocm93blZhbHVlUmVnaXN0ZXIsIFRyeURhdGEqKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgQ3VycmVudExleGljYWxTY29w
ZUluZGV4ID0gLTI7CkBAIC0xMjAwLDYgKzEyMDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBtX2luVGFpbFBvc2l0aW9uIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX25lZWRz
VG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dDsKICAgICAgICAgRGVyaXZlZENvbnRleHRUeXBl
IG1fZGVyaXZlZENvbnRleHRUeXBlIHsgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lIH07CisKKyAg
ICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8VHJ5RGF0YSosIGludCwgaW50Pj4gbV9jYXRjaGVzVG9F
bWl0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24g
MjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDA4LDYgKzM0MDgsOSBAQCB2b2lkIFRyeU5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyCiAgICAgTGFiZWwmIHRyeUhhbmRsZXJMYWJlbCA9
IG1fY2F0Y2hCbG9jayA/ICpjYXRjaExhYmVsIDogKmZpbmFsbHlWaWFUaHJvd0xhYmVsOwogICAg
IEhhbmRsZXJUeXBlIHRyeUhhbmRsZXJUeXBlID0gbV9jYXRjaEJsb2NrID8gSGFuZGxlclR5cGU6
OkNhdGNoIDogSGFuZGxlclR5cGU6OkZpbmFsbHk7CiAgICAgVHJ5RGF0YSogdHJ5RGF0YSA9IGdl
bmVyYXRvci5wdXNoVHJ5KHRyeVN0YXJ0TGFiZWwuZ2V0KCksIHRyeUhhbmRsZXJMYWJlbCwgdHJ5
SGFuZGxlclR5cGUpOworICAgIFRyeURhdGEqIGZpbmFsbHlUcnlEYXRhID0gbnVsbHB0cjsKKyAg
ICBpZiAoIW1fY2F0Y2hCbG9jayAmJiBtX2ZpbmFsbHlCbG9jaykKKyAgICAgICAgZmluYWxseVRy
eURhdGEgPSB0cnlEYXRhOwogCiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV90cnlCbG9j
ayk7CiAKQEAgLTM0MjQsMTQgKzM0MjcsMTMgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKCpjYXRjaExhYmVsKTsK
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlUmVnaXN0ZXIgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaCh1bnVzZWQsIHRo
cm93blZhbHVlUmVnaXN0ZXIuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENhdGNoKHVu
dXNlZCwgdGhyb3duVmFsdWVSZWdpc3Rlci5nZXQoKSwgdHJ5RGF0YSk7CiAgICAgICAgIGdlbmVy
YXRvci5yZXN0b3JlU2NvcGVSZWdpc3RlcigpOwogCi0gICAgICAgIFRyeURhdGEqIHRyeURhdGEg
PSBudWxscHRyOwogICAgICAgICBpZiAobV9maW5hbGx5QmxvY2spIHsKICAgICAgICAgICAgIC8v
IElmIHRoZSBjYXRjaCBibG9jayB0aHJvd3MgYW4gZXhjZXB0aW9uIGFuZCB3ZSBoYXZlIGEgZmlu
YWxseSBibG9jaywgdGhlbiB0aGUgZmluYWxseQogICAgICAgICAgICAgLy8gYmxvY2sgc2hvdWxk
ICJjYXRjaCIgdGhhdCBleGNlcHRpb24uCi0gICAgICAgICAgICB0cnlEYXRhID0gZ2VuZXJhdG9y
LnB1c2hUcnkoKmNhdGNoTGFiZWwsICpmaW5hbGx5VmlhVGhyb3dMYWJlbCwgSGFuZGxlclR5cGU6
OkZpbmFsbHkpOworICAgICAgICAgICAgZmluYWxseVRyeURhdGEgPSBnZW5lcmF0b3IucHVzaFRy
eSgqY2F0Y2hMYWJlbCwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsLCBIYW5kbGVyVHlwZTo6RmluYWxs
eSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9jYXRjaFBhdHRlcm4pIHsKQEAgLTM0NTIs
NyArMzQ1NCw3IEBAIHZvaWQgVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXIKICAg
ICAgICAgaWYgKG1fZmluYWxseUJsb2NrKSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFNl
dENvbXBsZXRpb25UeXBlKENvbXBsZXRpb25UeXBlOjpOb3JtYWwpOwogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRKdW1wKCpmaW5hbGx5TGFiZWwpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLnBv
cFRyeSh0cnlEYXRhLCAqZmluYWxseVZpYVRocm93TGFiZWwpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLnBvcFRyeShmaW5hbGx5VHJ5RGF0YSwgKmZpbmFsbHlWaWFUaHJvd0xhYmVsKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoKmNhdGNoRW5kTGFiZWwpOwpAQCAt
MzQ2NSw3ICszNDY3LDcgQEAgdm9pZCBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cgogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9jayBmb3IgQ29tcGxldGlvblR5
cGU6OlRocm93LgogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKCpmaW5hbGx5VmlhVGhyb3dM
YWJlbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVudXNlZCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5lcmF0b3IuY29tcGxldGlvblZh
bHVlUmVnaXN0ZXIoKSwgdW51c2VkKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYXRjaChnZW5l
cmF0b3IuY29tcGxldGlvblZhbHVlUmVnaXN0ZXIoKSwgdW51c2VkLCBmaW5hbGx5VHJ5RGF0YSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0U2V0Q29tcGxldGlvblR5cGUoQ29tcGxldGlvblR5cGU6
OlRocm93KTsKIAogICAgICAgICAvLyBFbnRyeSB0byB0aGUgZmluYWxseSBibG9jayBmb3IgQ29t
cGxldGlvblR5cGVzIG90aGVyIHRoYW4gVGhyb3cuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShy
ZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICAgICAgCisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4
dHJhY3RPU1JFbnRyeUxvY2FsOiB7CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2Rl
VG9wKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgzOSw3ICsxODQwLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBGSVhNRTogRG8gc3BhcnNl
IGNvbmRpdGlvbmFsIHRoaW5ncy4KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAgICAg
CisKICAgICBjYXNlIFJldHVybjoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsK
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3
YXJkc0NGRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzQ0ZHLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFja3dhcmRzQ0ZHLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIEJhY2t3YXJkc0NGRyA6
IHB1YmxpYyBCYWNrd2FyZHNHcmFwaDxDRkc+IHsKK2NsYXNzIEJhY2t3YXJkc0NGRyA6IHB1Ymxp
YyBCYWNrd2FyZHNHcmFwaDxTU0FDRkc+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCYWNr
d2FyZHNDRkcpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEJh
Y2t3YXJkc0NGRyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogQmFja3dhcmRzR3JhcGg8Q0ZHPigq
Z3JhcGgubV9jZmcpCisgICAgICAgIDogQmFja3dhcmRzR3JhcGg8U1NBQ0ZHPihzZWxlY3RDRkc8
U1NBQ0ZHPihncmFwaCkpCiAgICAgewogICAgIH0KIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAgQmFzaWNCbG9jazo6QmFzaWNCbG9jaygKICAgICA6IGJ5dGVjb2RlQmVn
aW4oYnl0ZWNvZGVCZWdpbikKICAgICAsIGluZGV4KE5vQmxvY2spCiAgICAgLCBpc09TUlRhcmdl
dChmYWxzZSkKKyAgICAsIGlzQ2F0Y2hFbnRyeXBvaW50KGZhbHNlKQogICAgICwgY2ZhSGFzVmlz
aXRlZChmYWxzZSkKICAgICAsIGNmYVNob3VsZFJldmlzaXQoZmFsc2UpCiAgICAgLCBjZmFGb3Vu
ZENvbnN0YW50cyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODIsMTcgKzgyLDkgQEAgc3RydWN0
IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgICAgICBzaXplX3QgaSA9IHNp
emUoKTsKICAgICAgICAgd2hpbGUgKGktLSkgewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGF0
KGkpOwotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICBjYXNl
IEp1bXA6Ci0gICAgICAgICAgICBjYXNlIEJyYW5jaDoKLSAgICAgICAgICAgIGNhc2UgU3dpdGNo
OgotICAgICAgICAgICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRhaWxDYWxsOgot
ICAgICAgICAgICAgY2FzZSBEaXJlY3RUYWlsQ2FsbDoKLSAgICAgICAgICAgIGNhc2UgVGFpbENh
bGxWYXJhcmdzOgotICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgotICAg
ICAgICAgICAgY2FzZSBVbnJlYWNoYWJsZToKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1Rlcm1p
bmFsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVBbmRJbmRleChub2RlLCBpKTsKKyAg
ICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgLy8gVGhlIGJpdHRl
ciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMgYW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2Jh
Ymx5IG9ubHkgYmUgb25lIG9yIHR3byBub2RlcyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJl
IGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhhdmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCiAgICAg
ICAgICAgICBjYXNlIENoZWNrOiAvLyBUaGlzIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG91ciB1bml2
ZXJzYWwgbm8tb3AuCiAgICAgICAgICAgICBjYXNlIFBoYW50b206CkBAIC0xODUsNiArMTc3LDcg
QEAgc3RydWN0IEJhc2ljQmxvY2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2NrSW5k
ZXggaW5kZXg7CiAgICAgCiAgICAgYm9vbCBpc09TUlRhcmdldDsKKyAgICBib29sIGlzQ2F0Y2hF
bnRyeXBvaW50OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNob3VsZFJl
dmlzaXQ7CiAgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMjExMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRU
eXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RIZWFwLmgiCiAjaW5jbHVkZSAiREZHQXJyYXlN
b2RlLmgiCisjaW5jbHVkZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0
YXRlLmgiCkBAIC00MDEsMTQgKzQwMiwxNCBAQCBwcml2YXRlOgogICAgICAgICAvLyBXZSBjYW4n
dCBleGl0IGFueW1vcmUgYmVjYXVzZSBvdXIgT1NSIGV4aXQgc3RhdGUgaGFzIGNoYW5nZWQuCiAg
ICAgICAgIG1fZXhpdE9LID0gZmFsc2U7CiAKLSAgICAgICAgRGVsYXllZFNldExvY2FsIGRlbGF5
ZWQoY3VycmVudENvZGVPcmlnaW4oKSwgb3BlcmFuZCwgdmFsdWUpOworICAgICAgICBEZWxheWVk
U2V0TG9jYWwgZGVsYXllZChjdXJyZW50Q29kZU9yaWdpbigpLCBvcGVyYW5kLCB2YWx1ZSwgc2V0
TW9kZSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2V0TW9kZSA9PSBOb3JtYWxTZXQpIHsKICAg
ICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBlbmQoZGVsYXllZCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMsIHNldE1vZGUpOworICAgICAg
ICByZXR1cm4gZGVsYXllZC5leGVjdXRlKHRoaXMpOwogICAgIH0KICAgICAKICAgICB2b2lkIHBy
b2Nlc3NTZXRMb2NhbFF1ZXVlKCkKQEAgLTY0Miw2ICs2NDMsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOwogICAgICAgICBpZiAoIWlubGluZVN0YWNr
RW50cnktPm1faW5saW5lQ2FsbEZyYW1lICYmIG1fZ3JhcGgubmVlZHNGbHVzaGVkVGhpcygpKQog
ICAgICAgICAgICAgZmx1c2hEaXJlY3QodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCkpOwor
CiAgICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpKQogICAgICAgICAgICAg
Zmx1c2hEaXJlY3QobV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSk7CiAgICAgfQpAQCAtMTEz
MSw3ICsxMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gUG90ZW50aWFsIGJsb2NrIGxpbmtp
bmcgdGFyZ2V0cy4gTXVzdCBiZSBzb3J0ZWQgYnkgYnl0ZWNvZGVCZWdpbiwgYW5kCiAgICAgICAg
IC8vIGNhbm5vdCBoYXZlIHR3byBibG9ja3MgdGhhdCBoYXZlIHRoZSBzYW1lIGJ5dGVjb2RlQmVn
aW4uCiAgICAgICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gbV9ibG9ja0xpbmtpbmdUYXJnZXRzOwot
ICAgICAgICAKKwogICAgICAgICAvLyBJZiB0aGUgY2FsbHNpdGUncyBiYXNpYyBibG9jayB3YXMg
c3BsaXQgaW50byB0d28sIHRoZW4gdGhpcyB3aWxsIGJlCiAgICAgICAgIC8vIHRoZSBoZWFkIG9m
IHRoZSBjYWxsc2l0ZSBibG9jay4gSXQgbmVlZHMgaXRzIHN1Y2Nlc3NvcnMgbGlua2VkIHRvIHRo
ZQogICAgICAgICAvLyBtX3VubGlua2VkQmxvY2tzLCBidXQgbm90IHRoZSBvdGhlciB3YXkgYXJv
dW5kOiB0aGVyZSdzIG5vIHdheSBmb3IKQEAgLTEyMDAsMjEgKzEyMDIsMjMgQEAgcHJpdmF0ZToK
ICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1f
b3BlcmFuZDsKICAgICAgICAgTm9kZSogbV92YWx1ZTsKKyAgICAgICAgU2V0TW9kZSBtX3NldE1v
ZGU7CiAgICAgICAgIAogICAgICAgICBEZWxheWVkU2V0TG9jYWwoKSB7IH0KLSAgICAgICAgRGVs
YXllZFNldExvY2FsKGNvbnN0IENvZGVPcmlnaW4mIG9yaWdpbiwgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQsIE5vZGUqIHZhbHVlKQorICAgICAgICBEZWxheWVkU2V0TG9jYWwoY29uc3QgQ29kZU9y
aWdpbiYgb3JpZ2luLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgTm9kZSogdmFsdWUsIFNldE1v
ZGUgc2V0TW9kZSkKICAgICAgICAgICAgIDogbV9vcmlnaW4ob3JpZ2luKQogICAgICAgICAgICAg
LCBtX29wZXJhbmQob3BlcmFuZCkKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKKyAgICAg
ICAgICAgICwgbV9zZXRNb2RlKHNldE1vZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG9wZXJhbmQuaXNWYWxpZCgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgTm9kZSogZXhlY3V0ZShCeXRlQ29kZVBhcnNlciogcGFyc2VyLCBTZXRNb2RlIHNldE1vZGUg
PSBOb3JtYWxTZXQpCisgICAgICAgIE5vZGUqIGV4ZWN1dGUoQnl0ZUNvZGVQYXJzZXIqIHBhcnNl
cikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fb3BlcmFuZC5pc0FyZ3VtZW50KCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c2V0QXJndW1lbnQobV9vcmlnaW4sIG1fb3Bl
cmFuZCwgbV92YWx1ZSwgc2V0TW9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VyLT5zZXRM
b2NhbChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3ZhbHVlLCBzZXRNb2RlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcGFyc2VyLT5zZXRBcmd1bWVudChtX29yaWdpbiwgbV9vcGVyYW5kLCBtX3Zh
bHVlLCBtX3NldE1vZGUpOworICAgICAgICAgICAgcmV0dXJuIHBhcnNlci0+c2V0TG9jYWwobV9v
cmlnaW4sIG1fb3BlcmFuZCwgbV92YWx1ZSwgbV9zZXRNb2RlKTsKICAgICAgICAgfQogICAgIH07
CiAgICAgCkBAIC00MDgyLDcgKzQwODYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgIC8vIHVzIHRvIHRyYWNrIGlmIGEgdXNlIG9mIGFuIGFyZ3VtZW50
IG1heSB1c2UgdGhlIGFjdHVhbCBhcmd1bWVudCBwYXNzZWQsIGFzCiAgICAgLy8gb3Bwb3NlZCB0
byB1c2luZyBhIHZhbHVlIHdlIHNldCBleHBsaWNpdGx5LgogICAgIGlmIChtX2N1cnJlbnRCbG9j
ayA9PSBtX2dyYXBoLmJsb2NrKDApICYmICFpbmxpbmVDYWxsRnJhbWUoKSkgewotICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5hZGQobV9jdXJyZW50
QmxvY2ssIEFyZ3VtZW50c1ZlY3RvcigpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVz
dWx0LmlzTmV3RW50cnkpOworICAgICAgICBBcmd1bWVudHNWZWN0b3ImIGVudHJ5cG9pbnRBcmd1
bWVudHMgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICBlbnRyeXBvaW50QXJn
dW1lbnRzLnJlc2l6ZShtX251bUFyZ3VtZW50cyk7CisKICAgICAgICAgLy8gV2Ugd2lsbCBlbWl0
IFNldEFyZ3VtZW50IG5vZGVzLiBUaGV5IGRvbid0IGV4aXQsIGJ1dCB3ZSdyZSBhdCB0aGUgdG9w
IG9mIGFuIG9wX2VudGVyIHNvCiAgICAgICAgIC8vIGV4aXRPSyA9IHRydWUuCiAgICAgICAgIG1f
ZXhpdE9LID0gdHJ1ZTsKQEAgLTQwOTUsNyArNDEwMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJbmRleGluZ1R5cGUp
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogc2V0QXJndW1lbnQgPSBhZGRUb0dy
YXBoKFNldEFyZ3VtZW50LCBPcEluZm8odmFyaWFibGUpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgu
bV9hcmd1bWVudHNbYXJndW1lbnRdID0gc2V0QXJndW1lbnQ7CisgICAgICAgICAgICBlbnRyeXBv
aW50QXJndW1lbnRzW2FyZ3VtZW50XSA9IHNldEFyZ3VtZW50OwogICAgICAgICAgICAgbV9jdXJy
ZW50QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5zZXRBcmd1bWVudEZpcnN0VGltZShhcmd1bWVudCwg
c2V0QXJndW1lbnQpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTE2NSwxMCArNTE3MywxMzEgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYWRk
VG9HcmFwaChVbnJlYWNoYWJsZSk7CiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF90aHJvd19z
dGF0aWNfZXJyb3IpOwogCi0gICAgICAgIGNhc2Ugb3BfY2F0Y2g6CisgICAgICAgIGNhc2Ugb3Bf
Y2F0Y2g6IHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNFeGNlcHRpb25IYW5kbGVycyA9IHRy
dWU7CisKKyAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUoKSkgeworICAgICAgICAgICAg
ICAgIC8vIFdlIGNhbid0IGRvIE9TUiBlbnRyeSBpbnRvIGFuIGlubGluZWQgZnJhbWUuCisgICAg
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2F0Y2gpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogU3VwcG9ydCBjYXRjaCBpbiB0aGUgRlRMLgorICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9jYXRjaCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFtX2N1cnJlbnRCbG9jay0+c2l6ZSgpKTsKKworICAgICAgICAg
ICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nhc3Q8VmFs
dWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnBvaW50
ZXIpOworCisgICAgICAgICAgICBWZWN0b3I8U3BlY3VsYXRlZFR5cGU+IGFyZ3VtZW50UHJlZGlj
dGlvbnMobV9udW1Bcmd1bWVudHMpOworICAgICAgICAgICAgVmVjdG9yPFNwZWN1bGF0ZWRUeXBl
PiBsb2NhbFByZWRpY3Rpb25zOworICAgICAgICAgICAgSGFzaFNldDx1bnNpZ25lZCwgV1RGOjpJ
bnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNp
Z25lZD4+IHNlZW5Bcmd1bWVudHM7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+bV9sb2NrKTsKKworICAgICAgICAgICAgICAgIGJvb2wgYWxsUHJlZGljdGlvbnNBcmVFbXB0
eSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9m
aWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgeworICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgYWxsUHJlZGljdGlvbnNB
cmVFbXB0eSAmPSBwcmVkaWN0aW9uID09IFNwZWNOb25lOworICAgICAgICAgICAgICAgICAgICBp
ZiAob3BlcmFuZC5pc0xvY2FsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRp
Y3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcGVyYW5kLmlzQXJndW1lbnQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDx1
aW50MzJfdD4ob3BlcmFuZC50b0FyZ3VtZW50KCkpIDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXpl
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FbmFibGVkKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VlbkFyZ3VtZW50cy5hZGQob3BlcmFuZC50b0Fy
Z3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRQcmVkaWN0aW9uc1tv
cGVyYW5kLnRvQXJndW1lbnQoKV0gPSBwcmVkaWN0aW9uOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvbkVu
YWJsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0g
MDsgYXJndW1lbnQgPCBtX251bUFyZ3VtZW50czsgKythcmd1bWVudCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNlZW5Bcmd1bWVudHMuY29udGFpbnMoYXJndW1lbnQp
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYWxsUHJlZGljdGlv
bnNBcmVFbXB0eSAmJiAoYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCkgfHwgbG9jYWxQcmVkaWN0
aW9ucy5zaXplKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGNh
c2UsIHdlIGhhdmVuJ3QgZXhlY3V0ZWQgdGhpcyBjYXRjaCB5ZXQuIExldCdzIG5vdCBjb21waWxl
CisgICAgICAgICAgICAgICAgICAgIC8vIGl0IGFzIGFuIGVudHJ5cG9pbnQuCisgICAgICAgICAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlJ3JlIG5vdyBjb21taXR0ZWQgdG8gY29tcGls
aW5nIHRoaXMgYXMgYW4gZW50cnlwb2ludC4KKworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2st
PmlzQ2F0Y2hFbnRyeXBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9lbnRyeXBv
aW50cy5hcHBlbmQobV9jdXJyZW50QmxvY2spOworCisgICAgICAgICAgICBWZWN0b3I8c3RkOjpw
YWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+PiBsb2NhbHNUb1NldDsKKyAgICAgICAgICAgIGxv
Y2Fsc1RvU2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYnVmZmVyLT5tX3NpemUpOyAvLyBOb3Rl
OiBUaGlzIHdpbGwgcmVzZXJ2ZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBsb2NhbHMgd2Ugc2Vl
IGJlbG93IGJlY2F1c2UgdGhlIGJ1ZmZlciBpbmNsdWRlcyBhcmd1bWVudHMuCisKKyAgICAgICAg
ICAgIC8vIFdlJ3JlIG5vdCBhbGxvd2VkIHRvIGV4aXQgaGVyZSBzaW5jZSB3ZSB3b3VsZCBub3Qg
cHJvcGVybHkgcmVjb3ZlciB2YWx1ZXMuCisgICAgICAgICAgICAvLyBXZSBmaXJzdCBuZWVkIHRv
IGJvb3RzdHJhcCB0aGUgY2F0Y2ggZW50cnlwb2ludCBzdGF0ZS4KKyAgICAgICAgICAgIG1fZXhp
dE9LID0gZmFsc2U7IAorCisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkxvY2FscyA9IDA7
CisgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
JiBwcm9maWxlKSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJv
ZmlsZS5tX29wZXJhbmQpOworICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzQXJndW1lbnQo
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIEFTU0VSVChv
cGVyYW5kLmlzTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBhZGRUb0dy
YXBoKEV4dHJhY3RDYXRjaExvY2FsLCBPcEluZm8obnVtYmVyT2ZMb2NhbHMpLCBPcEluZm8obG9j
YWxQcmVkaWN0aW9uc1tudW1iZXJPZkxvY2Fsc10pKTsKKyAgICAgICAgICAgICAgICArK251bWJl
ck9mTG9jYWxzOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTW92SGludCwgT3BJbmZvKHBy
b2ZpbGUubV9vcGVyYW5kKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGxvY2Fsc1RvU2V0LnVu
Y2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihvcGVyYW5kLCB2YWx1ZSkpOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NS
RW50cnkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkgPSAwOworICAgICAgICAgICAgbV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50cnkg
PSBzdGQ6Om1heChudW1iZXJPZkxvY2FscywgKm1fZ3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9T
UkVudHJ5KTsKKworICAgICAgICAgICAgLy8gV2UgY291bGQgbm90IGV4aXQgYmVmb3JlIHRoaXMg
cG9pbnQgaW4gdGhlIHByb2dyYW0gYmVjYXVzZSB3ZSB3b3VsZCBub3Qga25vdyBob3cgdG8gZG8g
dmFsdWUKKyAgICAgICAgICAgIC8vIHJlY292ZXJ5IGZvciBsaXZlIGxvY2Fscy4gVGhlIGFib3Zl
IElSIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBzdGF0ZSBzbyB3ZSBjYW4gcmVjb3ZlciB2YWx1ZXMK
KyAgICAgICAgICAgIC8vIGR1cmluZyBPU1IgZXhpdC4gCisgICAgICAgICAgICAvLworICAgICAg
ICAgICAgLy8gVGhlIG5vZGVzIHRoYXQgZm9sbG93IGhlcmUgYWxsIGV4aXQgdG8gdGhlIGZvbGxv
d2luZyBieXRlY29kZSBpbnN0cnVjdGlvbiwgbm90CisgICAgICAgICAgICAvLyB0aGUgb3BfY2F0
Y2guIEV4aXRpbmcgdG8gb3BfY2F0Y2ggaXMgcmVzZXJ2ZWQgZm9yIHdoZW4gYW4gZXhjZXB0aW9u
IGlzIHRocm93bi4KKyAgICAgICAgICAgIC8vIFRoZSBTZXRBcmd1bWVudCBub2RlcyB0aGF0IGZv
bGxvdyBiZWxvdyBtYXkgZXhpdCBiZWNhdXNlIHdlIG1heSBob2lzdCB0eXBlIGNoZWNrcworICAg
ICAgICAgICAgLy8gdG8gdGhlbS4gVGhlIFNldExvY2FsIG5vZGVzIHRoYXQgZm9sbG93IGJlbG93
IG1heSBleGl0IGJlY2F1c2Ugd2UgbWF5IGNob29zZQorICAgICAgICAgICAgLy8gYSBmbHVzaCBm
b3JtYXQgdGhhdCBzcGVjdWxhdGVzIG9uIHRoZSB0eXBlIG9mIHRoZSBsb2NhbC4KKyAgICAgICAg
ICAgIG1fZXhpdE9LID0gdHJ1ZTsgCisgICAgICAgICAgICBhZGRUb0dyYXBoKEV4aXRPSyk7CisK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZ3JhcGgu
bV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG1fY3VycmVudEJsb2NrLCBBcmd1bWVudHNWZWN0
b3IoKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50
cnkpOworICAgICAgICAgICAgICAgIEFyZ3VtZW50c1ZlY3RvciYgZW50cnlwb2ludEFyZ3VtZW50
cyA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICAgICAgZW50cnlwb2lu
dEFyZ3VtZW50cy5yZXNpemUobV9udW1Bcmd1bWVudHMpOworCisgICAgICAgICAgICAgICAgdW5z
aWduZWQgZXhpdEJ5dGVjb2RlSW5kZXggPSBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgo
b3BfY2F0Y2gpOworCisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgYXJndW1lbnRQcmVkaWN0aW9ucy5zaXplKCk7ICsrYXJndW1lbnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1Zhcmlh
YmxlQWNjZXNzRGF0YSh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAg
ICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+cHJlZGljdChhcmd1bWVudFByZWRpY3Rpb25zW2Fy
Z3VtZW50XSk7CisKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU3RydWN0dXJl
Q2hlY2tIb2lzdGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUoZXhpdEJ5dGVjb2RlSW5kZXgsIEJhZENh
Y2hlKSk7CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZUNoZWNrQXJyYXlIb2lz
dGluZ0ZhaWxlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUoZXhpdEJ5dGVjb2RlSW5kZXgsIEJhZEluZGV4aW5nVHlw
ZSkpOworCisgICAgICAgICAgICAgICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFw
aChTZXRBcmd1bWVudCwgT3BJbmZvKHZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIHNl
dEFyZ3VtZW50LT5vcmlnaW4uZm9yRXhpdC5ieXRlY29kZUluZGV4ID0gZXhpdEJ5dGVjb2RlSW5k
ZXg7CisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
c2V0QXJndW1lbnRGaXJzdFRpbWUoYXJndW1lbnQsIHNldEFyZ3VtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgZW50cnlwb2ludEFyZ3VtZW50c1thcmd1bWVudF0gPSBzZXRBcmd1bWVudDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
c3RkOjpwYWlyPFZpcnR1YWxSZWdpc3RlciwgTm9kZSo+JiBwYWlyIDogbG9jYWxzVG9TZXQpIHsK
KyAgICAgICAgICAgICAgICBEZWxheWVkU2V0TG9jYWwgZGVsYXllZCB7IGN1cnJlbnRDb2RlT3Jp
Z2luKCksIHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kLCBJbW1lZGlhdGVOYWtlZFNldCB9OworICAg
ICAgICAgICAgICAgIG1fc2V0TG9jYWxRdWV1ZS5hcHBlbmQoZGVsYXllZCk7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NhdGNoKTsKLSAgICAgICAgICAgIAor
ICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICAgICAgaGFuZGxlQ2Fs
bChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGwsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9jdXJyZW50SW5zdHJ1Y3Rpb24gPT0gY3VycmVudElu
c3RydWN0aW9uLCAiaGFuZGxlQ2FsbCwgd2hpY2ggbWF5IGhhdmUgaW5saW5lZCB0aGUgY2FsbGVl
LCB0cmFzaGVkIG1fY3VycmVudEluc3RydWN0aW9uIik7CkBAIC02MTkzLDggKzYzMjIsMTAgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2Nr
KGJsb2NrLnB0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
YmxvY2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQoYmxvY2sucHRyKCkpOwogICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFyZ2V0LgotICAg
ICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubnVtQmxvY2tzKCkpCisgICAgICAgICAgICAg
ICAgICAgIGlmICghbV9ncmFwaC5udW1CbG9ja3MoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGgubV9lbnRyeXBvaW50cy5hcHBlbmQoYmxvY2sucHRyKCkpOworICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kQmxvY2soV1RGTW92ZShi
bG9jaykpOwogICAgICAgICAgICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtNjI1MSwxMCArNjM4MiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNh
bGxGcmFtZTo6Q2FsbCk7CiAgICAgCiAgICAgcGFyc2VDb2RlQmxvY2soKTsKLQogICAgIGxpbmtC
bG9ja3MoaW5saW5lU3RhY2tFbnRyeS5tX3VubGlua2VkQmxvY2tzLCBpbmxpbmVTdGFja0VudHJ5
Lm1fYmxvY2tMaW5raW5nVGFyZ2V0cyk7CisKICAgICBtX2dyYXBoLmRldGVybWluZVJlYWNoYWJp
bGl0eSgpOwogICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKKyAgICBtX2dy
YXBoLm1fY3BzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNDRkc+KG1fZ3JhcGgpOwogICAgIAog
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxv
Y2tJbmRleC0tOykgewogICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CkBAIC02MjY1LDcgKzYzOTgsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZSgpCiAgICAgICAgIEFTU0VSVChibG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9j
YWxzKCkgPT0gbV9ncmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkLm51bWJlck9mTG9jYWxz
KCkpOwogICAgICAgICBBU1NFUlQoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3Vt
ZW50cygpID09IG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5udW1iZXJPZkFyZ3Vt
ZW50cygpKTsKICAgICB9Ci0gICAgCisKICAgICBtX2dyYXBoLm1fbG9jYWxWYXJzID0gbV9udW1M
b2NhbHM7CiAgICAgbV9ncmFwaC5tX3BhcmFtZXRlclNsb3RzID0gbV9wYXJhbWV0ZXJTbG90czsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCShyZXZpc2lvbiAyMjExMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQmxvY2tNYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
REZHQmxvY2tTZXQuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgPHd0Zi9TaW5n
bGVSb290R3JhcGguaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC00
OCw3ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIE5vZGUgcm9vdCgpIHsg
cmV0dXJuIG1fZ3JhcGguYmxvY2soMCk7IH0KKyAgICBOb2RlIHJvb3QoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSB8fCBtX2dyYXBoLm1faXNJblNTQUNvbnZl
cnNpb24pOworICAgICAgICByZXR1cm4gbV9ncmFwaC5ibG9jaygwKTsKKyAgICB9CisKKyAgICBM
aXN0IHJvb3RzKCkKKyAgICB7CisgICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKEJh
c2ljQmxvY2sqIHJvb3QgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKHJvb3QpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTWFwPFQ+IG5ld01hcCgpIHsgcmV0dXJuIEJsb2NrTWFw
PFQ+KG1fZ3JhcGgpOyB9CkBAIC03MSw2ICs4NCwzMSBAQCBwcml2YXRlOgogICAgIEdyYXBoJiBt
X2dyYXBoOwogfTsKIAorY2xhc3MgQ1BTQ0ZHIDogcHVibGljIFNpbmdsZVJvb3RHcmFwaDxDRkc+
IHsKK3B1YmxpYzoKKyAgICBDUFNDRkcoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFNpbmdsZVJv
b3RHcmFwaDxDRkc+KCpncmFwaC5tX3NzYUNGRykKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFw
aC5tX2VudHJ5cG9pbnRzLnNpemUoKSk7CisgICAgfQorfTsKKwordXNpbmcgU1NBQ0ZHID0gQ0ZH
OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxzdGQ6OmlzX3NhbWU8VCwgQ1BTQ0ZHPjo6dmFsdWU+Ojp0eXBlPgorQ1BTQ0ZHJiBzZWxl
Y3RDRkcoR3JhcGgmIGdyYXBoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fY3BzQ0ZH
KTsKKyAgICByZXR1cm4gKmdyYXBoLm1fY3BzQ0ZHOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VCwgU1NB
Q0ZHPjo6dmFsdWU+Ojp0eXBlPgorU1NBQ0ZHJiBzZWxlY3RDRkcoR3JhcGgmIGdyYXBoKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKGdyYXBoLm1fc3NhQ0ZHKTsKKyAgICByZXR1cm4gKmdyYXBoLm1f
c3NhQ0ZHOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJl
YWRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzY5LDggKzM2OSwxMyBAQCBwcml2YXRlOgogICAgICAgICAvLyBCdXQgdGhvc2UgU2V0
QXJndW1lbnRzIHVzZWQgZm9yIHRoZSBhY3R1YWwgYXJndW1lbnRzIHRvIHRoZSBtYWNoaW5lIENv
ZGVCbG9jayBnZXQKICAgICAgICAgLy8gc3BlY2lhbC1jYXNlZC4gV2UgY291bGQgaGF2ZSBpbnN0
ZWFkIHVzZWQgdHdvIGRpZmZlcmVudCBub2RlIHR5cGVzIC0gb25lIGZvciB0aGUgYXJndW1lbnRz
CiAgICAgICAgIC8vIGF0IHRoZSBwcm9sb2d1ZSBjYXNlLCBhbmQgYW5vdGhlciBmb3IgdGhlIG90
aGVyIHVzZXMuIEJ1dCB0aGlzIHNlZW1lZCBsaWtlIElSIG92ZXJraWxsLgotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykKLSAgICAgICAg
ICAgIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGlt
ZShpLCBtX2dyYXBoLm1fYXJndW1lbnRzW2ldKTsKKworICAgICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzKSB7CisgICAgICAgICAgICBCYXNpY0Js
b2NrKiBlbnRyeXBvaW50ID0gcGFpci5rZXk7CisgICAgICAgICAgICBjb25zdCBBcmd1bWVudHNW
ZWN0b3ImIGFyZ3VtZW50cyA9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBhcmd1bWVudHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQt
PnZhcmlhYmxlc0F0SGVhZC5zZXRBcmd1bWVudEZpcnN0VGltZShpLCBhcmd1bWVudHNbaV0pOwor
ICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPE9wZXJhbmRLaW5kIG9wZXJhbmRL
aW5kPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJl
dmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNyArNTk4LDcgQEAgcHVibGljOgogICAgICAgICBB
U1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgu
aW5pdGlhbGl6ZU5vZGVPd25lcnMoKTsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3Jz
KCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAg
ICAgICAgbV9wcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpOwogICAgICAgICAK
QEAgLTY5MCw3ICs2OTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAgICAgICAg
ICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZVtpXTsKLSAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIs
IG1fYmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRv
bWluYXRlcyhjYW5kaWRhdGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIG1f
bm9kZS0+cmVwbGFjZVdpdGgoY2FuZGlkYXRlKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTc3OSw3ICs3NzksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAvLyBXZSByZXF1aXJlIHN0cmljdCBkb21pbmF0aW9uIGJlY2F1c2Ug
dGhpcyB3b3VsZCBvbmx5IHNlZSB0aGluZ3MgaW4gb3VyIG93biBibG9jayBpZgogICAgICAgICAg
ICAgLy8gdGhleSBjYW1lICphZnRlciogb3VyIHBvc2l0aW9uIGluIHRoZSBibG9jay4gQ2xlYXJs
eSwgd2hpbGUgb3VyIGJsb2NrIGRvbWluYXRlcwogICAgICAgICAgICAgLy8gaXRzZWxmLCB0aGUg
dGhpbmdzIGluIHRoZSBibG9jayBhZnRlciB1cyBkb24ndCBkb21pbmF0ZSB1cy4KLSAgICAgICAg
ICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+c3RyaWN0bHlEb21pbmF0ZXMoYmxvY2ssIG1f
YmxvY2spKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPnN0cmlj
dGx5RG9taW5hdGVzKGJsb2NrLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJi
b3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgIEl0IHN0cmljdGx5IGRv
bWluYXRlcy5cbiIpOwogICAgICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBkYXRhLmRpZFZpc2l0KTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNpemUoKTsgaS0tOykgewogICAg
ICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9y
cy0+ZG9taW5hdGVzKGNhbmRpZGF0ZS0+b3duZXIsIG1fYmxvY2spKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhjYW5kaWRh
dGUtPm93bmVyLCBtX2Jsb2NrKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLT5yZXBsYWNl
V2l0aChjYW5kaWRhdGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoLnNldE5v
ZGUoY2FuZGlkYXRlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw2IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgQVNTRVJUKCFub2RlLT5v
cmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgcmVhZChBYnN0cmFjdEhl
YXAoU3RhY2ssIGdyYXBoLm1fY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpKTsKICAgICB9Ci0g
ICAgICAgIAogICAgIAogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgIGNhc2UgSlNDb25z
dGFudDoKQEAgLTE0MSw2ICsxNDAsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBQaGFudG9tOgogICAgIGNhc2UgQ2hlY2s6CiAgICAgY2FzZSBF
eHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAgIGNh
c2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb250cm9s
RXF1aXZhbGVuY2VBbmFseXNpcy5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIENvbnRyb2xFcXVpdmFs
ZW5jZUFuYWx5c2lzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBtX2RvbWluYXRvcnMoZ3JhcGgu
ZW5zdXJlRG9taW5hdG9ycygpKQorICAgICAgICA6IG1fZG9taW5hdG9ycyhncmFwaC5lbnN1cmVT
U0FEb21pbmF0b3JzKCkpCiAgICAgICAgICwgbV9iYWNrd2FyZHNEb21pbmF0b3JzKGdyYXBoLmVu
c3VyZUJhY2t3YXJkc0RvbWluYXRvcnMoKSkKICAgICB7CiAgICAgfQpAQCAtNzUsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIERvbWluYXRvcnMmIG1fZG9taW5hdG9y
czsKKyAgICBTU0FEb21pbmF0b3JzJiBtX2RvbWluYXRvcnM7CiAgICAgQmFja3dhcmRzRG9taW5h
dG9ycyYgbV9iYWNrd2FyZHNEb21pbmF0b3JzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3
ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgZml4dXBCbG9jayhibG9jayk7CiAg
ICAgICAgIAotICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBhcmd1bWVudHNWZWN0b3IgOiBtX2dyYXBoLm1fZW50cnlwb2ludFRv
QXJndW1lbnRzLnZhbHVlcygpKQorICAgICAgICAgICAgY2xlYW5WYXJpYWJsZXMoYXJndW1lbnRz
VmVjdG9yKTsKIAogICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgUGhhbnRvbS9DaGVjayBjbGVh
bi11cC4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJs
b2NrcygpOyBibG9ja0luZGV4LS07KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDggKzk1LDggQEAgVmVjdG9yPERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYgogICAg
IGR1bXBIZWFkZXIob3V0LCBsaW5rQnVmZmVyKTsKICAgICBhcHBlbmQocmVzdWx0LCBvdXQsIHBy
ZXZpb3VzT3JpZ2luKTsKICAgICAKLSAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRvcnMoKTsKLSAg
ICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9t
aW5hdG9ycygpOworICAgIG1fZ3JhcGguZW5zdXJlQ1BTTmF0dXJhbExvb3BzKCk7CiAgICAgCiAg
ICAgY29uc3QgY2hhciogcHJlZml4ID0gIiAgICAiOwogICAgIGNvbnN0IGNoYXIqIGRpc2Fzc2Vt
Ymx5UHJlZml4ID0gIiAgICAgICAgIjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5Nyw3IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRGcm9tSlNNYXBC
dWNrZXQ6CiAgICAgY2FzZSBJc05vbkVtcHR5TWFwQnVja2V0OgogICAgIGNhc2UgVW5yZWFjaGFi
bGU6CisgICAgY2FzZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRy
eUxvY2FsOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3Jz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb21pbmF0b3Jz
LmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9t
aW5hdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDE2ICszNSwzMiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIERvbWluYXRvcnMgOiBwdWJs
aWMgV1RGOjpEb21pbmF0b3JzPENGRz4gewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+Citj
bGFzcyBEb21pbmF0b3JzIDogcHVibGljIFdURjo6RG9taW5hdG9yczxDRkdLaW5kPiB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoRG9taW5hdG9ycyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgRG9taW5hdG9ycyhHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDog
V1RGOjpEb21pbmF0b3JzPENGRz4oKmdyYXBoLm1fY2ZnKQorICAgICAgICA6IFdURjo6RG9taW5h
dG9yczxDRkdLaW5kPihzZWxlY3RDRkc8Q0ZHS2luZD4oZ3JhcGgpKQogICAgIHsKICAgICB9CiB9
OwogCit1c2luZyBTU0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+OwordXNpbmcgQ1BT
RG9taW5hdG9ycyA9IERvbWluYXRvcnM8Q1BTQ0ZHPjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFQsIENQU0NG
Rz46OnZhbHVlPjo6dHlwZT4KK0NQU0RvbWluYXRvcnMmIGVuc3VyZURvbWluYXRvcnNGb3JDRkco
R3JhcGgmIGdyYXBoKQoreworICAgIHJldHVybiBncmFwaC5lbnN1cmVDUFNEb21pbmF0b3JzKCk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxULCBTU0FDRkc+Ojp2YWx1ZT46OnR5cGU+CitTU0FEb21pbmF0
b3JzJiBlbnN1cmVEb21pbmF0b3JzRm9yQ0ZHKEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4g
Z3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRWRnZURvbWluYXRlcy5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2VEb21pbmF0ZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTEgKzQwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQogICAg
ICAgICAsIG1fcmVzdWx0KHRydWUpCiAgICAgeworICAgICAgICBBU1NFUlQoZ3JhcGgubV9mb3Jt
ID09IFNTQSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgb3BlcmF0b3IoKShOb2RlKiwgRWRnZSBl
ZGdlKQogICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBtX2dyYXBoLm1fZG9taW5hdG9ycy0+
ZG9taW5hdGVzKGVkZ2Uubm9kZSgpLT5vd25lciwgbV9ibG9jayk7CisgICAgICAgIGJvb2wgcmVz
dWx0ID0gbV9ncmFwaC5tX3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyhlZGdlLm5vZGUoKS0+b3du
ZXIsIG1fYmxvY2spOwogICAgICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICAgICAgZGF0YUxv
ZygKICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgaWYgIiwgZWRnZSwgIiBpbiAiLCAqZWRnZS5u
b2RlKCktPm93bmVyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAxLDYgKzIwMDEsNyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIENoZWNrVHJhcHM6CiAgICAgICAgIGNhc2UgVW5yZWFjaGFi
bGU6CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgICAgIGNhc2UgRXh0
cmFjdENhdGNoTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92
SGludDoKICAgICAgICAgY2FzZSBab21iaWVIaW50OgpAQCAtMzE5Niw2ICszMTk3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4Rm9yQ2hlY2tzICE9IFVJTlRfTUFYKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5pc051bWJlckNvbnN0YW50KCkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEZvckNoZWNrcywg
U3BlY0J5dGVjb2RlRG91YmxlLCBEb3VibGVDb25zdGFudCwgb3JpZ2luRm9yQ2hlY2tzLApAQCAt
MzIyNiw2ICszMjI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChl
ZGdlLT5oYXNJbnQ1MlJlc3VsdCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaW5kZXhGb3JD
aGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkZ2UtPmlz
QW55SW50Q29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4Rm9yQ2hlY2tzLCBTcGVjQW55SW50LCBJbnQ1MkNvbnN0YW50LCBvcmlnaW5Gb3JD
aGVja3MsCkBAIC0zMjUyLDYgKzMyNTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSAmJiAhZWRnZS0+aGFzSW50NTJSZXN1
bHQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4Rm9yQ2hlY2tzICE9IFVJTlRfTUFY
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5oYXNEb3VibGVSZXN1bHQoKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1faW5zZXJ0aW9uU2V0Lmlu
c2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Rm9yQ2hlY2tz
LCBTcGVjQnl0ZWNvZGVEb3VibGUsIFZhbHVlUmVwLCBvcmlnaW5Gb3JDaGVja3MsCkBAIC0zMjkz
LDYgKzMyOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQoaW5kZXhGb3JDaGVja3MgIT0gVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEZvckNoZWNrcywgU3BlY05vbmUsIENoZWNrLCBvcmlnaW5Gb3JDaGVja3MsIGVkZ2Up
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9ybWF0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaEZvcm1hdC5oCShy
ZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoRm9y
bWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogCi1lbnVtIEZsdXNoRm9ybWF0IHsKK2VudW0gRmx1c2hGb3JtYXQg
OiB1aW50OF90IHsKICAgICBEZWFkRmx1c2gsCiAgICAgRmx1c2hlZEludDMyLAogICAgIEZsdXNo
ZWRJbnQ1MiwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZp
c2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIK
ICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHTmF0dXJhbExvb3BzLmgiCi0j
aW5jbHVkZSAiREZHUHJlUG9zdE51bWJlcmluZy5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNj
ZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZUR1bXAuaCIKQEAgLTczLDcgKzcyLDcgQEAgR3JhcGg6Okdy
YXBoKFZNJiB2bSwgUGxhbiYgcGxhbikKICAgICAsIG1fcGxhbihwbGFuKQogICAgICwgbV9jb2Rl
QmxvY2sobV9wbGFuLmNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhtX2NvZGVCbG9j
ay0+YWx0ZXJuYXRpdmUoKSkKLSAgICAsIG1fY2ZnKHN0ZDo6bWFrZV91bmlxdWU8Q0ZHPigqdGhp
cykpCisgICAgLCBtX3NzYUNGRyhzdGQ6Om1ha2VfdW5pcXVlPFNTQUNGRz4oKnRoaXMpKQogICAg
ICwgbV9uZXh0TWFjaGluZUxvY2FsKDApCiAgICAgLCBtX2ZpeHBvaW50U3RhdGUoQmVmb3JlRml4
cG9pbnQpCiAgICAgLCBtX3N0cnVjdHVyZVJlZ2lzdHJhdGlvblN0YXRlKEhhdmVOb3RTdGFydGVk
UmVnaXN0ZXJpbmcpCkBAIC00MDksOSArNDA4LDEzIEBAIGJvb2wgR3JhcGg6OnRlcm1pbmFsc0Fy
ZVZhbGlkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94
TG9vcE5vZGUoY29uc3QgQ1BTQ0ZHOjpOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLm5vZGUoKTsg
fQorc3RhdGljIEJhc2ljQmxvY2sqIHVuYm94TG9vcE5vZGUoQmFzaWNCbG9jayogYmxvY2spIHsg
cmV0dXJuIGJsb2NrOyB9CisKIHZvaWQgR3JhcGg6OmR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIEJhc2ljQmxvY2sqIGJsb2NrLCBQaGlOb2RlRHVt
cE1vZGUgcGhpTm9kZUR1bXBNb2RlLCBEdW1wQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBvdXQu
cHJpbnQocHJlZml4LCAiQmxvY2sgIiwgKmJsb2NrLCAiICgiLCBpbkNvbnRleHQoYmxvY2stPmF0
KDApLT5vcmlnaW4uc2VtYW50aWMsIGNvbnRleHQpLCAiKToiLCBibG9jay0+aXNSZWFjaGFibGUg
PyAiIiA6ICIgKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCki
IDogIiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAiLCAqYmxvY2ssICIg
KCIsIGluQ29udGV4dChibG9jay0+YXQoMCktPm9yaWdpbi5zZW1hbnRpYywgY29udGV4dCksICIp
OiIsCisgICAgICAgIGJsb2NrLT5pc1JlYWNoYWJsZSA/ICIiIDogIiAoc2tpcHBlZCkiLCBibG9j
ay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgYmxvY2stPmlzQ2F0Y2hFbnRy
eXBvaW50ID8gIiAoQ2F0Y2ggRW50cnlwb2ludCkiIDogIiIsICJcbiIpOwogICAgIGlmIChibG9j
ay0+ZXhlY3V0aW9uQ291bnQgPT0gYmxvY2stPmV4ZWN1dGlvbkNvdW50KQogICAgICAgICBvdXQu
cHJpbnQocHJlZml4LCAiICBFeGVjdXRpb24gY291bnQ6ICIsIGJsb2NrLT5leGVjdXRpb25Db3Vu
dCwgIlxuIik7CiAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwpAQCAt
NDIyLDE4ICs0MjUsMjYgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50U3RyZWFt
JgogICAgIGlmIChibG9jay0+dGVybWluYWwoKSkgewogICAgICAgICBmb3IgKEJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgIG91dC5wcmlu
dCgiICIsICpzdWNjZXNzb3IpOwotICAgICAgICAgICAgaWYgKG1fcHJlUG9zdE51bWJlcmluZykK
LSAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAoIiwgbV9wcmVQb3N0TnVtYmVyaW5nLT5lZGdl
S2luZChibG9jaywgc3VjY2Vzc29yKSwgIikiKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAg
ICAgICBvdXQucHJpbnQoIiA8aW52YWxpZD4iKTsKICAgICBvdXQucHJpbnQoIlxuIik7Ci0gICAg
aWYgKG1fZG9taW5hdG9ycyAmJiB0ZXJtaW5hbHNBcmVWYWxpZCgpKSB7Ci0gICAgICAgIG91dC5w
cmludChwcmVmaXgsICIgIERvbWluYXRlZCBieTogIiwgbV9kb21pbmF0b3JzLT5kb21pbmF0b3Jz
T2YoYmxvY2spLCAiXG4iKTsKLSAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVz
OiAiLCBtX2RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7Ci0gICAg
ICAgIG91dC5wcmludChwcmVmaXgsICIgIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0
b3JzLT5kb21pbmFuY2VGcm9udGllck9mKGJsb2NrKSwgIlxuIik7Ci0gICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIEl0ZXJhdGVkIERvbWluYW5jZSBGcm9udGllcjogIiwgbV9kb21pbmF0b3Jz
LT5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoQmxvY2tMaXN0KDEsIGJsb2NrKSksICJcbiIp
OworCisgICAgYXV0byBwcmludERvbWluYXRvcnMgPSBbJl0gKGF1dG8mIGRvbWluYXRvcnMpIHsK
KyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hdGVkIGJ5OiAiLCBkb21pbmF0b3Jz
LmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOworICAgICAgICBvdXQucHJpbnQocHJlZml4LCAi
ICBEb21pbmF0ZXM6ICIsIGRvbWluYXRvcnMuYmxvY2tzRG9taW5hdGVkQnkoYmxvY2spLCAiXG4i
KTsKKyAgICAgICAgb3V0LnByaW50KHByZWZpeCwgIiAgRG9taW5hbmNlIEZyb250aWVyOiAiLCBk
b21pbmF0b3JzLmRvbWluYW5jZUZyb250aWVyT2YoYmxvY2spLCAiXG4iKTsKKyAgICAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgSXRlcmF0ZWQgRG9taW5hbmNlIEZyb250aWVyOiAiLAorICAgICAg
ICAgICAgZG9taW5hdG9ycy5pdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YodHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGRvbWluYXRvcnMpPjo6dHlwZTo6TGlzdCB7IGJs
b2NrIH0pLCAiXG4iKTsKKyAgICB9OworCisgICAgaWYgKHRlcm1pbmFsc0FyZVZhbGlkKCkpIHsK
KyAgICAgICAgaWYgKG1fc3NhRG9taW5hdG9ycykKKyAgICAgICAgICAgIHByaW50RG9taW5hdG9y
cygqbV9zc2FEb21pbmF0b3JzKTsKKyAgICAgICAgZWxzZSBpZiAobV9jcHNEb21pbmF0b3JzKQor
ICAgICAgICAgICAgcHJpbnREb21pbmF0b3JzKCptX2Nwc0RvbWluYXRvcnMpOwogICAgIH0KKwog
ICAgIGlmIChtX2JhY2t3YXJkc0RvbWluYXRvcnMgJiYgdGVybWluYWxzQXJlVmFsaWQoKSkgewog
ICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzIGJ5OiAiLCBt
X2JhY2t3YXJkc0RvbWluYXRvcnMtPmRvbWluYXRvcnNPZihibG9jayksICJcbiIpOwogICAgICAg
ICBvdXQucHJpbnQocHJlZml4LCAiICBCYWNrd2FyZHMgZG9taW5hdGVzOiAiLCBtX2JhY2t3YXJk
c0RvbWluYXRvcnMtPmJsb2Nrc0RvbWluYXRlZEJ5KGJsb2NrKSwgIlxuIik7CkBAIC00NDYsMjkg
KzQ1NywzMyBAQCB2b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiAgICAg
ICAgIH0KICAgICAgICAgb3V0LnByaW50KCJcbiIpOwogICAgIH0KLSAgICBpZiAobV9wcmVQb3N0
TnVtYmVyaW5nKQotICAgICAgICBvdXQucHJpbnQocHJlZml4LCAiICBQcmUvUG9zdCBOdW1iZXJp
bmc6ICIsIG1fcHJlUG9zdE51bWJlcmluZy0+cHJlTnVtYmVyKGJsb2NrKSwgIi8iLCBtX3ByZVBv
c3ROdW1iZXJpbmctPnBvc3ROdW1iZXIoYmxvY2spLCAiXG4iKTsKLSAgICBpZiAobV9uYXR1cmFs
TG9vcHMpIHsKLSAgICAgICAgaWYgKGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9uYXR1cmFs
TG9vcHMtPmhlYWRlck9mKGJsb2NrKSkgeworCisgICAgYXV0byBwcmludE5hdHVyYWxMb29wcyA9
IFsmXSAoYXV0byYgbmF0dXJhbExvb3BzKSB7CisgICAgICAgIGlmIChjb25zdCBhdXRvKiBsb29w
ID0gbmF0dXJhbExvb3BzLT5oZWFkZXJPZihibG9jaykpIHsKICAgICAgICAgICAgIG91dC5wcmlu
dChwcmVmaXgsICIgIExvb3AgaGVhZGVyLCBjb250YWluczoiKTsKICAgICAgICAgICAgIFZlY3Rv
cjxCbG9ja0luZGV4PiBzb3J0ZWRCbG9ja0xpc3Q7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbG9vcC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAgc29ydGVkQmxv
Y2tMaXN0LmFwcGVuZChsb29wLT5hdChpKS0+aW5kZXgpOworICAgICAgICAgICAgICAgIHNvcnRl
ZEJsb2NrTGlzdC5hcHBlbmQodW5ib3hMb29wTm9kZShsb29wLT5hdChpKSktPmluZGV4KTsKICAg
ICAgICAgICAgIHN0ZDo6c29ydChzb3J0ZWRCbG9ja0xpc3QuYmVnaW4oKSwgc29ydGVkQmxvY2tM
aXN0LmVuZCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzb3J0ZWRC
bG9ja0xpc3Quc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIyIsIHNv
cnRlZEJsb2NrTGlzdFtpXSk7CiAgICAgICAgICAgICBvdXQucHJpbnQoIlxuIik7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIFZlY3Rvcjxjb25zdCBOYXR1cmFsTG9vcCo+IGNvbnRhaW5p
bmdMb29wcyA9Ci0gICAgICAgICAgICBtX25hdHVyYWxMb29wcy0+bG9vcHNPZihibG9jayk7Cisg
ICAgICAgIGF1dG8gY29udGFpbmluZ0xvb3BzID0gbmF0dXJhbExvb3BzLT5sb29wc09mKGJsb2Nr
KTsKICAgICAgICAgaWYgKCFjb250YWluaW5nTG9vcHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBvdXQucHJpbnQocHJlZml4LCAiICBDb250YWluaW5nIGxvb3AgaGVhZGVyczoiKTsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb250YWluaW5nTG9vcHMuc2l6ZSgpOyAr
K2kpCi0gICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIiwgKmNvbnRhaW5pbmdMb29wc1tpXS0+
aGVhZGVyKCkpOworICAgICAgICAgICAgICAgIG91dC5wcmludCgiICIsICp1bmJveExvb3BOb2Rl
KGNvbnRhaW5pbmdMb29wc1tpXS0+aGVhZGVyKCkpKTsKICAgICAgICAgICAgIG91dC5wcmludCgi
XG4iKTsKICAgICAgICAgfQotICAgIH0KKyAgICB9OworCisgICAgaWYgKG1fc3NhTmF0dXJhbExv
b3BzKQorICAgICAgICBwcmludE5hdHVyYWxMb29wcyhtX3NzYU5hdHVyYWxMb29wcyk7CisgICAg
ZWxzZSBpZiAobV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIHByaW50TmF0dXJhbExvb3BzKG1f
Y3BzTmF0dXJhbExvb3BzKTsKKwogICAgIGlmICghYmxvY2stPnBoaXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG91dC5wcmludChwcmVmaXgsICIgIFBoaSBOb2RlczoiKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBibG9jay0+cGhpcy5zaXplKCk7ICsraSkgewpAQCAtNTAyLDggKzUx
NywxMCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIER1bXBDCiAgICAgb3V0
LnByaW50KCIgIEZpeHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIs
IG1fZm9ybSwgIjsgVW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsg
UmVmIGNvdW50IHN0YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOwogICAgIGlmIChtX2Zv
cm0gPT0gU1NBKQogICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlz
dER1bXAobV9hcmd1bWVudEZvcm1hdHMpLCAiXG4iKTsKLSAgICBlbHNlCi0gICAgICAgIG91dC5w
cmludCgiICBBcmd1bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CisgICAg
ZWxzZSB7CisgICAgICAgIGZvciAoYXV0byBwYWlyIDogbV9lbnRyeXBvaW50VG9Bcmd1bWVudHMp
CisgICAgICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnRzIGZvciBibG9jayMiLCBwYWlyLmtl
eS0+aW5kZXgsICI6ICIsIGxpc3REdW1wKHBhaXIudmFsdWUpLCAiXG4iKTsKKyAgICB9CiAgICAg
b3V0LnByaW50KCJcbiIpOwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKQEAg
LTY0MCw4ICs2NTcsMTAgQEAgdm9pZCBHcmFwaDo6aGFuZGxlU3VjY2Vzc29yKFZlY3RvcjxCYXNp
Ywogdm9pZCBHcmFwaDo6ZGV0ZXJtaW5lUmVhY2hhYmlsaXR5KCkKIHsKICAgICBWZWN0b3I8QmFz
aWNCbG9jayosIDE2PiB3b3JrbGlzdDsKLSAgICB3b3JrbGlzdC5hcHBlbmQoYmxvY2soMCkpOwot
ICAgIGJsb2NrKDApLT5pc1JlYWNoYWJsZSA9IHRydWU7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBl
bnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5pc1JlYWNo
YWJsZSA9IHRydWU7CisgICAgICAgIHdvcmtsaXN0LmFwcGVuZChlbnRyeXBvaW50KTsKKyAgICB9
CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgQmFzaWNCbG9jayog
YmxvY2sgPSB3b3JrbGlzdC50YWtlTGFzdCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9jay0+bnVtU3VjY2Vzc29ycygpOyBpLS07KQpAQCAtNzk4LDkgKzgxNywxMCBAQCB2b2lkIEdy
YXBoOjpraWxsVW5yZWFjaGFibGVCbG9ja3MoKQogCiB2b2lkIEdyYXBoOjppbnZhbGlkYXRlQ0ZH
KCkKIHsKLSAgICBtX2RvbWluYXRvcnMgPSBudWxscHRyOwotICAgIG1fbmF0dXJhbExvb3BzID0g
bnVsbHB0cjsKLSAgICBtX3ByZVBvc3ROdW1iZXJpbmcgPSBudWxscHRyOworICAgIG1fY3BzRG9t
aW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9zc2FEb21pbmF0b3JzID0gbnVsbHB0cjsKKyAgICBt
X2Nwc05hdHVyYWxMb29wcyA9IG51bGxwdHI7CisgICAgbV9zc2FOYXR1cmFsTG9vcHMgPSBudWxs
cHRyOwogICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBudWxscHRyOwogICAgIG1f
YmFja3dhcmRzRG9taW5hdG9ycyA9IG51bGxwdHI7CiAgICAgbV9iYWNrd2FyZHNDRkcgPSBudWxs
cHRyOwpAQCAtODUwLDEyICs4NzAsMzcgQEAgQmxvY2tMaXN0IEdyYXBoOjpibG9ja3NJblByZU9y
ZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIEJsb2NrV29ya2xpc3Qgd29ya2xp
c3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBl
bnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29ya2xpc3QucHVzaChlbnRyeXBv
aW50KTsKICAgICB3aGlsZSAoQmFzaWNCbG9jayogYmxvY2sgPSB3b3JrbGlzdC5wb3AoKSkgewog
ICAgICAgICByZXN1bHQuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmxvY2stPm51bVN1Y2Nlc3NvcnMoKTsgaS0tOykKICAgICAgICAgICAgIHdvcmtsaXN0LnB1c2go
YmxvY2stPnN1Y2Nlc3NvcihpKSk7CiAgICAgfQorCisgICAgaWYgKHZhbGlkYXRpb25FbmFibGVk
KCkpIHsKKyAgICAgICAgLy8gV2hlbiBpdGVyYXRpbmcgb3ZlciBwcmUgb3JkZXIsIHdlIHNob3Vs
ZCBzZWUgZG9taW5hdG9ycworICAgICAgICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUu
CisgICAgICAgIGF1dG8gdmFsaWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytp
KSB7CisgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAg
ICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikp
CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpIDwgaik7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmIChtX2Zv
cm0gPT0gU1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0ZVJl
c3VsdHMoZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dmFsaWRhdGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7CisgICAgfQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTg2Myw3ICs5MDgsOCBAQCBCbG9ja0xpc3QgR3JhcGg6OmJsb2Nr
c0luUG9zdE9yZGVyKCkKIHsKICAgICBCbG9ja0xpc3QgcmVzdWx0OwogICAgIFBvc3RPcmRlckJs
b2NrV29ya2xpc3Qgd29ya2xpc3Q7Ci0gICAgd29ya2xpc3QucHVzaChibG9jaygwKSk7CisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBlbnRyeXBvaW50IDogbV9lbnRyeXBvaW50cykKKyAgICAgICAgd29y
a2xpc3QucHVzaChlbnRyeXBvaW50KTsKICAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9
IHdvcmtsaXN0LnBvcCgpKSB7CiAgICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewogICAgICAg
ICBjYXNlIFZpc2l0T3JkZXI6OlByZToKQEAgLTg3Niw2ICs5MjIsMzEgQEAgQmxvY2tMaXN0IEdy
YXBoOjpibG9ja3NJblBvc3RPcmRlcigpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KKworICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8gdmFs
aWRhdGVSZXN1bHRzID0gWyZdIChhdXRvJiBkb21pbmF0b3JzKSB7CisgICAgICAgICAgICAvLyBX
aGVuIGl0ZXJhdGluZyBvdmVyIHJldmVyc2UgcG9zdCBvcmRlciwgd2Ugc2hvdWxkIHNlZSBkb21p
bmF0b3JzCisgICAgICAgICAgICAvLyBiZWZvcmUgdGhpbmdzIHRoZXkgZG9taW5hdGUuCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgQmFzaWNCbG9jayogYSA9IHJlc3VsdFtpXTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWEpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCByZXN1bHQuc2l6ZSgpOyArK2opIHsKKyAgICAgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogYiA9IHJlc3VsdFtqXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFiIHx8IGEgPT0gYikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZG9taW5hdG9ycy5kb21pbmF0ZXMoYSwgYikpCisgICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpID4gaik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmIChtX2Zvcm0gPT0g
U1NBIHx8IG1faXNJblNTQUNvbnZlcnNpb24pCisgICAgICAgICAgICB2YWxpZGF0ZVJlc3VsdHMo
ZW5zdXJlU1NBRG9taW5hdG9ycygpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdmFsaWRh
dGVSZXN1bHRzKGVuc3VyZUNQU0RvbWluYXRvcnMoKSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMTQ3MiwzMCArMTU0Myw0NCBAQCB2b2lkIEdyYXBoOjpsb2dBc3NlcnRp
b25GYWlsdXJlKAogICAgIGxvZ0RGR0Fzc2VydGlvbkZhaWx1cmUoKnRoaXMsIHRvQ1N0cmluZygi
V2hpbGUgaGFuZGxpbmcgYmxvY2sgIiwgcG9pbnRlckR1bXAoYmxvY2spLCAiXG5cbiIpLCBmaWxl
LCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsKIH0KIAotRG9taW5hdG9ycyYgR3JhcGg6OmVu
c3VyZURvbWluYXRvcnMoKQorQ1BTRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZUNQU0RvbWluYXRv
cnMoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fZm9ybSAhPSBTU0EgJiYgIW1faXNJblNTQUNv
bnZlcnNpb24pOworICAgIGlmICghbV9jcHNEb21pbmF0b3JzKQorICAgICAgICBtX2Nwc0RvbWlu
YXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPENQU0RvbWluYXRvcnM+KCp0aGlzKTsKKyAgICByZXR1
cm4gKm1fY3BzRG9taW5hdG9yczsKK30KKworU1NBRG9taW5hdG9ycyYgR3JhcGg6OmVuc3VyZVNT
QURvbWluYXRvcnMoKQogewotICAgIGlmICghbV9kb21pbmF0b3JzKQotICAgICAgICBtX2RvbWlu
YXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPERvbWluYXRvcnM+KCp0aGlzKTsKLSAgICByZXR1cm4g
Km1fZG9taW5hdG9yczsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Zvcm0gPT0gU1NBIHx8IG1faXNJ
blNTQUNvbnZlcnNpb24pOworICAgIGlmICghbV9zc2FEb21pbmF0b3JzKQorICAgICAgICBtX3Nz
YURvbWluYXRvcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNTQURvbWluYXRvcnM+KCp0aGlzKTsKKyAg
ICByZXR1cm4gKm1fc3NhRG9taW5hdG9yczsKIH0KIAotUHJlUG9zdE51bWJlcmluZyYgR3JhcGg6
OmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKQorQ1BTTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJl
Q1BTTmF0dXJhbExvb3BzKCkKIHsKLSAgICBpZiAoIW1fcHJlUG9zdE51bWJlcmluZykKLSAgICAg
ICAgbV9wcmVQb3N0TnVtYmVyaW5nID0gc3RkOjptYWtlX3VuaXF1ZTxQcmVQb3N0TnVtYmVyaW5n
PigqdGhpcyk7Ci0gICAgcmV0dXJuICptX3ByZVBvc3ROdW1iZXJpbmc7CisgICAgUkVMRUFTRV9B
U1NFUlQobV9mb3JtICE9IFNTQSAmJiAhbV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZW5zdXJl
Q1BTRG9taW5hdG9ycygpOworICAgIGlmICghbV9jcHNOYXR1cmFsTG9vcHMpCisgICAgICAgIG1f
Y3BzTmF0dXJhbExvb3BzID0gc3RkOjptYWtlX3VuaXF1ZTxDUFNOYXR1cmFsTG9vcHM+KCp0aGlz
KTsKKyAgICByZXR1cm4gKm1fY3BzTmF0dXJhbExvb3BzOwogfQogCi1OYXR1cmFsTG9vcHMmIEdy
YXBoOjplbnN1cmVOYXR1cmFsTG9vcHMoKQorU1NBTmF0dXJhbExvb3BzJiBHcmFwaDo6ZW5zdXJl
U1NBTmF0dXJhbExvb3BzKCkKIHsKLSAgICBlbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgaWYgKCFt
X25hdHVyYWxMb29wcykKLSAgICAgICAgbV9uYXR1cmFsTG9vcHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PE5hdHVyYWxMb29wcz4oKnRoaXMpOwotICAgIHJldHVybiAqbV9uYXR1cmFsTG9vcHM7CisgICAg
UkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CisgICAgZW5zdXJlU1NBRG9taW5hdG9ycygp
OworICAgIGlmICghbV9zc2FOYXR1cmFsTG9vcHMpCisgICAgICAgIG1fc3NhTmF0dXJhbExvb3Bz
ID0gc3RkOjptYWtlX3VuaXF1ZTxTU0FOYXR1cmFsTG9vcHM+KCp0aGlzKTsKKyAgICByZXR1cm4g
Km1fc3NhTmF0dXJhbExvb3BzOwogfQogCiBCYWNrd2FyZHNDRkcmIEdyYXBoOjplbnN1cmVCYWNr
d2FyZHNDRkcoKQogeworICAgIC8vIFdlIGNvdWxkIGVhc2lseSByZWxheCB0aGlzIGluIHRoZSBm
dXR1cmUgdG8gd29yayBvdmVyIENQUywgYnV0IHRvZGF5LCBpdCdzIG9ubHkgdXNlZCBpbiBTU0Eu
CisgICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7IAogICAgIGlmICghbV9iYWNrd2Fy
ZHNDRkcpCiAgICAgICAgIG1fYmFja3dhcmRzQ0ZHID0gc3RkOjptYWtlX3VuaXF1ZTxCYWNrd2Fy
ZHNDRkc+KCp0aGlzKTsKICAgICByZXR1cm4gKm1fYmFja3dhcmRzQ0ZHOwpAQCAtMTUwMyw2ICsx
NTg4LDcgQEAgQmFja3dhcmRzQ0ZHJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzQ0ZHKAogCiBCYWNr
d2FyZHNEb21pbmF0b3JzJiBHcmFwaDo6ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpCiB7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobV9mb3JtID09IFNTQSk7CiAgICAgaWYgKCFtX2JhY2t3YXJkc0Rv
bWluYXRvcnMpCiAgICAgICAgIG1fYmFja3dhcmRzRG9taW5hdG9ycyA9IHN0ZDo6bWFrZV91bmlx
dWU8QmFja3dhcmRzRG9taW5hdG9ycz4oKnRoaXMpOwogICAgIHJldHVybiAqbV9iYWNrd2FyZHNE
b21pbmF0b3JzOwpAQCAtMTUxMCw2ICsxNTk2LDcgQEAgQmFja3dhcmRzRG9taW5hdG9ycyYgR3Jh
cGg6OmVuc3VyZUJhY2t3YQogCiBDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcyYgR3JhcGg6OmVu
c3VyZUNvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzKCkKIHsKKyAgICBSRUxFQVNFX0FTU0VSVCht
X2Zvcm0gPT0gU1NBKTsKICAgICBpZiAoIW1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMpCiAg
ICAgICAgIG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzPigqdGhpcyk7CiAgICAgcmV0dXJuICptX2NvbnRyb2xF
cXVpdmFsZW5jZUFuYWx5c2lzOwpAQCAtMTUyNyw3ICsxNjE0LDkgQEAgTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZSBHcmFwaDo6bWV0aAogICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUt
PmxvY2FsKCkuaXNBcmd1bWVudCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxvY2FsKCku
dG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUgPSBt
X2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbWF0Y2ggU2V0QXJndW1lbnQgbm9kZXMgYXQgb3RoZXIgZW50cnlwb2ludHMgYXMgd2Vs
bDoKKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTg0MQorICAgICAgICAgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKDApKS0+dmFsdWVbYXJndW1lbnRd
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+
dmFyaWFibGVBY2Nlc3NEYXRhKCkgIT0gYXJndW1lbnROb2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KSkKQEAgLTE2OTgsNiArMTc4NywxMyBAQCBib29sIEdyYXBoOjpjYW5Eb0Zhc3RTcHJlYWQoTm9k
ZSogbm9kZSwgCiAgICAgcmV0dXJuIGFsbEdvb2Q7CiB9CiAKK3ZvaWQgR3JhcGg6OmNsZWFyQ1BT
Q0ZHRGF0YSgpCit7CisgICAgbV9jcHNOYXR1cmFsTG9vcHMgPSBudWxscHRyOworICAgIG1fY3Bz
RG9taW5hdG9ycyA9IG51bGxwdHI7CisgICAgbV9jcHNDRkcgPSBudWxscHRyOworfQorCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFz
cyBTaW5nbGVSb290R3JhcGg7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxv
Y2s7CkBAIC01NSwxNCArNTksMjEgQEAgbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBCYWNrd2FyZHND
Rkc7CiBjbGFzcyBCYWNrd2FyZHNEb21pbmF0b3JzOwogY2xhc3MgQ0ZHOworY2xhc3MgQ1BTQ0ZH
OwogY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM7Ci1jbGFzcyBEb21pbmF0b3JzOwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIERvbWluYXRvcnM7Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgRmxvd0luZGV4aW5nOwotY2xhc3MgTmF0
dXJhbExvb3BzOwotY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKLQogdGVtcGxhdGU8dHlwZW5hbWU+
IGNsYXNzIEZsb3dNYXA7CiAKK3VzaW5nIEFyZ3VtZW50c1ZlY3RvciA9IFZlY3RvcjxOb2RlKiwg
OD47CisKK3VzaW5nIFNTQUNGRyA9IENGRzsKK3VzaW5nIENQU0RvbWluYXRvcnMgPSBEb21pbmF0
b3JzPENQU0NGRz47Cit1c2luZyBTU0FEb21pbmF0b3JzID0gRG9taW5hdG9yczxTU0FDRkc+Owor
dXNpbmcgQ1BTTmF0dXJhbExvb3BzID0gTmF0dXJhbExvb3BzPENQU0NGRz47Cit1c2luZyBTU0FO
YXR1cmFsTG9vcHMgPSBOYXR1cmFsTG9vcHM8U1NBQ0ZHPjsKKwogI2RlZmluZSBERkdfTk9ERV9E
T19UT19DSElMRFJFTihncmFwaCwgbm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAgICAgICAgXAog
ICAgICAgICBOb2RlKiBfbm9kZSA9IChub2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoX25vZGUtPmZsYWdzKCkgJiBOb2RlSGFzVmFy
QXJncykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtOTAxLDI3ICs5MTIsNDkgQEAg
cHVibGljOgogCiAgICAgYm9vbCBoYXNEZWJ1Z2dlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2hhc0RlYnVnZ2VyRW5hYmxlZDsgfQogCi0gICAgRG9taW5hdG9ycyYgZW5zdXJlRG9taW5hdG9y
cygpOwotICAgIFByZVBvc3ROdW1iZXJpbmcmIGVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKLSAg
ICBOYXR1cmFsTG9vcHMmIGVuc3VyZU5hdHVyYWxMb29wcygpOworICAgIENQU0RvbWluYXRvcnMm
IGVuc3VyZUNQU0RvbWluYXRvcnMoKTsKKyAgICBTU0FEb21pbmF0b3JzJiBlbnN1cmVTU0FEb21p
bmF0b3JzKCk7CisgICAgQ1BTTmF0dXJhbExvb3BzJiBlbnN1cmVDUFNOYXR1cmFsTG9vcHMoKTsK
KyAgICBTU0FOYXR1cmFsTG9vcHMmIGVuc3VyZVNTQU5hdHVyYWxMb29wcygpOwogICAgIEJhY2t3
YXJkc0NGRyYgZW5zdXJlQmFja3dhcmRzQ0ZHKCk7CiAgICAgQmFja3dhcmRzRG9taW5hdG9ycyYg
ZW5zdXJlQmFja3dhcmRzRG9taW5hdG9ycygpOwogICAgIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5
c2lzJiBlbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCi0gICAgLy8gVGhpcyBm
dW5jdGlvbiBvbmx5IG1ha2VzIHNlbnNlIHRvIGNhbGwgYWZ0ZXIgYnl0ZWNvZGUgcGFyc2luZwor
ICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBvbmx5IG1ha2VzIHNlbnNlIHRvIGNhbGwgYWZ0ZXIgYnl0
ZWNvZGUgcGFyc2luZwogICAgIC8vIGJlY2F1c2UgaXQgcXVlcmllcyB0aGUgbV9oYXNFeGNlcHRp
b25IYW5kbGVycyBib29sZWFuIHdob3NlIHZhbHVlCiAgICAgLy8gaXMgb25seSBmdWxseSBkZXRl
cm1pbmVkIGFmdGVyIGJ5dGNvZGUgcGFyc2luZy4KKyAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlv
bkluTWFjaGluZUZyYW1lKENvZGVPcmlnaW4gY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIENv
ZGVPcmlnaW4gaWdub3JlZDsKKyAgICAgICAgSGFuZGxlckluZm8qIGlnbm9yZWQyOworICAgICAg
ICByZXR1cm4gd2lsbENhdGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUoY29kZU9yaWdpbiwgaWdu
b3JlZCwgaWdub3JlZDIpOworICAgIH0KICAgICBib29sIHdpbGxDYXRjaEV4Y2VwdGlvbkluTWFj
aGluZUZyYW1lKENvZGVPcmlnaW4sIENvZGVPcmlnaW4mIG9wQ2F0Y2hPcmlnaW5PdXQsIEhhbmRs
ZXJJbmZvKiYgY2F0Y2hIYW5kbGVyT3V0KTsKICAgICAKICAgICBib29sIG5lZWRzU2NvcGVSZWdp
c3RlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGVidWdnZXJFbmFibGVkIHx8IG1fY29kZUJsb2Nr
LT51c2VzRXZhbCgpOyB9CiAgICAgYm9vbCBuZWVkc0ZsdXNoZWRUaGlzKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2stPnVzZXNFdmFsKCk7IH0KIAorICAgIHZvaWQgY2xlYXJDUFNDRkdEYXRh
KCk7CisKKyAgICBib29sIGlzRW50cnlwb2ludChCYXNpY0Jsb2NrKiBibG9jaykgY29uc3QKKyAg
ICB7CisgICAgICAgIGlmIChtX2VudHJ5cG9pbnRzLnNpemUoKSA8PSA0KSB7CisgICAgICAgICAg
ICBib29sIHJlc3VsdCA9IG1fZW50cnlwb2ludHMuY29udGFpbnMoYmxvY2spOworICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdCA9PSBtX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5jb250YWlucyhibG9j
aykpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBib29s
IHJlc3VsdCA9IG1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNvbnRhaW5zKGJsb2NrKTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdCA9PSBtX2VudHJ5cG9pbnRzLmNvbnRhaW5zKGJsb2NrKSk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9w
bGFuOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2Zp
bGVkQmxvY2s7CiAgICAgCi0gICAgVmVjdG9yPCBSZWZQdHI8QmFzaWNCbG9jaz4gLCA4PiBtX2Js
b2NrczsKKyAgICBWZWN0b3I8UmVmUHRyPEJhc2ljQmxvY2s+LCA4PiBtX2Jsb2NrczsKKyAgICBW
ZWN0b3I8QmFzaWNCbG9jayosIDE+IG1fZW50cnlwb2ludHM7CiAgICAgVmVjdG9yPEVkZ2UsIDE2
PiBtX3ZhckFyZ0NoaWxkcmVuOwogCiAgICAgSGFzaE1hcDxFbmNvZGVkSlNWYWx1ZSwgRnJvemVu
VmFsdWUqLCBFbmNvZGVkSlNWYWx1ZUhhc2gsIEVuY29kZWRKU1ZhbHVlSGFzaFRyYWl0cz4gbV9m
cm96ZW5WYWx1ZU1hcDsKQEAgLTk1NiwxMSArOTg5LDExIEBAIHB1YmxpYzoKICAgICAvLwogICAg
IC8vIElmIHdlIERDRSB0aGUgQXJpdGhBZGQgYW5kIHdlIHJlbW92ZSB0aGUgaW50IGNoZWNrIG9u
IHgsIHRoZW4gdGhpcyB3b24ndCBkbyB0aGUgc2lkZQogICAgIC8vIGVmZmVjdHMuCi0gICAgVmVj
dG9yPE5vZGUqLCA4PiBtX2FyZ3VtZW50czsKKyAgICBIYXNoTWFwPEJhc2ljQmxvY2sqLCBBcmd1
bWVudHNWZWN0b3I+IG1fZW50cnlwb2ludFRvQXJndW1lbnRzOwogICAgIAogICAgIC8vIEluIENQ
UywgdGhpcyBpcyBtZWFuaW5nbGVzcy4gSW4gU1NBLCB0aGlzIGlzIHRoZSBhcmd1bWVudCBzcGVj
dWxhdGlvbiB0aGF0IHdlJ3ZlIGxvY2tlZCBpbi4KICAgICBWZWN0b3I8Rmx1c2hGb3JtYXQ+IG1f
YXJndW1lbnRGb3JtYXRzOwotICAgIAorCiAgICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNj
ZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxB
cmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAgIEJhZzxUcmFuc2l0
aW9uPiBtX3RyYW5zaXRpb25zOwpAQCAtOTgyLDEwICsxMDE1LDEyIEBAIHB1YmxpYzoKICAgICBI
YXNoU2V0PHN0ZDo6cGFpcjxKU09iamVjdCosIFByb3BlcnR5T2Zmc2V0Pj4gbV9zYWZlVG9Mb2Fk
OwogICAgIEhhc2hNYXA8UHJvcGVydHlUeXBlS2V5LCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3I+
IG1faW5mZXJyZWRUeXBlczsKICAgICBWZWN0b3I8UmVmPFNuaXBwZXQ+PiBtX2RvbUpJVFNuaXBw
ZXRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxEb21pbmF0b3JzPiBtX2RvbWluYXRvcnM7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFByZVBvc3ROdW1iZXJpbmc+IG1fcHJlUG9zdE51bWJlcmluZzsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TmF0dXJhbExvb3BzPiBtX25hdHVyYWxMb29wczsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q0ZHPiBtX2NmZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1BTRG9taW5hdG9y
cz4gbV9jcHNEb21pbmF0b3JzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0FEb21pbmF0b3JzPiBt
X3NzYURvbWluYXRvcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPENQU05hdHVyYWxMb29wcz4gbV9j
cHNOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQU5hdHVyYWxMb29wcz4gbV9z
c2FOYXR1cmFsTG9vcHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNTQUNGRz4gbV9zc2FDRkc7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPENQU0NGRz4gbV9jcHNDRkc7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEJhY2t3YXJkc0NGRz4gbV9iYWNrd2FyZHNDRkc7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2t3
YXJkc0RvbWluYXRvcnM+IG1fYmFja3dhcmRzRG9taW5hdG9yczsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q29udHJvbEVxdWl2YWxlbmNlQW5hbHlzaXM+IG1fY29udHJvbEVxdWl2YWxlbmNlQW5hbHlz
aXM7CkBAIC0xMDA5LDYgKzEwNDQsOCBAQCBwdWJsaWM6CiAgICAgUmVmQ291bnRTdGF0ZSBtX3Jl
ZkNvdW50U3RhdGU7CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKICAgICBib29sIG1f
aGFzRXhjZXB0aW9uSGFuZGxlcnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luU1NBQ29udmVy
c2lvbiB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gbV9tYXhMb2NhbHNG
b3JDYXRjaE9TUkVudHJ5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG93SW5kZXhpbmc+IG1faW5k
ZXhpbmdDYWNoZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4g
bV9hYnN0cmFjdFZhbHVlc0NhY2hlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMjIxMTA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDU0ICs5Myw2MSBAQCBzdGF0aWMgdm9pZCBzZXRMaXZl
VmFsdWVzKFZlY3RvcjxOb2RlQWJzCiAKIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRp
YWxpemUoKQogewotICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwotICAg
IHJvb3QtPmNmYVNob3VsZFJldmlzaXQgPSB0cnVlOwotICAgIHJvb3QtPmNmYUhhc1Zpc2l0ZWQg
PSBmYWxzZTsKLSAgICByb290LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOwotICAgIHJvb3Qt
PmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0SGVhZCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwot
ICAgIHJvb3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVX
YXRjaGVkOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51
bWJlck9mQXJndW1lbnRzKCk7ICsraSkgewotICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJn
dW1lbnQoaSkuY2xlYXIoKTsKLQotICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7Ci0gICAgICAg
IGlmIChtX2dyYXBoLm1fZm9ybSA9PSBTU0EpCi0gICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBo
Lm1fYXJndW1lbnRGb3JtYXRzW2ldOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwotICAgICAgICAgICAgaWYgKCFub2RlKQot
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOwotICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwot
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVz
aEZvcm1hdCgpOworICAgIGZvciAoQmFzaWNCbG9jayogZW50cnlwb2ludCA6IG1fZ3JhcGgubV9l
bnRyeXBvaW50cykgeworICAgICAgICBlbnRyeXBvaW50LT5jZmFTaG91bGRSZXZpc2l0ID0gdHJ1
ZTsKKyAgICAgICAgZW50cnlwb2ludC0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNlOworICAgICAgICBl
bnRyeXBvaW50LT5jZmFGb3VuZENvbnN0YW50cyA9IGZhbHNlOworICAgICAgICBlbnRyeXBvaW50
LT5jZmFTdHJ1Y3R1cmVDbG9iYmVyU3RhdGVBdEhlYWQgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZDsK
KyAgICAgICAgZW50cnlwb2ludC0+Y2ZhU3RydWN0dXJlQ2xvYmJlclN0YXRlQXRUYWlsID0gU3Ry
dWN0dXJlc0FyZVdhdGNoZWQ7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQubnVtYmVyT2ZBcmd1bWVudHMoKTsgKytpKSB7CisgICAgICAg
ICAgICBlbnRyeXBvaW50LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSkuY2xlYXIoKTsKKworICAg
ICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0OworICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9m
b3JtID09IFNTQSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHN1cHBvcnRpbmcg
bXVsdGlwbGUgZW50cnlwb2ludHMgaW4gdGhlIEZUTCwgd2UgbmVlZCB0byBjaGFuZ2UKKyAgICAg
ICAgICAgICAgICAvLyB3aGF0IHdlIGRvIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1f
YXJndW1lbnRGb3JtYXRzW2ldOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGVudHJ5
cG9pbnQpLT52YWx1ZVtpXTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAg
ICAgICAgICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7
CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5mbHVzaEZvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgICAgIGNhc2Ug
Rmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBlbnRy
eXBvaW50LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgorICAg
ICAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBl
KG1fZ3JhcGgsIFNwZWNDZWxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbnVsbHB0ciwgIkJhZCBmbHVzaCBmb3JtYXQgZm9yIGFyZ3VtZW50Iik7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUoU3BlY0ludDMyT25s
eSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKLSAg
ICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNCb29s
ZWFuKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgotICAg
ICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldFR5cGUobV9ncmFwaCwg
U3BlY0NlbGwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmx1c2hlZEpTVmFs
dWU6Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkubWFrZUJ5dGVj
b2RlVG9wKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJn
dW1lbnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsr
aSkgewotICAgICAgICByb290LT52YWx1ZXNBdEhlYWQubG9jYWwoaSkuY2xlYXIoKTsKLSAgICAg
ICAgcm9vdC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNsZWFyKCk7Ci0gICAgfQotICAgIGZvciAo
QmxvY2tJbmRleCBibG9ja0luZGV4ID0gMSA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2Nr
cygpOyArK2Jsb2NrSW5kZXgpIHsKLSAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBo
LmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5udW1iZXJPZkxvY2Fscygp
OyArK2kpIHsKKyAgICAgICAgICAgIGVudHJ5cG9pbnQtPnZhbHVlc0F0SGVhZC5sb2NhbChpKS5j
bGVhcigpOworICAgICAgICAgICAgZW50cnlwb2ludC0+dmFsdWVzQXRUYWlsLmxvY2FsKGkpLmNs
ZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgIGlmIChtX2dyYXBoLmlz
RW50cnlwb2ludChibG9jaykpIHsKKyAgICAgICAgICAgIC8vIFdlIGJvb3RzdHJhcHBlZCB0aGUg
ZW50cnlwb2ludHMgYWJvdmUuCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAg
ICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOwogICAgICAgICBibG9jay0+Y2ZhU2hv
dWxkUmV2aXNpdCA9IGZhbHNlOwogICAgICAgICBibG9jay0+Y2ZhSGFzVmlzaXRlZCA9IGZhbHNl
OwpAQCAtMzY0LDcgKzM3MSw3IEBAIGlubGluZSBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjpt
ZXJnZVQKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2UoYmFzaWNCbG9jaywgZGF0YS0+Y2Fz
ZXNbaV0udGFyZ2V0LmJsb2NrKTsKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQotICAg
ICAgICAKKwogICAgIGNhc2UgUmV0dXJuOgogICAgIGNhc2UgVGFpbENhbGw6CiAgICAgY2FzZSBE
aXJlY3RUYWlsQ2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2Rl
LmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCB2b2lkIEpJVENvZGU6
OnNocmlua1RvRml0KCkKICAgICBjb21tb24uc2hyaW5rVG9GaXQoKTsKICAgICBvc3JFbnRyeS5z
aHJpbmtUb0ZpdCgpOwogICAgIG9zckV4aXQuc2hyaW5rVG9GaXQoKTsKKyAgICBjYXRjaEVudHJ5
cG9pbnRzLnNocmlua1RvRml0KCk7CiAgICAgc3BlY3VsYXRpb25SZWNvdmVyeS5zaHJpbmtUb0Zp
dCgpOwogICAgIG1pbmlmaWVkREZHLnByZXBhcmVBbmRTaHJpbmsoKTsKICAgICB2YXJpYWJsZUV2
ZW50U3RyZWFtLnNocmlua1RvRml0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvZGUuaAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDMyIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIG9zckVudHJ5LCBvc3JFbnRyeS5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCiAg
ICAgICAgICAgICBnZXRPU1JFbnRyeURhdGFCeXRlY29kZUluZGV4KTsKICAgICB9CisKKyAgICBD
YXRjaEVudHJ5cG9pbnREYXRhKiBjYXRjaE9TUkVudHJ5RGF0YUZvckJ5dGVjb2RlSW5kZXgodW5z
aWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnlCaW5hcnlTZWFy
Y2g8Q2F0Y2hFbnRyeXBvaW50RGF0YSwgdW5zaWduZWQ+KAorICAgICAgICAgICAgY2F0Y2hFbnRy
eXBvaW50cywgY2F0Y2hFbnRyeXBvaW50cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgsCisgICAgICAg
ICAgICBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSogaXRlbSkgeyByZXR1cm4gaXRlbS0+
bV9ieXRlY29kZUluZGV4OyB9KTsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFsaXplQ2F0Y2hPU1JF
bnRyeXBvaW50cygpCisgICAgeworICAgICAgICBzdGQ6OnNvcnQoY2F0Y2hFbnRyeXBvaW50cy5i
ZWdpbigpLCBjYXRjaEVudHJ5cG9pbnRzLmVuZCgpLCBbXSAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50
RGF0YSYgYSwgY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgYikgeworICAgICAgICAgICAgcmV0
dXJuIGEubV9ieXRlY29kZUluZGV4IDwgYi5tX2J5dGVjb2RlSW5kZXg7CisgICAgICAgIH0pOwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdW5zaWduZWQgcHJldmlvdXNJbmRleCA9IDA7
CisgICAgICAgIGZvciAoY29uc3QgQ2F0Y2hFbnRyeXBvaW50RGF0YSYgZW50cnlwb2ludCA6IGNh
dGNoRW50cnlwb2ludHMpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcmV2aW91c0luZGV4IDwgZW50
cnlwb2ludC5tX2J5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGVu
dHJ5cG9pbnQubV9ieXRlY29kZUluZGV4OworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAg
ICB2b2lkIGFwcGVuZENhdGNoRW50cnlwb2ludCh1bnNpZ25lZCBieXRlY29kZUluZGV4LCB1bnNp
Z25lZCBtYWNoaW5lQ29kZU9mZnNldCwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9y
bWF0cykKKyAgICB7CisgICAgICAgIGNhdGNoRW50cnlwb2ludHMuYXBwZW5kKENhdGNoRW50cnlw
b2ludERhdGEgeyBieXRlY29kZUluZGV4LCBtYWNoaW5lQ29kZU9mZnNldCwgV1RGTW92ZShhcmd1
bWVudEZvcm1hdHMpIH0pOworICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBhcHBlbmRPU1JFeGl0
KGNvbnN0IE9TUkV4aXQmIGV4aXQpCiAgICAgewpAQCAtMTMyLDEwICsxNTgsMTMgQEAgcHJpdmF0
ZToKIHB1YmxpYzoKICAgICBDb21tb25EYXRhIGNvbW1vbjsKICAgICBWZWN0b3I8REZHOjpPU1JF
bnRyeURhdGE+IG9zckVudHJ5OworICAgIFZlY3RvcjxDYXRjaEVudHJ5cG9pbnREYXRhPiBjYXRj
aEVudHJ5cG9pbnRzOwogICAgIFNlZ21lbnRlZFZlY3RvcjxERkc6Ok9TUkV4aXQsIDg+IG9zckV4
aXQ7CiAgICAgVmVjdG9yPERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeT4gc3BlY3VsYXRpb25SZWNv
dmVyeTsKICAgICBERkc6OlZhcmlhYmxlRXZlbnRTdHJlYW0gdmFyaWFibGVFdmVudFN0cmVhbTsK
ICAgICBERkc6Ok1pbmlmaWVkR3JhcGggbWluaWZpZWRERkc7CisgICAgU2NyYXRjaEJ1ZmZlciog
Y2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKKwogI2lmIEVOQUJMRShGVExfSklUKQogICAgIHVpbnQ4X3Qg
bmV2ZXJFeGVjdXRlZEVudHJ5IHsgMSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
Nyw2ICszNjcsOCBAQCBzdGF0aWMgdm9pZCBlbWl0U3RhY2tPdmVyZmxvd0NoZWNrKEpJVENvCiAK
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogeworICAgIG1ha2VDYXRjaE9TUkVudHJ5QnVm
ZmVyKCk7CisKICAgICBzZXRTdGFydE9mQ29kZSgpOwogICAgIGNvbXBpbGVFbnRyeSgpOwogICAg
IG1fc3BlY3VsYXRpdmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlSklUPigqdGhpcyk7
CkBAIC00MjYsNiArNDI4LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiB7CisgICAgbWFrZUNhdGNoT1NSRW50cnlC
dWZmZXIoKTsKKwogICAgIHNldFN0YXJ0T2ZDb2RlKCk7CiAgICAgY29tcGlsZUVudHJ5KCk7CiAK
QEAgLTU1MSwxNCArNTU1LDIzIEBAIHZvaWQqIEpJVENvbXBpbGVyOjphZGRyZXNzT2ZEb3VibGVD
b25zdGEKIH0KICNlbmRpZgogCit2b2lkIEpJVENvbXBpbGVyOjpub3RpY2VDYXRjaEVudHJ5cG9p
bnQoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVhZCwg
TGlua0J1ZmZlciYgbGlua0J1ZmZlciwgVmVjdG9yPEZsdXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9y
bWF0cykKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmlzQ2F0Y2hFbnRyeXBvaW50
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChiYXNpY0Jsb2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlz
aXRlZCk7IC8vIEFuIGVudHJ5cG9pbnQgaXMgcmVhY2hhYmxlIGJ5IGRlZmluaXRpb24uCisgICAg
bV9qaXRDb2RlLT5hcHBlbmRDYXRjaEVudHJ5cG9pbnQoYmFzaWNCbG9jay5ieXRlY29kZUJlZ2lu
LCBsaW5rQnVmZmVyLm9mZnNldE9mKGJsb2NrSGVhZCksIFdURk1vdmUoYXJndW1lbnRGb3JtYXRz
KSk7Cit9CisKIHZvaWQgSklUQ29tcGlsZXI6Om5vdGljZU9TUkVudHJ5KEJhc2ljQmxvY2smIGJh
c2ljQmxvY2ssIEpJVENvbXBpbGVyOjpMYWJlbCBibG9ja0hlYWQsIExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJhc2ljQmxvY2suaXNDYXRjaEVudHJ5cG9p
bnQpOworCiAgICAgLy8gT1NSIGVudHJ5IGlzIG5vdCBhbGxvd2VkIGludG8gYmxvY2tzIGRlZW1l
ZCB1bnJlYWNoYWJsZSBieSBjb250cm9sIGZsb3cgYW5hbHlzaXMuCiAgICAgaWYgKCFiYXNpY0Js
b2NrLmludGVyc2VjdGlvbk9mQ0ZBSGFzVmlzaXRlZCkKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAKKwogICAgIE9TUkVudHJ5RGF0YSogZW50cnkgPSBtX2ppdENvZGUtPmFwcGVuZE9TUkVudHJ5
RGF0YShiYXNpY0Jsb2NrLmJ5dGVjb2RlQmVnaW4sIGxpbmtCdWZmZXIub2Zmc2V0T2YoYmxvY2tI
ZWFkKSk7Ci0gICAgCisKICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcyA9IGJhc2ljQmxvY2su
aW50ZXJzZWN0aW9uT2ZQYXN0VmFsdWVzQXRIZWFkOwogICAgICAgICAKICAgICAvLyBGaXggdGhl
IGV4cGVjdGVkIHZhbHVlczogaW4gb3VyIHByb3RvY29sLCBhIGRlYWQgdmFyaWFibGUgd2lsbCBo
YXZlIGFuIGV4cGVjdGVkCkBAIC02NzAsNiArNjgzLDE0IEBAIHZvaWQgSklUQ29tcGlsZXI6OnNl
dEVuZE9mQ29kZSgpCiAgICAgbV9kaXNhc3NlbWJsZXItPnNldEVuZE9mQ29kZShsYWJlbElnbm9y
aW5nV2F0Y2hwb2ludHMoKSk7CiB9CiAKK3ZvaWQgSklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVu
dHJ5QnVmZmVyKCkKK3sKKyAgICBpZiAobV9ncmFwaC5tX21heExvY2Fsc0ZvckNhdGNoT1NSRW50
cnkpIHsKKyAgICAgICAgdWludDMyX3QgbnVtYmVyT2ZMaXZlTG9jYWxzID0gc3RkOjptYXgoKm1f
Z3JhcGgubV9tYXhMb2NhbHNGb3JDYXRjaE9TUkVudHJ5LCAxdSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
bHdheXMgYWxsb2NhdGUgYSBub24tbnVsbCBjYXRjaE9TUkVudHJ5QnVmZmVyLgorICAgICAgICBt
X2ppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZmZXIgPSB2bSgpLT5zY3JhdGNoQnVmZmVyRm9yU2l6
ZShzaXplb2YoSlNWYWx1ZSkgKiBudW1iZXJPZkxpdmVMb2NhbHMpOworICAgIH0KK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAy
MjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9p
ZCBub3RpY2VPU1JFbnRyeShCYXNpY0Jsb2NrJiwgSklUQ29tcGlsZXI6OkxhYmVsIGJsb2NrSGVh
ZCwgTGlua0J1ZmZlciYpOworICAgIHZvaWQgbm90aWNlQ2F0Y2hFbnRyeXBvaW50KEJhc2ljQmxv
Y2smLCBKSVRDb21waWxlcjo6TGFiZWwgYmxvY2tIZWFkLCBMaW5rQnVmZmVyJiwgVmVjdG9yPEZs
dXNoRm9ybWF0PiYmIGFyZ3VtZW50Rm9ybWF0cyk7CiAgICAgCiAgICAgUmVmUHRyPEpJVENvZGU+
IGppdENvZGUoKSB7IHJldHVybiBtX2ppdENvZGU7IH0KICAgICAKQEAgLTI4NCw2ICsyODUsOCBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBhcHBlbmRFeGNlcHRpb25IYW5kbGluZ09TUkV4aXQoRXhp
dEtpbmQsIHVuc2lnbmVkIGV2ZW50U3RyZWFtSW5kZXgsIENvZGVPcmlnaW4sIEhhbmRsZXJJbmZv
KiBleGNlcHRpb25IYW5kbGVyLCBDYWxsU2l0ZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QganVtcHNUb0ZhaWwgPSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QoKSk7CiAKKyAgICB2b2lk
IG1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCk7CisKICAgICAvLyBUaGUgZGF0YWZsb3cgZ3JhcGgg
Y3VycmVudGx5IGJlaW5nIGdlbmVyYXRlZC4KICAgICBHcmFwaCYgbV9ncmFwaDsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTElDTVBoYXNlLmNwcAkocmV2aXNpb24gMjIx
MTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMSUNNUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKIAogbmFtZXNwYWNlIHsKIAordXNpbmcgTmF0dXJhbExvb3AgPSBTU0FOYXR1cmFsTG9vcDsK
Kwogc3RydWN0IExvb3BEYXRhIHsKICAgICBMb29wRGF0YSgpCiAgICAgICAgIDogcHJlSGVhZGVy
KG51bGxwdHIpCkBAIC03NCw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgbV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKICAgICAgICAg
Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBtX2dyYXBoLmVu
c3VyZU5hdHVyYWxMb29wcygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURvbWluYXRvcnMo
KTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgbV9n
cmFwaC5lbnN1cmVDb250cm9sRXF1aXZhbGVuY2VBbmFseXNpcygpOwogCiAgICAgICAgIGlmICh2
ZXJib3NlKSB7CkBAIC04Myw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3JhcGgu
ZHVtcCgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBtX2RhdGEucmVzaXplKG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOworICAgICAgICBtX2RhdGEucmVzaXplKG1f
Z3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51bUxvb3BzKCkpOwogICAgICAgICAKICAgICAgICAg
Ly8gRmlndXJlIG91dCB0aGUgc2V0IG9mIHRoaW5ncyBlYWNoIGxvb3Agd3JpdGVzIHRvLCBub3Qg
aW5jbHVkaW5nIGJsb2NrcyB0aGF0CiAgICAgICAgIC8vIGJlbG9uZyB0byBpbm5lciBsb29wcy4g
V2UgZml4IHRoaXMgbGF0ZXIuCkBAIC05OCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBpZiAoIWJsb2NrLT5jZmFIYXNWaXNpdGVkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3Jh
cGgubV9uYXR1cmFsTG9vcHMtPmlubmVyTW9zdExvb3BPZihibG9jayk7CisgICAgICAgICAgICBj
b25zdCBOYXR1cmFsTG9vcCogbG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVy
TW9zdExvb3BPZihibG9jayk7CiAgICAgICAgICAgICBpZiAoIWxvb3ApCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLT5p
bmRleCgpXTsKQEAgLTExNiwxNCArMTE4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRm9yIGVh
Y2ggbG9vcDoKICAgICAgICAgLy8gLSBJZGVudGlmeSBpdHMgcHJlLWhlYWRlci4KICAgICAgICAg
Ly8gLSBNYWtlIHN1cmUgaXRzIG91dGVyIGxvb3BzIGtub3cgd2hhdCBpdCBjbG9iYmVycy4KLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5u
dW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29w
JiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPm51
bUxvb3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3Am
IGxvb3AgPSBtX2dyYXBoLm1fc3NhTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CiAgICAg
ICAgICAgICBMb29wRGF0YSYgZGF0YSA9IG1fZGF0YVtsb29wLmluZGV4KCldOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBmb3IgKAotICAgICAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29w
KiBvdXRlckxvb3AgPSBtX2dyYXBoLm1fbmF0dXJhbExvb3BzLT5pbm5lck1vc3RPdXRlckxvb3Ao
bG9vcCk7CisgICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIG91dGVyTG9vcCA9IG1f
Z3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcChsb29wKTsKICAgICAg
ICAgICAgICAgICBvdXRlckxvb3A7Ci0gICAgICAgICAgICAgICAgb3V0ZXJMb29wID0gbV9ncmFw
aC5tX25hdHVyYWxMb29wcy0+aW5uZXJNb3N0T3V0ZXJMb29wKCpvdXRlckxvb3ApKQorICAgICAg
ICAgICAgICAgIG91dGVyTG9vcCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9z
dE91dGVyTG9vcCgqb3V0ZXJMb29wKSkKICAgICAgICAgICAgICAgICBtX2RhdGFbb3V0ZXJMb29w
LT5pbmRleCgpXS53cml0ZXMuYWRkQWxsKGRhdGEud3JpdGVzKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgQmFzaWNCbG9jayogaGVhZGVyID0gbG9vcC5oZWFkZXIoKTsKQEAgLTEzNyw3ICsx
MzksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGhlYWRlci0+cHJlZGVjZXNzb3JzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gaGVhZGVyLT5wcmVkZWNlc3NvcnNbaV07Ci0gICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoaGVhZGVyLCBw
cmVkZWNlc3NvcikpCisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9zc2FEb21pbmF0b3Jz
LT5kb21pbmF0ZXMoaGVhZGVyLCBwcmVkZWNlc3NvcikpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICAgICAgcHJlSGVhZGVyID0gcHJlZGVjZXNzb3I7CkBAIC0x
OTEsNyArMTkzLDcgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8Y29uc3QgTmF0dXJhbExvb3Aq
PiBsb29wU3RhY2s7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpIHsKLSAgICAg
ICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+
aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBs
b29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aW5uZXJNb3N0TG9vcE9mKGJsb2NrKTsK
ICAgICAgICAgICAgIGlmICghbG9vcCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIApAQCAtMTk5LDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZvciAoCiAg
ICAgICAgICAgICAgICAgY29uc3QgTmF0dXJhbExvb3AqIGN1cnJlbnQgPSBsb29wOwogICAgICAg
ICAgICAgICAgIGN1cnJlbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudCA9IG1fZ3JhcGgubV9u
YXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9vcCgqY3VycmVudCkpCisgICAgICAgICAgICAg
ICAgY3VycmVudCA9IG1fZ3JhcGgubV9zc2FOYXR1cmFsTG9vcHMtPmlubmVyTW9zdE91dGVyTG9v
cCgqY3VycmVudCkpCiAgICAgICAgICAgICAgICAgbG9vcFN0YWNrLmFwcGVuZChjdXJyZW50KTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmVtZW1iZXI6IHRoZSBsb29wIHN0YWNrIGhh
cyB0aGUgaW5uZXItbW9zdCBsb29wIGF0IGluZGV4IDAsIHNvIGlmIHdlIHdhbnQKQEAgLTMxOCw3
ICszMjAsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBiZWNhdXNlIG1vc3QgbG9vcHMgYXJlIHNt
YWxsIGFuZCBtb3N0IGJsb2NrcyBiZWxvbmcgdG8gZmV3IGxvb3BzLgogICAgICAgICBmb3IgKHVu
c2lnbmVkIGJvZHlJbmRleCA9IGxvb3AtPnNpemUoKTsgYm9keUluZGV4LS07KSB7CiAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBzdWJCbG9jayA9IGxvb3AtPmF0KGJvZHlJbmRleCk7Ci0gICAgICAg
ICAgICBjb25zdCBOYXR1cmFsTG9vcCogc3ViTG9vcCA9IG1fZ3JhcGgubV9uYXR1cmFsTG9vcHMt
PmhlYWRlck9mKHN1YkJsb2NrKTsKKyAgICAgICAgICAgIGNvbnN0IE5hdHVyYWxMb29wKiBzdWJM
b29wID0gbV9ncmFwaC5tX3NzYU5hdHVyYWxMb29wcy0+aGVhZGVyT2Yoc3ViQmxvY2spOwogICAg
ICAgICAgICAgaWYgKCFzdWJMb29wKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgQmFzaWNCbG9jayogc3ViUHJlSGVhZGVyID0gbV9kYXRhW3N1Ykxvb3AtPmluZGV4KCld
LnByZUhlYWRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZUNhdGNo
VmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMaXZlQ2F0
Y2hWYXJpYWJsZVByZXNlcnZhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lu
bGluZXMuaCIKKyNpbmNsdWRlICJERkdCbG9ja1NldC5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgi
CiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKQEAg
LTQ2LDEwOSArNDcsMTg2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcnVuKCkKICAgICB7Ci0gICAg
ICAgIGlmICghbV9ncmFwaC5tX2hhc0V4Y2VwdGlvbkhhbmRsZXJzKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBo
Lm1fZm9ybSA9PSBMb2FkU3RvcmUpOwogCi0gICAgICAgIG1fY3VycmVudEJsb2NrTGl2ZW5lc3Mu
cmVzaXplKG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fscygp
KTsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldCht
X2dyYXBoKTsKLSAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tz
SW5OYXR1cmFsT3JkZXIoKSkgewotICAgICAgICAgICAgaGFuZGxlQmxvY2soYmxvY2ssIGluc2Vy
dGlvblNldCk7Ci0gICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShibG9jayk7CisgICAg
ICAgIGlmIChtX2dyYXBoLm1faGFzRXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGZv
ciAoQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsK
KyAgICAgICAgICAgICAgICBoYW5kbGVCbG9ja0ZvclRyeUNhdGNoKGJsb2NrLCBpbnNlcnRpb25T
ZXQpOworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGJvb2wgd2lsbENhdGNoRXhjZXB0aW9uKENvZGVPcmlnaW4gb3JpZ2luKQorICAgIGJvb2wgaXNW
YWxpZEZsdXNoTG9jYXRpb24oQmFzaWNCbG9jayogc3RhcnRpbmdCbG9jaywgdW5zaWduZWQgaW5k
ZXgsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKQogICAgIHsKLSAgICAgICAgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleFRvQ2hlY2sgPSBvcmlnaW4uYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgbV9jdXJy
ZW50QmxvY2tMaXZlbmVzcy5jbGVhckFsbCgpOworICAgICAgICAvLyBUaGlzIGNvZGUgaXMgbm90
IG1lYW50IHRvIGJlIGZhc3QuIFdlIGp1c3QgdXNlIGl0IGZvciBhc3NlcnRpb25zLiBJZiB3ZSBn
b3QgbGl2ZW5lc3Mgd3JvbmcsCisgICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gd291bGQgcmV0dXJu
IGZhbHNlIGZvciBhIEZsdXNoIHRoYXQgd2UgaW5zZXJ0LgorICAgICAgICBWZWN0b3I8QmFzaWNC
bG9jayosIDQ+IHdvcmtsaXN0OworICAgICAgICBCbG9ja1NldCBzZWVuOworCisgICAgICAgIGF1
dG8gYWRkUHJlZGVjZXNzb3JzID0gWyZdIChCYXNpY0Jsb2NrKiBibG9jaykgeworICAgICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGJsb2NrLT5wcmVkZWNlc3NvcnMpIHsKKyAgICAg
ICAgICAgICAgICBib29sIGlzTmV3RW50cnkgPSBzZWVuLmFkZChibG9jayk7CisgICAgICAgICAg
ICAgICAgaWYgKGlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgICAgIHdvcmtsaXN0LmFwcGVu
ZChibG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgd2hpbGUgKDEp
IHsKLSAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gb3JpZ2lu
LmlubGluZUNhbGxGcmFtZTsKLSAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOwotICAgICAgICAgICAg
aWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVJbmRleFRvQ2hlY2spKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2F0Y2hCeXRlY29kZUluZGV4ID0gaGFuZGxlci0+dGFyZ2V0OwotICAgICAgICAgICAgICAgIG1f
Z3JhcGguZm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUoQ29kZU9yaWdpbihjYXRjaEJ5dGVjb2Rl
SW5kZXgsIGlubGluZUNhbGxGcmFtZSksIFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2tMaXZlbmVzc1tvcGVyYW5kLnRvTG9j
YWwoKV0gPSB0cnVlOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBhdXRvIGZsdXNoSXNEZWZpbml0ZWx5SW52YWxpZCA9IFsmXSAoQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICBib29sIGFsbEdv
b2QgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGluZGV4OyBpLS07ICkg
eworICAgICAgICAgICAgICAgIGlmIChibG9jay0+YXQoaSktPmFjY2Vzc2VzU3RhY2sobV9ncmFw
aCkgJiYgYmxvY2stPmF0KGkpLT5sb2NhbCgpID09IG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWxsR29vZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFpbmxpbmVDYWxs
RnJhbWUpCisgICAgICAgICAgICBpZiAoYWxsR29vZCkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgICAgIGJ5dGVjb2RlSW5kZXhUb0NoZWNrID0gaW5saW5lQ2FsbEZy
YW1lLT5kaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRleDsKLSAgICAgICAgICAgIG9yaWdpbiA9IGlu
bGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOworICAgICAgICAgICAgaWYgKGJsb2NrLT5wcmVk
ZWNlc3NvcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJvb3Qg
YmxvY2suIFdlIHByb3ZlZCB3ZSByZWFjaGVkIGhlcmUsIHRoZXJlZm9yZSB3ZSBjYW4ndCBGbHVz
aCwgYXMKKyAgICAgICAgICAgICAgICAvLyBpdCdsbCBtYWtlIHRoaXMgbG9jYWwgbGl2ZSBhdCB0
aGUgc3RhcnQgb2YgYSByb290IGJsb2NrLCB3aGljaCBpcyBpbnZhbGlkIElSLgorICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRQcmVk
ZWNlc3NvcnMoYmxvY2spOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Owor
CisgICAgICAgIGlmIChmbHVzaElzRGVmaW5pdGVseUludmFsaWQoc3RhcnRpbmdCbG9jaywgaW5k
ZXgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHdoaWxlICghd29ya2xp
c3QuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHdvcmtsaXN0
LnRha2VMYXN0KCk7CisgICAgICAgICAgICBpZiAoZmx1c2hJc0RlZmluaXRlbHlJbnZhbGlkKGJs
b2NrLCBibG9jay0+c2l6ZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdm9pZCBoYW5kbGVCbG9j
ayhCYXNpY0Jsb2NrKiBibG9jaywgSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQpCi0gICAgewot
ICAgICAgICAvLyBCZWNhdXNlIHByZWNpc2UganVtcCB0YXJnZXRzIGVuc3VyZXMgdGhhdCB0aGUg
c3RhcnQgb2YgYSAidHJ5IiBibG9jayBpcyBpdHMKLSAgICAgICAgLy8gb3duIGJhc2ljIGJsb2Nr
LCB3ZSB3aWxsIG5ldmVyIGhhdmUgdHdvICJ0cnkiIHN0YXRlbWVudHMgaW4gdGhlIHNhbWUgREZH
Ci0gICAgICAgIC8vIGJhc2ljIGJsb2NrLiBUaGVyZWZvcmUsIGNoZWNraW5nIHRoZSBmaXJzdCBu
b2RlIGluIHRoZSBibG9jayBpcyBzdWZmaWNpZW50IAotICAgICAgICAvLyB0byBjaGVja2luZyBp
ZiB3ZSdyZSBpbiBhIHRyeSBibG9jay4KLSAgICAgICAgaWYgKCF3aWxsQ2F0Y2hFeGNlcHRpb24o
YmxvY2stPmF0KDApLT5vcmlnaW4uc2VtYW50aWMpKQotICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIE9wZXJhbmRzPFZhcmlhYmxlQWNjZXNzRGF0YSo+IGN1cnJlbnRCbG9ja0FjY2Vzc0Rh
dGEoYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkFyZ3VtZW50cygpLCBibG9jay0+dmFy
aWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCksIG51bGxwdHIpOwotICAgICAgICBIYXNoU2V0
PElubGluZUNhbGxGcmFtZSo+IHNlZW5JbmxpbmVDYWxsRnJhbWVzOwotCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGkpOwotICAgICAgICAgICAg
ICAgIGJvb2wgaXNQcmltb3JkaWFsU2V0QXJndW1lbnQgPSBub2RlLT5vcCgpID09IFNldEFyZ3Vt
ZW50ICYmIG5vZGUtPmxvY2FsKCkuaXNBcmd1bWVudCgpICYmIG5vZGUgPT0gbV9ncmFwaC5tX2Fy
Z3VtZW50c1tub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07Ci0gICAgICAgICAgICAgICAgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5s
aW5lQ2FsbEZyYW1lOwotICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUpCi0gICAg
ICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVDYWxsRnJhbWUp
OworICAgIHZvaWQgaGFuZGxlQmxvY2tGb3JUcnlDYXRjaChCYXNpY0Jsb2NrKiBibG9jaywgSW5z
ZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQpCisgICAgeworICAgICAgICBIYW5kbGVySW5mbyogY3Vy
cmVudEV4Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOworICAgICAgICBGYXN0Qml0VmVjdG9yIGxp
dmVBdENhdGNoSGVhZDsKKyAgICAgICAgbGl2ZUF0Q2F0Y2hIZWFkLnJlc2l6ZShtX2dyYXBoLmJs
b2NrKDApLT52YXJpYWJsZXNBdFRhaWwubnVtYmVyT2ZMb2NhbHMoKSk7CisKKyAgICAgICAgSGFu
ZGxlckluZm8qIGNhY2hlZEhhbmRsZXJSZXN1bHQ7CisgICAgICAgIENvZGVPcmlnaW4gY2FjaGVk
Q29kZU9yaWdpbjsKKyAgICAgICAgYXV0byBjYXRjaEhhbmRsZXIgPSBbJl0gKENvZGVPcmlnaW4g
b3JpZ2luKSAtPiBIYW5kbGVySW5mbyogeworICAgICAgICAgICAgQVNTRVJUKG9yaWdpbik7Cisg
ICAgICAgICAgICBpZiAob3JpZ2luID09IGNhY2hlZENvZGVPcmlnaW4pCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNhY2hlZEhhbmRsZXJSZXN1bHQ7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXhUb0NoZWNrID0gb3JpZ2luLmJ5dGVjb2RlSW5kZXg7CisKKyAgICAgICAgICAg
IGNhY2hlZENvZGVPcmlnaW4gPSBvcmlnaW47CisKKyAgICAgICAgICAgIHdoaWxlICgxKSB7Cisg
ICAgICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBvcmlnaW4u
aW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
bV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihpbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAg
ICAgICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXhUb0NoZWNrKSkgeworICAgICAgICAgICAgICAgICAg
ICBsaXZlQXRDYXRjaEhlYWQuY2xlYXJBbGwoKTsKKworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjYXRjaEJ5dGVjb2RlSW5kZXggPSBoYW5kbGVyLT50YXJnZXQ7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZm9yQWxsTG9jYWxzTGl2ZUluQnl0ZWNvZGUoQ29kZU9yaWdpbihjYXRj
aEJ5dGVjb2RlSW5kZXgsIGlubGluZUNhbGxGcmFtZSksIFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVBdENhdGNoSGVhZFtvcGVyYW5k
LnRvTG9jYWwoKV0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFNldExvY2FsIHx8IChub2RlLT5vcCgpID09IFNldEFy
Z3VtZW50ICYmICFpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSBub2RlLT5sb2NhbCgpOworICAgICAgICAgICAg
ICAgICAgICBjYWNoZWRIYW5kbGVyUmVzdWx0ID0gaGFuZGxlcjsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGludCBz
dGFja09mZnNldCA9IGlubGluZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZz
ZXQgOiAwOwotICAgICAgICAgICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYmIG1f
Y3VycmVudEJsb2NrTGl2ZW5lc3Nbb3BlcmFuZC50b0xvY2FsKCldKQotICAgICAgICAgICAgICAg
ICAgICAgICAgfHwgKG9wZXJhbmQub2Zmc2V0KCkgPT0gc3RhY2tPZmZzZXQgKyBDYWxsRnJhbWU6
OnRoaXNBcmd1bWVudE9mZnNldCgpKSkgewotCi0gICAgICAgICAgICAgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IGN1cnJlbnRCbG9ja0FjY2Vzc0Rh
dGEub3BlcmFuZChvcGVyYW5kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmFyaWFi
bGVBY2Nlc3NEYXRhKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQWNjZXNz
RGF0YSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaSwgU3BlY05vbmUsIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZsdXNoLCBub2RlLT5vcmlnaW4sIE9wSW5mbyh2YXJpYWJsZUFj
Y2Vzc0RhdGEpKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGNhY2hlZEhhbmRsZXJSZXN1
bHQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+YWNjZXNzZXNTdGFjayhtX2dyYXBoKSkK
LSAgICAgICAgICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5vZGUt
PmxvY2FsKCkpID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAg
Ynl0ZWNvZGVJbmRleFRvQ2hlY2sgPSBpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlci5ieXRl
Y29kZUluZGV4OworICAgICAgICAgICAgICAgIG9yaWdpbiA9IGlubGluZUNhbGxGcmFtZS0+ZGly
ZWN0Q2FsbGVyOwogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAgICAgLy8gSW5zZXJ0
IEZsdXNoIGZvciBldmVyeXRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLgotICAgICAgICB7
Ci0gICAgICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IGJsb2NrLT5hdChibG9jay0+c2l6ZSgp
IC0gMSktPm9yaWdpbjsKLSAgICAgICAgICAgIGF1dG8gcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZC
bG9jayA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIGJvb2wgYWx3YXlzSW5zZXJ0KSB7
Ci0gICAgICAgICAgICAgICAgaWYgKChvcGVyYW5kLmlzTG9jYWwoKSAmJiBtX2N1cnJlbnRCbG9j
a0xpdmVuZXNzW29wZXJhbmQudG9Mb2NhbCgpXSkgCisgICAgICAgICAgICByZXR1cm4gY2FjaGVk
SGFuZGxlclJlc3VsdDsKKyAgICAgICAgfTsKKworICAgICAgICBPcGVyYW5kczxWYXJpYWJsZUFj
Y2Vzc0RhdGEqPiBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhKGJsb2NrLT52YXJpYWJsZXNBdFRhaWwu
bnVtYmVyT2ZBcmd1bWVudHMoKSwgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5udW1iZXJPZkxvY2Fs
cygpLCBudWxscHRyKTsKKyAgICAgICAgSGFzaFNldDxJbmxpbmVDYWxsRnJhbWUqPiBzZWVuSW5s
aW5lQ2FsbEZyYW1lczsKKworICAgICAgICBhdXRvIGZsdXNoRXZlcnl0aGluZyA9IFsmXSAoTm9k
ZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChjdXJyZW50RXhjZXB0aW9uSGFuZGxlcik7CisgICAgICAgICAgICBhdXRvIGZsdXNoID0g
WyZdIChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCwgYm9vbCBhbHdheXNJbnNlcnQpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKG9wZXJhbmQuaXNMb2NhbCgpICYmIGxpdmVBdENhdGNoSGVhZFtvcGVy
YW5kLnRvTG9jYWwoKV0pIAogICAgICAgICAgICAgICAgICAgICB8fCBvcGVyYW5kLmlzQXJndW1l
bnQoKQogICAgICAgICAgICAgICAgICAgICB8fCBhbHdheXNJbnNlcnQpIHsKKworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoaXNWYWxpZEZsdXNoTG9jYXRpb24oYmxvY2ssIGluZGV4LCBvcGVy
YW5kKSk7CisKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBhY2Nlc3NE
YXRhID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoIWFjY2Vzc0RhdGEpCiAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nl
c3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQpOwogCiAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRCbG9ja0FjY2Vzc0RhdGEub3BlcmFuZChvcGVyYW5kKSA9IGFjY2Vzc0Rh
dGE7CiAKLSAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoYmxvY2st
PnNpemUoKSwgU3BlY05vbmUsIAorICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZShpbmRleCwgU3BlY05vbmUsIAogICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gs
IG9yaWdpbiwgT3BJbmZvKGFjY2Vzc0RhdGEpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9OworCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGxvY2FsID0gMDsgbG9jYWwgPCBi
bG9jay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IGxvY2FsKyspCi0gICAgICAg
ICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayh2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChsb2NhbCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBmbHVzaCh2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChsb2NhbCksIGZhbHNlKTsKICAgICAgICAgICAgIGZvciAoSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgOiBzZWVuSW5saW5lQ2FsbEZyYW1lcykKLSAgICAgICAgICAg
ICAgICBwcmVzZXJ2ZUxpdmVuZXNzQXRFbmRPZkJsb2NrKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVD
YWxsRnJhbWUtPnN0YWNrT2Zmc2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSks
IHRydWUpOwotICAgICAgICAgICAgcHJlc2VydmVMaXZlbmVzc0F0RW5kT2ZCbG9jayhWaXJ0dWFs
UmVnaXN0ZXIoQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSksIHRydWUpOworICAgICAg
ICAgICAgICAgIGZsdXNoKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKSksIHRydWUpOworICAgICAgICAg
ICAgZmx1c2goVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCkp
LCB0cnVlKTsKKworICAgICAgICAgICAgc2VlbklubGluZUNhbGxGcmFtZXMuY2xlYXIoKTsKKyAg
ICAgICAgfTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRl
eCA8IGJsb2NrLT5zaXplKCk7IG5vZGVJbmRleCsrKSB7CisgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBIYW5kbGVySW5mbyogbmV3SGFuZGxlciA9IGNhdGNoSGFuZGxlcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICAgICAgICAgIGlmIChuZXdIYW5kbGVyICE9IGN1cnJlbnRFeGNlcHRp
b25IYW5kbGVyICYmIGN1cnJlbnRFeGNlcHRpb25IYW5kbGVyKQorICAgICAgICAgICAgICAgICAg
ICBmbHVzaEV2ZXJ5dGhpbmcobm9kZS0+b3JpZ2luLCBub2RlSW5kZXgpOworICAgICAgICAgICAg
ICAgIGN1cnJlbnRFeGNlcHRpb25IYW5kbGVyID0gbmV3SGFuZGxlcjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKGN1cnJlbnRFeGNlcHRpb25IYW5kbGVyICYmIChub2RlLT5vcCgp
ID09IFNldExvY2FsIHx8IG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpKSB7CisgICAgICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUpCisgICAgICAgICAgICAgICAgICAgIHNlZW5JbmxpbmVDYWxsRnJhbWVzLmFkZChpbmxpbmVD
YWxsRnJhbWUpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gbm9k
ZS0+bG9jYWwoKTsKKworICAgICAgICAgICAgICAgIGludCBzdGFja09mZnNldCA9IGlubGluZUNh
bGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwOworICAgICAgICAgICAg
ICAgIGlmICgob3BlcmFuZC5pc0xvY2FsKCkgJiYgbGl2ZUF0Q2F0Y2hIZWFkW29wZXJhbmQudG9M
b2NhbCgpXSkKKyAgICAgICAgICAgICAgICAgICAgfHwgb3BlcmFuZC5pc0FyZ3VtZW50KCkKKyAg
ICAgICAgICAgICAgICAgICAgfHwgKG9wZXJhbmQub2Zmc2V0KCkgPT0gc3RhY2tPZmZzZXQgKyBD
YWxsRnJhbWU6OnRoaXNBcmd1bWVudE9mZnNldCgpKSkgeworCisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChpc1ZhbGlkRmx1c2hMb2NhdGlvbihibG9jaywgbm9kZUluZGV4LCBvcGVyYW5kKSk7
CisKKyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vz
c0RhdGEgPSBjdXJyZW50QmxvY2tBY2Nlc3NEYXRhLm9wZXJhbmQob3BlcmFuZCk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhKQorICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQp
OworCisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKG5vZGVJbmRl
eCwgU3BlY05vbmUsIAorICAgICAgICAgICAgICAgICAgICAgICAgRmx1c2gsIG5vZGUtPm9yaWdp
biwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5vZGUtPmFjY2Vzc2VzU3RhY2sobV9ncmFwaCkp
CisgICAgICAgICAgICAgICAgY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG5vZGUtPmxv
Y2FsKCkpID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoY3VycmVudEV4Y2VwdGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIE5vZGVPcmlnaW4g
b3JpZ2luID0gYmxvY2stPmF0KGJsb2NrLT5zaXplKCkgLSAxKS0+b3JpZ2luOworICAgICAgICAg
ICAgZmx1c2hFdmVyeXRoaW5nKG9yaWdpbiwgYmxvY2stPnNpemUoKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTE1OSw4ICsyMzcsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZ3JhcGgubV92YXJp
YWJsZUFjY2Vzc0RhdGEuYXBwZW5kKFZhcmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKSk7CiAgICAg
ICAgIHJldHVybiAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YS5sYXN0KCk7CiAgICAgfQot
Ci0gICAgRmFzdEJpdFZlY3RvciBtX2N1cnJlbnRCbG9ja0xpdmVuZXNzOwogfTsKIAogYm9vbCBw
ZXJmb3JtTGl2ZUNhdGNoVmFyaWFibGVQcmVzZXJ2YXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xvb3BQ
cmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCiBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoLCBCbG9ja0luc2Vy
dGlvblNldCYgaW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBibG9jaykKIHsKKyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFncmFwaC5pc0VudHJ5cG9pbnQoYmxvY2spLCAiQW4gZW50cnlwb2ludCBz
aG91bGQgbm90IGJlIGluIGEgbG9vcCIpOworCiAgICAgLy8gRklYTUU6IElmIHdlIHJ1biB0aGlz
IHV0aWxpdHkgb24gU1NBIElSLCB0aGVuIHdlIG1heSBlbmQgdXAgd2l0aCBhIGJpemFycmUgYXJy
YW5nZW1lbnQgb2YKICAgICAvLyBVcHNpbG9ucyBhbmQgUGhpcywgbGlrZToKICAgICAvLwpAQCAt
NjksNyArNzEsOCBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAg
ICAgLy8gSW5zdGVhZCwgd2UgdXNlIHRoZSBtYXggb2YgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBs
b29wIGJvZHkncyBub24tbG9vcCBwcmVkZWNlc3NvcnMuCiAgICAgZmxvYXQgZnJlcXVlbmN5ID0g
MDsKICAgICBmb3IgKEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29y
cykgewotICAgICAgICBpZiAoZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHBy
ZWRlY2Vzc29yKSkKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fZm9ybSAhPSBTU0EpOworICAgICAg
ICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5kb21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29y
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmcmVxdWVuY3kgPSBzdGQ6Om1heChm
cmVxdWVuY3ksIHByZWRlY2Vzc29yLT5leGVjdXRpb25Db3VudCk7CiAgICAgfQpAQCAtMTAzLDcg
KzEwNiw3IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAK
ICAgICBmb3IgKHVuc2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSAwOyBwcmVkZWNlc3NvckluZGV4
IDwgYmxvY2stPnByZWRlY2Vzc29ycy5zaXplKCk7IHByZWRlY2Vzc29ySW5kZXgrKykgewogICAg
ICAgICBCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA9IGJsb2NrLT5wcmVkZWNlc3NvcnNbcHJlZGVj
ZXNzb3JJbmRleF07Ci0gICAgICAgIGlmIChncmFwaC5tX2RvbWluYXRvcnMtPmRvbWluYXRlcyhi
bG9jaywgcHJlZGVjZXNzb3IpKQorICAgICAgICBpZiAoZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5k
b21pbmF0ZXMoYmxvY2ssIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBibG9jay0+cHJlZGVjZXNzb3JzW3ByZWRlY2Vzc29ySW5kZXgtLV0gPSBibG9jay0+cHJl
ZGVjZXNzb3JzLmxhc3QoKTsKICAgICAgICAgYmxvY2stPnByZWRlY2Vzc29ycy5yZW1vdmVMYXN0
KCk7CkBAIC0xMzAsMTYgKzEzMywxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBydW4oKQog
ICAgIHsKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIG1fZ3Jh
cGguZW5zdXJlTmF0dXJhbExvb3BzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlQ1BTRG9taW5h
dG9ycygpOworICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAg
ICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsb29wSW5kZXggPSBtX2dyYXBoLm1fbmF0dXJhbExv
b3BzLT5udW1Mb29wcygpOyBsb29wSW5kZXgtLTspIHsKLSAgICAgICAgICAgIGNvbnN0IE5hdHVy
YWxMb29wJiBsb29wID0gbV9ncmFwaC5tX25hdHVyYWxMb29wcy0+bG9vcChsb29wSW5kZXgpOwot
ICAgICAgICAgICAgQmFzaWNCbG9jayogZXhpc3RpbmdQcmVIZWFkZXIgPSAwOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGxvb3BJbmRleCA9IG1fZ3JhcGgubV9jcHNOYXR1cmFsTG9vcHMtPm51bUxv
b3BzKCk7IGxvb3BJbmRleC0tOykgeworICAgICAgICAgICAgY29uc3QgQ1BTTmF0dXJhbExvb3Am
IGxvb3AgPSBtX2dyYXBoLm1fY3BzTmF0dXJhbExvb3BzLT5sb29wKGxvb3BJbmRleCk7CisgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBleGlzdGluZ1ByZUhlYWRlciA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBib29sIG5lZWRzTmV3UHJlSGVhZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIHByZWRlY2Vzc29ySW5kZXggPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnMuc2l6
ZSgpOyBwcmVkZWNlc3NvckluZGV4LS07KSB7Ci0gICAgICAgICAgICAgICAgQmFzaWNCbG9jayog
cHJlZGVjZXNzb3IgPSBsb29wLmhlYWRlcigpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNzb3JJbmRl
eF07Ci0gICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9kb21pbmF0b3JzLT5kb21pbmF0ZXMo
bG9vcC5oZWFkZXIoKSwgcHJlZGVjZXNzb3IpKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBw
cmVkZWNlc3NvckluZGV4ID0gbG9vcC5oZWFkZXIoKS5ub2RlKCktPnByZWRlY2Vzc29ycy5zaXpl
KCk7IHByZWRlY2Vzc29ySW5kZXgtLTspIHsKKyAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBw
cmVkZWNlc3NvciA9IGxvb3AuaGVhZGVyKCkubm9kZSgpLT5wcmVkZWNlc3NvcnNbcHJlZGVjZXNz
b3JJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgubV9jcHNEb21pbmF0b3JzLT5k
b21pbmF0ZXMobG9vcC5oZWFkZXIoKS5ub2RlKCksIHByZWRlY2Vzc29yKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1ByZUhlYWRl
cikgewogICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1ByZUhlYWRlciA9IHByZWRlY2Vzc29y
OwpAQCAtMTY1LDE0ICsxNjgsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gQSBwcmUtaGVh
ZGVyIGlzIG1vc3QgdXNlZnVsIGlmIGl0J3MgcG9zc2libGUgdG8gZXhpdCBmcm9tIGl0cyB0ZXJt
aW5hbC4gSGVuY2UKICAgICAgICAgICAgIC8vIGlmIHRoZSB0ZXJtaW5hbCBvZiB0aGUgZXhpc3Rp
bmcgcHJlLWhlYWRlciBkb2Vzbid0IGFsbG93IGZvciBleGl0LCBidXQgdGhlIGZpcnN0CiAgICAg
ICAgICAgICAvLyBvcmlnaW4gb2YgdGhlIGxvb3AgaGVhZGVyIGRvZXMsIHRoZW4gd2Ugc2hvdWxk
IGNyZWF0ZSBhIG5ldyBwcmUtaGVhZGVyLgotICAgICAgICAgICAgaWYgKCFuZWVkc05ld1ByZUhl
YWRlciAmJiBsb29wLmhlYWRlcigpLT5hdCgwKS0+b3JpZ2luLmV4aXRPSworICAgICAgICAgICAg
aWYgKCFuZWVkc05ld1ByZUhlYWRlciAmJiBsb29wLmhlYWRlcigpLm5vZGUoKS0+YXQoMCktPm9y
aWdpbi5leGl0T0sKICAgICAgICAgICAgICAgICAmJiAhZXhpc3RpbmdQcmVIZWFkZXItPnRlcm1p
bmFsKCktPm9yaWdpbi5leGl0T0spCiAgICAgICAgICAgICAgICAgbmVlZHNOZXdQcmVIZWFkZXIg
PSB0cnVlOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIW5lZWRzTmV3UHJlSGVhZGVy
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBj
cmVhdGVQcmVIZWFkZXIobV9ncmFwaCwgbV9pbnNlcnRpb25TZXQsIGxvb3AuaGVhZGVyKCkpOwor
ICAgICAgICAgICAgY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIG1faW5zZXJ0aW9uU2V0LCBsb29w
LmhlYWRlcigpLm5vZGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBt
X2luc2VydGlvblNldC5leGVjdXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDggKzUzLDEwIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKICAgICAgICAg
fQogCi0gICAgICAgIHRyZWF0Um9vdEJsb2NrKG1fZ3JhcGguYmxvY2soMCksIGluc2VydGlvblNl
dCk7Ci0gICAgICAgIGluc2VydGlvblNldC5leGVjdXRlKG1fZ3JhcGguYmxvY2soMCkpOworICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIGVudHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMp
IHsKKyAgICAgICAgICAgIHRyZWF0Um9vdEJsb2NrKGVudHJ5cG9pbnQsIGluc2VydGlvblNldCk7
CisgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZShlbnRyeXBvaW50KTsKKyAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTY3LDcgKzY5LDEzIEBAIHB1Ymxp
YzoKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2Nr
LT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQo
aSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1ByaW1vcmRpYWxTZXRBcmd1bWVudCA9IG5vZGUt
Pm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwoKS5pc0FyZ3VtZW50KCkgJiYgbm9k
ZSA9PSBtX2dyYXBoLm1fYXJndW1lbnRzW25vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpXTsKKyAg
ICAgICAgICAgICAgICBib29sIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgbm9kZS0+bG9jYWwo
KS5pc0FyZ3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBpdGVyID0gbV9ncmFw
aC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGl0ZXIgIT0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5lbmQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlzUHJpbW9yZGlhbFNldEFyZ3VtZW50ID0gbm9kZSA9PSBp
dGVyLT52YWx1ZVtub2RlLT5sb2NhbCgpLnRvQXJndW1lbnQoKV07CisgICAgICAgICAgICAgICAg
fQorCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgfHwgKG5vZGUt
Pm9wKCkgPT0gU2V0QXJndW1lbnQgJiYgIWlzUHJpbW9yZGlhbFNldEFyZ3VtZW50KSkgewogICAg
ICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IG5vZGUtPmxvY2FsKCk7
CiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZmx1c2hBY2Nlc3NEYXRh
ID0gY3VycmVudEJsb2NrQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwpAQCAtMTI4LDEyICsx
MzYsMTIgQEAgcHVibGljOgogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9j
ay0+dmFyaWFibGVzQXRUYWlsLm51bWJlck9mTG9jYWxzKCk7IGkrKykgewogICAgICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKTsKLSAg
ICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogYWNjZXNzRGF0YTsKICAgICAgICAgICAgIERG
R19BU1NFUlQobV9ncmFwaCwgbnVsbHB0ciwgaW5pdGlhbEFjY2Vzc05vZGVzLm9wZXJhbmQob3Bl
cmFuZCktPm9wKCkgPT0gRmx1c2gpOyAvLyBXZSBzaG91bGQgaGF2ZSBpbnNlcnRlZCBhIEZsdXNo
IGJlZm9yZSBhbnkgU2V0TG9jYWwvU2V0QXJndW1lbnQgZm9yIHRoZSBsb2NhbCB0aGF0IHdlIGFy
ZSBhbmFseXppbmcgbm93LgotICAgICAgICAgICAgYWNjZXNzRGF0YSA9IGluaXRpYWxBY2Nlc3NE
YXRhLm9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIGFj
Y2Vzc0RhdGEgPSBpbml0aWFsQWNjZXNzRGF0YS5vcGVyYW5kKG9wZXJhbmQpOwogICAgICAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBhY2Nlc3NEYXRhKTsKICAgICAgICAgICAg
IGluc2VydGlvblNldC5pbnNlcnROb2RlKDAsIFNwZWNOb25lLCAKICAgICAgICAgICAgICAgICBT
ZXRMb2NhbCwgb3JpZ2luLCBPcEluZm8oYWNjZXNzRGF0YSksIEVkZ2UodW5kZWZpbmVkKSk7Cisg
ICAgICAgICAgICBhY2Nlc3NEYXRhLT5tZXJnZVNob3VsZE5ldmVyVW5ib3godHJ1ZSk7IC8vIFdl
IGRvbid0IGtub3cgaWYgd2UgY2FuIGV4aXQgaGVyZS4KICAgICAgICAgfQogICAgIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMjEx
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NCw2ICs4NCw3IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFw
aCwgTm9kZSoKICAgICBjYXNlIEludDUyUmVwOgogICAgIGNhc2UgVmFsdWVSZXA6CiAgICAgY2Fz
ZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKKyAgICBjYXNlIEV4dHJhY3RDYXRjaExvY2FsOgogICAg
IGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIE5vdGlmeVdyaXRlOgogICAgIGNhc2UgUHV0U3Ry
dWN0dXJlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOYXR1cmFsTG9vcHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05hdHVyYWxMb29w
cy5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05h
dHVyYWxMb29wcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOCArMzQsMjAgQEAKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi10eXBlZGVmIFdURjo6TmF0dXJhbExvb3A8Q0ZH
PiBOYXR1cmFsTG9vcDsKLQotY2xhc3MgTmF0dXJhbExvb3BzIDogcHVibGljIFdURjo6TmF0dXJh
bExvb3BzPENGRz4gewordGVtcGxhdGUgPHR5cGVuYW1lIENGR0tpbmQ+CitjbGFzcyBOYXR1cmFs
TG9vcHMgOiBwdWJsaWMgV1RGOjpOYXR1cmFsTG9vcHM8Q0ZHS2luZD4gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKE5hdHVyYWxMb29wcyk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgTmF0dXJhbExvb3BzKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBXVEY6
Ok5hdHVyYWxMb29wczxDRkc+KCpncmFwaC5tX2NmZywgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygp
LCB2YWxpZGF0aW9uRW5hYmxlZCgpKQorICAgICAgICA6IFdURjo6TmF0dXJhbExvb3BzPENGR0tp
bmQ+KHNlbGVjdENGRzxDRkdLaW5kPihncmFwaCksIGVuc3VyZURvbWluYXRvcnNGb3JDRkc8Q0ZH
S2luZD4oZ3JhcGgpLCB2YWxpZGF0aW9uRW5hYmxlZCgpKQogICAgIHsKICAgICB9CiB9OwogCit1
c2luZyBTU0FOYXR1cmFsTG9vcCA9IFdURjo6TmF0dXJhbExvb3A8U1NBQ0ZHPjsKK3VzaW5nIENQ
U05hdHVyYWxMb29wID0gV1RGOjpOYXR1cmFsTG9vcDxDUFNDRkc+OworCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4Nyw3ICsxMjg3LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gb3AoKSA9PSBCcmFuY2g7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgaXNTd2l0Y2goKQorICAgIGJvb2wgaXNTd2l0Y2goKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG9wKCkgPT0gU3dpdGNoOwogICAgIH0KQEAgLTEzODIsNiArMTM4Miw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGluZGV4ID09IHN3aXRjaERhdGEo
KS0+Y2FzZXMuc2l6ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBzd2l0Y2hEYXRhKCktPmZhbGxU
aHJvdWdoLmJsb2NrOwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoIChpbmRleCkgewogICAg
ICAgICBjYXNlIDA6CiAgICAgICAgICAgICBpZiAoaXNKdW1wKCkpCkBAIC0xNTUyLDYgKzE1NTMs
MTggQEAgcHVibGljOgogICAgICAgICBBU1NFUlQob3AoKSA9PSBJZGVudGl0eVdpdGhQcm9maWxl
KTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFNwZWN1bGF0ZWRUeXBlPigpOwogICAgIH0K
KworICAgIHVpbnQzMl90IGNhdGNoT1NSRW50cnlJbmRleCgpIGNvbnN0CisgICAgeworICAgICAg
ICBBU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0Y2hMb2NhbCk7CisgICAgICAgIHJldHVybiBtX29w
SW5mby5hczx1aW50MzJfdD4oKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBjYXRjaExv
Y2FsUHJlZGljdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQob3AoKSA9PSBFeHRyYWN0Q2F0
Y2hMb2NhbCk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzIuYXM8U3BlY3VsYXRlZFR5cGU+KCk7
CisgICAgfQogICAgIAogICAgIGJvb2wgaGFzQ2VsbE9wZXJhbmQoKQogICAgIHsKQEAgLTE5NTEs
NyArMTk2NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ZpcnR1YWxSZWdp
c3Rlci5pc1ZhbGlkKCk7CiAgICAgfQotICAgIAorCiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1
YWxSZWdpc3RlcigpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzUmVzdWx0KCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjIxMTA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Miw2ICs5Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAv
KiBTcGVjaWFsIG5vZGUgZm9yIE9TUiBlbnRyeSBpbnRvIHRoZSBGVEwuIEluZGljYXRlcyB0aGF0
IHdlJ3JlIGxvYWRpbmcgYSBsb2NhbCAqL1wKICAgICAvKiB2YXJpYWJsZSBmcm9tIHRoZSBzY3Jh
dGNoIGJ1ZmZlci4gKi9cCiAgICAgbWFjcm8oRXh0cmFjdE9TUkVudHJ5TG9jYWwsIE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKEV4dHJhY3RDYXRjaExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBcCiAgICAgLyogVGllci11cCBjaGVja3MgZnJvbSB0aGUgREZHIHRvIHRoZSBGVEwuICovXAog
ICAgIG1hY3JvKENoZWNrVGllclVwSW5Mb29wLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAkocmV2aXNpb24gMjIxMTA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkludGVycHJl
dGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJWTUlubGluZXMuaCIKQEAgLTMzNiw2ICszMzcsNzEgQEAgdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KEV4ZWNTdGF0ZSogZXhlYywgQwogICAgIHJldHVybiBzY3JhdGNoOwogfQogCit2
b2lkKiBwcmVwYXJlQ2F0Y2hPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29k
ZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIGlmICghT3B0aW9uczo6dXNl
T1NSRW50cnlUb0RGRygpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6
OkRGR0pJVCk7CisgICAgREZHOjpKSVRDb2RlKiBqaXRDb2RlID0gY29kZUJsb2NrLT5qaXRDb2Rl
KCktPmRmZygpOworICAgIFJFTEVBU0VfQVNTRVJUKGppdENvZGUpOworCisgICAgREZHOjpDYXRj
aEVudHJ5cG9pbnREYXRhKiBjYXRjaEVudHJ5cG9pbnQgPSBqaXRDb2RlLT5jYXRjaE9TUkVudHJ5
RGF0YUZvckJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVJbmRleCk7CisgICAgaWYgKCFjYXRjaEVudHJ5
cG9pbnQpIHsKKyAgICAgICAgLy8gVGhpcyBjYW4gYmUgbnVsbCB1bmRlciBzb21lIGNpcmN1bXN0
YW5jZXMuIFRoZSBtb3N0IGNvbW1vbiBpcyB0aGF0IHdlIGRpZG4ndAorICAgICAgICAvLyBjb21w
aWxlIHRoaXMgb3BfY2F0Y2ggYXMgYW4gZW50cnlwb2ludCBzaW5jZSBpdCBoYWQgbmV2ZXIgZXhl
Y3V0ZWQgd2hlbiBzdGFydGluZworICAgICAgICAvLyB0aGUgY29tcGlsYXRpb24uCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIC8vIFdlJ3JlIG9ubHkgYWxsb3dlZCB0byBP
U1IgZW50ZXIgaWYgd2UndmUgcHJvdmVuIHdlIGhhdmUgY29tcGF0aWJsZSBhcmd1bWVudCB0eXBl
cy4KKyAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBjYXRjaEVudHJ5
cG9pbnQtPm1fYXJndW1lbnRGb3JtYXRzLnNpemUoKTsgKythcmd1bWVudCkgeworICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVu
dChhcmd1bWVudCkpLmpzVmFsdWUoKTsKKyAgICAgICAgc3dpdGNoIChjYXRjaEVudHJ5cG9pbnQt
Pm1fYXJndW1lbnRGb3JtYXRzW2FyZ3VtZW50XSkgeworICAgICAgICBjYXNlIERGRzo6Rmx1c2hl
ZEludDMyOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBERkc6
OkZsdXNoZWRDZWxsOgorICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IERGRzo6Rmx1c2hlZEJvb2xlYW46CisgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQm9vbGVhbigp
KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgREZHOjpEZWFkRmx1c2g6CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHRo
ZSBhcmd1bWVudCBpcyBub3QgYWxpdmUuIFRoZXJlZm9yZSwgaXQncyBhbGxvd2VkIHRvIGJlIGFu
eSB0eXBlLgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZHOjpGbHVzaGVkSlNW
YWx1ZToKKyAgICAgICAgICAgIC8vIEFuIGFyZ3VtZW50IGlzIHRyaXZpYWxseSBhIEpTVmFsdWUu
CisgICAgICAgICAgICBicmVhazsgCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWdu
ZWQgZnJhbWVTaXplRm9yQ2hlY2sgPSBqaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNv
dW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpOworICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3Rh
Y2tDYXBhY2l0eUZvcigmZXhlYy0+cmVnaXN0ZXJzKClbdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
ZnJhbWVTaXplRm9yQ2hlY2spLm9mZnNldCgpXSkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIEFTU0VSVChJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpW2V4ZWMtPmJ5dGVjb2RlT2Zmc2V0KCldLnUub3Bjb2RlKSA9PSBvcF9j
YXRjaCk7CisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGlj
X2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKVtleGVjLT5ieXRlY29kZU9mZnNldCgpICsgM10udS5wb2ludGVyKTsKKyAg
ICBKU1ZhbHVlKiBkYXRhQnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxKU1ZhbHVlKj4oaml0Q29k
ZS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKTsKKyAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7CisgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYg
cHJvZmlsZSkgeworICAgICAgICBpZiAoIVZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFu
ZCkuaXNMb2NhbCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkYXRhQnVmZmVyW2lu
ZGV4XSA9IGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKTsKKyAg
ICAgICAgKytpbmRleDsKKyAgICB9KTsKKworICAgIGppdENvZGUtPmNhdGNoT1NSRW50cnlCdWZm
ZXItPnNldEFjdGl2ZUxlbmd0aChzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCk7CisKKyAgICByZXR1
cm4gaml0Q29kZS0+ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChjYXRjaEVudHJ5cG9pbnQtPm1f
bWFjaGluZUNvZGVPZmZzZXQpOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRW50cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkVudHJ5LmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHRmx1
c2hGb3JtYXQuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KIApAQCAtNjksOSArNzAsMjAgQEAgaW5saW5lIHVuc2lnbmVkIGdldE9TUkVudHJ5RGF0
YUJ5dGVjb2RlSQogICAgIHJldHVybiBvc3JFbnRyeURhdGEtPm1fYnl0ZWNvZGVJbmRleDsKIH0K
IAorc3RydWN0IENhdGNoRW50cnlwb2ludERhdGEgeworICAgIHVuc2lnbmVkIG1fYnl0ZWNvZGVJ
bmRleDsKKyAgICB1bnNpZ25lZCBtX21hY2hpbmVDb2RlT2Zmc2V0OworICAgIC8vIFdlIHVzZSB0
aGlzIHdoZW4gZG9pbmcgT1NSIGVudHJ5IGF0IGNhdGNoLiBXZSBwcm92ZSB0aGUgYXJndW1lbnRz
CisgICAgLy8gYXJlIG9mIHRoZSBleHBlY3RlZCB0eXBlIGJlZm9yZSBlbnRlcmluZyBhdCBhIGNh
dGNoIGJsb2NrLgorICAgIFZlY3RvcjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7Cit9
OworCiAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byBhIGRhdGEgYnVmZmVyIHRoYXQgdGhlIE9TUiBl
bnRyeSB0aHVuayB3aWxsIHJlY29nbml6ZSBhbmQKIC8vIHBhcnNlLiBJZiB0aGlzIHJldHVybnMg
bnVsbCwgaXQgbWVhbnMgCiB2b2lkKiBwcmVwYXJlT1NSRW50cnkoRXhlY1N0YXRlKiwgQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKKy8vIElmIG51bGwgaXMgcmV0dXJuZWQs
IHdlIGNhbid0IE9TUiBlbnRlci4gSWYgaXQncyBub3QgbnVsbCwgaXQncyB0aGUgUEMgdG8ganVt
cCB0by4KK3ZvaWQqIHByZXBhcmVDYXRjaE9TUkVudHJ5KEV4ZWNTdGF0ZSosIENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vsc2UKIGlubGluZSB2b2lkKiBwcmVwYXJlT1NS
RW50cnkoRXhlY1N0YXRlKiwgQ29kZUJsb2NrKiwgdW5zaWduZWQpIHsgcmV0dXJuIDA7IH0KICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJERkdCYXNpY0Js
b2NrSW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVk
ZSAiREZHQ0ZHLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1BoYXNlLmgiCkBAIC01NCw3ICs1
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYnl0ZWNvZGVJbmRleCAhPSBV
SU5UX01BWCk7CiAgICAgICAgIAogICAgICAgICAvLyBOZWVkZWQgYnkgY3JlYXRlUHJlSGVhZGVy
KCkuCi0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAgICBtX2dyYXBo
LmVuc3VyZUNQU0RvbWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIENvZGVCbG9jayogYmFz
ZWxpbmUgPSBtX2dyYXBoLm1fcHJvZmlsZWRCbG9jazsKICAgICAgICAgCkBAIC0xMTIsMTYgKzEx
MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIHR5cGUgY2hlY2tzIHRvIGhlcmUuCiAgICAgICAg
IG9yaWdpbiA9IHRhcmdldC0+YXQoMCktPm9yaWdpbjsKICAgICAgICAgCisgICAgICAgIEFyZ3Vt
ZW50c1ZlY3RvciBuZXdBcmd1bWVudHMgPSBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRz
LmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwogICAgICAgICBmb3IgKGludCBhcmd1bWVu
dCA9IDA7IGFyZ3VtZW50IDwgYmFzZWxpbmUtPm51bVBhcmFtZXRlcnMoKTsgKythcmd1bWVudCkg
ewogICAgICAgICAgICAgTm9kZSogb2xkTm9kZSA9IHRhcmdldC0+dmFyaWFibGVzQXRIZWFkLmFy
Z3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgIGlmICghb2xkTm9kZSkgewogICAgICAgICAg
ICAgICAgIC8vIEp1c3QgZm9yIHNhbml0eSwgYWx3YXlzIGhhdmUgYSBTZXRBcmd1bWVudCBldmVu
IGlmIGl0J3Mgbm90IG5lZWRlZC4KLSAgICAgICAgICAgICAgICBvbGROb2RlID0gbV9ncmFwaC5t
X2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICAgICAgb2xkTm9kZSA9IG5ld0FyZ3Vt
ZW50c1thcmd1bWVudF07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBOb2RlKiBub2RlID0g
bmV3Um9vdC0+YXBwZW5kTm9kZSgKICAgICAgICAgICAgICAgICBtX2dyYXBoLCBTcGVjTm9uZSwg
U2V0QXJndW1lbnQsIG9yaWdpbiwKICAgICAgICAgICAgICAgICBPcEluZm8ob2xkTm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCkpKTsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbYXJn
dW1lbnRdID0gbm9kZTsKKyAgICAgICAgICAgIG5ld0FyZ3VtZW50c1thcmd1bWVudF0gPSBub2Rl
OwogICAgICAgICB9CiAKICAgICAgICAgZm9yIChpbnQgbG9jYWwgPSAwOyBsb2NhbCA8IGJhc2Vs
aW5lLT5tX251bUNhbGxlZUxvY2FsczsgKytsb2NhbCkgewpAQCAtMTM5LDggKzE0MSwxNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBPcEluZm8oY3JlYXRlUHJlSGVhZGVyKG1fZ3JhcGgsIGluc2Vy
dGlvblNldCwgdGFyZ2V0KSkpOwogICAgICAgICAKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZW50cnlwb2ludHMuc2l6
ZSgpID09IDEpOworICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludHNbMF0gPSBuZXdSb290Owor
ICAgICAgICBtX2dyYXBoLm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmNsZWFyKCk7CisgICAgICAg
IG1fZ3JhcGgubV9lbnRyeXBvaW50VG9Bcmd1bWVudHMuYWRkKG5ld1Jvb3QsIG5ld0FyZ3VtZW50
cyk7CisKKyAgICAgICAgbV9ncmFwaC5tX2Nwc0NGRyA9IHN0ZDo6bWFrZV91bmlxdWU8Q1BTQ0ZH
PihtX2dyYXBoKTsKKwogICAgICAgICBtX2dyYXBoLnJlc2V0UmVhY2hhYmlsaXR5KCk7CiAgICAg
ICAgIG1fZ3JhcGgua2lsbFVucmVhY2hhYmxlQmxvY2tzKCk7CisKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDE1IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBP
U1JFeGl0QmFzZSYgZXhpdCkKIHsKLSAgICBqaXQuYWRkMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoMSksIEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKCZleGl0Lm1fY291
bnQpKTsKLQotICAgIGlmICghZXhpdEtpbmRNYXlKZXR0aXNvbihleGl0Lm1fa2luZCkpCisgICAg
aWYgKCFleGl0S2luZE1heUpldHRpc29uKGV4aXQubV9raW5kKSkgeworICAgICAgICAvLyBGSVhN
RTogV2UgbWF5IHdhbnQgdG8gbm90aWNlIHRoYXQgd2UncmUgZnJlcXVlbnRseSBleGl0aW5nCisg
ICAgICAgIC8vIGF0IGFuIG9wX2NhdGNoIHRoYXQgd2UgZGlkbid0IGNvbXBpbGUgYW4gZW50cnlw
b2ludCBmb3IsIGFuZAorICAgICAgICAvLyB0aGVuIHRyaWdnZXIgYSByZW9wdGltaXphdGlvbiBv
ZiB0aGlzIENvZGVCbG9jazoKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NTg0MgogICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaml0LmFk
ZDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCBBc3NlbWJseUhlbHBlcnM6OkFi
c29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50KSk7CiAgICAgCiAgICAgaml0Lm1vdmUoQXNzZW1i
bHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGppdC5jb2RlQmxvY2soKSksIEdQUkluZm86OnJlZ1Qw
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2Nh
dGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjIxMTA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMwLDcgKzczMCw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBtX2dyYXBoLmNvbXB1dGVSZWZDb3VudHMoKTsKICAgICAgICAgbV9ncmFw
aC5pbml0aWFsaXplTm9kZU93bmVycygpOwotICAgICAgICBtX2dyYXBoLmVuc3VyZURvbWluYXRv
cnMoKTsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVTU0FEb21pbmF0b3JzKCk7CiAgICAgICAgIHBl
cmZvcm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOwogICAgICAgICBwZXJmb3JtT1NSQXZhaWxh
YmlsaXR5QW5hbHlzaXMobV9ncmFwaCk7CiAgICAgICAgIG1fY29tYmluZWRMaXZlbmVzcyA9IENv
bWJpbmVkTGl2ZW5lc3MobV9ncmFwaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsOCBAQCBQbGFuOjpDb21w
aWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyCiAgICAgLy8gSWYgd2UncmUgZG9pbmcgdmFs
aWRhdGlvbiwgdGhlbiBydW4gc29tZSBhbmFseXNlcywgdG8gZ2l2ZSB0aGVtIGFuIG9wcG9ydHVu
aXR5CiAgICAgLy8gdG8gc2VsZi12YWxpZGF0ZS4gTm93IGlzIGFzIGdvb2QgYSB0aW1lIGFzIGFu
eSB0byBkbyB0aGlzLgogICAgIGlmICh2YWxpZGF0aW9uRW5hYmxlZCgpKSB7Ci0gICAgICAgIGRm
Zy5lbnN1cmVEb21pbmF0b3JzKCk7Ci0gICAgICAgIGRmZy5lbnN1cmVOYXR1cmFsTG9vcHMoKTsK
LSAgICAgICAgZGZnLmVuc3VyZVByZVBvc3ROdW1iZXJpbmcoKTsKKyAgICAgICAgZGZnLmVuc3Vy
ZUNQU0RvbWluYXRvcnMoKTsKKyAgICAgICAgZGZnLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwog
ICAgIH0KIAogICAgIHN3aXRjaCAobW9kZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCShyZXZpc2lvbiAyMjExMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZVBvc3ROdW1iZXJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1ByZVBv
c3ROdW1iZXJpbmcuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmxv
Y2tNYXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tXb3JrbGlzdC5oIgotI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotUHJlUG9z
dE51bWJlcmluZzo6UHJlUG9zdE51bWJlcmluZyhHcmFwaCYgZ3JhcGgpCi17Ci0gICAgbV9tYXAg
PSBCbG9ja01hcDxOdW1iZXJpbmc+KGdyYXBoKTsKLSAgICAKLSAgICBQb3N0T3JkZXJCbG9ja1dv
cmtsaXN0IHdvcmtsaXN0OwotICAgIHdvcmtsaXN0LnB1c2goZ3JhcGguYmxvY2soMCkpOwotICAg
IHVuc2lnbmVkIG5leHRQcmVOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIG5leHRQb3N0TnVtYmVy
ID0gMDsKLSAgICB3aGlsZSAoQmxvY2tXaXRoT3JkZXIgaXRlbSA9IHdvcmtsaXN0LnBvcCgpKSB7
Ci0gICAgICAgIHN3aXRjaCAoaXRlbS5vcmRlcikgewotICAgICAgICBjYXNlIFZpc2l0T3JkZXI6
OlByZToKLSAgICAgICAgICAgIG1fbWFwW2l0ZW0ubm9kZV0ubV9wcmVOdW1iZXIgPSBuZXh0UHJl
TnVtYmVyKys7Ci0gICAgICAgICAgICB3b3JrbGlzdC5wdXNoUG9zdChpdGVtLm5vZGUpOwotICAg
ICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBpdGVtLm5vZGUtPnN1Y2Nlc3Nv
cnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5wdXNoKHN1Y2Nlc3Nvcik7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWaXNpdE9yZGVyOjpQb3N0OgotICAgICAgICAgICAg
bV9tYXBbaXRlbS5ub2RlXS5tX3Bvc3ROdW1iZXIgPSBuZXh0UG9zdE51bWJlcisrOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVByZVBvc3ROdW1iZXJpbmc6On5Q
cmVQb3N0TnVtYmVyaW5nKCkgeyB9Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M6OkRGRzsKLQotdm9pZCBwcmludElu
dGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEVkZ2VLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChr
aW5kKSB7Ci0gICAgY2FzZSBGb3J3YXJkRWRnZToKLSAgICAgICAgb3V0LnByaW50KCJGb3J3YXJk
RWRnZSIpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcm9zc0VkZ2U6Ci0gICAgICAgIG91
dC5wcmludCgiQ3Jvc3NFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIEJhY2tFZGdl
OgotICAgICAgICBvdXQucHJpbnQoIkJhY2tFZGdlIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVQb3N0TnVtYmVyaW5nLmgJKHJldmlzaW9uIDIy
MTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlUG9zdE51bWJlcmluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19K
SVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiREZHQmxvY2tNYXAu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWVudW0gRWRnZUtpbmQg
ewotICAgIEZvcndhcmRFZGdlLAotICAgIENyb3NzRWRnZSwKLSAgICBCYWNrRWRnZQotfTsKLQot
Y2xhc3MgUHJlUG9zdE51bWJlcmluZyB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHJlUG9z
dE51bWJlcmluZyk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
UHJlUG9zdE51bWJlcmluZyhHcmFwaCYpOwotICAgIH5QcmVQb3N0TnVtYmVyaW5nKCk7Ci0KLSAg
ICB1bnNpZ25lZCBwcmVOdW1iZXIoQmFzaWNCbG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1f
bWFwW2Jsb2NrXS5tX3ByZU51bWJlcjsgfQotICAgIHVuc2lnbmVkIHBvc3ROdW1iZXIoQmFzaWNC
bG9jayogYmxvY2spIGNvbnN0IHsgcmV0dXJuIG1fbWFwW2Jsb2NrXS5tX3Bvc3ROdW1iZXI7IH0K
LSAgICAKLSAgICAvLyBJcyBmcm9tIGEgc3RyaWN0IGFuY2VzdG9yIG9mIHRvPwotICAgIGJvb2wg
aXNTdHJpY3RBbmNlc3Rvck9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByZU51bWJlcihmcm9tKSA8IHByZU51bWJlcih0bykK
LSAgICAgICAgICAgICYmIHBvc3ROdW1iZXIoZnJvbSkgPiBwb3N0TnVtYmVyKHRvKTsKLSAgICB9
Ci0gICAgCi0gICAgYm9vbCBpc0FuY2VzdG9yT2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9j
ayogdG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJvbSA9PSB0byB8fCBpc1N0cmlj
dEFuY2VzdG9yT2YoZnJvbSwgdG8pOwotICAgIH0KLSAgICAKLSAgICBib29sIGlzU3RyaWN0RGVz
Y2VuZGFudE9mKEJhc2ljQmxvY2sqIGZyb20sIEJhc2ljQmxvY2sqIHRvKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGlzU3RyaWN0QW5jZXN0b3JPZih0bywgZnJvbSk7Ci0gICAgfQotICAg
IAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoQmFzaWNCbG9jayogZnJvbSwgQmFzaWNCbG9jayog
dG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBbmNlc3Rvck9mKHRvLCBmcm9tKTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gVGhpcyB3aWxsIGdpdmUgYSBib2d1cyBhbnN3ZXIgaWYgdGhl
cmUgaXMgYWN0dWFsbHkgbm8gc3VjaCBlZGdlLiBJZiB5b3Ugd2FudCB0byBkZXRlcm1pbmUKLSAg
ICAvLyBpZiB0aGVyZSBpcyBhbnkgc3VjaCBlZGdlLCB5b3UgaGF2ZSB0byBkbyBpdCB5b3Vyc2Vs
Zi4KLSAgICBFZGdlS2luZCBlZGdlS2luZChCYXNpY0Jsb2NrKiBmcm9tLCBCYXNpY0Jsb2NrKiB0
bykgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc1N0cmljdERlc2NlbmRhbnRPZih0bywgZnJv
bSkpCi0gICAgICAgICAgICByZXR1cm4gRm9yd2FyZEVkZ2U7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoaXNBbmNlc3Rvck9mKHRvLCBmcm9tKSkKLSAgICAgICAgICAgIHJldHVybiBCYWNrRWRnZTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiBDcm9zc0VkZ2U7Ci0gICAgfQotICAgIAotcHJpdmF0
ZToKLSAgICBzdHJ1Y3QgTnVtYmVyaW5nIHsKLSAgICAgICAgdW5zaWduZWQgbV9wcmVOdW1iZXI7
Ci0gICAgICAgIHVuc2lnbmVkIG1fcG9zdE51bWJlcjsKLSAgICB9OwotCi0gICAgQmxvY2tNYXA8
TnVtYmVyaW5nPiBtX21hcDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6REZH
OjpFZGdlS2luZCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Jbmpl
Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uSW5qZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25JbmplY3Rpb25QaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrKCktPm1fbG9jayk7
CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBmb3IgdGhlIGFy
Z3VtZW50cyBhdCB0aGUgZmlyc3QgYmxvY2suIFRoZSBhcmd1bWVudHMgZnJvbQorICAgICAgICAg
ICAgLy8gb3RoZXIgZW50cnlwb2ludHMgaGF2ZSBhbHJlYWR5IGJlZW4gcG9wdWxhdGVkIHdpdGgg
dGhlaXIgcHJlZGljdGlvbnMuCisgICAgICAgICAgICBhdXRvJiBhcmd1bWVudHMgPSBtX2dyYXBo
Lm1fZW50cnlwb2ludFRvQXJndW1lbnRzLmZpbmQobV9ncmFwaC5ibG9jaygwKSktPnZhbHVlOwor
CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBhcmcgPSAwOyBhcmcgPCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCkpOyArK2FyZykgewogICAgICAgICAgICAg
ICAgIFZhbHVlUHJvZmlsZSYgcHJvZmlsZSA9IHByb2ZpbGVkQmxvY2soKS0+dmFsdWVQcm9maWxl
Rm9yQXJndW1lbnQoYXJnKTsKLSAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2Fy
Z10tPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0KAorICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50c1thcmddLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdCgKICAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAy
MjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk0LDYgKzk5NCwxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEV4dHJhY3RD
YXRjaExvY2FsOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKG1fY3VycmVudE5vZGUtPmNh
dGNoTG9jYWxQcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwog
ICAgICAgICBjYXNlIEdldExvY2FsOgogICAgICAgICBjYXNlIFNldExvY2FsOgogICAgICAgICBj
YXNlIFVJbnQzMlRvTnVtYmVyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fZ3Jh
cGguZHVtcCgpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVEb21pbmF0b3Jz
KCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogICAgICAgICAKICAg
ICAgICAgU1NBQ2FsY3VsYXRvciBzc2FDYWxjdWxhdG9yKG1fZ3JhcGgpOwogICAgICAgICBJbnNl
cnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNhbGN1bGF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NSwxMiArOTUsMTIgQEAgU1NBQ2FsY3VsYXRvcjo6RGVmKiBTU0FDYWxjdWxhdG9y
OjpuZXdEZQogCiBTU0FDYWxjdWxhdG9yOjpEZWYqIFNTQUNhbGN1bGF0b3I6Om5vbkxvY2FsUmVh
Y2hpbmdEZWYoQmFzaWNCbG9jayogYmxvY2ssIFZhcmlhYmxlKiB2YXJpYWJsZSkKIHsKLSAgICBy
ZXR1cm4gcmVhY2hpbmdEZWZBdFRhaWwobV9ncmFwaC5tX2RvbWluYXRvcnMtPmlkb20oYmxvY2sp
LCB2YXJpYWJsZSk7CisgICAgcmV0dXJuIHJlYWNoaW5nRGVmQXRUYWlsKG1fZ3JhcGgubV9zc2FE
b21pbmF0b3JzLT5pZG9tKGJsb2NrKSwgdmFyaWFibGUpOwogfQogCiBTU0FDYWxjdWxhdG9yOjpE
ZWYqIFNTQUNhbGN1bGF0b3I6OnJlYWNoaW5nRGVmQXRUYWlsKEJhc2ljQmxvY2sqIGJsb2NrLCBW
YXJpYWJsZSogdmFyaWFibGUpCiB7Ci0gICAgZm9yICg7IGJsb2NrOyBibG9jayA9IG1fZ3JhcGgu
bV9kb21pbmF0b3JzLT5pZG9tKGJsb2NrKSkgeworICAgIGZvciAoOyBibG9jazsgYmxvY2sgPSBt
X2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+aWRvbShibG9jaykpIHsKICAgICAgICAgaWYgKERlZiog
ZGVmID0gbV9kYXRhW2Jsb2NrXS5tX2RlZnMuZ2V0KHZhcmlhYmxlKSkKICAgICAgICAgICAgIHJl
dHVybiBkZWY7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FD
YWxjdWxhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDYWxjdWxhdG9yLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU1NBQ2FsY3VsYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTAgKzE3NSwx
MCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUGhpSW5zZXJ0aW9uRnVuY3Rvcj4K
ICAgICB2b2lkIGNvbXB1dGVQaGlzKGNvbnN0IFBoaUluc2VydGlvbkZ1bmN0b3ImIGZ1bmN0b3Ip
CiAgICAgewotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG51bGxwdHIsIG1fZ3JhcGgubV9k
b21pbmF0b3JzKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBudWxscHRyLCBtX2dyYXBo
Lm1fc3NhRG9taW5hdG9ycyk7CiAgICAgICAgIAogICAgICAgICBmb3IgKFZhcmlhYmxlJiB2YXJp
YWJsZSA6IG1fdmFyaWFibGVzKSB7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy0+
Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCisgICAgICAg
ICAgICBtX2dyYXBoLm1fc3NhRG9taW5hdG9ycy0+Zm9yQWxsQmxvY2tzSW5QcnVuZWRJdGVyYXRl
ZERvbWluYW5jZUZyb250aWVyT2YoCiAgICAgICAgICAgICAgICAgdmFyaWFibGUubV9ibG9ja3NX
aXRoRGVmcywKICAgICAgICAgICAgICAgICBbJl0gKEJhc2ljQmxvY2sqIGJsb2NrKSAtPiBib29s
IHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IGZ1bmN0b3IoJnZhcmlhYmxl
LCBibG9jayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
U0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDggQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2dyYXBoLm1f
Zm9ybSA9PSBUaHJlYWRlZENQUyk7CiAgICAgICAgIAogICAgICAgICBtX2dyYXBoLmNsZWFyUmVw
bGFjZW1lbnRzKCk7Ci0gICAgICAgIG1fZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOworICAgICAg
ICBtX2dyYXBoLmNsZWFyQ1BTQ0ZHRGF0YSgpOworICAgICAgICBtX2dyYXBoLmVuc3VyZVNTQURv
bWluYXRvcnMoKTsKICAgICAgICAgCiAgICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAg
ICBkYXRhTG9nKCJHcmFwaCBiZWZvcmUgU1NBIHRyYW5zZm9ybWF0aW9uOlxuIik7CkBAIC0xMTAs
NyArMTExLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBEZWNp
ZGUgd2hlcmUgUGhpcyBhcmUgdG8gYmUgaW5zZXJ0ZWQuIFRoaXMgY3JlYXRlcyB0aGUgUGhpJ3Mg
YnV0IGRvZXNuJ3QgaW5zZXJ0IHRoZW0KLSAgICAgICAgLy8geWV0LiBXZSB3aWxsIGxhdGVyIGtu
b3cgd2hlcmUgdG8gaW5zZXJ0IHRoZW0gYmVjYXVzZSBTU0FDYWxjdWxhdG9yIGlzIHN1Y2ggYSBi
cm8uCisgICAgICAgIC8vIHlldC4gV2Ugd2lsbCBsYXRlciBrbm93IHdoZXJlIHRvIGluc2VydCBi
YXNlZCBvbiB3aGVyZSBTU0FDYWxjdWxhdG9yIHRlbGxzIHVzIHRvLgogICAgICAgICBtX2NhbGN1
bGF0b3IuY29tcHV0ZVBoaXMoCiAgICAgICAgICAgICBbJl0gKFNTQUNhbGN1bGF0b3I6OlZhcmlh
YmxlKiBzc2FWYXJpYWJsZSwgQmFzaWNCbG9jayogYmxvY2spIC0+IE5vZGUqIHsKICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbV92YXJpYWJsZUZvclNTQUlu
ZGV4W3NzYVZhcmlhYmxlLT5pbmRleCgpXTsKQEAgLTM4MSwxOCArMzgyLDIyIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGJsb2NrLT52YWx1ZXNBdEhlYWQuY2xlYXIoKTsKICAgICAgICAgICAgIGJs
b2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6OlNTQURhdGE+KGJsb2NrKTsK
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5y
ZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworCisgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG11bHRpcGxlIGVudHJ5cG9pbnRzIGluIERGRyBTU0E6CisgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzOTYKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX2VudHJ5cG9pbnRzLnNpemUoKSA9PSAxKTsKKyAgICAg
ICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRUb0FyZ3VtZW50cy5maW5k
KG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50Rm9y
bWF0cy5yZXNpemUoYXJndW1lbnRzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGFyZ3VtZW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIEZsdXNoRm9ybWF0IGZvcm1h
dCA9IEZsdXNoZWRKU1ZhbHVlOwogCi0gICAgICAgICAgICBOb2RlKiBub2RlID0gbV9hcmd1bWVu
dE1hcHBpbmcuZ2V0KG1fZ3JhcGgubV9hcmd1bWVudHNbaV0pOworICAgICAgICAgICAgTm9kZSog
bm9kZSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChhcmd1bWVudHNbaV0pOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChub2RlKTsKICAgICAgICAgICAgIGZvcm1hdCA9
IG5vZGUtPnN0YWNrQWNjZXNzRGF0YSgpLT5mb3JtYXQ7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0gPSBmb3JtYXQ7Ci0gICAgICAgICAgICBt
X2dyYXBoLm1fYXJndW1lbnRzW2ldID0gbm9kZTsgLy8gUmVjb3JkIHRoZSBsb2FkIHRoYXQgbG9h
ZHMgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGJlbmVmaXQgb2YgZXhpdCBwcm9maWxpbmcuCisgICAg
ICAgICAgICBhcmd1bWVudHNbaV0gPSBub2RlOyAvLyBSZWNvcmQgdGhlIGxvYWQgdGhhdCBsb2Fk
cyB0aGUgYXJndW1lbnRzIGZvciB0aGUgYmVuZWZpdCBvZiBleGl0IHByb2ZpbGluZy4KICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5tX2Zvcm0gPSBTU0E7CkBAIC00MTYsNyAr
NDIxLDEyIEBAIHByaXZhdGU6CiAKIGJvb2wgcGVyZm9ybVNTQUNvbnZlcnNpb24oR3JhcGgmIGdy
YXBoKQogewotICAgIHJldHVybiBydW5QaGFzZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCghZ3JhcGgubV9pc0luU1NBQ29udmVyc2lvbik7CisgICAgZ3Jh
cGgubV9pc0luU1NBQ29udmVyc2lvbiA9IHRydWU7CisgICAgYm9vbCByZXN1bHQgPSBydW5QaGFz
ZTxTU0FDb252ZXJzaW9uUGhhc2U+KGdyYXBoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5t
X2lzSW5TU0FDb252ZXJzaW9uKTsKKyAgICBncmFwaC5tX2lzSW5TU0FDb252ZXJzaW9uID0gZmFs
c2U7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJl
dmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNiArMzI2LDcgQEAgYm9vbCBzYWZlVG9FeGVj
dXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBj
YXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2Fz
ZSBFeHRyYWN0Q2F0Y2hMb2NhbDoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNh
c2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2Mzgs
NiArNTYzOCwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIHVucmVhY2hhYmxlKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRXh0
cmFjdENhdGNoTG9jYWw6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSB0YWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBwYXlsb2Fk
KHRoaXMpOworCisgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHRhZ0dQUiA9IHRhZy5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHBheWxvYWRHUFIgPSBw
YXlsb2FkLmdwcigpOworCisgICAgICAgIEpTVmFsdWUqIHB0ciA9ICZyZWludGVycHJldF9jYXN0
PEpTVmFsdWUqPihtX2ppdC5qaXRDb2RlKCktPmNhdGNoT1NSRW50cnlCdWZmZXItPmRhdGFCdWZm
ZXIoKSlbbm9kZS0+Y2F0Y2hPU1JFbnRyeUluZGV4KCldOworICAgICAgICBtX2ppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihwdHIpLCB0ZW1wR1BSKTsKKyAgICAgICAgbV9qaXQu
bG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0ZW1wR1BSLCBUYWdPZmZzZXQpLCB0YWdHUFIp
OworICAgICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIsIFBh
eWxvYWRPZmZzZXQpLCBwYXlsb2FkR1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdCh0YWdHUFIs
IHBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIExh
c3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OTgsNiArNTk5OCwxNiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDaGVja1N1
YkNsYXNzKG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRXh0cmFjdENhdGNoTG9j
YWw6IHsKKyAgICAgICAgSlNWYWx1ZSogcHRyID0gJnJlaW50ZXJwcmV0X2Nhc3Q8SlNWYWx1ZSo+
KG1faml0LmppdENvZGUoKS0+Y2F0Y2hPU1JFbnRyeUJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKVtub2Rl
LT5jYXRjaE9TUkVudHJ5SW5kZXgoKV07CisgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OworICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7CisgICAgICAgIG1faml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHB0ciksIHRlbXBHUFIpOworICAgICAgICBt
X2ppdC5sb2FkNjQoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRlbXBHUFIpLCB0ZW1wR1BSKTsKKyAg
ICAgICAganNWYWx1ZVJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAjaWYgRU5BQkxFKEZUTF9KSVQpICAgICAgICAKICAgICBjYXNlIENoZWNrVGllclVwSW5M
b29wOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNhbGxUaWVyVXAgPSBtX2ppdC5i
cmFuY2hBZGQzMigKQEAgLTYwODYsNiArNjA5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKwog
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAg
ICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MDcsNiArMTcwNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Vy
cmVudEJsb2NrCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobV9ibG9jay0+aXND
YXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwor
ICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworICAgICAg
ICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgfQorCiAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExv
ZyhWYXJpYWJsZUV2ZW50OjpyZXNldCgpKTsKICAgICAKICAgICBtX2ppdC5qaXRBc3NlcnRIYXNW
YWxpZENhbGxGcmFtZSgpOwpAQCAtMTgwMSw4ICsxODA4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgIEFTU0VSVCghbV9jdXJyZW50Tm9kZSk7CiAgICAg
bV9vcmlnaW4gPSBOb2RlT3JpZ2luKENvZGVPcmlnaW4oMCksIENvZGVPcmlnaW4oMCksIHRydWUp
OwogCisgICAgYXV0byYgYXJndW1lbnRzID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9pbnRUb0Fy
Z3VtZW50cy5maW5kKG1faml0LmdyYXBoKCkuYmxvY2soMCkpLT52YWx1ZTsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG1faml0LmNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7ICsraSkgewot
ICAgICAgICBOb2RlKiBub2RlID0gbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50c1tpXTsKKyAgICAg
ICAgTm9kZSogbm9kZSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAg
ICAgICAgICAvLyBUaGUgYXJndW1lbnQgaXMgZGVhZC4gV2UgZG9uJ3QgZG8gYW55IGNoZWNrcyBm
b3Igc3VjaCBhcmd1bWVudHMuCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4ODYsMTIgKzE4
OTQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y3JlYXRlT1NSRW50cmllcygpCiAgICAgICAg
IEJhc2ljQmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAg
ICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJs
b2NrLT5pc09TUlRhcmdldCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAg
ICAgLy8gQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgT1NSIGVudHJ5IHRyYW1wb2xpbmVzLiBXZSBj
b3VsZCBhZGQgdGhlbQotICAgICAgICAvLyBoZXJlIGlmIG5lZWQgYmUuCi0gICAgICAgIG1fb3Ny
RW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Jsb2NrSW5kZXhdKTsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc09TUlRhcmdldCB8fCBibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsK
KyAgICAgICAgICAgIC8vIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIE9TUiBlbnRyeSB0cmFtcG9s
aW5lcy4gV2UgY291bGQgYWRkIHRoZW0KKyAgICAgICAgICAgIC8vIGhlcmUgaWYgbmVlZCBiZS4K
KyAgICAgICAgICAgIG1fb3NyRW50cnlIZWFkcy5hcHBlbmQobV9qaXQuYmxvY2tIZWFkcygpW2Js
b2NrSW5kZXhdKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTkwMiwxMCArMTkwOSwyOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rT1NSRW50cmllcyhMaW5rCiAgICAgICAgIEJhc2lj
QmxvY2sqIGJsb2NrID0gbV9qaXQuZ3JhcGgoKS5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAg
aWYgKCFibG9jaykKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWJsb2NrLT5p
c09TUlRhcmdldCkKKyAgICAgICAgaWYgKCFibG9jay0+aXNPU1JUYXJnZXQgJiYgIWJsb2NrLT5p
c0NhdGNoRW50cnlwb2ludCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBtX2ppdC5u
b3RpY2VPU1JFbnRyeSgqYmxvY2ssIG1fb3NyRW50cnlIZWFkc1tvc3JFbnRyeUluZGV4KytdLCBs
aW5rQnVmZmVyKTsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAg
ICAgICAgICAgYXV0byYgYXJndW1lbnRzVmVjdG9yID0gbV9qaXQuZ3JhcGgoKS5tX2VudHJ5cG9p
bnRUb0FyZ3VtZW50cy5maW5kKGJsb2NrKS0+dmFsdWU7CisgICAgICAgICAgICBWZWN0b3I8Rmx1
c2hGb3JtYXQ+IGFyZ3VtZW50Rm9ybWF0czsKKyAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50c1ZlY3Rvci5zaXplKCkpOworICAgICAgICAg
ICAgZm9yIChOb2RlKiBzZXRBcmd1bWVudCA6IGFyZ3VtZW50c1ZlY3RvcikgeworICAgICAgICAg
ICAgICAgIGlmIChzZXRBcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICBGbHVzaEZvcm1h
dCBmbHVzaEZvcm1hdCA9IHNldEFyZ3VtZW50LT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hG
b3JtYXQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGZsdXNoRm9ybWF0ID09IEZsdXNo
ZWRJbnQzMiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkQ2VsbCB8fCBmbHVzaEZvcm1hdCA9PSBG
bHVzaGVkQm9vbGVhbiB8fCBmbHVzaEZvcm1hdCA9PSBGbHVzaGVkSlNWYWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZmx1c2hGb3JtYXQp
OworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBhcmd1bWVudEZv
cm1hdHMudW5jaGVja2VkQXBwZW5kKERlYWRGbHVzaCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBtX2ppdC5ub3RpY2VDYXRjaEVudHJ5cG9pbnQoKmJsb2NrLCBtX29zckVudHJ5SGVhZHNb
b3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlciwgV1RGTW92ZShhcmd1bWVudEZvcm1hdHMpKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNPU1JUYXJnZXQp
OworICAgICAgICAgICAgbV9qaXQubm90aWNlT1NSRW50cnkoKmJsb2NrLCBtX29zckVudHJ5SGVh
ZHNbb3NyRW50cnlJbmRleCsrXSwgbGlua0J1ZmZlcik7CisgICAgICAgIH0KICAgICB9CisKKyAg
ICBtX2ppdC5qaXRDb2RlKCktPmZpbmFsaXplQ2F0Y2hPU1JFbnRyeXBvaW50cygpOworCiAgICAg
QVNTRVJUKG9zckVudHJ5SW5kZXggPT0gbV9vc3JFbnRyeUhlYWRzLnNpemUoKSk7CiAgICAgCiAg
ICAgaWYgKHZlcmJvc2VDb21waWxhdGlvbkVuYWJsZWQoKSkgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRpb25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGF0aWNFeGVjdXRp
b25Db3VudEVzdGltYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RhdGljRXhlY3V0aW9uQ291bnRFc3RpbWF0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBi
b29sIHJ1bigpCiAgICAgewotICAgICAgICBtX2dyYXBoLmVuc3VyZU5hdHVyYWxMb29wcygpOwor
ICAgICAgICBtX2dyYXBoLmVuc3VyZUNQU05hdHVyYWxMb29wcygpOwogICAgICAgICAKICAgICAg
ICAgLy8gRXN0aW1hdGUgYmFzaWMgYmxvY2sgZXhlY3V0aW9uIGNvdW50cyBiYXNlZCBvbiBsb29w
IGRlcHRoLgogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVt
QmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgYmxvY2stPmV4ZWN1dGlvbkNvdW50ID0gcG93KDEwLCBtX2dyYXBoLm1fbmF0dXJhbExv
b3BzLT5sb29wRGVwdGgoYmxvY2spKTsKKyAgICAgICAgICAgIGJsb2NrLT5leGVjdXRpb25Db3Vu
dCA9IHBvdygxMCwgbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wcy0+bG9vcERlcHRoKGJsb2NrKSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEVzdGltYXRlIGJyYW5jaCB3ZWlnaHRz
IGJhc2VkIG9uIGV4ZWN1dGlvbiBjb3VudHMuIFRoaXMgaXNuJ3QgcXVpdGUgY29ycmVjdC4gSXQn
bGwKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGFwcGx5Q291bnRz
KGRhdGEtPmZhbGxUaHJvdWdoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDE4ICsyNjgsMjcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEZsdXNoOiB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9ncmFwaC5tX2Zvcm0gIT0gU1NBKTsKKworICAgICAgICAgICAgaWYgKG1fZ3JhcGgud2lsbENh
dGNoRXhjZXB0aW9uSW5NYWNoaW5lRnJhbWUobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlbGF4IHRoaXM6
CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MDgyNAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBOb2RlKiBzZXRMb2NhbCA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwgPSBtX25vZGUtPmxvY2FsKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fbm9kZUluZGV4OyBpLS07KSB7CiAgICAg
ICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fYmxvY2stPmF0KGkpOworCiAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gU2V0TG9jYWwgJiYgbm9kZS0+bG9jYWwoKSA9PSBsb2NhbCkg
ewogICAgICAgICAgICAgICAgICAgICBzZXRMb2NhbCA9IG5vZGU7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChhY2Nl
c3Nlc092ZXJsYXAobV9ncmFwaCwgbm9kZSwgQWJzdHJhY3RIZWFwKFN0YWNrLCBsb2NhbCkpKQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoIXNldExvY2FsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENo
ZWNrSW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4IEBAIHN0
YXRpYyBGdW5jdGlvbldoaXRlbGlzdCYgZW5zdXJlR2xvYmFsRlQKICAgICByZXR1cm4gZnRsV2hp
dGVsaXN0OwogfQogCit1c2luZyBOYXR1cmFsTG9vcCA9IENQU05hdHVyYWxMb29wOworCiBjbGFz
cyBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKIHB1YmxpYzoKICAg
ICBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKQEAgLTgxLDggKzgzLDgg
QEAgcHVibGljOgogICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZU9TUkVudHJ5VG9GVEwoKSkKICAg
ICAgICAgICAgIGxldmVsID0gRlRMOjpDYW5Db21waWxlOwogICAgICAgICAKLSAgICAgICAgbV9n
cmFwaC5lbnN1cmVOYXR1cmFsTG9vcHMoKTsKLSAgICAgICAgTmF0dXJhbExvb3BzJiBuYXR1cmFs
TG9vcHMgPSAqbV9ncmFwaC5tX25hdHVyYWxMb29wczsKKyAgICAgICAgbV9ncmFwaC5lbnN1cmVD
UFNOYXR1cmFsTG9vcHMoKTsKKyAgICAgICAgQ1BTTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMg
PSAqbV9ncmFwaC5tX2Nwc05hdHVyYWxMb29wczsKICAgICAgICAgSGFzaE1hcDxjb25zdCBOYXR1
cmFsTG9vcCosIHVuc2lnbmVkPiBuYXR1cmFsTG9vcFRvTG9vcEhpbnQgPSBidWlsZE5hdHVyYWxM
b29wVG9Mb29wSGludE1hcChuYXR1cmFsTG9vcHMpOwogCiAgICAgICAgIEhhc2hNYXA8dW5zaWdu
ZWQsIExvb3BIaW50RGVzY3JpcHRvcj4gdGllclVwSGllcmFyY2h5OwpAQCAtMTgyLDcgKzE4NCw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gYnVpbGROYXR1cmFsTG9vcFRvTG9vcEhpbnRN
YXAoY29uc3QgTmF0dXJhbExvb3BzJiBuYXR1cmFsTG9vcHMpCisgICAgSGFzaE1hcDxjb25zdCBO
YXR1cmFsTG9vcCosIHVuc2lnbmVkPiBidWlsZE5hdHVyYWxMb29wVG9Mb29wSGludE1hcChjb25z
dCBDUFNOYXR1cmFsTG9vcHMmIG5hdHVyYWxMb29wcykKICAgICB7CiAgICAgICAgIEhhc2hNYXA8
Y29uc3QgTmF0dXJhbExvb3AqLCB1bnNpZ25lZD4gbmF0dXJhbExvb3BzVG9Mb29wSGludDsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVj
a0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQsMTAgKzEzNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXRl
ci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgIC8v
IEN1cnJlbnRseSB3ZSBzaG91bGQgb25seSBiZSBkb2luZyB0aGlzIGhvaXN0aW5nIGZvciBTZXRB
cmd1bWVudHMgYXQgdGhlIHByb2xvZ3VlLgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWJs
b2NrSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc2hvdWxkIG9u
bHkgYmUgZG9pbmcgdGhpcyBob2lzdGluZyBmb3IgU2V0QXJndW1lbnRzIGF0IGFuIGVudHJ5cG9p
bnQuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLmlzRW50cnlwb2ludChibG9j
aykpOwogCiAgICAgICAgICAgICAgICAgICAgIE5vZGVPcmlnaW4gb3JpZ2luID0gbm9kZS0+b3Jp
Z2luOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcmlnaW4uZXhpdE9LKTsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIGdldExvY2Fs
ID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBHZXRMb2NhbCwgb3JpZ2luLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9u
IDIyMTEwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MywxMCArODMsMTMgQEAgcHVibGljOgogICAgICAgICAvLyBOQi4g
VGhpcyBjb2RlIGlzIG5vdCB3cml0dGVuIGZvciBwZXJmb3JtYW5jZSwgc2luY2UgaXQgaXMgbm90
IGludGVuZGVkIHRvIHJ1bgogICAgICAgICAvLyBpbiByZWxlYXNlIGJ1aWxkcy4KIAotICAgICAg
ICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2YXJpYWJsZXMgYXQgdGhlIGhlYWQgb2YgdGhl
IHJvb3QgYmxvY2sgYXJlIGRlYWQuCi0gICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBo
LmJsb2NrKDApOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcm9vdC0+dmFyaWFi
bGVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkKLSAgICAgICAgICAgIFZfRVFVQUwoKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLCByb290KSwgc3RhdGljX2Nhc3Q8Tm9kZSo+KDApLCBy
b290LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkpOworICAgICAgICBWQUxJREFURSgobV9ncmFw
aC5ibG9jaygwKSksIG1fZ3JhcGguaXNFbnRyeXBvaW50KG1fZ3JhcGguYmxvY2soMCkpKTsKKwor
ICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IGFsbCBsb2NhbCB2YXJpYWJsZXMgYXQgdGhlIGhlYWQg
b2YgYWxsIGVudHJ5cG9pbnRzIGFyZSBkZWFkLgorICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGVu
dHJ5cG9pbnQgOiBtX2dyYXBoLm1fZW50cnlwb2ludHMpIHsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBlbnRyeXBvaW50LT52YXJpYWJsZXNBdEhlYWQubnVtYmVyT2ZMb2Nh
bHMoKTsgKytpKQorICAgICAgICAgICAgICAgIFZfRVFVQUwoKHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGkpLCBlbnRyeXBvaW50KSwgc3RhdGljX2Nhc3Q8Tm9kZSo+KG51bGxwdHIpLCBlbnRyeXBv
aW50LT52YXJpYWJsZXNBdEhlYWQubG9jYWwoaSkpOworICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBWYWxpZGF0ZSByZWYgY291bnRzIGFuZCB1c2VzLgogICAgICAgICBmb3IgKEJsb2Nr
SW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyAr
K2Jsb2NrSW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAko
cmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRl
KQogICAgICAgICAgICAgUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksCiAgICAgICAgICAgICB0b0NT
dHJpbmcoIkdlbmVyYXRlZCBGVEwgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBl
KGNvZGVCbG9jaywgSklUQ29kZTo6RlRMSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBn
cmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiOlxuIikpOwogICAgICAgICAK
LSAgICAgICAgZ3JhcGguZW5zdXJlRG9taW5hdG9ycygpOwotICAgICAgICBncmFwaC5lbnN1cmVO
YXR1cmFsTG9vcHMoKTsKKyAgICAgICAgZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOworICAg
ICAgICBncmFwaC5lbnN1cmVTU0FOYXR1cmFsTG9vcHMoKTsKICAgICAgICAgCiAgICAgICAgIGNv
bnN0IGNoYXIqIHByZWZpeCA9ICIgICAgIjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjExMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgbmFtZSA9ICJqc0JvZHkiOwogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5lbnN1cmVE
b21pbmF0b3JzKCk7CisgICAgICAgIG1fZ3JhcGguZW5zdXJlU1NBRG9taW5hdG9ycygpOwogCiAg
ICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBkYXRh
TG9nKCJGdW5jdGlvbiByZWFkeSwgYmVnaW5uaW5nIGxvd2VyaW5nLlxuIik7CkBAIC0yNjYsOCAr
MjY2LDkgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIG1fbm9kZSA9IG51bGxwdHI7CiAg
ICAgICAgIG1fb3JpZ2luID0gTm9kZU9yaWdpbihDb2RlT3JpZ2luKDApLCBDb2RlT3JpZ2luKDAp
LCB0cnVlKTsKKyAgICAgICAgYXV0byYgYXJndW1lbnRzID0gbV9ncmFwaC5tX2VudHJ5cG9pbnRU
b0FyZ3VtZW50cy5maW5kKG1fZ3JhcGguYmxvY2soMCkpLT52YWx1ZTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gY29kZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgewotICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBO
b2RlKiBub2RlID0gYXJndW1lbnRzW2ldOwogICAgICAgICAgICAgbV9vdXQuc2V0T3JpZ2luKG5v
ZGUpOwogICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudChpKTsKICAgICAgICAgICAgIApAQCAtNDQzLDcgKzQ0NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBERkc6OkJhc2ljQmxvY2sqIHRhcmdldCA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7CiAgICAgICAgICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZG9taW5hdG9ycy0+ZG9taW5hdGVz
KG1faGlnaEJsb2NrLCB0YXJnZXQpKSB7CisgICAgICAgICAgICBpZiAobV9ncmFwaC5tX3NzYURv
bWluYXRvcnMtPmRvbWluYXRlcyhtX2hpZ2hCbG9jaywgdGFyZ2V0KSkgewogICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkJsb2NrICIsICp0YXJnZXQsICIgd2lsbCBiYWlsIGFsc28uXG4iKTsKICAgICAg
ICAgICAgICAgICB0YXJnZXQtPmNmYUhhc1Zpc2l0ZWQgPSBmYWxzZTsKQEAgLTE0NDM4LDcgKzE0
NDM5LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9ncmFwaC5tX2RvbWluYXRvcnMtPmRvbWlu
YXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hpZ2hCbG9jaykpCisgICAgICAgIGlmICghbV9ncmFwaC5t
X3NzYURvbWluYXRvcnMtPmRvbWluYXRlcyh2YWx1ZS5ibG9jaygpLCBtX2hpZ2hCbG9jaykpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNzk4LDYgKzc5OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VaWiwgaW50LCBpbnQzMl90LCBpbnQzMl90KTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FKTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9F
SlMsIEdQUlJlZywgc2l6ZV90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FVWksIHVpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FQ0MsIFJlZ2lzdGVySUQs
IFJlZ2lzdGVySUQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFNfSklUT3BlcmF0aW9uX0VKLCBSZWdpc3RlcklEKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FSkksIEdQUlJlZywgVW5pcXVlZFN0
cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShy
ZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDYgKzQ2MywxMyBAQCBBTFdBWVNfSU5MSU5FIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGNhbGw7CiB9CiAKK0FMV0FZU19JTkxJ
TkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9u
X0VVaSBvcGVyYXRpb24sIHVpbnQzMl90IGFyZzEpCit7CisgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7CisgICAgdXBkYXRlVG9wQ2FsbEZyYW1lKCk7
CisgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKK30KKwogI2lmIFVTRShKU1ZBTFVF
NjQpCiBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihaX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGludDMyX3QgYXJn
MiwgaW50MzJfdCBhcmczKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NTYsNiAr
ODU2LDI2IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKIAogICAg
IHVuc2lnbmVkIHRocm93blZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsK
ICAgICBlbWl0U3RvcmUodGhyb3duVmFsdWUsIHJlZ1QxLCByZWdUMCk7CisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKyAgICAvLyBGSVhNRTogY29uc2lkZXIgaW5saW5lIGNhY2hpbmcgdGhlIHByb2Nl
c3Mgb2YgZG9pbmcgT1NSIGVudHJ5LCBpbmNsdWRpbmcKKyAgICAvLyBhcmd1bWVudCB0eXBlIHBy
b29mcywgc3RvcmluZyBsb2NhbHMgdG8gdGhlIGJ1ZmZlciwgZXRjCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTU5OAorCisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIG1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGF1
dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7Cisg
ICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgIGp1bXAocmV0dXJuVmFsdWVHUFIpOwor
ICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOworICAgIGlmIChzaG91bGRFbWl0UHJvZmlsaW5n
KCkpIHsKKyAgICAgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KGN1cnJlbnRJbnN0cnVjdGlv
blszXS51LnBvaW50ZXIpOworICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChWYWx1ZVByb2Zp
bGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyByZWdzKHJl
Z1QxLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUu
bV9vcGVyYW5kLCByZWdzKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUocHJv
ZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTQsNiArNTU0LDI2IEBAIHZvaWQgSklUOjpl
bWl0X29wX2NhdGNoKEluc3RydWN0aW9uKiBjdXIKIAogICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1Qw
LCBFeGNlcHRpb246OnZhbHVlT2Zmc2V0KCkpLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKworI2lmIEVOQUJMRShE
RkdfSklUKQorICAgIC8vIEZJWE1FOiBjb25zaWRlciBpbmxpbmUgY2FjaGluZyB0aGUgcHJvY2Vz
cyBvZiBkb2luZyBPU1IgZW50cnksIGluY2x1ZGluZworICAgIC8vIGFyZ3VtZW50IHR5cGUgcHJv
b2ZzLCBzdG9yaW5nIGxvY2FscyB0byB0aGUgYnVmZmVyLCBldGMKKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk4CisKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaCwgbV9ieXRlY29kZU9mZnNldCk7CisgICAgYXV0
byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAg
ICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CisgICAganVtcChyZXR1cm5WYWx1ZUdQUik7Cisg
ICAgc2tpcE9TUkVudHJ5LmxpbmsodGhpcyk7CisgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmco
KSkgeworICAgICAgICBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDxWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kQnVmZmVyKj4oY3VycmVudEluc3RydWN0aW9u
WzNdLnUucG9pbnRlcik7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MocmVn
VDApOworICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3BlcmFu
ZCwgcmVncyk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHByb2ZpbGUubV9w
cm9maWxlKTsKKyAgICAgICAgfSk7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQog
fQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyNiw2ICsxNTI2LDE5IEBAIFNsb3dQYXRo
UmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGkKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5U
KGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiT1NSIGZhaWxlZCIpKTsKICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwogfQorCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaChFeGVjU3RhdGUqIGV4ZWMsIHVpbnQzMl90IGJ5dGVjb2Rl
SW5kZXgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxh
Y2VtZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlcGxhY2VtZW50KCk7CisgICAgaWYgKG9wdGlt
aXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oREZHOjpwcmVw
YXJlQ2F0Y2hPU1JFbnRyeShleGVjLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRl
eCkpOworfQorCiAjZW5kaWYKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SW5k
ZXgoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJyYXlWYWx1ZSwgaW50
MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMTgsNiArMzE4LDcgQEAgdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVy
YQogdHlwZWRlZiBjaGFyKiAoSklUX09QRVJBVElPTiAqUF9KSVRPcGVyYXRpb25fRVpaKShFeGVj
U3RhdGUqLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgY2hhciogKEpJVF9PUEVSQVRJT04g
KlBfSklUT3BlcmF0aW9uX0VRWikoRXhlY1N0YXRlKiwgaW50NjRfdCwgaW50MzJfdCk7CiB0eXBl
ZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9wZXJhdGlvbl9FRFopKEV4ZWNTdGF0ZSos
IGRvdWJsZSwgaW50MzJfdCk7Cit0eXBlZGVmIGNoYXIqIChKSVRfT1BFUkFUSU9OICpQX0pJVE9w
ZXJhdGlvbl9FVWkpKEV4ZWNTdGF0ZSosIHVpbnQzMl90KTsKIHR5cGVkZWYgU2xvd1BhdGhSZXR1
cm5UeXBlIChKSVRfT1BFUkFUSU9OICpTcHJ0X0pJVE9wZXJhdGlvbl9FQ2xpKShFeGVjU3RhdGUq
LCBDYWxsTGlua0luZm8qKTsKIHR5cGVkZWYgU3RyaW5nSW1wbCogKEpJVF9PUEVSQVRJT04gKlRf
SklUT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3RyaW5nKik7CiB0eXBlZGVmIEpTU3Ry
aW5nKiAoSklUX09QRVJBVElPTiAqSnNzX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50
MzJfdCk7CkBAIC00MDAsNiArNDAxLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRo
cm93KEV4ZWNTdAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlYnVnKEV4ZWNTdGF0ZSos
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKICNpZiBFTkFCTEUoREZHX0pJVCkKIFNsb3dQYXRoUmV0
dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk9wdGltaXplKEV4ZWNTdGF0ZSosIGludDMy
X3QpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5T1NSRW50
ZXJBdENhdGNoKEV4ZWNTdGF0ZSosIHVpbnQzMl90KSBXVEZfSU5URVJOQUw7CiAjZW5kaWYKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUluZGV4KEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0R2V0dGVyQnlJZChFeGVjU3RhdGUqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1w
bCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAy
MjExMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYxLDYgKzE2NjEsMTggQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2xvZ19zaGFkbwogICAgIExMSU5UX0VORCgpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworCisgICAgVmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlciogYnVmZmVyID0gc3RhdGljX2Nh
c3Q8VmFsdWVQcm9maWxlQW5kT3BlcmFuZEJ1ZmZlcio+KHBjWzNdLnUucG9pbnRlcik7CisgICAg
YnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewor
ICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICB9KTsK
KworICAgIExMSU5UX0VORCgpOworfQorCiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBs
bGludF90aHJvd19zdGFja19vdmVyZmxvd19lcnJvcihWTSogdm0sIFByb3RvQ2FsbEZyYW1lKiBw
cm90b0ZyYW1lKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHZtLT50b3BDYWxsRnJhbWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2
aXNpb24gMjIxMTA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2hhCiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2dldF9mcm9tX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHV0X3RvX3Njb3BlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY2hlY2tfaWZfZXhjZXB0aW9uX2lzX3VuY2F0Y2hhYmxlX2FuZF9ub3RpZnlfcHJvZmlsZXIp
OworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX2NhdGNoKTsK
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3NoYWRvd19jaGlja2Vu
X3Byb2xvZ3VlKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbG9nX3No
YWRvd19jaGlja2VuX3RhaWwpOwogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRf
dGhyb3dfc3RhY2tfb3ZlcmZsb3dfZXJyb3IoVk0qLCBQcm90b0NhbGxGcmFtZSopIFdURl9JTlRF
Uk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTk5Nyw3ICsxOTk3LDEwIEBAIF9sbGludF9vcF9jYXRjaDoKICAgICBzdG9y
ZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQogCiAgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBU
aGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAs
IHQxLCB0MiwgdDMgYWJvdmUuCi0gICAgZGlzcGF0Y2goMykKKworICAgIGNhbGxPcGNvZGVTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCisKKyAgICBkaXNwYXRjaChjb25z
dGV4cHIgb3BfY2F0Y2hfbGVuZ3RoKQogCiBfbGxpbnRfb3BfZW5kOgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtMTk3NCw2ICsxOTc0LDkgQEAgX2xsaW50X29wX2NhdGNoOgogICAgIHN0b3JlcSB0MywgW2Nm
ciwgdDIsIDhdCiAKICAgICB0cmFjZUV4ZWN1dGlvbigpCisKKyAgICBjYWxsT3Bjb2RlU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQorCiAgICAgZGlzcGF0Y2goY29uc3Rl
eHByIG9wX2NhdGNoX2xlbmd0aCkKIAogCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxMTA5KQorKysgU291
cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NCBAQAorMjAxNy0w
OC0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0
IGNvbXBpbGluZyBjYXRjaCBpbiB0aGUgREZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ1OTAKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQ
aXpsby4KKworICAgICAgICBUaGlzIHBhdGNoIGdlbmVyYWxpemVzIHRoZSBCYWNrd2FyZHNHcmFw
aCBmYWtlIHJvb3QgaW50byBhIG1vcmUgZ2VuZXJhbGl6YWJsZQorICAgICAgICBjbGFzcyBjYWxs
ZWQgU2luZ2xlUm9vdEdyYXBoLiBTaW5nbGVSb290R3JhcGggZXhwb3NlcyB0aGUgZ2VuZXJhbCBn
cmFwaCBpbnRlcmZhY2UKKyAgICAgICAgdXNlZCBpbiBEb21pbmF0b3JzIGFuZCBOYXR1cmFsTG9v
cHMuIFNpbmdsZVJvb3RHcmFwaCB0YWtlcyBhcyBpbnB1dCBhIGdyYXBoIHdpdGgKKyAgICAgICAg
dGhlIG5vcm1hbCBncmFwaCBpbnRlcmZhY2UsIGJ1dCBhbHNvIGFsbG93cyB0aGUgaW5wdXQgZ3Jh
cGggdG8gY29udGFpbiBtb3JlIHRoYW4KKyAgICAgICAgb25lIHJvb3QuIFNpbmdsZVJvb3RHcmFw
aCB0aGVuIGV4cG9zZXMgYSBzaW5nbGUgcm9vdCwgd2hpY2ggaXQgY3JlYXRlcywgdGhhdCBoYXMK
KyAgICAgICAgYW4gb3V0Z29pbmcgZWRnZSB0byBhbGwgdGhlIHJvb3RzIGluIHRoZSBvcmlnaW5h
bCBncmFwaC4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHd0Zi9CYWNrd2FyZHNHcmFwaC5oOgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNHcmFw
aDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpyb290TmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpOb2RlOjpOb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6Ok5vZGU6OnJvb3QpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNHcmFwaDo6Tm9kZTo6b3BlcmF0b3I9PSBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJkc0dyYXBoOjpOb2RlOjpvcGVyYXRvciE9
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6Ok5vZGU6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNHcmFw
aDo6Tm9kZTo6aXNSb290IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dhcmRz
R3JhcGg6Ok5vZGU6Om5vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6QmFja3dhcmRzR3JhcGg6OlNldDo6U2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6QmFja3dhcmRzR3JhcGg6OlNldDo6YWRkKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6QmFja3dhcmRzR3JhcGg6OlNldDo6cmVtb3ZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
QmFja3dhcmRzR3JhcGg6OlNldDo6Y29udGFpbnMpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpC
YWNrd2FyZHNHcmFwaDo6U2V0OjpkdW1wIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
QmFja3dhcmRzR3JhcGg6Ok1hcDo6TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dh
cmRzR3JhcGg6Ok1hcDo6Y2xlYXIpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpCYWNrd2FyZHNH
cmFwaDo6TWFwOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6QmFja3dhcmRz
R3JhcGg6Ok1hcDo6b3BlcmF0b3JbXSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OkJhY2t3YXJk
c0dyYXBoOjpNYXA6Om9wZXJhdG9yW10gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9E
b21pbmF0b3JzLmg6CisgICAgICAgIChXVEY6OkRvbWluYXRvcnM6OkRvbWluYXRvcnMpOgorICAg
ICAgICAoV1RGOjpEb21pbmF0b3JzOjpmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJv
bnRpZXJPZik6CisgICAgICAgIChXVEY6OkRvbWluYXRvcnM6OmZvckFsbEJsb2Nrc0luUHJ1bmVk
SXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mKToKKyAgICAgICAgKFdURjo6RG9taW5hdG9yczo6
aXRlcmF0ZWREb21pbmFuY2VGcm9udGllck9mIGNvbnN0KToKKyAgICAgICAgKFdURjo6RG9taW5h
dG9yczo6Zm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2ZJbXBsIGNvbnN0
KToKKyAgICAgICAgKiB3dGYvU2luZ2xlUm9vdEdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoV1RG
OjpTaW5nbGVSb290R3JhcGhOb2RlOjpyb290TmFtZSk6CisgICAgICAgIChXVEY6OlNpbmdsZVJv
b3RHcmFwaE5vZGU6OlNpbmdsZVJvb3RHcmFwaE5vZGUpOgorICAgICAgICAoV1RGOjpTaW5nbGVS
b290R3JhcGhOb2RlOjpyb290KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoTm9kZTo6
b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaE5vZGU6Om9w
ZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGhOb2RlOjpvcGVy
YXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoTm9kZTo6aXNS
b290IGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoTm9kZTo6bm9kZSBjb25z
dCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaFNldDo6YWRkKToKKyAgICAgICAgKFdU
Rjo6U2luZ2xlUm9vdEdyYXBoU2V0OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290
R3JhcGhTZXQ6OmNvbnRhaW5zKToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoU2V0Ojpk
dW1wIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdE1hcDo6U2luZ2xlUm9vdE1hcCk6
CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RNYXA6OmNsZWFyKToKKyAgICAgICAgKFdURjo6U2lu
Z2xlUm9vdE1hcDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RNYXA6Om9w
ZXJhdG9yW10pOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290TWFwOjpvcGVyYXRvcltdIGNvbnN0
KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjpTaW5nbGVSb290R3JhcGgpOgorICAg
ICAgICAoV1RGOjpTaW5nbGVSb290R3JhcGg6OnJvb3QgY29uc3QpOgorICAgICAgICAoV1RGOjpT
aW5nbGVSb290R3JhcGg6Om5ld01hcCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6
c3VjY2Vzc29ycyBjb25zdCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6cHJlZGVj
ZXNzb3JzIGNvbnN0KToKKyAgICAgICAgKFdURjo6U2luZ2xlUm9vdEdyYXBoOjppbmRleCBjb25z
dCk6CisgICAgICAgIChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6bm9kZSBjb25zdCk6CisgICAgICAg
IChXVEY6OlNpbmdsZVJvb3RHcmFwaDo6bnVtTm9kZXMgY29uc3QpOgorICAgICAgICAoV1RGOjpT
aW5nbGVSb290R3JhcGg6OmR1bXAgY29uc3QpOgorICAgICAgICAoV1RGOjpTaW5nbGVSb290R3Jh
cGg6OmFzc2VydElzQ29uc2lzdGVudCBjb25zdCk6CisKIDIwMTctMDgtMjMgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtDYWNoZSBBUEldIEVuYWJsZSBwZXJz
aXN0ZW50IGNvZGVyIHRvIGVuY29kZSBGZXRjaE9wdGlvbnMKSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIxMTA5KQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM1LDYg
KzMzNSw3IEBACiAJCTcwRUNBNjBCMUIwMjQyNjgwMDQ0OTczOSAvKiBTeW1ib2xJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbEltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MEMxQjAyNDI2ODAwNDQ5NzM5IC8qIFVuaXF1ZWRTdHJp
bmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZWRTdHJpbmdJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5MzZENkE5MUM5OUY4QUUwMDBE
MUFFRCAvKiBTbWFsbFB0clNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
bWFsbFB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTUyMTIwMjFGNDI1
ODg4MDBCRDY0MjEgLyogU2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNpbmdsZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QUZFQzZBRTFFQjIyQUM2MDBEQURFMzYgLyogVVVJRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVVUlELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkVD
NkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFVVSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzNG
NzIzOTFENzg4MTE5MDA2NzRFMjYgLyogQnJpZ2FuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCcmlnYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDAs
NiArOTQxLDcgQEAKIAkJCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWly
LmggKi8sCiAJCQkJMTQ2OTQxOTgxNkVBQjA0MTAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpckNGLmNw
cCAqLywKIAkJCQkxNDY5NDE5NTE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyTWFjLm1t
ICovLAorCQkJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAq
LywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKIAkJCQkwRkVD
ODRCMDFCREFDRDM5MDA4MEZGNzQgLyogU2NvcGVkTGFtYmRhLmggKi8sCiAJCQkJMEY2NkIyODQx
REM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwICovLApJbmRleDogU291cmNlL1dURi93dGYv
QmFja3dhcmRzR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNH
cmFwaC5oCShyZXZpc2lvbiAyMjExMDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9CYWNrd2FyZHNHcmFw
aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU2luZ2xlUm9vdEdyYXBoLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM4LDEzMyAr
MzksOSBAQCBjbGFzcyBCYWNrd2FyZHNHcmFwaCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QmFja3dhcmRzR3JhcGgpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIC8vIFdlIHVzZSAiI2VuZCIgdG8gcmVmZXIgdG8gdGhlIHN5bnRoZXRpYyByb290IHdlIGhh
dmUgY3JlYXRlZC4KLSAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdE5hbWUoKSB7IHJldHVybiAi
I2VuZCI7IH07Ci0KLSAgICBjbGFzcyBOb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGUo
dHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCi0gICAg
ICAgICAgICA6IG1fbm9kZShub2RlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGF0aWMgTm9kZSByb290KCkKLSAgICAgICAgewotICAgICAgICAgICAgTm9kZSByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQubV9ub2RlID0gMDsKLSAgICAgICAgICAgIHJlc3VsdC5tX2lzUm9v
dCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAgICAgICAgICAg
ICYmIG1faXNSb290ID09IG90aGVyLm1faXNSb290OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE5vZGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKnRoaXMgIT0gTm9kZSgpOyB9Ci0K
LSAgICAgICAgYm9vbCBpc1Jvb3QoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9pc1Jvb3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0eXBlbmFtZSBHcmFwaDo6Tm9kZSBu
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB0
eXBlbmFtZSBHcmFwaDo6Tm9kZSBtX25vZGU7Ci0gICAgICAgIGJvb2wgbV9pc1Jvb3QgeyBmYWxz
ZSB9OwotICAgIH07Ci0KLSAgICBjbGFzcyBTZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgU2V0
KCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIGFkZChjb25z
dCBOb2RlJiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS5pc1Jvb3QoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290LCB0cnVlKTsKLSAg
ICAgICAgICAgIHJldHVybiBtX3NldC5hZGQobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0
KG1faGFzUm9vdCwgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIG1fc2V0LnJlbW92ZShub2Rl
Lm5vZGUoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUm
IG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLmlzUm9vdCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7Ci0gICAgICAgICAgICByZXR1cm4gbV9zZXQuY29u
dGFpbnMobm9kZS5ub2RlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2hhc1Jvb3Qp
Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50KHJvb3ROYW1lKCksICIgIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnQobV9zZXQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgbV9zZXQ7Ci0gICAgICAgIGJvb2wgbV9oYXNSb290
IHsgZmFsc2UgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBjbGFz
cyBNYXAgewotICAgIHB1YmxpYzoKLSAgICAgICAgTWFwKEdyYXBoJiBncmFwaCkKLSAgICAgICAg
ICAgIDogbV9tYXAoZ3JhcGgudGVtcGxhdGUgbmV3TWFwPFQ+KCkpCi0gICAgICAgIHsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX21h
cC5jbGVhcigpOwotICAgICAgICAgICAgbV9yb290ID0gVCgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyAxOyB9Ci0KLSAg
ICAgICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghaW5kZXgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAgICAgICAgICAg
IHJldHVybiBtX21hcFtpbmRleCAtIDFdOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgVCYg
b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAg
ICAgIFQmIG9wZXJhdG9yW10oY29uc3QgTm9kZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fcm9vdDsKLSAg
ICAgICAgICAgIHJldHVybiBtX21hcFtub2RlLm5vZGUoKV07Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25zdCBUJiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiAoKmNvbnN0X2Nhc3Q8TWFwKj4odGhpcykpW25vZGVdOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBoOjp0
ZW1wbGF0ZSBNYXA8VD4gbV9tYXA7Ci0gICAgICAgIFQgbV9yb290OwotICAgIH07Ci0KKyAgICB1
c2luZyBOb2RlID0gU2luZ2xlUm9vdEdyYXBoTm9kZTxHcmFwaD47CisgICAgdXNpbmcgU2V0ID0g
U2luZ2xlUm9vdEdyYXBoU2V0PEdyYXBoPjsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNp
bmcgTWFwID0gU2luZ2xlUm9vdE1hcDxULCBHcmFwaD47CiAgICAgdHlwZWRlZiBWZWN0b3I8Tm9k
ZSwgND4gTGlzdDsKIAogICAgIEJhY2t3YXJkc0dyYXBoKEdyYXBoJiBncmFwaCkKQEAgLTI1NSw3
ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgIG91dC5w
cmludCgiPG51bGw+Iik7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkpCi0gICAgICAg
ICAgICBvdXQucHJpbnQocm9vdE5hbWUoKSk7CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6
cm9vdE5hbWUoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBo
LmR1bXAobm9kZS5ub2RlKCkpKTsKICAgICAgICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0RvbWluYXRvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9Eb21pbmF0b3JzLmgJKHJldmlzaW9uIDIyMTEwOSkKKysrIFNvdXJjZS9XVEYvd3RmL0Rv
bWluYXRvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNw
YWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KIGNsYXNzIERvbWluYXRvcnMgewog
cHVibGljOgorICAgIHVzaW5nIExpc3QgPSB0eXBlbmFtZSBHcmFwaDo6TGlzdDsKKwogICAgIERv
bWluYXRvcnMoR3JhcGgmIGdyYXBoLCBib29sIHNlbGZDaGVjayA9IGZhbHNlKQogICAgICAgICA6
IG1fZ3JhcGgoZ3JhcGgpCiAgICAgICAgICwgbV9kYXRhKGdyYXBoLnRlbXBsYXRlIG5ld01hcDxC
bG9ja0RhdGE+KCkpCkBAIC00Nyw4ICs0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgTGVuZ2F1ZXJU
YXJqYW4gbGVuZ2F1ZXJUYXJqYW4obV9ncmFwaCk7CiAgICAgICAgIGxlbmdhdWVyVGFyamFuLmNv
bXB1dGUoKTsKIAotICAgICAgICBtX2RhdGEgPSBtX2dyYXBoLnRlbXBsYXRlIG5ld01hcDxCbG9j
a0RhdGE+KCk7Ci0gICAgCiAgICAgICAgIC8vIEZyb20gaGVyZSB3ZSB3YW50IHRvIGJ1aWxkIGEg
c3Bhbm5pbmcgdHJlZSB3aXRoIGJvdGggdXB3YXJkIGFuZCBkb3dud2FyZCBsaW5rcyBhbmQgd2Ug
d2FudAogICAgICAgICAvLyB0byBkbyBhIHNlYXJjaCBvdmVyIHRoaXMgdHJlZSB0byBjb21wdXRl
IHByZSBhbmQgcG9zdCBudW1iZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGRvbWluYW5jZQogICAg
ICAgICAvLyB0ZXN0cy4KQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCBmb3JBbGxCbG9ja3NJbkl0
ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZihjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJv
bSwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB2b2lkIGZvckFsbEJsb2Nrc0luSXRlcmF0
ZWREb21pbmFuY2VGcm9udGllck9mKGNvbnN0IExpc3QmIGZyb20sIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiAgICAgewogICAgICAgICBmb3JBbGxCbG9ja3NJblBydW5lZEl0ZXJhdGVkRG9taW5h
bmNlRnJvbnRpZXJPZigKICAgICAgICAgICAgIGZyb20sCkBAIC0yNTUsNyArMjU1LDcgQEAgcHVi
bGljOgogICAgIC8vIFVzZWZ1bCBmb3IgY29tcHV0aW5nIHBydW5lZCBTU0EgZm9ybS4KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5QcnVuZWRJ
dGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoCi0gICAgICAgIGNvbnN0IHR5cGVuYW1lIEdyYXBo
OjpMaXN0JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgICAgICBjb25zdCBMaXN0
JiBmcm9tLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUg
R3JhcGg6OlNldCBzZXQ7CiAgICAgICAgIGZvckFsbEJsb2Nrc0luSXRlcmF0ZWREb21pbmFuY2VG
cm9udGllck9mSW1wbCgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB9
KTsKICAgICB9CiAgICAgCi0gICAgdHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5j
ZUZyb250aWVyT2YoY29uc3QgdHlwZW5hbWUgR3JhcGg6Okxpc3QmIGZyb20pIGNvbnN0CisgICAg
dHlwZW5hbWUgR3JhcGg6OlNldCBpdGVyYXRlZERvbWluYW5jZUZyb250aWVyT2YoY29uc3QgTGlz
dCYgZnJvbSkgY29uc3QKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIEdyYXBoOjpTZXQgcmVzdWx0
OwogICAgICAgICBmb3JBbGxCbG9ja3NJbkl0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXJPZkltcGwo
CkBAIC03MTIsOSArNzEyLDkgQEAgcHJpdmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgogICAgIHZvaWQgZm9yQWxsQmxvY2tzSW5JdGVyYXRlZERvbWluYW5jZUZyb250
aWVyT2ZJbXBsKAotICAgICAgICBjb25zdCB0eXBlbmFtZSBHcmFwaDo6TGlzdCYgZnJvbSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKKyAgICAgICAgY29uc3QgTGlzdCYgZnJvbSwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikgY29uc3QKICAgICB7Ci0gICAgICAgIHR5cGVuYW1lIEdyYXBo
OjpMaXN0IHdvcmtsaXN0ID0gZnJvbTsKKyAgICAgICAgTGlzdCB3b3JrbGlzdCA9IGZyb207CiAg
ICAgICAgIHdoaWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0eXBlbmFt
ZSBHcmFwaDo6Tm9kZSBibG9jayA9IHdvcmtsaXN0LnRha2VMYXN0KCk7CiAgICAgICAgICAgICBm
b3JBbGxCbG9ja3NJbkRvbWluYW5jZUZyb250aWVyT2ZJbXBsKApJbmRleDogU291cmNlL1dURi93
dGYvU2luZ2xlUm9vdEdyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2luZ2xl
Um9vdEdyYXBoLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdy
YXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXVEZfU2luZ2xlUm9vdEdyYXBo
X2gKKyNkZWZpbmUgV1RGX1NpbmdsZVJvb3RHcmFwaF9oCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNzIFNpbmdsZVJvb3RH
cmFwaE5vZGUgeworcHVibGljOgorICAgIC8vIFdlIHVzZSAiI3Jvb3QiIHRvIHJlZmVyIHRvIHRo
ZSBzeW50aGV0aWMgcm9vdCB3ZSBoYXZlIGNyZWF0ZWQuCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHJvb3ROYW1lKCkgeyByZXR1cm4gIiNyb290IjsgfTsKKworICAgIFNpbmdsZVJvb3RHcmFwaE5v
ZGUodHlwZW5hbWUgR3JhcGg6Ok5vZGUgbm9kZSA9IHR5cGVuYW1lIEdyYXBoOjpOb2RlKCkpCisg
ICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAgIH0KKworICAgIHN0YXRpYyBTaW5nbGVS
b290R3JhcGhOb2RlIHJvb3QoKQorICAgIHsKKyAgICAgICAgU2luZ2xlUm9vdEdyYXBoTm9kZSBy
ZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX25vZGUgPSAwOworICAgICAgICByZXN1bHQubV9pc1Jv
b3QgPSB0cnVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCisgICAgICAgICAgICAmJiBtX2lz
Um9vdCA9PSBvdGhlci5tX2lzUm9vdDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQorCisg
ICAgYm9vbCBpc1Jvb3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faXNSb290Owor
ICAgIH0KKworICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5vZGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX2lzUm9vdCk7CisgICAgICAgIHJldHVybiBtX25vZGU7CisgICAgfQor
Citwcml2YXRlOgorICAgIHR5cGVuYW1lIEdyYXBoOjpOb2RlIG1fbm9kZTsKKyAgICBib29sIG1f
aXNSb290IHsgZmFsc2UgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBHcmFwaD4KK2NsYXNz
IFNpbmdsZVJvb3RHcmFwaFNldCB7CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5v
ZGU8R3JhcGg+OworcHVibGljOgorICAgIFNpbmdsZVJvb3RHcmFwaFNldCgpID0gZGVmYXVsdDsK
KyAgICAKKyAgICBib29sIGFkZChjb25zdCBOb2RlJiBub2RlKQorICAgIHsKKyAgICAgICAgaWYg
KG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9oYXNSb290
LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmFkZChub2RlLm5vZGUoKSk7CisgICAgfQor
CisgICAgYm9vbCByZW1vdmUoY29uc3QgTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1faGFzUm9vdCwg
ZmFsc2UpOworICAgICAgICByZXR1cm4gbV9zZXQucmVtb3ZlKG5vZGUubm9kZSgpKTsKKyAgICB9
CisKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBp
ZiAobm9kZS5pc1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2hhc1Jvb3Q7CisgICAgICAg
IHJldHVybiBtX3NldC5jb250YWlucyhub2RlLm5vZGUoKSk7CisgICAgfQorCisgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9oYXNSb290
KQorICAgICAgICAgICAgb3V0LnByaW50KE5vZGU6OnJvb3ROYW1lKCksICIgIik7CisgICAgICAg
IG91dC5wcmludChtX3NldCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICB0eXBlbmFtZSBH
cmFwaDo6U2V0IG1fc2V0OworICAgIGJvb2wgbV9oYXNSb290IHsgZmFsc2UgfTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdE1hcCB7
CisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5vZGU8R3JhcGg+OworcHVibGljOgor
ICAgIFNpbmdsZVJvb3RNYXAoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fbWFwKGdyYXBoLnRl
bXBsYXRlIG5ld01hcDxUPigpKQorICAgIHsKKyAgICB9CisKKyAgICBTaW5nbGVSb290TWFwKFNp
bmdsZVJvb3RNYXAmJiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFw
KSkKKyAgICAgICAgLCBtX3Jvb3QoV1RGTW92ZShvdGhlci5tX3Jvb3QpKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAg
ICAgIG1fcm9vdCA9IFQoKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwLnNpemUoKSArIDE7IH0KKworICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KQorICAgIHsKKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7
CisgICAgICAgIHJldHVybiBtX21hcFtpbmRleCAtIDFdOworICAgIH0KKworICAgIGNvbnN0IFQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgq
Y29uc3RfY2FzdDxTaW5nbGVSb290TWFwKj4odGhpcykpW2luZGV4XTsKKyAgICB9CisKKyAgICBU
JiBvcGVyYXRvcltdKGNvbnN0IE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBpZiAobm9kZS5p
c1Jvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgICAgIHJldHVybiBtX21h
cFtub2RlLm5vZGUoKV07CisgICAgfQorCisgICAgY29uc3QgVCYgb3BlcmF0b3JbXShjb25zdCBO
b2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgqY29uc3RfY2FzdDxTaW5n
bGVSb290TWFwKj4odGhpcykpW25vZGVdOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgdHlw
ZW5hbWUgR3JhcGg6OnRlbXBsYXRlIE1hcDxUPiBtX21hcDsKKyAgICBUIG1fcm9vdDsKK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgorY2xhc3MgU2luZ2xlUm9vdEdyYXBoIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTaW5nbGVSb290R3JhcGgpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorCisgICAgdXNpbmcgTm9kZSA9IFNpbmdsZVJvb3RHcmFwaE5v
ZGU8R3JhcGg+OworICAgIHVzaW5nIFNldCA9IFNpbmdsZVJvb3RHcmFwaFNldDxHcmFwaD47Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHVzaW5nIE1hcCA9IFNpbmdsZVJvb3RNYXA8VCwgR3Jh
cGg+OworICAgIHVzaW5nIExpc3QgPSBWZWN0b3I8Tm9kZSwgND47CisKKyAgICBTaW5nbGVSb290
R3JhcGgoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAg
ICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIHJlYWxSb290IDogbV9ncmFwaC5yb290cygp
KSB7CisgICAgICAgICAgICBBU1NFUlQobV9ncmFwaC5wcmVkZWNlc3NvcnMocmVhbFJvb3QpLmlz
RW1wdHkoKSk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9v
dCk7CisgICAgICAgICAgICBtX3Jvb3RTdWNjZXNzb3JTZXQuYWRkKHJlYWxSb290KTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQobV9yb290U3VjY2Vzc29yTGlzdC5zaXplKCkpOworICAgIH0K
KworICAgIE5vZGUgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIE5vZGU6OnJvb3QoKTsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNYXA8VD4gbmV3TWFwKCkgeyByZXR1cm4gTWFwPFQ+
KG1fZ3JhcGgpOyB9CisKKyAgICBMaXN0IHN1Y2Nlc3NvcnMoY29uc3QgTm9kZSYgbm9kZSkgY29u
c3QKKyAgICB7CisgICAgICAgIGFzc2VydElzQ29uc2lzdGVudCgpOworCisgICAgICAgIGlmIChu
b2RlLmlzUm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fcm9vdFN1Y2Nlc3Nvckxpc3Q7Cisg
ICAgICAgIExpc3QgcmVzdWx0OworICAgICAgICBmb3IgKHR5cGVuYW1lIEdyYXBoOjpOb2RlIG5v
ZGUgOiBtX2dyYXBoLnN1Y2Nlc3NvcnMobm9kZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBMaXN0
IHByZWRlY2Vzc29ycyhjb25zdCBOb2RlJiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgYXNz
ZXJ0SXNDb25zaXN0ZW50KCk7CisKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAg
ICAgICByZXR1cm4gTGlzdCB7IH07CisKKyAgICAgICAgaWYgKG1fcm9vdFN1Y2Nlc3NvclNldC5j
b250YWlucyhub2RlLm5vZGUoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2dyYXBoLnByZWRl
Y2Vzc29ycyhub2RlLm5vZGUoKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiBMaXN0
IHsgcm9vdCgpIH07CisgICAgICAgIH0KKworICAgICAgICBMaXN0IHJlc3VsdDsKKyAgICAgICAg
Zm9yICh0eXBlbmFtZSBHcmFwaDo6Tm9kZSBub2RlIDogbV9ncmFwaC5wcmVkZWNlc3NvcnMobm9k
ZS5ub2RlKCkpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChub2RlKTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbmRleChjb25zdCBOb2RlJiBub2Rl
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG5vZGUuaXNSb290KCkpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGguaW5kZXgobm9kZS5ub2RlKCkpICsgMTsK
KyAgICB9CisKKyAgICBOb2RlIG5vZGUodW5zaWduZWQgaW5kZXgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHJvb3QoKTsKKyAgICAgICAgcmV0
dXJuIG1fZ3JhcGgubm9kZShpbmRleCAtIDEpOworICAgIH0KKworICAgIHVuc2lnbmVkIG51bU5v
ZGVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm51bU5vZGVzKCkgKyAx
OworICAgIH0KKworICAgIENTdHJpbmcgZHVtcChOb2RlIG5vZGUpIGNvbnN0CisgICAgeworICAg
ICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAg
ICAgIG91dC5wcmludCgiPG51bGw+Iik7CisgICAgICAgIGVsc2UgaWYgKG5vZGUuaXNSb290KCkp
CisgICAgICAgICAgICBvdXQucHJpbnQoTm9kZTo6cm9vdE5hbWUoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG91dC5wcmludChtX2dyYXBoLmR1bXAobm9kZS5ub2RlKCkpKTsKKyAgICAg
ICAgcmV0dXJuIG91dC50b0NTdHJpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1Ob2RlcygpOyArK2kpIHsKKyAgICAgICAgICAgIE5vZGUgbm9kZSA9IHRoaXMtPm5vZGUo
aSk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBvdXQucHJpbnQoZHVtcChub2RlKSwgIjpcbiIpOworICAgICAgICAgICAgb3V0
LnByaW50KCIgICAgUHJlZHM6ICIpOworICAgICAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwor
ICAgICAgICAgICAgZm9yIChOb2RlIHByZWRlY2Vzc29yIDogcHJlZGVjZXNzb3JzKG5vZGUpKQor
ICAgICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgZHVtcChwcmVkZWNlc3NvcikpOworICAg
ICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KCIgICAgU3Vj
Y3M6ICIpOworICAgICAgICAgICAgY29tbWEgPSBDb21tYVByaW50ZXIoKTsKKyAgICAgICAgICAg
IGZvciAoTm9kZSBzdWNjZXNzb3IgOiBzdWNjZXNzb3JzKG5vZGUpKQorICAgICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgZHVtcChzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dCgiXG4iKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgYXNzZXJ0SXNDb25zaXN0ZW50KCkgY29uc3QKKyAgICB7CisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICAgICAvLyBXZSBleHBlY3QgdGhlIHJvb3RzKCkgZnVuY3Rpb24gdG8gYmUgaWRl
bXBvdGVudCB3aGlsZSB3ZSdyZSBhbGl2ZSBzbyB3ZSBjYW4gY2FjaGUKKyAgICAgICAgLy8gdGhl
IHJlc3VsdCBpbiB0aGUgY29uc3RydWN0b3IuIElmIGEgdXNlciBvZiB0aGlzIGNoYW5nZXMgdGhl
IHJlc3VsdCBvZiBpdHMgcm9vdHMoKQorICAgICAgICAvLyBmdW5jdGlvbiwgaXQncyBleHBlY3Rl
ZCB0aGF0IHRoZSB1c2VyIHdpbGwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3Mu
CisgICAgICAgIExpc3Qgcm9vdFN1Y2Nlc3Nvckxpc3Q7CisgICAgICAgIGZvciAodHlwZW5hbWUg
R3JhcGg6Ok5vZGUgcmVhbFJvb3QgOiBtX2dyYXBoLnJvb3RzKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX2dyYXBoLnByZWRlY2Vzc29ycyhyZWFsUm9vdCkuaXNFbXB0eSgpKTsKKyAgICAgICAg
ICAgIHJvb3RTdWNjZXNzb3JMaXN0LmFwcGVuZChyZWFsUm9vdCk7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKHJvb3RTdWNjZXNzb3JMaXN0LnNpemUoKSk7CisgICAgICAgIEFTU0VSVChyb290
U3VjY2Vzc29yTGlzdCA9PSBtX3Jvb3RTdWNjZXNzb3JMaXN0KTsKKyNlbmRpZgorICAgIH0KKwor
ICAgIEdyYXBoJiBtX2dyYXBoOworICAgIExpc3QgbV9yb290U3VjY2Vzc29yTGlzdDsKKyAgICB0
eXBlbmFtZSBHcmFwaDo6U2V0IG1fcm9vdFN1Y2Nlc3NvclNldDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCit1c2luZyBXVEY6OlNpbmdsZVJvb3RHcmFwaDsKKworI2VuZGlmIC8vIFdURl9T
aW5nbGVSb290R3JhcGhfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>